@voxgig/sdkgen 4.10.0 → 4.12.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 (880) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/resolve.js +75 -1
  3. package/dist/action/resolve.js.map +1 -1
  4. package/dist/tsconfig.tsbuildinfo +1 -1
  5. package/dist/utility.js +17 -0
  6. package/dist/utility.js.map +1 -1
  7. package/package.json +4 -3
  8. package/project/.sdk/model/feature/secrets.aon +330 -0
  9. package/project/.sdk/model/target/c.aon +15 -2
  10. package/project/.sdk/model/target/cpp.aon +18 -0
  11. package/project/.sdk/model/target/lua.aon +17 -0
  12. package/project/.sdk/model/target/ocaml.aon +48 -5
  13. package/project/.sdk/model/target/zig.aon +30 -4
  14. package/project/.sdk/src/cmp/c/Config_c.ts +338 -1
  15. package/project/.sdk/src/cmp/c/Main_c.ts +57 -2
  16. package/project/.sdk/src/cmp/c/Package_c.ts +12 -2
  17. package/project/.sdk/src/cmp/cpp/Config_cpp.ts +324 -2
  18. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +2 -0
  19. package/project/.sdk/src/cmp/cpp/Main_cpp.ts +62 -4
  20. package/project/.sdk/src/cmp/cpp/Package_cpp.ts +10 -0
  21. package/project/.sdk/src/cmp/lua/Config_lua.ts +88 -0
  22. package/project/.sdk/src/cmp/lua/Gitignore_lua.ts +4 -0
  23. package/project/.sdk/src/cmp/lua/Main_lua.ts +93 -3
  24. package/project/.sdk/src/cmp/lua/Package_lua.ts +60 -0
  25. package/project/.sdk/src/cmp/lua/fragment/Main.fragment.lua +10 -0
  26. package/project/.sdk/src/cmp/ocaml/Config_ocaml.ts +183 -5
  27. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +160 -3
  28. package/project/.sdk/src/cmp/ocaml/Package_ocaml.ts +25 -1
  29. package/project/.sdk/src/cmp/zig/Config_zig.ts +130 -9
  30. package/project/.sdk/src/cmp/zig/Main_zig.ts +208 -4
  31. package/project/.sdk/{tm/zig/build.zig → src/cmp/zig/fragment/Build.fragment.zig} +7 -0
  32. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +25 -0
  33. package/project/.sdk/{tm/zig/root.zig → src/cmp/zig/fragment/Root.fragment.zig} +9 -0
  34. package/project/.sdk/tm/c/Makefile +58 -9
  35. package/project/.sdk/tm/c/core/sdk.h +10 -0
  36. package/project/.sdk/tm/c/feature/secrets/plugin/capability.c +133 -0
  37. package/project/.sdk/tm/c/feature/secrets/plugin/capability.h +39 -0
  38. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.c +83 -0
  39. package/project/.sdk/tm/c/feature/secrets/plugin/catalog.h +48 -0
  40. package/project/.sdk/tm/c/feature/secrets/plugin/config.c +413 -0
  41. package/project/.sdk/tm/c/feature/secrets/plugin/config.h +24 -0
  42. package/project/.sdk/tm/c/feature/secrets/plugin/depend.c +264 -0
  43. package/project/.sdk/tm/c/feature/secrets/plugin/depend.h +29 -0
  44. package/project/.sdk/tm/c/feature/secrets/plugin/env.c +220 -0
  45. package/project/.sdk/tm/c/feature/secrets/plugin/env.h +19 -0
  46. package/project/.sdk/tm/c/feature/secrets/plugin/export.c +97 -0
  47. package/project/.sdk/tm/c/feature/secrets/plugin/export.h +19 -0
  48. package/project/.sdk/tm/c/feature/secrets/plugin/graph.c +237 -0
  49. package/project/.sdk/tm/c/feature/secrets/plugin/graph.h +17 -0
  50. package/project/.sdk/tm/c/feature/secrets/plugin/host.c +1494 -0
  51. package/project/.sdk/tm/c/feature/secrets/plugin/host.h +135 -0
  52. package/project/.sdk/tm/c/feature/secrets/plugin/order.c +288 -0
  53. package/project/.sdk/tm/c/feature/secrets/plugin/order.h +18 -0
  54. package/project/.sdk/tm/c/feature/secrets/plugin/point.c +141 -0
  55. package/project/.sdk/tm/c/feature/secrets/plugin/point.h +80 -0
  56. package/project/.sdk/tm/c/feature/secrets/plugin/ref.c +170 -0
  57. package/project/.sdk/tm/c/feature/secrets/plugin/ref.h +52 -0
  58. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.c +98 -0
  59. package/project/.sdk/tm/c/feature/secrets/plugin/resolve.h +18 -0
  60. package/project/.sdk/tm/c/feature/secrets/plugin/types.c +150 -0
  61. package/project/.sdk/tm/c/feature/secrets/plugin/types.h +104 -0
  62. package/project/.sdk/tm/c/feature/secrets/plugin/value.c +649 -0
  63. package/project/.sdk/tm/c/feature/secrets/plugin/value.h +135 -0
  64. package/project/.sdk/tm/c/feature/secrets/plugin/version.c +151 -0
  65. package/project/.sdk/tm/c/feature/secrets/plugin/version.h +34 -0
  66. package/project/.sdk/tm/c/feature/secrets/plugins/aws.c +281 -0
  67. package/project/.sdk/tm/c/feature/secrets/plugins/azuresecrets.c +207 -0
  68. package/project/.sdk/tm/c/feature/secrets/plugins/boru.c +164 -0
  69. package/project/.sdk/tm/c/feature/secrets/plugins/clock.c +75 -0
  70. package/project/.sdk/tm/c/feature/secrets/plugins/doppler.c +141 -0
  71. package/project/.sdk/tm/c/feature/secrets/plugins/encode.c +144 -0
  72. package/project/.sdk/tm/c/feature/secrets/plugins/gcpsecrets.c +177 -0
  73. package/project/.sdk/tm/c/feature/secrets/plugins/hashicorp.c +239 -0
  74. package/project/.sdk/tm/c/feature/secrets/plugins/httpjson.c +599 -0
  75. package/project/.sdk/tm/c/feature/secrets/plugins/infisical.c +165 -0
  76. package/project/.sdk/tm/c/feature/secrets/plugins/onepassword.c +194 -0
  77. package/project/.sdk/tm/c/feature/secrets/plugins/proc.c +233 -0
  78. package/project/.sdk/tm/c/feature/secrets/plugins/secretspec.c +125 -0
  79. package/project/.sdk/tm/c/feature/secrets/plugins/sekretoplugins.h +125 -0
  80. package/project/.sdk/tm/c/feature/secrets/plugins/sha256.c +270 -0
  81. package/project/.sdk/tm/c/feature/secrets/plugins/sigv4.c +382 -0
  82. package/project/.sdk/tm/c/feature/secrets/plugins/support.h +153 -0
  83. package/project/.sdk/tm/c/feature/secrets/plugins/tls.c +420 -0
  84. package/project/.sdk/tm/c/feature/secrets/sekreto/internal.h +86 -0
  85. package/project/.sdk/tm/c/feature/secrets/sekreto/json.c +721 -0
  86. package/project/.sdk/tm/c/feature/secrets/sekreto/providers.c +813 -0
  87. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.c +944 -0
  88. package/project/.sdk/tm/c/feature/secrets/sekreto/sekreto.h +490 -0
  89. package/project/.sdk/tm/c/feature/secrets/sekreto/util.c +442 -0
  90. package/project/.sdk/tm/c/feature/secrets.c +797 -0
  91. package/project/.sdk/tm/c/feature/secrets.h +46 -0
  92. package/project/.sdk/tm/c/src/feature/secrets/.gitkeep +0 -0
  93. package/project/.sdk/tm/c/tests/feature/secrets/secrets_test.c +802 -0
  94. package/project/.sdk/tm/c/tests/vendor/omni/json.c +1 -1
  95. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +1 -1
  96. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +1 -1
  97. package/project/.sdk/tm/c/tests/vendor/omni/util.c +1 -1
  98. package/project/.sdk/tm/clojure/feature/secrets/sdk/feature/secrets.clj +38 -11
  99. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/capability.clj +1 -1
  100. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/catalog.clj +1 -1
  101. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/config.clj +1 -1
  102. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/depend.clj +1 -1
  103. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/env.clj +1 -1
  104. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/export.clj +1 -1
  105. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/graph.clj +1 -1
  106. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/host.clj +1 -1
  107. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/json.clj +1 -1
  108. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/order.clj +1 -1
  109. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/point.clj +1 -1
  110. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/ref.clj +1 -1
  111. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/resolve.clj +1 -1
  112. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/types.clj +1 -1
  113. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin/version.clj +1 -1
  114. package/project/.sdk/tm/clojure/feature/secrets/voxgig/plugin.clj +1 -1
  115. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/addr.clj +1 -1
  116. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/chain.clj +1 -1
  117. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/core.clj +1 -1
  118. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/json.clj +1 -1
  119. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/aws.clj +1 -1
  120. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/azuresecrets.clj +1 -1
  121. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/boru.clj +1 -1
  122. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/doppler.clj +1 -1
  123. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/gcpsecrets.clj +1 -1
  124. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/hashicorp.clj +1 -1
  125. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/httpjson.clj +1 -1
  126. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/infisical.clj +1 -1
  127. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/onepassword.clj +1 -1
  128. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/proc.clj +1 -1
  129. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/secretspec.clj +1 -1
  130. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/plugins/sigv4.clj +1 -1
  131. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/provider.clj +1 -1
  132. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto/providers.clj +1 -1
  133. package/project/.sdk/tm/clojure/feature/secrets/voxgig/sekreto.clj +1 -1
  134. package/project/.sdk/tm/clojure/test/sdk/test/feature/secrets.clj +40 -6
  135. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +1 -1
  136. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +1 -1
  137. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +1 -1
  138. package/project/.sdk/tm/cpp/Makefile +48 -4
  139. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.cpp +121 -0
  140. package/project/.sdk/tm/cpp/feature/secrets/plugin/capability.hpp +41 -0
  141. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.cpp +60 -0
  142. package/project/.sdk/tm/cpp/feature/secrets/plugin/catalog.hpp +66 -0
  143. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.cpp +376 -0
  144. package/project/.sdk/tm/cpp/feature/secrets/plugin/config.hpp +29 -0
  145. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.cpp +230 -0
  146. package/project/.sdk/tm/cpp/feature/secrets/plugin/depend.hpp +31 -0
  147. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.cpp +205 -0
  148. package/project/.sdk/tm/cpp/feature/secrets/plugin/env.hpp +25 -0
  149. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.cpp +84 -0
  150. package/project/.sdk/tm/cpp/feature/secrets/plugin/export.hpp +24 -0
  151. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.cpp +222 -0
  152. package/project/.sdk/tm/cpp/feature/secrets/plugin/graph.hpp +21 -0
  153. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.cpp +1200 -0
  154. package/project/.sdk/tm/cpp/feature/secrets/plugin/host.hpp +250 -0
  155. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.cpp +250 -0
  156. package/project/.sdk/tm/cpp/feature/secrets/plugin/order.hpp +22 -0
  157. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.cpp +110 -0
  158. package/project/.sdk/tm/cpp/feature/secrets/plugin/point.hpp +79 -0
  159. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.cpp +136 -0
  160. package/project/.sdk/tm/cpp/feature/secrets/plugin/ref.hpp +60 -0
  161. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.cpp +82 -0
  162. package/project/.sdk/tm/cpp/feature/secrets/plugin/resolve.hpp +25 -0
  163. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.cpp +90 -0
  164. package/project/.sdk/tm/cpp/feature/secrets/plugin/types.hpp +65 -0
  165. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.cpp +491 -0
  166. package/project/.sdk/tm/cpp/feature/secrets/plugin/value.hpp +120 -0
  167. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.cpp +143 -0
  168. package/project/.sdk/tm/cpp/feature/secrets/plugin/version.hpp +36 -0
  169. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.cpp +248 -0
  170. package/project/.sdk/tm/cpp/feature/secrets/plugins/Aws.hpp +30 -0
  171. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.cpp +149 -0
  172. package/project/.sdk/tm/cpp/feature/secrets/plugins/Azuresecrets.hpp +23 -0
  173. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.cpp +117 -0
  174. package/project/.sdk/tm/cpp/feature/secrets/plugins/Boru.hpp +27 -0
  175. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.cpp +180 -0
  176. package/project/.sdk/tm/cpp/feature/secrets/plugins/Crypto.hpp +52 -0
  177. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.cpp +87 -0
  178. package/project/.sdk/tm/cpp/feature/secrets/plugins/Doppler.hpp +23 -0
  179. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.cpp +121 -0
  180. package/project/.sdk/tm/cpp/feature/secrets/plugins/Gcpsecrets.hpp +23 -0
  181. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.cpp +153 -0
  182. package/project/.sdk/tm/cpp/feature/secrets/plugins/Hashicorp.hpp +23 -0
  183. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.cpp +666 -0
  184. package/project/.sdk/tm/cpp/feature/secrets/plugins/Httpjson.hpp +160 -0
  185. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.cpp +123 -0
  186. package/project/.sdk/tm/cpp/feature/secrets/plugins/Infisical.hpp +23 -0
  187. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.cpp +125 -0
  188. package/project/.sdk/tm/cpp/feature/secrets/plugins/Onepassword.hpp +23 -0
  189. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.cpp +223 -0
  190. package/project/.sdk/tm/cpp/feature/secrets/plugins/Proc.hpp +47 -0
  191. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.cpp +104 -0
  192. package/project/.sdk/tm/cpp/feature/secrets/plugins/Secretspec.hpp +27 -0
  193. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.cpp +242 -0
  194. package/project/.sdk/tm/cpp/feature/secrets/plugins/Sigv4.hpp +58 -0
  195. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.cpp +260 -0
  196. package/project/.sdk/tm/cpp/feature/secrets/plugins/Tls.hpp +47 -0
  197. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.cpp +476 -0
  198. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Json.hpp +89 -0
  199. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.cpp +312 -0
  200. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Provider.hpp +263 -0
  201. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.cpp +354 -0
  202. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Providers.hpp +111 -0
  203. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.cpp +613 -0
  204. package/project/.sdk/tm/cpp/feature/secrets/sekreto/Sekreto.hpp +227 -0
  205. package/project/.sdk/tm/cpp/feature/secrets.hpp +745 -0
  206. package/project/.sdk/tm/cpp/src/feature/secrets/.gitkeep +0 -0
  207. package/project/.sdk/tm/cpp/test/feature/secrets/secrets_test.cpp +808 -0
  208. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +1 -1
  209. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +1 -1
  210. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +1 -1
  211. package/project/.sdk/tm/csharp/feature/SecretsFeature.cs +34 -8
  212. package/project/.sdk/tm/csharp/feature/secrets/plugin/Capability.cs +1 -1
  213. package/project/.sdk/tm/csharp/feature/secrets/plugin/Catalog.cs +1 -1
  214. package/project/.sdk/tm/csharp/feature/secrets/plugin/Config.cs +1 -1
  215. package/project/.sdk/tm/csharp/feature/secrets/plugin/Definition.cs +1 -1
  216. package/project/.sdk/tm/csharp/feature/secrets/plugin/Depend.cs +1 -1
  217. package/project/.sdk/tm/csharp/feature/secrets/plugin/Entry.cs +1 -1
  218. package/project/.sdk/tm/csharp/feature/secrets/plugin/Env.cs +1 -1
  219. package/project/.sdk/tm/csharp/feature/secrets/plugin/Export.cs +1 -1
  220. package/project/.sdk/tm/csharp/feature/secrets/plugin/Graph.cs +1 -1
  221. package/project/.sdk/tm/csharp/feature/secrets/plugin/Host.cs +1 -1
  222. package/project/.sdk/tm/csharp/feature/secrets/plugin/Inst.cs +1 -1
  223. package/project/.sdk/tm/csharp/feature/secrets/plugin/Json.cs +1 -1
  224. package/project/.sdk/tm/csharp/feature/secrets/plugin/Order.cs +1 -1
  225. package/project/.sdk/tm/csharp/feature/secrets/plugin/Plugin.cs +1 -1
  226. package/project/.sdk/tm/csharp/feature/secrets/plugin/Point.cs +1 -1
  227. package/project/.sdk/tm/csharp/feature/secrets/plugin/Refs.cs +1 -1
  228. package/project/.sdk/tm/csharp/feature/secrets/plugin/Resolve.cs +1 -1
  229. package/project/.sdk/tm/csharp/feature/secrets/plugin/Types.cs +1 -1
  230. package/project/.sdk/tm/csharp/feature/secrets/plugin/Version.cs +1 -1
  231. package/project/.sdk/tm/csharp/feature/secrets/plugins/Aws.cs +1 -1
  232. package/project/.sdk/tm/csharp/feature/secrets/plugins/AzureSecrets.cs +1 -1
  233. package/project/.sdk/tm/csharp/feature/secrets/plugins/Boru.cs +1 -1
  234. package/project/.sdk/tm/csharp/feature/secrets/plugins/Child.cs +1 -1
  235. package/project/.sdk/tm/csharp/feature/secrets/plugins/Doppler.cs +1 -1
  236. package/project/.sdk/tm/csharp/feature/secrets/plugins/GcpSecrets.cs +1 -1
  237. package/project/.sdk/tm/csharp/feature/secrets/plugins/Hashicorp.cs +1 -1
  238. package/project/.sdk/tm/csharp/feature/secrets/plugins/HttpJson.cs +1 -1
  239. package/project/.sdk/tm/csharp/feature/secrets/plugins/Infisical.cs +1 -1
  240. package/project/.sdk/tm/csharp/feature/secrets/plugins/OnePassword.cs +1 -1
  241. package/project/.sdk/tm/csharp/feature/secrets/plugins/SecretSpec.cs +1 -1
  242. package/project/.sdk/tm/csharp/feature/secrets/plugins/Sigv4.cs +1 -1
  243. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Json.cs +1 -1
  244. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Providers.cs +1 -1
  245. package/project/.sdk/tm/csharp/feature/secrets/sekreto/Sekreto.cs +1 -1
  246. package/project/.sdk/tm/csharp/test/feature/secrets/SecretsFeatureTest.cs +85 -0
  247. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +1 -1
  248. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +1 -1
  249. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +1 -1
  250. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/capability.ex +1 -1
  251. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/catalog.ex +1 -1
  252. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/config.ex +1 -1
  253. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/depend.ex +1 -1
  254. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/env.ex +1 -1
  255. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/error.ex +1 -1
  256. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/export.ex +1 -1
  257. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/graph.ex +1 -1
  258. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/host.ex +1 -1
  259. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/inst.ex +1 -1
  260. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/json.ex +1 -1
  261. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/order.ex +1 -1
  262. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/point.ex +1 -1
  263. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/ref.ex +1 -1
  264. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/resolve.ex +1 -1
  265. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/types.ex +1 -1
  266. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/version.ex +1 -1
  267. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/plugin/voxgig_plugin.ex +1 -1
  268. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/json.ex +1 -1
  269. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/aws.ex +1 -1
  270. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/azuresecrets.ex +1 -1
  271. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/boru.ex +1 -1
  272. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/doppler.ex +1 -1
  273. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/gcpsecrets.ex +1 -1
  274. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/hashicorp.ex +1 -1
  275. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/http.ex +1 -1
  276. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/httpjson.ex +1 -1
  277. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/infisical.ex +1 -1
  278. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/onepassword.ex +1 -1
  279. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/proc.ex +1 -1
  280. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/secretspec.ex +1 -1
  281. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/plugins/sigv4.ex +1 -1
  282. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/provider.ex +1 -1
  283. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/providers.ex +1 -1
  284. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets/sekreto/sekreto.ex +1 -1
  285. package/project/.sdk/tm/elixir/lib/projectname/feature/secrets.ex +17 -2
  286. package/project/.sdk/tm/elixir/test/feature/secrets/secrets_test.exs +41 -0
  287. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +1 -1
  288. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +1 -1
  289. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +1 -1
  290. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
  291. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
  292. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
  293. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
  294. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
  295. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +1 -1
  296. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
  297. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1 -1
  298. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
  299. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
  300. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
  301. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
  302. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
  303. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
  304. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
  305. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +1 -1
  306. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +1 -1
  307. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +1 -1
  308. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +1 -1
  309. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +1 -1
  310. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +1 -1
  311. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +1 -1
  312. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +1 -1
  313. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +1 -1
  314. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +1 -1
  315. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +1 -1
  316. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +1 -1
  317. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +1 -1
  318. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +1 -1
  319. package/project/.sdk/tm/go/feature/secrets_feature.go +32 -10
  320. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +116 -0
  321. package/project/.sdk/tm/go/test/omni/omni.go +1 -1
  322. package/project/.sdk/tm/go/test/omni/util.go +1 -1
  323. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +1 -1
  324. package/project/.sdk/tm/java/feature/SecretsFeature.java +33 -8
  325. package/project/.sdk/tm/java/feature/secrets/plugin/Capability.java +1 -1
  326. package/project/.sdk/tm/java/feature/secrets/plugin/Catalog.java +1 -1
  327. package/project/.sdk/tm/java/feature/secrets/plugin/Config.java +1 -1
  328. package/project/.sdk/tm/java/feature/secrets/plugin/Definition.java +1 -1
  329. package/project/.sdk/tm/java/feature/secrets/plugin/Depend.java +1 -1
  330. package/project/.sdk/tm/java/feature/secrets/plugin/Entry.java +1 -1
  331. package/project/.sdk/tm/java/feature/secrets/plugin/Env.java +1 -1
  332. package/project/.sdk/tm/java/feature/secrets/plugin/Export.java +1 -1
  333. package/project/.sdk/tm/java/feature/secrets/plugin/Graph.java +1 -1
  334. package/project/.sdk/tm/java/feature/secrets/plugin/Host.java +1 -1
  335. package/project/.sdk/tm/java/feature/secrets/plugin/Inst.java +1 -1
  336. package/project/.sdk/tm/java/feature/secrets/plugin/Json.java +1 -1
  337. package/project/.sdk/tm/java/feature/secrets/plugin/Order.java +1 -1
  338. package/project/.sdk/tm/java/feature/secrets/plugin/Plugin.java +1 -1
  339. package/project/.sdk/tm/java/feature/secrets/plugin/PluginException.java +1 -1
  340. package/project/.sdk/tm/java/feature/secrets/plugin/Point.java +1 -1
  341. package/project/.sdk/tm/java/feature/secrets/plugin/Refs.java +1 -1
  342. package/project/.sdk/tm/java/feature/secrets/plugin/Resolve.java +1 -1
  343. package/project/.sdk/tm/java/feature/secrets/plugin/Types.java +1 -1
  344. package/project/.sdk/tm/java/feature/secrets/plugin/Version.java +1 -1
  345. package/project/.sdk/tm/java/feature/secrets/sekreto/Addr.java +1 -1
  346. package/project/.sdk/tm/java/feature/secrets/sekreto/Builtins.java +1 -1
  347. package/project/.sdk/tm/java/feature/secrets/sekreto/Json.java +1 -1
  348. package/project/.sdk/tm/java/feature/secrets/sekreto/Provider.java +1 -1
  349. package/project/.sdk/tm/java/feature/secrets/sekreto/Sekreto.java +1 -1
  350. package/project/.sdk/tm/java/feature/secrets/sekreto/Support.java +1 -1
  351. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Aws.java +1 -1
  352. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Azuresecrets.java +1 -1
  353. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Boru.java +1 -1
  354. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Doppler.java +1 -1
  355. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Gcpsecrets.java +1 -1
  356. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Hashicorp.java +1 -1
  357. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Httpjson.java +1 -1
  358. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Infisical.java +1 -1
  359. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Onepassword.java +1 -1
  360. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Proc.java +1 -1
  361. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Secretspec.java +1 -1
  362. package/project/.sdk/tm/java/feature/secrets/sekreto/plugins/Sigv4.java +1 -1
  363. package/project/.sdk/tm/java/test/feature/secrets/SecretsFeatureTest.java +64 -0
  364. package/project/.sdk/tm/java/test/vendor/omni/Json.java +1 -1
  365. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +1 -1
  366. package/project/.sdk/tm/java/test/vendor/omni/Util.java +1 -1
  367. package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
  368. package/project/.sdk/tm/js/src/feature/secrets/SecretsFeature.js +34 -11
  369. package/project/.sdk/tm/js/src/feature/secrets/plugin/capability.js +1 -1
  370. package/project/.sdk/tm/js/src/feature/secrets/plugin/catalog.js +1 -1
  371. package/project/.sdk/tm/js/src/feature/secrets/plugin/config.js +1 -1
  372. package/project/.sdk/tm/js/src/feature/secrets/plugin/depend.js +1 -1
  373. package/project/.sdk/tm/js/src/feature/secrets/plugin/env.js +1 -1
  374. package/project/.sdk/tm/js/src/feature/secrets/plugin/export.js +1 -1
  375. package/project/.sdk/tm/js/src/feature/secrets/plugin/graph.js +1 -1
  376. package/project/.sdk/tm/js/src/feature/secrets/plugin/host.js +1 -1
  377. package/project/.sdk/tm/js/src/feature/secrets/plugin/index.js +1 -1
  378. package/project/.sdk/tm/js/src/feature/secrets/plugin/order.js +1 -1
  379. package/project/.sdk/tm/js/src/feature/secrets/plugin/point.js +1 -1
  380. package/project/.sdk/tm/js/src/feature/secrets/plugin/ref.js +1 -1
  381. package/project/.sdk/tm/js/src/feature/secrets/plugin/resolve.js +1 -1
  382. package/project/.sdk/tm/js/src/feature/secrets/plugin/types.js +1 -1
  383. package/project/.sdk/tm/js/src/feature/secrets/plugin/version.js +1 -1
  384. package/project/.sdk/tm/js/src/feature/secrets/sekreto/Sekreto.js +1 -1
  385. package/project/.sdk/tm/js/src/feature/secrets/sekreto/index.js +1 -1
  386. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/aws.js +1 -1
  387. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/azuresecrets.js +1 -1
  388. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/boru.js +1 -1
  389. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/doppler.js +1 -1
  390. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/gcpsecrets.js +1 -1
  391. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/hashicorp.js +1 -1
  392. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/httpjson.js +1 -1
  393. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/infisical.js +1 -1
  394. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/onepassword.js +1 -1
  395. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/secretspec.js +1 -1
  396. package/project/.sdk/tm/js/src/feature/secrets/sekreto/plugins/sigv4.js +1 -1
  397. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/addr.js +1 -1
  398. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/builtin.js +1 -1
  399. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/dotenv.js +1 -1
  400. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/env.js +1 -1
  401. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/file.js +1 -1
  402. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/memory.js +1 -1
  403. package/project/.sdk/tm/js/src/feature/secrets/sekreto/provider/support.js +1 -1
  404. package/project/.sdk/tm/js/src/utility/StructUtility.js +2 -2
  405. package/project/.sdk/tm/js/src/utility/TransformRequestUtility.js +49 -1
  406. package/project/.sdk/tm/js/test/feature/secrets/Secrets.test.js +73 -0
  407. package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
  408. package/project/.sdk/tm/js/test/vendor/omni/runner.js +1 -1
  409. package/project/.sdk/tm/js/test/vendor/omni/util.js +1 -1
  410. package/project/.sdk/tm/kotlin/feature/SecretsFeature.kt +32 -7
  411. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Capability.kt +1 -1
  412. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Catalog.kt +1 -1
  413. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Config.kt +1 -1
  414. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Depend.kt +1 -1
  415. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Env.kt +1 -1
  416. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Export.kt +1 -1
  417. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Graph.kt +1 -1
  418. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Host.kt +1 -1
  419. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Json.kt +1 -1
  420. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Order.kt +1 -1
  421. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Plugin.kt +1 -1
  422. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Point.kt +1 -1
  423. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Refs.kt +1 -1
  424. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Resolve.kt +1 -1
  425. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Types.kt +1 -1
  426. package/project/.sdk/tm/kotlin/feature/secrets/plugin/Version.kt +1 -1
  427. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Json.kt +1 -1
  428. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Provider.kt +1 -1
  429. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Providers.kt +1 -1
  430. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Sekreto.kt +1 -1
  431. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Spec.kt +1 -1
  432. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/Support.kt +1 -1
  433. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Aws.kt +1 -1
  434. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Azuresecrets.kt +1 -1
  435. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Boru.kt +1 -1
  436. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Doppler.kt +1 -1
  437. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Gcpsecrets.kt +1 -1
  438. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Hashicorp.kt +1 -1
  439. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Httpjson.kt +1 -1
  440. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Infisical.kt +1 -1
  441. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Onepassword.kt +1 -1
  442. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Secretspec.kt +1 -1
  443. package/project/.sdk/tm/kotlin/feature/secrets/sekreto/plugins/Sigv4.kt +1 -1
  444. package/project/.sdk/tm/kotlin/test/feature/secrets/SecretsTest.kt +69 -0
  445. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +1 -1
  446. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +1 -1
  447. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +1 -1
  448. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
  449. package/project/.sdk/tm/lua/Makefile +15 -4
  450. package/project/.sdk/tm/lua/feature/secrets/native/sekretonet.c +806 -0
  451. package/project/.sdk/tm/lua/feature/secrets/plugin/capability.lua +135 -0
  452. package/project/.sdk/tm/lua/feature/secrets/plugin/catalog.lua +63 -0
  453. package/project/.sdk/tm/lua/feature/secrets/plugin/config.lua +361 -0
  454. package/project/.sdk/tm/lua/feature/secrets/plugin/depend.lua +232 -0
  455. package/project/.sdk/tm/lua/feature/secrets/plugin/env.lua +168 -0
  456. package/project/.sdk/tm/lua/feature/secrets/plugin/export.lua +66 -0
  457. package/project/.sdk/tm/lua/feature/secrets/plugin/graph.lua +194 -0
  458. package/project/.sdk/tm/lua/feature/secrets/plugin/host.lua +1190 -0
  459. package/project/.sdk/tm/lua/feature/secrets/plugin/json.lua +169 -0
  460. package/project/.sdk/tm/lua/feature/secrets/plugin/order.lua +207 -0
  461. package/project/.sdk/tm/lua/feature/secrets/plugin/point.lua +106 -0
  462. package/project/.sdk/tm/lua/feature/secrets/plugin/ref.lua +115 -0
  463. package/project/.sdk/tm/lua/feature/secrets/plugin/resolve.lua +78 -0
  464. package/project/.sdk/tm/lua/feature/secrets/plugin/types.lua +275 -0
  465. package/project/.sdk/tm/lua/feature/secrets/plugin/version.lua +131 -0
  466. package/project/.sdk/tm/lua/feature/secrets/plugin.lua +76 -0
  467. package/project/.sdk/tm/lua/feature/secrets/sekreto/addr.lua +124 -0
  468. package/project/.sdk/tm/lua/feature/secrets/sekreto/err.lua +47 -0
  469. package/project/.sdk/tm/lua/feature/secrets/sekreto/name.lua +315 -0
  470. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/aws.lua +228 -0
  471. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/azuresecrets.lua +137 -0
  472. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/boru.lua +124 -0
  473. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/crypto.lua +212 -0
  474. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/doppler.lua +89 -0
  475. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/gcpsecrets.lua +129 -0
  476. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/hashicorp.lua +154 -0
  477. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/httpjson.lua +248 -0
  478. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/infisical.lua +113 -0
  479. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/json.lua +449 -0
  480. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/net.lua +198 -0
  481. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/onepassword.lua +126 -0
  482. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/secretspec.lua +93 -0
  483. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/sigv4.lua +269 -0
  484. package/project/.sdk/tm/lua/feature/secrets/sekreto/plugins/support.lua +146 -0
  485. package/project/.sdk/tm/lua/feature/secrets/sekreto/providers.lua +346 -0
  486. package/project/.sdk/tm/lua/feature/secrets/sekreto.lua +479 -0
  487. package/project/.sdk/tm/lua/feature/secrets_feature.lua +690 -0
  488. package/project/.sdk/tm/lua/src/feature/secrets/.gitkeep +0 -0
  489. package/project/.sdk/tm/lua/test/extend_test.lua +105 -0
  490. package/project/.sdk/tm/lua/test/feature/secrets/secrets_feature_test.lua +862 -0
  491. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +1 -1
  492. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +1 -1
  493. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +1 -1
  494. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +1 -1
  495. package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
  496. package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
  497. package/project/.sdk/tm/ocaml/Makefile +52 -8
  498. package/project/.sdk/tm/ocaml/feature/secrets/plugin/capability.ml +106 -0
  499. package/project/.sdk/tm/ocaml/feature/secrets/plugin/catalog.ml +43 -0
  500. package/project/.sdk/tm/ocaml/feature/secrets/plugin/config.ml +349 -0
  501. package/project/.sdk/tm/ocaml/feature/secrets/plugin/defs.ml +143 -0
  502. package/project/.sdk/tm/ocaml/feature/secrets/plugin/depend.ml +217 -0
  503. package/project/.sdk/tm/ocaml/feature/secrets/plugin/env.ml +197 -0
  504. package/project/.sdk/tm/ocaml/feature/secrets/plugin/export.ml +89 -0
  505. package/project/.sdk/tm/ocaml/feature/secrets/plugin/graph.ml +227 -0
  506. package/project/.sdk/tm/ocaml/feature/secrets/plugin/host.ml +1112 -0
  507. package/project/.sdk/tm/ocaml/feature/secrets/plugin/order.ml +202 -0
  508. package/project/.sdk/tm/ocaml/feature/secrets/plugin/point.ml +138 -0
  509. package/project/.sdk/tm/ocaml/feature/secrets/plugin/ref.ml +126 -0
  510. package/project/.sdk/tm/ocaml/feature/secrets/plugin/resolve.ml +62 -0
  511. package/project/.sdk/tm/ocaml/feature/secrets/plugin/types.ml +97 -0
  512. package/project/.sdk/tm/ocaml/feature/secrets/plugin/value.ml +387 -0
  513. package/project/.sdk/tm/ocaml/feature/secrets/plugin/version.ml +139 -0
  514. package/project/.sdk/tm/ocaml/feature/secrets/plugins/aws.ml +171 -0
  515. package/project/.sdk/tm/ocaml/feature/secrets/plugins/azuresecrets.ml +116 -0
  516. package/project/.sdk/tm/ocaml/feature/secrets/plugins/boru.ml +95 -0
  517. package/project/.sdk/tm/ocaml/feature/secrets/plugins/crypto.ml +149 -0
  518. package/project/.sdk/tm/ocaml/feature/secrets/plugins/doppler.ml +61 -0
  519. package/project/.sdk/tm/ocaml/feature/secrets/plugins/gcpsecrets.ml +93 -0
  520. package/project/.sdk/tm/ocaml/feature/secrets/plugins/hashicorp.ml +120 -0
  521. package/project/.sdk/tm/ocaml/feature/secrets/plugins/http.ml +421 -0
  522. package/project/.sdk/tm/ocaml/feature/secrets/plugins/httpjson.ml +66 -0
  523. package/project/.sdk/tm/ocaml/feature/secrets/plugins/infisical.ml +85 -0
  524. package/project/.sdk/tm/ocaml/feature/secrets/plugins/onepassword.ml +112 -0
  525. package/project/.sdk/tm/ocaml/feature/secrets/plugins/runcmd.ml +97 -0
  526. package/project/.sdk/tm/ocaml/feature/secrets/plugins/secretspec.ml +68 -0
  527. package/project/.sdk/tm/ocaml/feature/secrets/plugins/sigv4.ml +259 -0
  528. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls.ml +44 -0
  529. package/project/.sdk/tm/ocaml/feature/secrets/plugins/tls_stubs.c +358 -0
  530. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/json.ml +376 -0
  531. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/provider.ml +647 -0
  532. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/secret.ml +299 -0
  533. package/project/.sdk/tm/ocaml/feature/secrets/sekreto/sekreto.ml +347 -0
  534. package/project/.sdk/tm/ocaml/feature/secrets_feature.ml +453 -0
  535. package/project/.sdk/tm/ocaml/src/feature/secrets/.gitkeep +0 -0
  536. package/project/.sdk/tm/ocaml/test/feature/secrets/t_secrets.ml +670 -0
  537. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1 -1
  538. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Capability.pm +1 -1
  539. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Catalog.pm +1 -1
  540. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Config.pm +1 -1
  541. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Depend.pm +1 -1
  542. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Env.pm +1 -1
  543. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Export.pm +1 -1
  544. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Graph.pm +1 -1
  545. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Host.pm +1 -1
  546. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Order.pm +1 -1
  547. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Point.pm +1 -1
  548. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Ref.pm +1 -1
  549. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Resolve.pm +1 -1
  550. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Types.pm +25 -1
  551. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin/Version.pm +1 -1
  552. package/project/.sdk/tm/perl/feature/secrets/plugin/Voxgig/Plugin.pm +1 -1
  553. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Aws.pm +1 -1
  554. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Azuresecrets.pm +1 -1
  555. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Boru.pm +1 -1
  556. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Doppler.pm +1 -1
  557. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Gcpsecrets.pm +1 -1
  558. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Hashicorp.pm +1 -1
  559. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Httpjson.pm +1 -1
  560. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Infisical.pm +1 -1
  561. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Onepassword.pm +1 -1
  562. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Proc.pm +1 -1
  563. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Secretspec.pm +1 -1
  564. package/project/.sdk/tm/perl/feature/secrets/plugins/Voxgig/Sekreto/Plugins/Sigv4.pm +1 -1
  565. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Addr.pm +1 -1
  566. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto/Providers.pm +1 -1
  567. package/project/.sdk/tm/perl/feature/secrets/sekreto/Voxgig/Sekreto.pm +1 -1
  568. package/project/.sdk/tm/perl/feature/secrets_feature.pm +33 -12
  569. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
  570. package/project/.sdk/tm/perl/t/feature/secrets/secrets.t +47 -0
  571. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +1 -1
  572. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +1 -1
  573. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +1 -1
  574. package/project/.sdk/tm/php/feature/SecretsFeature.php +30 -6
  575. package/project/.sdk/tm/php/feature/secrets/plugin/Capability.php +1 -1
  576. package/project/.sdk/tm/php/feature/secrets/plugin/Catalog.php +1 -1
  577. package/project/.sdk/tm/php/feature/secrets/plugin/Config.php +1 -1
  578. package/project/.sdk/tm/php/feature/secrets/plugin/Depend.php +1 -1
  579. package/project/.sdk/tm/php/feature/secrets/plugin/Env.php +1 -1
  580. package/project/.sdk/tm/php/feature/secrets/plugin/Export.php +1 -1
  581. package/project/.sdk/tm/php/feature/secrets/plugin/Graph.php +1 -1
  582. package/project/.sdk/tm/php/feature/secrets/plugin/Host.php +1 -1
  583. package/project/.sdk/tm/php/feature/secrets/plugin/Order.php +1 -1
  584. package/project/.sdk/tm/php/feature/secrets/plugin/Point.php +1 -1
  585. package/project/.sdk/tm/php/feature/secrets/plugin/Ref.php +1 -1
  586. package/project/.sdk/tm/php/feature/secrets/plugin/Resolve.php +1 -1
  587. package/project/.sdk/tm/php/feature/secrets/plugin/Types.php +1 -1
  588. package/project/.sdk/tm/php/feature/secrets/plugin/Version.php +1 -1
  589. package/project/.sdk/tm/php/feature/secrets/plugin/plugin.php +1 -1
  590. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/aws.php +1 -1
  591. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/azuresecrets.php +1 -1
  592. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/boru.php +1 -1
  593. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/doppler.php +1 -1
  594. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/gcpsecrets.php +1 -1
  595. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/hashicorp.php +1 -1
  596. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/httpjson.php +1 -1
  597. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/infisical.php +1 -1
  598. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/onepassword.php +1 -1
  599. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/runcmd.php +1 -1
  600. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/secretspec.php +1 -1
  601. package/project/.sdk/tm/php/feature/secrets/sekreto/plugins/sigv4.php +1 -1
  602. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Addr.php +1 -1
  603. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Providers.php +1 -1
  604. package/project/.sdk/tm/php/feature/secrets/sekreto/src/Sekreto.php +1 -1
  605. package/project/.sdk/tm/php/test/feature/secrets/SecretsTest.php +98 -0
  606. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +1 -1
  607. package/project/.sdk/tm/php/test/vendor/omni/Util.php +1 -1
  608. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
  609. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
  610. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
  611. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
  612. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
  613. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
  614. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +1 -1
  615. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
  616. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1 -1
  617. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
  618. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
  619. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
  620. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
  621. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
  622. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
  623. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +1 -1
  624. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
  625. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +1 -1
  626. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
  627. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
  628. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
  629. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
  630. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +1 -1
  631. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
  632. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +1 -1
  633. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
  634. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
  635. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
  636. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +1 -1
  637. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +1 -1
  638. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +28 -6
  639. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
  640. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +114 -0
  641. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
  642. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +1 -1
  643. package/project/.sdk/tm/py/test/voxgig_omni/util.py +1 -1
  644. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/capability.rb +1 -1
  645. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/catalog.rb +1 -1
  646. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/config.rb +1 -1
  647. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/depend.rb +1 -1
  648. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/env.rb +1 -1
  649. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/export.rb +1 -1
  650. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/graph.rb +1 -1
  651. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/host.rb +1 -1
  652. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/order.rb +1 -1
  653. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/point.rb +1 -1
  654. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/ref.rb +1 -1
  655. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/resolve.rb +1 -1
  656. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/types.rb +1 -1
  657. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin/version.rb +1 -1
  658. package/project/.sdk/tm/rb/feature/secrets/voxgig_plugin.rb +1 -1
  659. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/addr.rb +1 -1
  660. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/aws.rb +1 -1
  661. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/azuresecrets.rb +1 -1
  662. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/boru.rb +1 -1
  663. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/doppler.rb +1 -1
  664. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.rb +1 -1
  665. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/hashicorp.rb +1 -1
  666. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/httpjson.rb +1 -1
  667. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/infisical.rb +1 -1
  668. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/onepassword.rb +1 -1
  669. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/secretspec.rb +1 -1
  670. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/plugins/sigv4.rb +1 -1
  671. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/providers.rb +1 -1
  672. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto/sekreto.rb +1 -1
  673. package/project/.sdk/tm/rb/feature/secrets/voxgig_sekreto.rb +1 -1
  674. package/project/.sdk/tm/rb/feature/secrets_feature.rb +28 -6
  675. package/project/.sdk/tm/rb/test/feature/secrets/secrets_feature_test.rb +93 -0
  676. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +1 -1
  677. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +1 -1
  678. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +1 -1
  679. package/project/.sdk/tm/rust/feature/secrets/plugin/capability.rs +1 -1
  680. package/project/.sdk/tm/rust/feature/secrets/plugin/catalog.rs +1 -1
  681. package/project/.sdk/tm/rust/feature/secrets/plugin/config.rs +1 -1
  682. package/project/.sdk/tm/rust/feature/secrets/plugin/depend.rs +1 -1
  683. package/project/.sdk/tm/rust/feature/secrets/plugin/env.rs +1 -1
  684. package/project/.sdk/tm/rust/feature/secrets/plugin/export.rs +1 -1
  685. package/project/.sdk/tm/rust/feature/secrets/plugin/graph.rs +1 -1
  686. package/project/.sdk/tm/rust/feature/secrets/plugin/host.rs +1 -1
  687. package/project/.sdk/tm/rust/feature/secrets/plugin/mod.rs +1 -1
  688. package/project/.sdk/tm/rust/feature/secrets/plugin/order.rs +1 -1
  689. package/project/.sdk/tm/rust/feature/secrets/plugin/point.rs +1 -1
  690. package/project/.sdk/tm/rust/feature/secrets/plugin/refs.rs +1 -1
  691. package/project/.sdk/tm/rust/feature/secrets/plugin/resolve.rs +1 -1
  692. package/project/.sdk/tm/rust/feature/secrets/plugin/types.rs +1 -1
  693. package/project/.sdk/tm/rust/feature/secrets/plugin/value.rs +1 -1
  694. package/project/.sdk/tm/rust/feature/secrets/plugin/version.rs +1 -1
  695. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/crypto.rs +1 -1
  696. package/project/.sdk/tm/rust/feature/secrets/plugins/aws/sigv4.rs +1 -1
  697. package/project/.sdk/tm/rust/feature/secrets/plugins/aws.rs +1 -1
  698. package/project/.sdk/tm/rust/feature/secrets/plugins/azuresecrets.rs +1 -1
  699. package/project/.sdk/tm/rust/feature/secrets/plugins/boru.rs +1 -1
  700. package/project/.sdk/tm/rust/feature/secrets/plugins/doppler.rs +1 -1
  701. package/project/.sdk/tm/rust/feature/secrets/plugins/gcpsecrets.rs +1 -1
  702. package/project/.sdk/tm/rust/feature/secrets/plugins/hashicorp.rs +1 -1
  703. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/http.rs +1 -1
  704. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson/json.rs +1 -1
  705. package/project/.sdk/tm/rust/feature/secrets/plugins/httpjson.rs +1 -1
  706. package/project/.sdk/tm/rust/feature/secrets/plugins/infisical.rs +1 -1
  707. package/project/.sdk/tm/rust/feature/secrets/plugins/onepassword.rs +1 -1
  708. package/project/.sdk/tm/rust/feature/secrets/plugins/secretspec.rs +1 -1
  709. package/project/.sdk/tm/rust/feature/secrets/sekreto/addr.rs +1 -1
  710. package/project/.sdk/tm/rust/feature/secrets/sekreto/mod.rs +1 -1
  711. package/project/.sdk/tm/rust/feature/secrets/sekreto/providers.rs +1 -1
  712. package/project/.sdk/tm/rust/feature/secrets/sekreto/sekreto.rs +1 -1
  713. package/project/.sdk/tm/rust/feature/secrets.rs +33 -10
  714. package/project/.sdk/tm/rust/tests/feature/secrets/main.rs +96 -0
  715. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +1 -1
  716. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +1 -1
  717. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +1 -1
  718. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1 -1
  719. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +1 -1
  720. package/project/.sdk/tm/scala/feature/SecretsFeature.scala +29 -7
  721. package/project/.sdk/tm/scala/feature/secrets/plugin/Capability.scala +1 -1
  722. package/project/.sdk/tm/scala/feature/secrets/plugin/Config.scala +1 -1
  723. package/project/.sdk/tm/scala/feature/secrets/plugin/Depend.scala +1 -1
  724. package/project/.sdk/tm/scala/feature/secrets/plugin/Env.scala +1 -1
  725. package/project/.sdk/tm/scala/feature/secrets/plugin/Export.scala +1 -1
  726. package/project/.sdk/tm/scala/feature/secrets/plugin/Graph.scala +1 -1
  727. package/project/.sdk/tm/scala/feature/secrets/plugin/Host.scala +1 -1
  728. package/project/.sdk/tm/scala/feature/secrets/plugin/Json.scala +1 -1
  729. package/project/.sdk/tm/scala/feature/secrets/plugin/Order.scala +1 -1
  730. package/project/.sdk/tm/scala/feature/secrets/plugin/Plugin.scala +1 -1
  731. package/project/.sdk/tm/scala/feature/secrets/plugin/Point.scala +1 -1
  732. package/project/.sdk/tm/scala/feature/secrets/plugin/Refs.scala +1 -1
  733. package/project/.sdk/tm/scala/feature/secrets/plugin/Resolve.scala +1 -1
  734. package/project/.sdk/tm/scala/feature/secrets/plugin/Types.scala +1 -1
  735. package/project/.sdk/tm/scala/feature/secrets/plugin/Value.scala +1 -1
  736. package/project/.sdk/tm/scala/feature/secrets/plugin/Version.scala +1 -1
  737. package/project/.sdk/tm/scala/feature/secrets/sekreto/Json.scala +1 -1
  738. package/project/.sdk/tm/scala/feature/secrets/sekreto/Provider.scala +1 -1
  739. package/project/.sdk/tm/scala/feature/secrets/sekreto/Providers.scala +1 -1
  740. package/project/.sdk/tm/scala/feature/secrets/sekreto/Sekreto.scala +1 -1
  741. package/project/.sdk/tm/scala/feature/secrets/sekreto/Spec.scala +1 -1
  742. package/project/.sdk/tm/scala/feature/secrets/sekreto/Support.scala +1 -1
  743. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Aws.scala +1 -1
  744. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Azuresecrets.scala +1 -1
  745. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Boru.scala +1 -1
  746. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Doppler.scala +1 -1
  747. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Gcpsecrets.scala +1 -1
  748. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Hashicorp.scala +1 -1
  749. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Httpjson.scala +1 -1
  750. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Infisical.scala +1 -1
  751. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Onepassword.scala +1 -1
  752. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Secretspec.scala +1 -1
  753. package/project/.sdk/tm/scala/feature/secrets/sekreto/plugins/Sigv4.scala +1 -1
  754. package/project/.sdk/tm/scala/sdktest/feature/secrets/SecretsTestMain.scala +71 -0
  755. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +1 -1
  756. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +1 -1
  757. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +1 -1
  758. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Capability.swift +1 -1
  759. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Catalog.swift +1 -1
  760. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Config.swift +1 -1
  761. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Depend.swift +1 -1
  762. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Env.swift +1 -1
  763. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Export.swift +1 -1
  764. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Graph.swift +1 -1
  765. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Host.swift +1 -1
  766. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Json.swift +1 -1
  767. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Order.swift +1 -1
  768. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Point.swift +1 -1
  769. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Refs.swift +1 -1
  770. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Resolve.swift +1 -1
  771. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Types.swift +1 -1
  772. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Value.swift +1 -1
  773. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugin/Version.swift +1 -1
  774. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Aws.swift +1 -1
  775. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Azuresecrets.swift +1 -1
  776. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Boru.swift +1 -1
  777. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Crypto.swift +1 -1
  778. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Doppler.swift +1 -1
  779. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Gcpsecrets.swift +1 -1
  780. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Hashicorp.swift +1 -1
  781. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Httpjson.swift +1 -1
  782. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Infisical.swift +1 -1
  783. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Onepassword.swift +1 -1
  784. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Proc.swift +1 -1
  785. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Secretspec.swift +1 -1
  786. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/plugins/Sigv4.swift +1 -1
  787. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Addr.swift +1 -1
  788. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Json.swift +1 -1
  789. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Provider.swift +1 -1
  790. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Providers.swift +1 -1
  791. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/feature/secrets/sekreto/Sekreto.swift +1 -1
  792. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +1 -1
  793. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +1 -1
  794. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +1 -1
  795. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +35 -12
  796. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
  797. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
  798. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
  799. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
  800. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
  801. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +1 -1
  802. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
  803. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
  804. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1 -1
  805. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
  806. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
  807. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
  808. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
  809. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
  810. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
  811. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
  812. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
  813. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
  814. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
  815. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
  816. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
  817. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
  818. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
  819. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
  820. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
  821. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
  822. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
  823. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
  824. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
  825. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
  826. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +1 -1
  827. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
  828. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
  829. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
  830. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
  831. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +1 -1
  832. package/project/.sdk/tm/ts/src/feature/test/TestFeature.ts +107 -1
  833. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +2 -2
  834. package/project/.sdk/tm/ts/src/utility/TransformRequestUtility.ts +49 -1
  835. package/project/.sdk/tm/ts/test/feature/secrets/Secrets.test.ts +73 -0
  836. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
  837. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
  838. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
  839. package/project/.sdk/tm/zig/feature/secrets/plugin/capability.zig +137 -0
  840. package/project/.sdk/tm/zig/feature/secrets/plugin/catalog.zig +90 -0
  841. package/project/.sdk/tm/zig/feature/secrets/plugin/config.zig +346 -0
  842. package/project/.sdk/tm/zig/feature/secrets/plugin/depend.zig +244 -0
  843. package/project/.sdk/tm/zig/feature/secrets/plugin/env.zig +201 -0
  844. package/project/.sdk/tm/zig/feature/secrets/plugin/export.zig +83 -0
  845. package/project/.sdk/tm/zig/feature/secrets/plugin/graph.zig +212 -0
  846. package/project/.sdk/tm/zig/feature/secrets/plugin/host.zig +1224 -0
  847. package/project/.sdk/tm/zig/feature/secrets/plugin/inst.zig +126 -0
  848. package/project/.sdk/tm/zig/feature/secrets/plugin/order.zig +228 -0
  849. package/project/.sdk/tm/zig/feature/secrets/plugin/plugin.zig +34 -0
  850. package/project/.sdk/tm/zig/feature/secrets/plugin/point.zig +166 -0
  851. package/project/.sdk/tm/zig/feature/secrets/plugin/ref.zig +147 -0
  852. package/project/.sdk/tm/zig/feature/secrets/plugin/resolve.zig +74 -0
  853. package/project/.sdk/tm/zig/feature/secrets/plugin/types.zig +140 -0
  854. package/project/.sdk/tm/zig/feature/secrets/plugin/value.zig +662 -0
  855. package/project/.sdk/tm/zig/feature/secrets/plugin/version.zig +139 -0
  856. package/project/.sdk/tm/zig/feature/secrets/plugins/aws.zig +294 -0
  857. package/project/.sdk/tm/zig/feature/secrets/plugins/azuresecrets.zig +222 -0
  858. package/project/.sdk/tm/zig/feature/secrets/plugins/boru.zig +188 -0
  859. package/project/.sdk/tm/zig/feature/secrets/plugins/doppler.zig +135 -0
  860. package/project/.sdk/tm/zig/feature/secrets/plugins/gcpsecrets.zig +170 -0
  861. package/project/.sdk/tm/zig/feature/secrets/plugins/hashicorp.zig +242 -0
  862. package/project/.sdk/tm/zig/feature/secrets/plugins/httpjson.zig +535 -0
  863. package/project/.sdk/tm/zig/feature/secrets/plugins/infisical.zig +167 -0
  864. package/project/.sdk/tm/zig/feature/secrets/plugins/onepassword.zig +202 -0
  865. package/project/.sdk/tm/zig/feature/secrets/plugins/secretspec.zig +160 -0
  866. package/project/.sdk/tm/zig/feature/secrets/plugins/sigv4.zig +336 -0
  867. package/project/.sdk/tm/zig/feature/secrets/sekreto/addr.zig +148 -0
  868. package/project/.sdk/tm/zig/feature/secrets/sekreto/builtins.zig +259 -0
  869. package/project/.sdk/tm/zig/feature/secrets/sekreto/provider.zig +440 -0
  870. package/project/.sdk/tm/zig/feature/secrets/sekreto/sekreto.zig +944 -0
  871. package/project/.sdk/tm/zig/feature/secrets.zig +854 -0
  872. package/project/.sdk/tm/zig/src/feature/secrets/.gitkeep +0 -0
  873. package/project/.sdk/tm/zig/test/feature/secrets/secrets_test.zig +891 -0
  874. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1 -1
  875. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +1 -1
  876. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +1 -1
  877. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +1 -1
  878. package/project/sdkgen-package.json +1 -1
  879. package/src/action/resolve.ts +85 -1
  880. package/src/utility.ts +17 -0
@@ -0,0 +1,1200 @@
1
+ // VENDORED: @voxgig/plugin sdk-20260908-1556-0 (cpp/src/host.cpp)
2
+ // Source: https://github.com/voxgig/plugin @ 91c4936555a4ce198669ca2c578b91e27e92e5ec [tag: sdk-20260911-2013-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ /* The host: the lifecycle state machine (§5), extension points (§6),
5
+ * and resource capture (§8). See host.hpp for the two rules that shape
6
+ * every method here. */
7
+
8
+ #include "host.hpp"
9
+
10
+ #include <algorithm>
11
+
12
+ #include "capability.hpp"
13
+ #include "config.hpp"
14
+ #include "depend.hpp"
15
+ #include "export.hpp"
16
+ #include "graph.hpp"
17
+ #include "order.hpp"
18
+ #include "ref.hpp"
19
+
20
+ namespace plugin {
21
+
22
+ /* ------------------------------------------------------------------ */
23
+ /* construction and registry helpers */
24
+ /* ------------------------------------------------------------------ */
25
+
26
+ Host::Host(const HostOptions& opts)
27
+ : catalog_(opts.catalog ? opts.catalog : makecatalog()),
28
+ reserved_(opts.reserved),
29
+ keys_(opts.keys),
30
+ defaults_(opts.defaults),
31
+ profile_(opts.profile),
32
+ points_(ismap(opts.points) ? opts.points : vmap()),
33
+ bases_(opts.bases),
34
+ dependency_(opts.dependency.empty() ? "restart" : opts.dependency) {}
35
+
36
+ HostPtr makehost(const HostOptions& opts) { return std::make_shared<Host>(opts); }
37
+
38
+ InstPtr Host::find(const std::string& ref) const {
39
+ for (const auto& e : instances_) {
40
+ if (e->ref_ == ref) return e;
41
+ }
42
+ return nullptr;
43
+ }
44
+
45
+ /* Every instance ref, SORTED — the deterministic walk §4 rule 4
46
+ * requires in a language whose containers have no inherent order. */
47
+ std::vector<std::string> Host::sortedrefs() const {
48
+ std::vector<std::string> refs;
49
+ refs.reserve(instances_.size());
50
+ for (const auto& e : instances_) refs.push_back(e->ref_);
51
+ std::sort(refs.begin(), refs.end());
52
+ return refs;
53
+ }
54
+
55
+ /* ------------------------------------------------------------------ */
56
+ /* observation */
57
+ /* ------------------------------------------------------------------ */
58
+
59
+ V Host::list() const {
60
+ V out = vmap();
61
+ for (const auto& r : sortedrefs()) set(out, r, vstr(find(r)->status_));
62
+ return out;
63
+ }
64
+
65
+ InstPtr Host::instance(const std::string& ref) const {
66
+ /* The VALIDATING canonicalizer, not the forgiving one: a lookup with
67
+ * a malformed ref is `plugin_bad_name`, not a miss
68
+ * (`declare/lookup#malformed`). Rust and swift both wrote this with
69
+ * `canon` and failed that entry. */
70
+ return find(canonref(ref));
71
+ }
72
+
73
+ V Host::observable(const V& result, bool hasresult) const {
74
+ V out = vmap();
75
+ set(out, "status", list());
76
+ set(out, "open", vnum(open_));
77
+ V lg = vlist();
78
+ for (size_t i = 0; i < len(log_); i++) push(lg, at(log_, i));
79
+ set(out, "log", lg);
80
+ set(out, "result", (!hasresult || !result) ? vnull() : result);
81
+ return out;
82
+ }
83
+
84
+ std::string Inst::name() const { return refname(ref_); }
85
+
86
+ std::string Inst::tag() const {
87
+ size_t cut = ref_.find('$');
88
+ return std::string::npos == cut ? "" : ref_.substr(cut + 1);
89
+ }
90
+
91
+ /* ------------------------------------------------------------------ */
92
+ /* guards */
93
+ /* ------------------------------------------------------------------ */
94
+
95
+ void Host::guard() const {
96
+ if (intransition_) {
97
+ fail("plugin_reentrant",
98
+ "transition attempted from inside a lifecycle callback");
99
+ }
100
+ }
101
+
102
+ InstPtr Host::need(const std::string& ref) const {
103
+ const std::string r = canonref(ref);
104
+ InstPtr e = find(r);
105
+ if (!e) {
106
+ fail("plugin_not_loaded", "no such instance: " + r,
107
+ details1("ref", vstr(r)));
108
+ }
109
+ return e;
110
+ }
111
+
112
+ void Host::checkreserved(const std::string& ref) const {
113
+ if (!islist(reserved_) || 0 == len(reserved_)) return;
114
+ const std::string name = refname(ref);
115
+ for (size_t i = 0; i < len(reserved_); i++) {
116
+ if (isstr(at(reserved_, i)) && asstr(at(reserved_, i)) == name) {
117
+ fail("plugin_ref_reserved", "ref is reserved by the host: " + ref,
118
+ details1("ref", vstr(ref)));
119
+ }
120
+ }
121
+ }
122
+
123
+ /* ------------------------------------------------------------------ */
124
+ /* scope */
125
+ /* ------------------------------------------------------------------ */
126
+
127
+ /* A selection belongs to ONE activation (§11.4). Leaving `live` by any
128
+ * door drops it, so the next activation ranks afresh — keeping it would
129
+ * make a consumer prefer a provider it never actually ran against.
130
+ *
131
+ * Returns the errors the scope raised. §8.3: "A failing release does
132
+ * not stop the rest. Every entry runs, in reverse order, whatever any
133
+ * of them does; the errors are collected and raised as one
134
+ * `plugin_release_failed`." */
135
+ V Host::unwind(const InstPtr& e) {
136
+ e->selected_ = vmap();
137
+ V errors = vlist();
138
+ for (size_t k = e->scope_.size(); 0 < k; k--) {
139
+ AcquireHandle s = e->scope_[k - 1];
140
+ if (s->done) continue;
141
+ s->done = true;
142
+ if (s->counts) open_ -= 1;
143
+ if (!s->fn) continue;
144
+ try {
145
+ s->fn();
146
+ }
147
+ catch (const PluginError& err) {
148
+ push(errors, vstr(err.message));
149
+ }
150
+ }
151
+ e->scope_.clear();
152
+ return errors;
153
+ }
154
+
155
+ /* §8.3: "A failed release ends the instance in `failed`, exactly as a
156
+ * failed callback does (§5.2) — a release that raised may have leaked,
157
+ * and an instance that may be holding resources it cannot account for
158
+ * must not be reactivated." */
159
+ void Host::releasecheck(const InstPtr& e, const V& errors) {
160
+ if (0 == len(errors)) return;
161
+ e->status_ = "failed";
162
+ std::string why;
163
+ for (size_t i = 0; i < len(errors); i++) {
164
+ if (0 < i) why += "; ";
165
+ why += asstr(at(errors, i));
166
+ }
167
+ V d = vmap();
168
+ set(d, "ref", vstr(e->ref_));
169
+ set(d, "cause", errors);
170
+ fail("plugin_release_failed", "release failed for " + e->ref_ + ": " + why, d);
171
+ }
172
+
173
+ /* ------------------------------------------------------------------ */
174
+ /* the instance api */
175
+ /* ------------------------------------------------------------------ */
176
+
177
+ AcquireHandle Inst::acquire() {
178
+ /* §8.1: resources are "acquired during `activate` — the scope's
179
+ * actual job". */
180
+ if ("activate" != owner_->phase_) {
181
+ fail("plugin_release_scope", "acquire called outside activate");
182
+ }
183
+ auto s = std::make_shared<ScopeEntry>();
184
+ scope_.push_back(s);
185
+ owner_->open_ += 1;
186
+ return s;
187
+ }
188
+
189
+ /* Hand a resource back before teardown. Idempotent, and the scope keeps
190
+ * the entry: unwinding it again must be a no-op, or releasing early
191
+ * would make teardown wrong. */
192
+ void Inst::giveback(const AcquireHandle& handle) {
193
+ if (!handle || handle->done) return;
194
+ handle->done = true;
195
+ if (handle->counts) owner_->open_ -= 1;
196
+ }
197
+
198
+ void Inst::release(Release fn) {
199
+ /* §8.3: "`inst.release` outside `activate` is `plugin_release_scope`".
200
+ * Being in a transition is true in `define` too, and a scope entry
201
+ * registered there is never unwound — `unload` on a merely `loaded`
202
+ * instance does not unwind, because a loaded instance is not supposed
203
+ * to hold anything. */
204
+ if ("activate" != owner_->phase_) {
205
+ fail("plugin_release_scope", "release called outside activate");
206
+ }
207
+ /* SYMMETRIC WITH `acquire`, and it has to be: `open` counts the
208
+ * resources CURRENTLY HELD, so an entry that is registered and then
209
+ * unwound must leave the count where it found it. Incrementing on
210
+ * registration and never decrementing made every `release` a
211
+ * permanent leak in the counter. */
212
+ auto s = std::make_shared<ScopeEntry>();
213
+ s->fn = std::move(fn);
214
+ scope_.push_back(s);
215
+ owner_->open_ += 1;
216
+ }
217
+
218
+ void Inst::bind(const std::string& point, Hook hook, ChainFn chain,
219
+ const V& band) {
220
+ Host* h = owner_;
221
+ /* §12's `plugin_bind_scope`: "binding declared outside `define`". §8.1
222
+ * puts binding declaration in `define` and insertion at a SUCCESSFUL
223
+ * activate, and the guard was the half that never got written — so a
224
+ * binding added from `activate` went live without being part of the
225
+ * loaded definition, and a deactivate/activate cycle appended it
226
+ * again. The code was in the table before anything raised it. */
227
+ if ("define" != h->phase_) {
228
+ V d = vmap();
229
+ set(d, "ref", vstr(ref_));
230
+ set(d, "point", vstr(point));
231
+ fail("plugin_bind_scope", "bind called outside define: " + point, d);
232
+ }
233
+ if (!has(h->points_, point)) {
234
+ fail("plugin_point_unknown", "no such point: " + point,
235
+ details1("point", vstr(point)));
236
+ }
237
+
238
+ Bound b;
239
+ b.ref = ref_;
240
+ b.point = point;
241
+ b.band = isnum(band) ? asnum(band) : 0.0;
242
+ b.hook = std::move(hook);
243
+ b.chain = std::move(chain);
244
+ bindings_.push_back(std::move(b));
245
+ }
246
+
247
+ void Inst::bindhook(const std::string& point, Hook hook, const V& band) {
248
+ bind(point, std::move(hook), nullptr, band);
249
+ }
250
+
251
+ void Inst::bindchain(const std::string& point, ChainFn chain, const V& band) {
252
+ bind(point, nullptr, std::move(chain), band);
253
+ }
254
+
255
+ void Inst::exportvalue(const std::string& key, const V& value) {
256
+ set(exports_, key, value);
257
+ }
258
+
259
+ void Inst::provides(const V& p) { push(provides_, p); }
260
+
261
+ HostPtr Inst::nest(const HostOptions& opts) {
262
+ if (!owner_->intransition_) {
263
+ fail("plugin_release_scope", "nest called outside a lifecycle callback");
264
+ }
265
+ /* AN INSTANCE MAY ITSELF BE A HOST (§6.5), and THE OUTER ONE OWNS THE
266
+ * INNER ONE'S LIFETIME. Registering the teardown in the instance
267
+ * scope is what makes that true rather than aspirational: the inner
268
+ * host closes when the outer instance deactivates, in the same
269
+ * reverse unwind as every other resource.
270
+ *
271
+ * It does NOT count toward `open` — a teardown is not an acquisition
272
+ * (`nest/open`). */
273
+ HostPtr inner = makehost(opts);
274
+ auto s = std::make_shared<ScopeEntry>();
275
+ s->counts = false;
276
+ s->fn = [inner]() { inner->close(); };
277
+ scope_.push_back(s);
278
+ inner_ = inner;
279
+ return inner;
280
+ }
281
+
282
+ V Inst::position(const std::string& point) const {
283
+ return owner_->positionof(ref_, point);
284
+ }
285
+
286
+ /* ------------------------------------------------------------------ */
287
+ /* running a callback */
288
+ /* ------------------------------------------------------------------ */
289
+
290
+ /* Restores `intransition` and `phase` however the callback leaves —
291
+ * return or throw. In c this is two assignments repeated on both paths;
292
+ * here it is the destructor's job, which is the point of having one. */
293
+ namespace {
294
+ struct PhaseGuard {
295
+ bool* intransition;
296
+ std::string* phase;
297
+ PhaseGuard(bool* t, std::string* p, const std::string& at)
298
+ : intransition(t), phase(p) {
299
+ *intransition = true;
300
+ *phase = at;
301
+ }
302
+ ~PhaseGuard() {
303
+ *intransition = false;
304
+ phase->clear();
305
+ }
306
+ };
307
+ } // namespace
308
+
309
+ void Host::run(const InstPtr& e, const std::string& at) {
310
+ const Lifecycle* fn = definitioncallback(e->def_, at);
311
+
312
+ push(log_, vstr(e->ref_ + ":" + at));
313
+
314
+ V ev = vmap();
315
+ set(ev, "ref", vstr(e->ref_));
316
+ set(ev, "event", vstr(at));
317
+ set(ev, "seq", vnum(e->seq_));
318
+ set(ev, "status", vstr(e->status_));
319
+ push(events_, ev);
320
+
321
+ if (nullptr == fn || !*fn) return;
322
+
323
+ try {
324
+ PhaseGuard g(&intransition_, &phase_, at);
325
+ (*fn)(*e);
326
+ }
327
+ catch (const PluginError& err) {
328
+ /* §12: `plugin_define_failed` and its three siblings are "a callback
329
+ * raised; wraps the cause". AN ERROR THAT ALREADY CARRIES A CODE
330
+ * KEEPS IT — the code is the error's identity, and a plugin that
331
+ * raised `store_unreachable` must not have it rewritten. Only a
332
+ * code-less error is wrapped, which is the ordinary case for a
333
+ * callback that let a library error escape. */
334
+ if (!err.code.empty() && "plugin_bare" != err.code) throw;
335
+ V d = vmap();
336
+ set(d, "ref", vstr(e->ref_));
337
+ set(d, "cause", vstr(err.text));
338
+ fail("plugin_" + at + "_failed",
339
+ e->ref_ + " raised in " + at + ": " + err.text, d);
340
+ }
341
+ }
342
+
343
+ /* ------------------------------------------------------------------ */
344
+ /* requirements and providers */
345
+ /* ------------------------------------------------------------------ */
346
+
347
+ V Host::providersof(const V& req) const {
348
+ V cands = vlist();
349
+ /* ASK WHETHER THE NAME IS A REF, do not assume it. A requirement name
350
+ * is a CAPABILITY name first (§11.1) and capability names are
351
+ * free-form, so `2fa` and `my cap` are legal ones that no ref could
352
+ * be called — and `canonref` RAISES on those, which made a perfectly
353
+ * legal document kill the host right here. */
354
+ V rname = get(req, "name");
355
+ std::string asref;
356
+ bool isaref = isstr(rname) && tryref(asstr(rname), asref);
357
+
358
+ for (const auto& r : sortedrefs()) {
359
+ InstPtr t = find(r);
360
+ if ("live" != t->status_) continue;
361
+ /* A ref satisfies directly. */
362
+ if (isaref && r == asref) {
363
+ V prov = vmap();
364
+ set(prov, "name", rname);
365
+ V c = vmap();
366
+ set(c, "ref", vstr(r));
367
+ set(c, "pos", vnum(t->pos_));
368
+ set(c, "provides", prov);
369
+ push(cands, c);
370
+ continue;
371
+ }
372
+ for (size_t j = 0; j < len(t->provides_); j++) {
373
+ V p = at(t->provides_, j);
374
+ if (same(get(p, "name"), rname)) {
375
+ V c = vmap();
376
+ set(c, "ref", vstr(r));
377
+ set(c, "pos", vnum(t->pos_));
378
+ set(c, "provides", p);
379
+ push(cands, c);
380
+ }
381
+ }
382
+ }
383
+ return resolvecapability(req, cands);
384
+ }
385
+
386
+ V Host::unmetof(const InstPtr& e) const {
387
+ V out = vlist();
388
+ V reqs = requirements(e->options_);
389
+ for (size_t i = 0; i < len(reqs); i++) {
390
+ V r = at(reqs, i);
391
+ if (!gatesactivation(r)) continue;
392
+ if (0 == len(providersof(r))) push(out, get(r, "name"));
393
+ }
394
+ return out;
395
+ }
396
+
397
+ /* §11.4's always-reluctant selection, and the ONE place a provider is
398
+ * chosen for a live instance. "A satisfied requirement is not re-bound
399
+ * while it stays satisfied" is a statement about a REMEMBERED choice.
400
+ *
401
+ * `remember` is false for the questions asked ABOUT an instance rather
402
+ * than BY it — introspection must not create a binding. */
403
+ std::string Host::chosen(const InstPtr& e, const V& req, bool remember) const {
404
+ V cands = providersof(req);
405
+ if (0 == len(cands)) return "";
406
+ const std::string name = asstr(get(req, "name"));
407
+ V heldv = get(e->selected_, name);
408
+ if (isstr(heldv)) {
409
+ for (size_t i = 0; i < len(cands); i++) {
410
+ if (asstr(get(at(cands, i), "ref")) == asstr(heldv)) return asstr(heldv);
411
+ }
412
+ }
413
+ const std::string first = asstr(get(at(cands, 0), "ref"));
414
+ if (remember) set(e->selected_, name, vstr(first));
415
+ return first;
416
+ }
417
+
418
+ /* The instance currently SELECTED for each of this one's
419
+ * restart-causing requirements. A BINDING IS TO AN INSTANCE, not to a
420
+ * capability (§11.1): the selected one going away restarts a `static`
421
+ * consumer even though a survivor is available. */
422
+ V Host::boundproviders(const InstPtr& e) const {
423
+ V out = vlist();
424
+ V reqs = requirements(e->options_);
425
+ for (size_t i = 0; i < len(reqs); i++) {
426
+ V r = at(reqs, i);
427
+ if (!restartsonloss(r)) continue;
428
+ const std::string ref = chosen(e, r, false);
429
+ if (ref.empty()) continue;
430
+ bool dup = false;
431
+ for (size_t j = 0; j < len(out); j++) {
432
+ if (asstr(at(out, j)) == ref) { dup = true; break; }
433
+ }
434
+ if (!dup) push(out, vstr(ref));
435
+ }
436
+ return out;
437
+ }
438
+
439
+ V Host::consumersof(const std::string& ref) const {
440
+ V out = vlist();
441
+ for (const auto& r : sortedrefs()) {
442
+ if (r == ref) continue;
443
+ InstPtr c = find(r);
444
+ if ("live" != c->status_) continue;
445
+ V bp = boundproviders(c);
446
+ for (size_t j = 0; j < len(bp); j++) {
447
+ if (asstr(at(bp, j)) == ref) { push(out, vstr(r)); break; }
448
+ }
449
+ }
450
+ return out;
451
+ }
452
+
453
+ /* §11.3's `hold` asks a DIFFERENT question from the cascade.
454
+ *
455
+ * The cascade wants the edges that RESTART — mandatory-static and
456
+ * optional-static. `hold` says "deactivating a REQUIRED instance is
457
+ * `plugin_dependency_held`", and `required` is CARDINALITY:
458
+ * `gatesactivation`, not `restartsonloss`. The two sets differ in both
459
+ * directions and each difference was a real bug. */
460
+ V Host::holdersof(const std::string& ref) const {
461
+ V out = vlist();
462
+ for (const auto& r : sortedrefs()) {
463
+ if (r == ref) continue;
464
+ InstPtr c = find(r);
465
+ if ("live" != c->status_) continue;
466
+ V reqs = requirements(c->options_);
467
+ for (size_t j = 0; j < len(reqs); j++) {
468
+ V req = at(reqs, j);
469
+ if (!gatesactivation(req)) continue;
470
+ if (chosen(c, req, false) == ref) { push(out, vstr(r)); break; }
471
+ }
472
+ }
473
+ return out;
474
+ }
475
+
476
+ /* The hold check is A GUARD ON AD-HOC DEACTIVATION, NOT ON COORDINATED
477
+ * TEARDOWN. In a bulk operation that is removing the holders too, it is
478
+ * suspended — otherwise `close()` under `hold` would raise on the first
479
+ * provider it reached whenever a document happened to list a consumer
480
+ * after it, which is the policy refusing the one teardown it has no
481
+ * reason to object to. */
482
+ void Host::held(const InstPtr& e) const {
483
+ if ("hold" != dependency_) return;
484
+ if (coordinated_) return;
485
+ V holders = holdersof(e->ref_);
486
+ if (0 == len(holders)) return;
487
+ V d = vmap();
488
+ set(d, "ref", vstr(e->ref_));
489
+ set(d, "holders", holders);
490
+ fail("plugin_dependency_held",
491
+ "instance is required by live consumers: " + e->ref_, d);
492
+ }
493
+
494
+ /* The requirement graph as plain data, for the pure detector. */
495
+ V Host::graphnodes() const {
496
+ V out = vlist();
497
+ for (const auto& r : sortedrefs()) {
498
+ InstPtr e = find(r);
499
+ V provides = vlist();
500
+ for (size_t j = 0; j < len(e->provides_); j++) {
501
+ push(provides, get(at(e->provides_, j), "name"));
502
+ }
503
+ V node = vmap();
504
+ set(node, "ref", vstr(r));
505
+ set(node, "provides", provides);
506
+ set(node, "requires", requirements(e->options_));
507
+ push(out, node);
508
+ }
509
+ return out;
510
+ }
511
+
512
+ /* ------------------------------------------------------------------ */
513
+ /* ordering and points */
514
+ /* ------------------------------------------------------------------ */
515
+
516
+ V Host::order(const std::string& point) const {
517
+ /* Sorted by declaration SEQUENCE, which is what makes the §7 sort's
518
+ * fall-through deterministic in a language whose containers have no
519
+ * insertion order. §7 breaks ties by `pos`; two instances CAN share
520
+ * one — `declare` defaults `pos` to the registry size, so an unload
521
+ * followed by a fresh declare reuses a surviving instance's — and
522
+ * past that the canonical was falling through to map order. `seq` is
523
+ * that order, made explicit. Found by review of the go port. */
524
+ std::vector<InstPtr> live;
525
+ for (const auto& e : instances_) {
526
+ if ("live" == e->status_) live.push_back(e);
527
+ }
528
+ std::sort(live.begin(), live.end(),
529
+ [](const InstPtr& a, const InstPtr& b) { return a->seq_ < b->seq_; });
530
+
531
+ V bindings = vlist();
532
+ for (const auto& e : live) {
533
+ V b = vmap();
534
+ set(b, "ref", vstr(e->ref_));
535
+ set(b, "pos", vnum(e->pos_));
536
+ if (!isnull(e->order_)) set(b, "order", e->order_);
537
+ push(bindings, b);
538
+ }
539
+
540
+ V spec = point.empty() ? nullptr : get(points_, point);
541
+ return resolveorder(bindings, ismap(spec) ? get(spec, "pin") : nullptr);
542
+ }
543
+
544
+ V Host::positionof(const std::string& ref, const std::string& point) const {
545
+ V ranked = order(point);
546
+ const std::string r = canonref(ref);
547
+ double index = -1;
548
+ for (size_t i = 0; i < len(ranked); i++) {
549
+ if (asstr(at(ranked, i)) == r) { index = static_cast<double>(i); break; }
550
+ }
551
+ V out = vmap();
552
+ set(out, "index", vnum(index));
553
+ set(out, "count", vnum(static_cast<double>(len(ranked))));
554
+ /* §6.2 composes b1(b2(b3(base))) with the FIRST binding OUTERMOST, so
555
+ * these are not index 0 and count-1 the other way round. Getting this
556
+ * backwards is the exact error the positional pin vocabulary exists
557
+ * to prevent. */
558
+ set(out, "outermost", vbool(0 == index));
559
+ set(out, "innermost", vbool(index == static_cast<double>(len(ranked)) - 1));
560
+ return out;
561
+ }
562
+
563
+ /* Live bindings on a point, in resolved order. Recomputed on any change
564
+ * to the live set (§7) rather than cached at startup — the bug a host
565
+ * discovers only when something deactivates in production. */
566
+ std::vector<Bound> Host::boundon(const std::string& point) const {
567
+ V ranked = order(point);
568
+ std::vector<Bound> out;
569
+ for (size_t i = 0; i < len(ranked); i++) {
570
+ InstPtr e = find(asstr(at(ranked, i)));
571
+ if (!e) continue;
572
+ /* The band is the INSTANCE's ordering block (§7), stamped by the
573
+ * host. A plugin passing its own would be ranking itself above the
574
+ * order its document declared. */
575
+ V band = get(e->order_, "band");
576
+ double bandv = isnum(band) ? asnum(band) : 0.0;
577
+ for (const auto& b : e->bindings_) {
578
+ if (b.point != point) continue;
579
+ Bound copy = b;
580
+ copy.band = bandv;
581
+ out.push_back(copy);
582
+ }
583
+ }
584
+ return out;
585
+ }
586
+
587
+ V Host::pointspec(const std::string& point) const {
588
+ if (!has(points_, point)) {
589
+ fail("plugin_point_unknown", "no such point: " + point,
590
+ details1("point", vstr(point)));
591
+ }
592
+ V spec = get(points_, point);
593
+ return ismap(spec) ? spec : vmap();
594
+ }
595
+
596
+ static void checkkind(const V& spec, const std::string& point,
597
+ const std::string& want) {
598
+ V kind = get(spec, "kind");
599
+ bool given = isstr(kind);
600
+ bool ok = given ? (asstr(kind) == want) : ("hook" == want);
601
+ if (ok) return;
602
+ V d = vmap();
603
+ set(d, "point", vstr(point));
604
+ set(d, "kind", given ? kind : vnull());
605
+ fail("plugin_point_kind", "point is not a " + want + ": " + point, d);
606
+ }
607
+
608
+ V Host::emit(const std::string& point, const V& arg) {
609
+ V spec = pointspec(point);
610
+ checkkind(spec, point, "hook");
611
+ auto bindings = boundon(point);
612
+ V mode = get(spec, "mode");
613
+ const std::string m = isstr(mode) ? asstr(mode) : "emit";
614
+ V errors;
615
+ V out = pointemit(bindings, m, arg, errors);
616
+ if ("emit" == m) return nullptr;
617
+ if ("bail" == m) return out;
618
+ return errors;
619
+ }
620
+
621
+ V Host::call(const std::string& point, const V& arg) {
622
+ V spec = pointspec(point);
623
+ checkkind(spec, point, "chain");
624
+ auto bindings = boundon(point);
625
+ /* The host owns the base and a plugin cannot replace it (§6.2). One
626
+ * that wants to SUBSTITUTE rather than wrap binds innermost and
627
+ * simply does not call `next`. */
628
+ auto it = bases_.find(point);
629
+ return pointcall(bindings, bases_.end() == it ? Hook() : it->second, arg);
630
+ }
631
+
632
+ V Host::provider(const std::string& point, const V& arg) {
633
+ V spec = pointspec(point);
634
+ checkkind(spec, point, "provider");
635
+ auto bindings = boundon(point);
636
+ V shadow;
637
+ long winner = pointprovider(bindings, truthy(get(spec, "exclusive")), shadow);
638
+ if (0 > winner) return get(spec, "default");
639
+ return bindings[static_cast<size_t>(winner)].hook(arg);
640
+ }
641
+
642
+ V Host::trace() const {
643
+ V out = vlist();
644
+ for (size_t i = 0; i < len(events_); i++) push(out, at(events_, i));
645
+ return out;
646
+ }
647
+
648
+ V Host::shadowed(const std::string& point) const {
649
+ if (!has(points_, point)) return vlist();
650
+ V spec = get(points_, point);
651
+ auto bindings = boundon(point);
652
+ V shadow;
653
+ pointprovider(bindings, ismap(spec) && truthy(get(spec, "exclusive")), shadow);
654
+ return shadow ? shadow : vlist();
655
+ }
656
+
657
+ V Host::exports(const std::string& spec) const {
658
+ V all = vlist();
659
+ for (const auto& r : sortedrefs()) {
660
+ InstPtr e = find(r);
661
+ /* Exports of a `loaded` (not live) instance are VISIBLE (§11). */
662
+ if ("declared" == e->status_ || "failed" == e->status_) continue;
663
+ for (const auto& k : keys(e->exports_)) {
664
+ V ex = vmap();
665
+ set(ex, "ref", vstr(r));
666
+ set(ex, "key", vstr(k));
667
+ set(ex, "value", get(e->exports_, k));
668
+ push(all, ex);
669
+ }
670
+ }
671
+ return resolveexport(vstr(spec), all);
672
+ }
673
+
674
+ V Host::capability(const std::string& name) const {
675
+ V cands = vlist();
676
+ for (const auto& r : sortedrefs()) {
677
+ InstPtr e = find(r);
678
+ if ("live" != e->status_) continue;
679
+ for (size_t j = 0; j < len(e->provides_); j++) {
680
+ V p = at(e->provides_, j);
681
+ if (isstr(get(p, "name")) && asstr(get(p, "name")) == name) {
682
+ V c = vmap();
683
+ set(c, "ref", vstr(r));
684
+ set(c, "pos", vnum(e->pos_));
685
+ set(c, "provides", p);
686
+ push(cands, c);
687
+ }
688
+ }
689
+ }
690
+ V req = vmap();
691
+ set(req, "name", vstr(name));
692
+ V ranked = resolvecapability(req, cands);
693
+ V out = vlist();
694
+ for (size_t i = 0; i < len(ranked); i++) push(out, get(at(ranked, i), "ref"));
695
+ return out;
696
+ }
697
+
698
+ /* ------------------------------------------------------------------ */
699
+ /* the state machine */
700
+ /* ------------------------------------------------------------------ */
701
+
702
+ std::string Host::autotag(const std::string& name) const {
703
+ /* AUTO-TAGGING IS EXPLICIT (§4 rule 3): the LOWEST UNUSED POSITIVE
704
+ * INTEGER tag. It needs a host because it must know what is already
705
+ * declared, which is why it cannot live in the pure `ref` section. */
706
+ for (int n = 1;; n++) {
707
+ const std::string cand = formatref(vstr(name), vstr(std::to_string(n)));
708
+ if (!find(cand)) return cand;
709
+ }
710
+ }
711
+
712
+ InstPtr Host::declare(const std::string& ref, const DeclareSpec& spec) {
713
+ std::string r;
714
+ if ("?" == spec.tag) r = autotag(refname(canonref(ref)));
715
+ else r = canonref(ref);
716
+
717
+ if (!spec.hostowned) checkreserved(r);
718
+
719
+ const std::string defname =
720
+ spec.definition.empty() ? refname(r) : spec.definition;
721
+ DefinitionPtr def = catalog_->get(defname);
722
+ if (!def) {
723
+ fail("plugin_unknown_definition", "not in catalog: " + defname,
724
+ details1("name", vstr(defname)));
725
+ }
726
+
727
+ InstPtr existing = find(r);
728
+ if (existing) {
729
+ /* §4 rule 1: a pair addresses at most one instance. Re-declaring the
730
+ * SAME definition is the idempotent case; a different one is a
731
+ * duplicate, not a silent overwrite (seneca) and not an
732
+ * impossibility (sdkgen). */
733
+ if (existing->def_->name != def->name) {
734
+ fail("plugin_ref_duplicate", "instance already declared: " + r,
735
+ details1("ref", vstr(r)));
736
+ }
737
+ return existing;
738
+ }
739
+
740
+ auto e = std::make_shared<Inst>();
741
+ e->ref_ = r;
742
+ e->def_ = def;
743
+ e->status_ = "declared";
744
+ e->pos_ = spec.haspos ? spec.pos : static_cast<double>(instances_.size());
745
+ e->seq_ = seqn_++;
746
+ /* NO OPTIONS ADOPTED HERE. `apply` resolves options and hands the map
747
+ * over; adopting the caller's map made target and source THE SAME MAP
748
+ * in the refill that follows, which cleared its own source and left a
749
+ * first-time instance with no options at all. */
750
+ e->options_ = ismap(spec.options) ? spec.options : vmap();
751
+ e->order_ = spec.order;
752
+ e->owner_ = this;
753
+ instances_.push_back(e);
754
+ return e;
755
+ }
756
+
757
+ InstPtr Host::load(const std::string& ref, const DeclareSpec& spec) {
758
+ guard();
759
+ InstPtr e = declare(ref, spec);
760
+ if ("declared" != e->status_) return e; /* idempotent */
761
+ /* PRESENT AND NOT NULL, not merely present. Every driver builds its
762
+ * command spec with all four keys and a null for each absent one, so
763
+ * a presence test reads an omitted `options` as an authored empty and
764
+ * wipes the real ones. */
765
+ if (ismap(spec.options)) e->options_ = spec.options;
766
+
767
+ try {
768
+ run(e, "define");
769
+ }
770
+ catch (const PluginError&) {
771
+ e->status_ = "failed";
772
+ throw;
773
+ }
774
+ e->status_ = "loaded";
775
+
776
+ /* AT LOAD, and before anything runs: a cycle through restart-causing
777
+ * requirements does not settle, and the only safe time to report a
778
+ * non-terminating reconcile is before it starts (§11.3). `provides`
779
+ * is populated by `define`, which has just run, so this is the first
780
+ * moment the graph is complete. */
781
+ try {
782
+ checkcycle(graphnodes());
783
+ }
784
+ catch (const PluginError&) {
785
+ e->status_ = "failed";
786
+ throw;
787
+ }
788
+ return e;
789
+ }
790
+
791
+ /* CONSUMERS GO DOWN FIRST, NOT AFTERWARDS (§11.3).
792
+ *
793
+ * The cascade is part of the provider's own deactivation and runs
794
+ * BEFORE the provider's `deactivate` callback and scope unwind, so a
795
+ * consumer's teardown can still call the thing it depends on — flushing
796
+ * a buffer to the store it is about to lose is exactly what a
797
+ * `deactivate` callback is for. */
798
+ void Host::cascade(const InstPtr& provider, const V& seen) {
799
+ if (has(seen, provider->ref_)) return;
800
+ set(seen, provider->ref_, vbool(true));
801
+
802
+ V cons = consumersof(provider->ref_);
803
+ for (size_t i = 0; i < len(cons); i++) {
804
+ InstPtr c = find(asstr(at(cons, i)));
805
+ if (!c || "live" != c->status_) continue;
806
+ cascade(c, seen); /* deepest-first */
807
+ bool bad = false;
808
+ try {
809
+ run(c, "deactivate");
810
+ }
811
+ catch (const PluginError&) {
812
+ bad = true;
813
+ }
814
+ V errors = unwind(c);
815
+ if (bad || 0 < len(errors)) {
816
+ /* §5.2: ANY failure during a transition lands the instance in
817
+ * `failed`, and a cascaded consumer is not an exception. Marking
818
+ * it `pending` instead handed it straight back to `reconcile`,
819
+ * which would activate it again the moment the provider returned
820
+ * — the one thing `failed` exists to stop. */
821
+ c->status_ = "failed";
822
+ continue;
823
+ }
824
+ c->status_ = "pending";
825
+ c->unmet_ = unmetof(c);
826
+ }
827
+ }
828
+
829
+ InstPtr Host::activate(const std::string& ref) {
830
+ guard();
831
+ InstPtr e = need(ref);
832
+ if ("live" == e->status_) return e; /* no-op returning success */
833
+ if ("failed" == e->status_) {
834
+ fail("plugin_bad_state", "instance has failed: " + e->ref_,
835
+ details1("ref", vstr(e->ref_)));
836
+ }
837
+ /* §9.6: `active: false` bars the instance from running, and the bar
838
+ * is on the INSTANCE rather than on the apply that set it. `ready`
839
+ * reaches this through `activate`, which is why one guard covers both
840
+ * verbs the design names. */
841
+ if (e->barred_) {
842
+ fail("plugin_inactive", "instance is barred by active: false: " + e->ref_,
843
+ details1("ref", vstr(e->ref_)));
844
+ }
845
+ if ("declared" == e->status_) load(e->ref_, DeclareSpec());
846
+
847
+ /* A declared requirement that is not live means `pending`: activation
848
+ * is a STANDING REQUEST, not a one-shot event. */
849
+ V unmet = unmetof(e);
850
+ if (0 < len(unmet)) {
851
+ e->unmet_ = unmet;
852
+ e->status_ = "pending";
853
+ return e;
854
+ }
855
+
856
+ try {
857
+ run(e, "activate");
858
+ }
859
+ catch (const PluginError&) {
860
+ /* Unwind whatever the partial activation captured, in reverse. */
861
+ unwind(e);
862
+ e->status_ = "failed";
863
+ throw;
864
+ }
865
+
866
+ /* §11.4: THE SELECTION IS MADE HERE, once, and remembered. Every
867
+ * later question — the cascade, `hold`, `unmet` — reads it back
868
+ * rather than re-ranking, which is what "always-reluctant" means. */
869
+ V reqs = requirements(e->options_);
870
+ for (size_t i = 0; i < len(reqs); i++) chosen(e, at(reqs, i), true);
871
+ e->status_ = "live";
872
+ reconcile();
873
+ return e;
874
+ }
875
+
876
+ InstPtr Host::deactivate(const std::string& ref) {
877
+ guard();
878
+ InstPtr e = need(ref);
879
+ if ("loaded" == e->status_ || "declared" == e->status_) return e;
880
+
881
+ /* §5.2: `unload` is THE ONLY TRANSITION OUT OF `failed`. Falling
882
+ * through here ran the definition's `deactivate` on an instance that
883
+ * never completed activation and, if that callback happened to
884
+ * succeed, returned it to `loaded` — from where it could be activated
885
+ * again, which is precisely what `failed` exists to prevent. */
886
+ if ("failed" == e->status_) {
887
+ fail("plugin_bad_state", "instance has failed: " + e->ref_,
888
+ details1("ref", vstr(e->ref_)));
889
+ }
890
+
891
+ if ("pending" == e->status_) {
892
+ /* DEACTIVATING A PENDING INSTANCE RUNS NO CALLBACK (§5.2). It never
893
+ * reached activate, so it holds no scope and no live bindings;
894
+ * running the definition's deactivate there would be teardown
895
+ * without matching setup. It cannot fail. */
896
+ e->status_ = "loaded";
897
+ e->unmet_ = vlist();
898
+ return e;
899
+ }
900
+
901
+ held(e);
902
+ cascade(e, vmap());
903
+
904
+ try {
905
+ run(e, "deactivate");
906
+ }
907
+ catch (const PluginError&) {
908
+ unwind(e);
909
+ e->status_ = "failed";
910
+ throw;
911
+ }
912
+ releasecheck(e, unwind(e));
913
+ e->status_ = "loaded";
914
+ reconcile();
915
+ return e;
916
+ }
917
+
918
+ void Host::unload(const std::string& ref) {
919
+ guard();
920
+ InstPtr e = need(ref);
921
+ if ("live" == e->status_ || "pending" == e->status_) {
922
+ if ("live" == e->status_) {
923
+ held(e);
924
+ cascade(e, vmap());
925
+ try {
926
+ run(e, "deactivate");
927
+ }
928
+ catch (const PluginError&) {
929
+ /* §5.2: ANY failure during a transition lands the instance in
930
+ * `failed`, with the scope STILL FULLY UNWOUND. An earlier
931
+ * draft let the raise propagate straight out of `unload`, which
932
+ * left the instance `live` and its scope untouched — reporting
933
+ * a failure while leaking exactly the resources the failure was
934
+ * about. */
935
+ unwind(e);
936
+ e->status_ = "failed";
937
+ throw;
938
+ }
939
+ releasecheck(e, unwind(e));
940
+ }
941
+ e->status_ = "loaded";
942
+ }
943
+
944
+ auto drop = [this, &e]() {
945
+ auto it = std::find(instances_.begin(), instances_.end(), e);
946
+ if (instances_.end() != it) instances_.erase(it);
947
+ };
948
+
949
+ if ("loaded" == e->status_ || "failed" == e->status_) {
950
+ try {
951
+ run(e, "close");
952
+ }
953
+ catch (const PluginError&) {
954
+ drop();
955
+ throw;
956
+ }
957
+ }
958
+ drop();
959
+ }
960
+
961
+ InstPtr Host::ready(const std::string& ref) {
962
+ /* Runs the whole forward path in one call (§5.1). §15.2's verb list
963
+ * omits this; §5.1 defines it and §15.3's `declare` row requires the
964
+ * corpus to pin it, so the list was incomplete rather than excluding
965
+ * it (DOCS.md §4.2). */
966
+ guard();
967
+ const std::string r = canonref(ref);
968
+ if (!find(r)) declare(r, DeclareSpec());
969
+ if ("declared" == find(r)->status_) load(r, DeclareSpec());
970
+ return activate(r);
971
+ }
972
+
973
+ /* EAGER reconciliation: run to a fixed point rather than scheduling.
974
+ *
975
+ * Two directions, and both are the reason `pending` exists. Activation
976
+ * is a STANDING REQUEST, not a one-shot event: a pending instance whose
977
+ * requirement arrives activates without being asked again, and a LIVE
978
+ * instance whose requirement is lost goes back to pending —
979
+ * recursively, through its own consumers. */
980
+ void Host::reconcile() {
981
+ bool moved = true;
982
+ int rounds = 0;
983
+ while (moved) {
984
+ moved = false;
985
+ if (1000 < ++rounds) break;
986
+
987
+ /* Losses first, so a cascade settles in one pass rather than
988
+ * alternating with re-activations. */
989
+ for (const auto& r : sortedrefs()) {
990
+ InstPtr e = find(r);
991
+ if (!e || "live" != e->status_) continue;
992
+ V reqs = requirements(e->options_);
993
+ V lost = vlist();
994
+ for (size_t j = 0; j < len(reqs); j++) {
995
+ V q = at(reqs, j);
996
+ if (!gatesactivation(q)) continue;
997
+ if (0 == len(providersof(q))) push(lost, q);
998
+ }
999
+ if (0 == len(lost)) continue;
1000
+ /* POLICY IS PER REQUIREMENT, not per instance (§11.3): only the
1001
+ * definition that has the requirement knows what it can cope
1002
+ * with, and one instance may hold both a `static` and a `dynamic`
1003
+ * one. A `dynamic` requirement whose provider is gone leaves the
1004
+ * consumer LIVE and notified. */
1005
+ bool anyrestart = false;
1006
+ for (size_t j = 0; j < len(lost); j++) {
1007
+ if (restartsonloss(at(lost, j))) { anyrestart = true; break; }
1008
+ }
1009
+ if (!anyrestart) continue;
1010
+
1011
+ bool bad = false;
1012
+ try {
1013
+ run(e, "deactivate");
1014
+ }
1015
+ catch (const PluginError&) {
1016
+ bad = true;
1017
+ }
1018
+ V errors = unwind(e);
1019
+ if (bad || 0 < len(errors)) {
1020
+ e->status_ = "failed";
1021
+ moved = true;
1022
+ continue;
1023
+ }
1024
+ e->status_ = "pending";
1025
+ e->unmet_ = unmetof(e);
1026
+ moved = true;
1027
+ }
1028
+
1029
+ for (const auto& r : sortedrefs()) {
1030
+ InstPtr e = find(r);
1031
+ if (!e || "pending" != e->status_) continue;
1032
+ if (0 < len(unmetof(e))) continue;
1033
+ try {
1034
+ run(e, "activate");
1035
+ V reqs = requirements(e->options_);
1036
+ for (size_t j = 0; j < len(reqs); j++) chosen(e, at(reqs, j), true);
1037
+ e->status_ = "live";
1038
+ e->unmet_ = vlist();
1039
+ moved = true;
1040
+ }
1041
+ catch (const PluginError&) {
1042
+ unwind(e);
1043
+ e->status_ = "failed";
1044
+ moved = true;
1045
+ }
1046
+ }
1047
+ }
1048
+ }
1049
+
1050
+ /* ------------------------------------------------------------------ */
1051
+ /* documents */
1052
+ /* ------------------------------------------------------------------ */
1053
+
1054
+ /* Empty the target and refill it, so callers holding the reference see
1055
+ * the new values. A definition's callbacks close over the options map
1056
+ * they were handed at `define`; replacing the reference would leave
1057
+ * every binding reading the values the first apply gave it. */
1058
+ static void refill(const V& target, const V& source) {
1059
+ for (const auto& k : keys(target)) del(target, k);
1060
+ for (const auto& k : keys(source)) set(target, k, get(source, k));
1061
+ }
1062
+
1063
+ V Host::shapeof(const std::string& ref) const {
1064
+ DefinitionPtr d = catalog_->get(refname(ref));
1065
+ return d ? d->shape : nullptr;
1066
+ }
1067
+
1068
+ void Host::apply(const V& doc, const V& profile) {
1069
+ guard();
1070
+ V in = vmap();
1071
+ set(in, "doc", doc);
1072
+ set(in, "profile", isnull(profile) ? profile_ : profile);
1073
+ set(in, "keys", keys_);
1074
+ set(in, "reserved", reserved_);
1075
+ V norm = normalizeconfig(in);
1076
+
1077
+ V want = get(norm, "order");
1078
+ V optionsof = vmap();
1079
+ for (size_t i = 0; i < len(want); i++) {
1080
+ const std::string ref = asstr(at(want, i));
1081
+ V oin = vmap();
1082
+ set(oin, "ref", vstr(ref));
1083
+ set(oin, "doc", doc);
1084
+ set(oin, "profile", isnull(profile) ? profile_ : profile);
1085
+ set(oin, "shape", shapeof(ref));
1086
+ if (ismap(defaults_)) set(oin, "hostdefaults", get(defaults_, refname(ref)));
1087
+ set(optionsof, ref, resolveoptions(oin));
1088
+ }
1089
+
1090
+ /* --- phase 1: deactivations and unloads, in REVERSE load order --- */
1091
+ V instancespec = get(norm, "instance");
1092
+ std::vector<std::string> drop;
1093
+ for (const auto& e : instances_) {
1094
+ if ("declared" == e->status_) continue;
1095
+ V ent = get(instancespec, e->ref_);
1096
+ bool wantlive = ismap(ent) && truthy(get(ent, "active")) &&
1097
+ "eager" == asstr(get(ent, "start"));
1098
+ if (!wantlive) drop.push_back(e->ref_);
1099
+ }
1100
+ /* Reverse load order: highest `pos` first, ref-descending for a tie,
1101
+ * so a consumer declared after its provider goes down first. */
1102
+ std::sort(drop.begin(), drop.end(),
1103
+ [this](const std::string& a, const std::string& b) {
1104
+ InstPtr x = find(a), y = find(b);
1105
+ if (x->pos_ != y->pos_) return x->pos_ > y->pos_;
1106
+ return a > b;
1107
+ });
1108
+ for (const auto& r : drop) unload(r);
1109
+
1110
+ /* --- phase 2: declare and patch EVERYTHING, in load order -------- */
1111
+ for (size_t i = 0; i < len(want); i++) {
1112
+ const std::string ref = asstr(at(want, i));
1113
+ V ent = get(instancespec, ref);
1114
+ DeclareSpec spec;
1115
+ spec.order = get(ent, "order");
1116
+ spec.haspos = true;
1117
+ spec.pos = asnum(get(ent, "pos"));
1118
+ declare(ref, spec);
1119
+ InstPtr e = find(ref);
1120
+ /* The bar is REASSERTED ON EVERY APPLY, in both directions — a
1121
+ * document that turns the instance back on clears it, which is the
1122
+ * whole point of a config switch. */
1123
+ e->barred_ = !truthy(get(ent, "active"));
1124
+ refill(e->options_, get(optionsof, ref));
1125
+ e->order_ = get(ent, "order");
1126
+ e->pos_ = asnum(get(ent, "pos"));
1127
+ }
1128
+
1129
+ /* --- phase 3: loads, then phase 4: activations, in load order ---- */
1130
+ for (int phase = 0; phase < 2; phase++) {
1131
+ for (size_t i = 0; i < len(want); i++) {
1132
+ const std::string ref = asstr(at(want, i));
1133
+ V ent = get(instancespec, ref);
1134
+ bool wantlive = truthy(get(ent, "active")) &&
1135
+ "eager" == asstr(get(ent, "start"));
1136
+ if (!wantlive) continue;
1137
+ if (0 == phase) load(ref, DeclareSpec());
1138
+ else activate(ref);
1139
+ }
1140
+ }
1141
+ }
1142
+
1143
+ void Host::setoptions(const std::string& ref, const V& patch) {
1144
+ guard();
1145
+ InstPtr e = need(ref);
1146
+ V previous = clone(e->options_);
1147
+ V in = vmap();
1148
+ set(in, "ref", vstr(e->ref_));
1149
+ set(in, "shape", shapeof(e->ref_));
1150
+ set(in, "doc", vmap());
1151
+ set(in, "patch", mergevalue(previous, patch));
1152
+ refill(e->options_, resolveoptions(in));
1153
+
1154
+ if ("live" != e->status_) return;
1155
+ if (e->def_->reconfigure) {
1156
+ PhaseGuard g(&intransition_, &phase_, "reconfigure");
1157
+ e->def_->reconfigure(*e, e->options_, previous);
1158
+ return;
1159
+ }
1160
+ /* Always correct and sometimes expensive; `reconfigure` exists to
1161
+ * make the common case cheap (§9.4). */
1162
+ deactivate(e->ref_);
1163
+ activate(e->ref_);
1164
+ }
1165
+
1166
+ void Host::close() {
1167
+ /* A bulk teardown removing the holders too, so `hold` is suspended
1168
+ * for exactly those holders (§11.3) — while the consumers-first
1169
+ * cascade still runs, which is the half that matters. */
1170
+ /* A COORDINATED FLAG THAT SURVIVES A RAISE IS A DISABLED GUARD. The
1171
+ canonical wraps the teardown in `try/finally`; here an unload that
1172
+ raises would skip the reset and leave the host permanently
1173
+ `coordinated`, so a caller that catches the error and carries on under
1174
+ `dependency: "hold"` gets ad-hoc deactivation with the holder check
1175
+ silently off.
1176
+
1177
+ RAII rather than a try/catch: the flag is cleared by a destructor,
1178
+ so it is cleared on the throwing path without the path being
1179
+ written down twice. */
1180
+ struct Coordinating {
1181
+ bool* flag;
1182
+ explicit Coordinating(bool* f) : flag(f) { *flag = true; }
1183
+ ~Coordinating() { *flag = false; }
1184
+ } coordinating(&coordinated_);
1185
+ std::vector<std::string> refs;
1186
+ for (const auto& e : instances_) refs.push_back(e->ref_);
1187
+ /* Reverse load order. */
1188
+ std::sort(refs.begin(), refs.end(),
1189
+ [this](const std::string& a, const std::string& b) {
1190
+ InstPtr x = find(a), y = find(b);
1191
+ if (!x || !y) return false;
1192
+ if (x->pos_ != y->pos_) return x->pos_ > y->pos_;
1193
+ return a > b;
1194
+ });
1195
+ for (const auto& r : refs) {
1196
+ if (find(r)) unload(r);
1197
+ }
1198
+ }
1199
+
1200
+ } // namespace plugin