@voxgig/sdkgen 4.8.2 → 4.8.3

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 (376) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/dist/action/doctor.d.ts +1 -0
  3. package/dist/action/doctor.js +50 -2
  4. package/dist/action/doctor.js.map +1 -1
  5. package/dist/helpers/naming.js +4 -2
  6. package/dist/helpers/naming.js.map +1 -1
  7. package/dist/tsconfig.tsbuildinfo +1 -1
  8. package/model/sdkgen.aon +21 -0
  9. package/package.json +1 -1
  10. package/project/.sdk/model/feature/secrets.aon +120 -18
  11. package/project/.sdk/model/target/c.aon +10 -0
  12. package/project/.sdk/model/target/clojure.aon +13 -0
  13. package/project/.sdk/model/target/cpp.aon +10 -0
  14. package/project/.sdk/model/target/csharp.aon +9 -0
  15. package/project/.sdk/model/target/dart.aon +10 -0
  16. package/project/.sdk/model/target/elixir.aon +9 -0
  17. package/project/.sdk/model/target/go.aon +13 -0
  18. package/project/.sdk/model/target/java.aon +9 -0
  19. package/project/.sdk/model/target/js.aon +7 -0
  20. package/project/.sdk/model/target/kotlin.aon +9 -0
  21. package/project/.sdk/model/target/lean.aon +17 -0
  22. package/project/.sdk/model/target/lua.aon +8 -0
  23. package/project/.sdk/model/target/ocaml.aon +9 -0
  24. package/project/.sdk/model/target/perl.aon +8 -0
  25. package/project/.sdk/model/target/php.aon +8 -0
  26. package/project/.sdk/model/target/py.aon +13 -0
  27. package/project/.sdk/model/target/rb.aon +8 -0
  28. package/project/.sdk/model/target/rust.aon +10 -0
  29. package/project/.sdk/model/target/scala.aon +21 -2
  30. package/project/.sdk/model/target/swift.aon +18 -0
  31. package/project/.sdk/model/target/ts.aon +13 -0
  32. package/project/.sdk/src/cmp/clojure/Package_clojure.ts +9 -2
  33. package/project/.sdk/src/cmp/cpp/Gitignore_cpp.ts +3 -0
  34. package/project/.sdk/src/cmp/dart/Test_dart.ts +2 -0
  35. package/project/.sdk/src/cmp/elixir/Package_elixir.ts +4 -1
  36. package/project/.sdk/src/cmp/go/Config_go.ts +59 -2
  37. package/project/.sdk/src/cmp/go/Main_go.ts +8 -2
  38. package/project/.sdk/src/cmp/java/Test_java.ts +6 -5
  39. package/project/.sdk/src/cmp/kotlin/Test_kotlin.ts +6 -5
  40. package/project/.sdk/src/cmp/lean/Package_lean.ts +23 -0
  41. package/project/.sdk/src/cmp/lean/ReadmeInstall_lean.ts +1 -0
  42. package/project/.sdk/src/cmp/lean/ReadmeTopTest_lean.ts +1 -0
  43. package/project/.sdk/src/cmp/ocaml/Gitignore_ocaml.ts +1 -0
  44. package/project/.sdk/src/cmp/ocaml/Main_ocaml.ts +7 -3
  45. package/project/.sdk/src/cmp/py/Config_py.ts +82 -1
  46. package/project/.sdk/src/cmp/py/Main_py.ts +44 -0
  47. package/project/.sdk/src/cmp/py/fragment/Main.fragment.py +2 -0
  48. package/project/.sdk/src/cmp/swift/Main_swift.ts +10 -0
  49. package/project/.sdk/src/cmp/swift/Package_swift.ts +13 -1
  50. package/project/.sdk/src/cmp/ts/Config_ts.ts +42 -17
  51. package/project/.sdk/src/cmp/ts/fragment/Config.data.fragment.ts +13 -1
  52. package/project/.sdk/src/cmp/ts/fragment/Config.fragment.ts +13 -1
  53. package/project/.sdk/tm/c/Makefile +38 -3
  54. package/project/.sdk/tm/c/tests/omni_resolver.h +361 -0
  55. package/project/.sdk/tm/c/tests/omni_smoke_test.c +237 -0
  56. package/project/.sdk/tm/c/tests/primary_corpus_test.c +205 -284
  57. package/project/.sdk/tm/c/tests/struct_corpus_test.c +292 -212
  58. package/project/.sdk/tm/c/tests/vendor/omni/json.c +811 -0
  59. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +240 -0
  60. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +940 -0
  61. package/project/.sdk/tm/c/tests/vendor/omni/util.c +351 -0
  62. package/project/.sdk/tm/c/utility/struct/utility.c +7 -2
  63. package/project/.sdk/tm/clojure/test/sdk/test/omni.clj +401 -0
  64. package/project/.sdk/tm/clojure/test/sdk/test/omni_smoke.clj +81 -0
  65. package/project/.sdk/tm/clojure/test/sdk/test/primary.clj +92 -58
  66. package/project/.sdk/tm/clojure/test/sdk/test/struct_corpus.clj +122 -149
  67. package/project/.sdk/tm/clojure/test/sdk/test_runner.clj +8 -3
  68. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +145 -0
  69. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +445 -0
  70. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +145 -0
  71. package/project/.sdk/tm/cpp/Makefile +5 -1
  72. package/project/.sdk/tm/cpp/test/omni_resolver.hpp +473 -0
  73. package/project/.sdk/tm/cpp/test/omni_smoke_test.cpp +209 -0
  74. package/project/.sdk/tm/cpp/test/primary_utility_test.cpp +243 -184
  75. package/project/.sdk/tm/cpp/test/runner_support.hpp +68 -181
  76. package/project/.sdk/tm/cpp/test/struct_corpus_test.cpp +183 -56
  77. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +406 -0
  78. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +751 -0
  79. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +256 -0
  80. package/project/.sdk/tm/cpp/utility/pipeline.hpp +7 -1
  81. package/project/.sdk/tm/csharp/test/OmniResolver.cs +491 -0
  82. package/project/.sdk/tm/csharp/test/OmniSmokeTest.cs +106 -0
  83. package/project/.sdk/tm/csharp/test/PrimaryUtilityTest.cs +299 -316
  84. package/project/.sdk/tm/csharp/test/Runner.cs +104 -269
  85. package/project/.sdk/tm/csharp/test/StructUtilityTest.cs +535 -724
  86. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +864 -0
  87. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +347 -0
  88. package/project/.sdk/tm/csharp/utility/MakeSpec.cs +3 -1
  89. package/project/.sdk/tm/csharp/utility/PrepareMethod.cs +6 -1
  90. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +21 -5
  91. package/project/.sdk/tm/dart/test/omni.dart +520 -0
  92. package/project/.sdk/tm/dart/test/omni_smoke_test.dart +143 -0
  93. package/project/.sdk/tm/dart/test/primary_test.dart +86 -28
  94. package/project/.sdk/tm/dart/test/struct_test.dart +438 -11
  95. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +7 -0
  96. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +653 -0
  97. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +232 -0
  98. package/project/.sdk/tm/elixir/Makefile +11 -3
  99. package/project/.sdk/tm/elixir/test/omni_smoke_test.exs +117 -0
  100. package/project/.sdk/tm/elixir/test/primary_utility_test.exs +341 -16
  101. package/project/.sdk/tm/elixir/test/struct_corpus_test.exs +554 -9
  102. package/project/.sdk/tm/elixir/test/support/omni.ex +377 -0
  103. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +122 -0
  104. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +623 -0
  105. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +187 -0
  106. package/project/.sdk/tm/go/core/context.go +32 -16
  107. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +261 -0
  108. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +78 -0
  109. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +652 -0
  110. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +250 -0
  111. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +194 -0
  112. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +80 -0
  113. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +238 -0
  114. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1575 -0
  115. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +248 -0
  116. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +184 -0
  117. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +123 -0
  118. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +79 -0
  119. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +296 -0
  120. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +87 -0
  121. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +161 -0
  122. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +292 -0
  123. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +201 -0
  124. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +187 -0
  125. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +184 -0
  126. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +114 -0
  127. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +156 -0
  128. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +209 -0
  129. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +241 -0
  130. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +151 -0
  131. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +152 -0
  132. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +143 -0
  133. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +120 -0
  134. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +439 -0
  135. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +685 -0
  136. package/project/.sdk/tm/go/feature/secrets_feature.go +675 -0
  137. package/project/.sdk/tm/go/src/feature/secrets/.gitkeep +0 -0
  138. package/project/.sdk/tm/go/test/feature/secrets/secrets_feature_test.go +799 -0
  139. package/project/.sdk/tm/go/test/omni/omni.go +897 -0
  140. package/project/.sdk/tm/go/test/omni/util.go +360 -0
  141. package/project/.sdk/tm/go/test/omniresolver_test.go +748 -0
  142. package/project/.sdk/tm/go/test/omnismoke_test.go +112 -0
  143. package/project/.sdk/tm/go/test/primary_utility_test.go +123 -191
  144. package/project/.sdk/tm/go/test/struct_utility_test.go +323 -16
  145. package/project/.sdk/tm/go/test/testsupport_test.go +294 -0
  146. package/project/.sdk/tm/go/utility/make_options.go +8 -1
  147. package/project/.sdk/tm/go/utility/prepare_method.go +5 -1
  148. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +2 -2
  149. package/project/.sdk/tm/java/test/OmniResolver.java +355 -0
  150. package/project/.sdk/tm/java/test/OmniSmokeTest.java +99 -0
  151. package/project/.sdk/tm/java/test/PrimaryUtilityTest.java +254 -280
  152. package/project/.sdk/tm/java/test/RunnerSupport.java +9 -194
  153. package/project/.sdk/tm/java/test/StructCorpusTest.java +119 -42
  154. package/project/.sdk/tm/java/test/vendor/omni/Json.java +287 -0
  155. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +851 -0
  156. package/project/.sdk/tm/java/test/vendor/omni/Util.java +322 -0
  157. package/project/.sdk/tm/java/utility/MakeSpec.java +3 -1
  158. package/project/.sdk/tm/java/utility/PrepareMethod.java +5 -5
  159. package/project/.sdk/tm/java/utility/struct/Struct.java +17 -4
  160. package/project/.sdk/tm/js/src/utility/StructUtility.js +3 -3
  161. package/project/.sdk/tm/js/test/omni.js +251 -0
  162. package/project/.sdk/tm/js/test/omni.test.js +105 -0
  163. package/project/.sdk/tm/js/test/utility/PrimaryUtility.test.js +6 -2
  164. package/project/.sdk/tm/js/test/utility/StructUtility.test.js +27 -2
  165. package/project/.sdk/tm/js/test/vendor/omni/index.js +77 -0
  166. package/project/.sdk/tm/js/test/vendor/omni/runner.js +613 -0
  167. package/project/.sdk/tm/js/test/vendor/omni/util.js +212 -0
  168. package/project/.sdk/tm/kotlin/core/Utility.kt +1 -1
  169. package/project/.sdk/tm/kotlin/test/OmniResolver.kt +343 -0
  170. package/project/.sdk/tm/kotlin/test/OmniSmokeTest.kt +100 -0
  171. package/project/.sdk/tm/kotlin/test/PrimaryUtilityTest.kt +244 -262
  172. package/project/.sdk/tm/kotlin/test/RunnerSupport.kt +9 -178
  173. package/project/.sdk/tm/kotlin/test/StructCorpusTest.kt +121 -32
  174. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +264 -0
  175. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +615 -0
  176. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +139 -0
  177. package/project/.sdk/tm/kotlin/utility/MakeSpecUrl.kt +6 -3
  178. package/project/.sdk/tm/kotlin/utility/Prepare.kt +6 -6
  179. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +18 -2
  180. package/project/.sdk/tm/lean/Makefile +12 -5
  181. package/project/.sdk/tm/lean/src/SdkUtility.lean +14 -1
  182. package/project/.sdk/tm/lean/test/OmniResolver.lean +358 -0
  183. package/project/.sdk/tm/lean/test/OmniSmoke.lean +174 -0
  184. package/project/.sdk/tm/lean/test/StructCorpus.lean +245 -574
  185. package/project/.sdk/tm/lean/test/TPrimaryUtility.lean +155 -291
  186. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +997 -0
  187. package/project/.sdk/tm/lua/test/omni.lua +456 -0
  188. package/project/.sdk/tm/lua/test/omni_smoke_test.lua +103 -0
  189. package/project/.sdk/tm/lua/test/primary_utility_test.lua +250 -509
  190. package/project/.sdk/tm/lua/test/struct_utility_test.lua +161 -70
  191. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +268 -0
  192. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +385 -0
  193. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +641 -0
  194. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +282 -0
  195. package/project/.sdk/tm/lua/utility/prepare_method.lua +5 -1
  196. package/project/.sdk/tm/lua/utility/struct/regex.lua +663 -0
  197. package/project/.sdk/tm/lua/utility/struct/struct.lua +660 -420
  198. package/project/.sdk/tm/ocaml/Makefile +37 -12
  199. package/project/.sdk/tm/ocaml/test/omni_resolver.ml +284 -0
  200. package/project/.sdk/tm/ocaml/test/omni_smoke_test.ml +169 -0
  201. package/project/.sdk/tm/ocaml/test/primary_utility_test.ml +84 -100
  202. package/project/.sdk/tm/ocaml/test/struct_corpus.ml +225 -201
  203. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +1157 -0
  204. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +88 -12
  205. package/project/.sdk/tm/perl/t/omni.pm +647 -0
  206. package/project/.sdk/tm/perl/t/omni_smoke.t +87 -0
  207. package/project/.sdk/tm/perl/t/primary_utility.t +189 -487
  208. package/project/.sdk/tm/perl/t/struct_utility.t +455 -389
  209. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +649 -0
  210. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +253 -0
  211. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +24 -0
  212. package/project/.sdk/tm/perl/utility/prepare_method.pm +7 -2
  213. package/project/.sdk/tm/php/test/Omni.php +691 -0
  214. package/project/.sdk/tm/php/test/OmniSmokeTest.php +93 -0
  215. package/project/.sdk/tm/php/test/PrimaryUtilityTest.php +210 -571
  216. package/project/.sdk/tm/php/test/StructUtilityTest.php +320 -342
  217. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +644 -0
  218. package/project/.sdk/tm/php/test/vendor/omni/Util.php +283 -0
  219. package/project/.sdk/tm/php/utility/MakeSpec.php +10 -3
  220. package/project/.sdk/tm/php/utility/PrepareBody.php +7 -1
  221. package/project/.sdk/tm/php/utility/PrepareMethod.php +6 -2
  222. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +36 -0
  223. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +141 -0
  224. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +50 -0
  225. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +333 -0
  226. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +198 -0
  227. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +147 -0
  228. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +52 -0
  229. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +139 -0
  230. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1053 -0
  231. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +171 -0
  232. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +95 -0
  233. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +116 -0
  234. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +59 -0
  235. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +87 -0
  236. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +112 -0
  237. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +74 -0
  238. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +116 -0
  239. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +192 -0
  240. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +120 -0
  241. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +140 -0
  242. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +62 -0
  243. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +101 -0
  244. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +152 -0
  245. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +115 -0
  246. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +92 -0
  247. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +101 -0
  248. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +119 -0
  249. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +125 -0
  250. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +211 -0
  251. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +455 -0
  252. package/project/.sdk/tm/py/pkg/feature/secrets_feature.py +467 -0
  253. package/project/.sdk/tm/py/pkg/utility/prepare_method.py +5 -1
  254. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/__init__.py +0 -2
  255. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +780 -529
  256. package/project/.sdk/tm/py/src/feature/secrets/.gitkeep +0 -0
  257. package/project/.sdk/tm/py/test/feature/__init__.py +0 -0
  258. package/project/.sdk/tm/py/test/feature/secrets/__init__.py +0 -0
  259. package/project/.sdk/tm/py/test/feature/secrets/test_secrets.py +337 -0
  260. package/project/.sdk/tm/py/test/omni.py +415 -0
  261. package/project/.sdk/tm/py/test/test_omni_smoke.py +74 -0
  262. package/project/.sdk/tm/py/test/test_primary_utility.py +144 -668
  263. package/project/.sdk/tm/py/test/test_struct_utility.py +74 -27
  264. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +62 -0
  265. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +566 -0
  266. package/project/.sdk/tm/py/test/voxgig_omni/util.py +237 -0
  267. package/project/.sdk/tm/rb/test/omni.rb +505 -0
  268. package/project/.sdk/tm/rb/test/omni_smoke_test.rb +72 -0
  269. package/project/.sdk/tm/rb/test/primary_utility_test.rb +174 -560
  270. package/project/.sdk/tm/rb/test/struct_utility_test.rb +13 -7
  271. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +493 -0
  272. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +199 -0
  273. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +15 -0
  274. package/project/.sdk/tm/rb/utility/prepare_method.rb +5 -1
  275. package/project/.sdk/tm/rust/tests/common/mod.rs +19 -242
  276. package/project/.sdk/tm/rust/tests/omni_resolver/mod.rs +888 -0
  277. package/project/.sdk/tm/rust/tests/omni_smoke_test.rs +286 -0
  278. package/project/.sdk/tm/rust/tests/primary_utility_test.rs +318 -312
  279. package/project/.sdk/tm/rust/tests/struct_utility_test.rs +66 -28
  280. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +412 -0
  281. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +38 -0
  282. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +392 -0
  283. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +1001 -0
  284. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +161 -0
  285. package/project/.sdk/tm/rust/utility/prepare_method.rs +5 -1
  286. package/project/.sdk/tm/scala/Makefile +16 -6
  287. package/project/.sdk/tm/scala/sdktest/OmniResolver.scala +497 -0
  288. package/project/.sdk/tm/scala/sdktest/OmniSmoke.scala +192 -0
  289. package/project/.sdk/tm/scala/sdktest/PrimaryCorpus.scala +47 -19
  290. package/project/.sdk/tm/scala/sdktest/StructCorpus.scala +0 -0
  291. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +229 -0
  292. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +552 -0
  293. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +104 -0
  294. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Constants.swift +10 -0
  295. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Inject.swift +28 -5
  296. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Injection.swift +5 -1
  297. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Minor.swift +4 -1
  298. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/Struct/Validate.swift +15 -5
  299. package/project/.sdk/tm/swift/Sources/ProjectNameSDK/utility/Prepare.swift +6 -1
  300. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniResolver.swift +474 -0
  301. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/OmniSmokeTest.swift +107 -0
  302. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/PrimaryUtilityTest.swift +141 -178
  303. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/Runner.swift +17 -113
  304. package/project/.sdk/tm/swift/Tests/ProjectNameSDKTests/StructUtilityTest.swift +295 -446
  305. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +364 -0
  306. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +730 -0
  307. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +162 -0
  308. package/project/.sdk/tm/ts/src/feature/secrets/SecretsFeature.ts +7 -0
  309. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +148 -0
  310. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +55 -0
  311. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +344 -0
  312. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +205 -0
  313. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +138 -0
  314. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +46 -0
  315. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +349 -0
  316. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +181 -0
  317. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1132 -0
  318. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +177 -0
  319. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +119 -0
  320. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +102 -0
  321. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +61 -0
  322. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +112 -0
  323. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +100 -0
  324. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +37 -0
  325. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +163 -30
  326. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +27 -22
  327. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/aws.ts +26 -36
  328. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/azuresecrets.ts +19 -21
  329. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/boru.ts +36 -17
  330. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/doppler.ts +14 -21
  331. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/gcpsecrets.ts +27 -27
  332. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/hashicorp.ts +25 -39
  333. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +99 -0
  334. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/infisical.ts +14 -16
  335. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{provider → plugins}/onepassword.ts +15 -22
  336. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +98 -0
  337. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/{Sigv4.ts → plugins/sigv4.ts} +7 -6
  338. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +97 -23
  339. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +37 -0
  340. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +4 -17
  341. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +4 -16
  342. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +11 -25
  343. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +6 -23
  344. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +106 -39
  345. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +3 -3
  346. package/project/.sdk/tm/ts/test/omni.ts +104 -32
  347. package/project/.sdk/tm/ts/test/utility/StructUtility.test.ts +27 -0
  348. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +32 -5
  349. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +2 -2
  350. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +2 -2
  351. package/project/.sdk/tm/zig/test/primary_utility_test.zig +1 -1
  352. package/project/.sdk/tm/zig/test/struct_runner.zig +5 -4
  353. package/project/sdkgen-package.json +1 -1
  354. package/src/action/doctor.ts +66 -2
  355. package/src/helpers/naming.ts +4 -2
  356. package/project/.sdk/tm/c/tests/runner.h +0 -274
  357. package/project/.sdk/tm/cpp/test/struct_runner.hpp +0 -314
  358. package/project/.sdk/tm/csharp/test/StructRunner.cs +0 -276
  359. package/project/.sdk/tm/dart/test/runner.dart +0 -406
  360. package/project/.sdk/tm/dart/test/struct_corpus.dart +0 -531
  361. package/project/.sdk/tm/elixir/test/support/struct_corpus.ex +0 -1088
  362. package/project/.sdk/tm/go/test/runner_test.go +0 -629
  363. package/project/.sdk/tm/go/test/struct_runner_test.go +0 -1094
  364. package/project/.sdk/tm/java/test/StructRunner.java +0 -281
  365. package/project/.sdk/tm/js/test/runner.js +0 -387
  366. package/project/.sdk/tm/kotlin/test/StructRunner.kt +0 -177
  367. package/project/.sdk/tm/lua/test/struct_runner.lua +0 -602
  368. package/project/.sdk/tm/ocaml/test/corpus_runner.ml +0 -185
  369. package/project/.sdk/tm/perl/t/struct_runner.pm +0 -275
  370. package/project/.sdk/tm/php/test/StructRunner.php +0 -275
  371. package/project/.sdk/tm/py/test/struct_runner.py +0 -411
  372. package/project/.sdk/tm/rb/test/struct_runner.rb +0 -309
  373. package/project/.sdk/tm/rust/tests/struct_runner/mod.rs +0 -424
  374. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/Registry.ts +0 -90
  375. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/http.ts +0 -66
  376. package/project/.sdk/tm/ts/test/vendor/omni/compat.ts +0 -188
@@ -0,0 +1,250 @@
1
+ // VENDORED: @voxgig/plugin 0.1.6 (go/plugin/depend.go)
2
+ // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ /* Dependency cardinality, policy, and the restart graph (§11.3).
5
+ *
6
+ * TWO AXES, BOTH DECLARED BY THE DEFINITION THAT HAS THE REQUIREMENT,
7
+ * because only it knows what it can cope with:
8
+ *
9
+ * | static (default) | dynamic
10
+ * -------------|---------------------------|--------------------------
11
+ * mandatory | unmet -> pending; | unmet -> pending;
12
+ * (default) | lost -> pending, | lost -> STAYS LIVE,
13
+ * | recursively | notified
14
+ * -------------|---------------------------|--------------------------
15
+ * optional:true| never gates activation; | never gates activation;
16
+ * | a change deactivates and | a change is a
17
+ * | reactivates | notification, nothing else
18
+ *
19
+ * `dynamic` means the plugin has said, IN WRITING, that it can survive
20
+ * its provider being swapped underneath it. It is not the default
21
+ * because most plugins cannot, and the cost of wrongly assuming they can
22
+ * is a live instance holding a dead reference.
23
+ *
24
+ * The rebinding-preference axis is deliberately omitted. OSGi has
25
+ * reluctant vs greedy and it is a knob every author must understand to
26
+ * read anyone else's component; we take always-reluctant. Three axes
27
+ * were more than the model can carry across twenty ports. */
28
+
29
+ package plugin
30
+
31
+ import "sort"
32
+
33
+ // NormRequire: a bare string is shorthand for `{name}`.
34
+ func NormRequire(r any) Required {
35
+ if s, ok := r.(string); ok {
36
+ return Required{Name: s}
37
+ }
38
+ m := asmap(r)
39
+ out := Required{
40
+ Name: asstring(m["name"], ""),
41
+ Range: asstring(m["range"], ""),
42
+ Policy: asstring(m["policy"], ""),
43
+ }
44
+ if v, ok := m["match"].(map[string]any); ok {
45
+ out.Match = v
46
+ }
47
+ out.Optional = asbool(m["optional"], false)
48
+ return out
49
+ }
50
+
51
+ /* Requirements are the requirements a definition declared, normalized.
52
+ *
53
+ * BOTH AXES ARE READ AT TWO LEVELS, AND THE PER-REQUIREMENT ONE WINS.
54
+ *
55
+ * The instance-level `policy` and `optional` list are how a DOCUMENT
56
+ * states the axis without editing the definition, and they apply to
57
+ * every requirement. The per-requirement form is the one §11.1's object
58
+ * syntax exists for, and it is strictly more expressive: an instance
59
+ * that is `static` on its store and `dynamic` on its metrics cannot be
60
+ * written at all at the instance level, and that is the ordinary case
61
+ * rather than an exotic one.
62
+ *
63
+ * `optional` unions rather than overriding — both spellings are
64
+ * statements that this requirement need not gate activation, and there
65
+ * is no reading under which one of them means "actually, mandatory". */
66
+ func Requirements(options map[string]any) []Required {
67
+ raw, _ := aslist(options["requires"])
68
+ markedraw, _ := aslist(options["optional"])
69
+ marked := []string{}
70
+ for _, m := range markedraw {
71
+ marked = append(marked, asstring(m, ""))
72
+ }
73
+ fallback := asstring(options["policy"], "")
74
+
75
+ out := []Required{}
76
+ for _, r := range raw {
77
+ req := NormRequire(r)
78
+ if req.Optional || hasstring(marked, req.Name) {
79
+ req.Optional = true
80
+ }
81
+ if "" == req.Policy && "" != fallback {
82
+ req.Policy = fallback
83
+ }
84
+ out = append(out, req)
85
+ }
86
+ return out
87
+ }
88
+
89
+ // RestartsOnLoss: does losing this requirement's SELECTED provider
90
+ // restart the consumer? The mandatory ones under `static`, and the
91
+ // `static` optional ones — both make a capability change deactivate and
92
+ // reactivate. `dynamic` never restarts: mandatory-dynamic stays live and
93
+ // is notified, optional-dynamic is a notification and nothing else.
94
+ func RestartsOnLoss(r Required) bool {
95
+ policy := r.Policy
96
+ if "" == policy {
97
+ policy = "static"
98
+ }
99
+ return "dynamic" != policy
100
+ }
101
+
102
+ // GatesActivation: does an unmet requirement keep the consumer out of
103
+ // `live`?
104
+ //
105
+ // Cardinality alone decides this, NOT policy. `dynamic` is a statement
106
+ // about surviving a SWAP, not about starting without the thing at all —
107
+ // a mandatory-dynamic consumer still waits in `pending` for its first
108
+ // provider. Conflating the two would let a plugin that declared it can
109
+ // cope with replacement activate with nothing to call.
110
+ func GatesActivation(r Required) bool {
111
+ return !r.Optional
112
+ }
113
+
114
+ /* RestartCausing marks the edges that can cause a restart, which is
115
+ * exactly the set a cycle must be detected over (§11.3).
116
+ *
117
+ * Those are the mandatory requirements AND THE `static` OPTIONAL ONES,
118
+ * because both make a capability change deactivate and reactivate the
119
+ * consumer — and a cycle of restarts does not settle: A comes up, B
120
+ * restarts, which changes B's capability, which restarts A,
121
+ * indefinitely.
122
+ *
123
+ * ONLY `dynamic` OPTIONAL EDGES ARE EXCLUDED, and they are the ones the
124
+ * exclusion was for: two plugins that optionally and dynamically consume
125
+ * each other's capabilities both activate happily, neither gates on the
126
+ * other, and each is merely notified when the other appears. Nothing
127
+ * restarts, so nothing oscillates.
128
+ *
129
+ * An earlier draft of §11.3 excluded EVERY optional edge and thereby
130
+ * admitted the non-terminating case it was trying to permit. */
131
+ func RestartCausing(r Required) bool {
132
+ return GatesActivation(r) || RestartsOnLoss(r)
133
+ }
134
+
135
+ // DependNode is the requirement graph as plain data, for the pure
136
+ // detector.
137
+ type DependNode struct {
138
+ Ref string
139
+ Provides []string
140
+ Requires []Required
141
+ }
142
+
143
+ /* DependencyCycle: a cycle through restart-causing requirements is
144
+ * `plugin_dependency_cycle`, detected AT LOAD — before anything runs,
145
+ * because the failure it describes is a non-terminating reconcile and
146
+ * the only safe time to report that is before it starts.
147
+ *
148
+ * The graph is over capabilities, not refs: an edge runs from a consumer
149
+ * to EVERY node that provides what it needs, because any of them could
150
+ * be the one selected and a cycle through any is a cycle. A node also
151
+ * satisfies its own name as a ref (§11.1), which is why the ref is a
152
+ * provider of itself here. */
153
+ func DependencyCycle(nodes []DependNode) []string {
154
+ // TWO INDEXES, NOT ONE MERGED MAP. Capability names and refs are
155
+ // matched differently — a capability by its exact name, a ref through
156
+ // the canonical spelling (§4 rule 5) — and one map keyed by both can
157
+ // only do one of them. Keyed by both and looked up raw, as this was,
158
+ // a cycle spelled `a$`/`b$` found no providers and EVADED the
159
+ // load-time check that exists to catch a non-terminating reconcile.
160
+ bycap := map[string][]string{}
161
+ isref := map[string]bool{}
162
+ for _, n := range nodes {
163
+ isref[n.Ref] = true
164
+ for _, cap := range n.Provides {
165
+ bycap[cap] = append(bycap[cap], n.Ref)
166
+ }
167
+ }
168
+
169
+ edges := map[string][]string{}
170
+ for _, n := range nodes {
171
+ out := []string{}
172
+ for _, r := range n.Requires {
173
+ if !RestartCausing(r) {
174
+ continue
175
+ }
176
+ from := append([]string{}, bycap[r.Name]...)
177
+ // A node satisfies its own name AS A REF (§11.1),
178
+ // canonically — exactly what `providersof` does at runtime,
179
+ // so the load-time graph and the running one agree about
180
+ // what an edge is. `canon` hands back a name no ref could
181
+ // have unchanged, and no instance ref can equal one, so it
182
+ // is the tolerant test this needs.
183
+ if asref := canon(r.Name); isref[asref] && !hasstring(from, asref) {
184
+ from = append(from, asref)
185
+ }
186
+ for _, p := range from {
187
+ if p != n.Ref && !hasstring(out, p) {
188
+ out = append(out, p)
189
+ }
190
+ }
191
+ }
192
+ sort.Strings(out)
193
+ edges[n.Ref] = out
194
+ }
195
+
196
+ // Iterative DFS with an explicit stack: twenty ports, and several of
197
+ // them have no recursion budget worth relying on.
198
+ const white, grey, black = 0, 1, 2
199
+ colour := map[string]int{}
200
+ for _, n := range nodes {
201
+ colour[n.Ref] = white
202
+ }
203
+
204
+ for _, start := range sortedkeys(edges) {
205
+ if white != colour[start] {
206
+ continue
207
+ }
208
+ path := []string{start}
209
+ type frame struct {
210
+ ref string
211
+ i int
212
+ }
213
+ stack := []frame{{ref: start, i: 0}}
214
+ colour[start] = grey
215
+
216
+ for 0 < len(stack) {
217
+ top := &stack[len(stack)-1]
218
+ if top.i >= len(edges[top.ref]) {
219
+ colour[top.ref] = black
220
+ stack = stack[:len(stack)-1]
221
+ path = path[:len(path)-1]
222
+ continue
223
+ }
224
+ next := edges[top.ref][top.i]
225
+ top.i++
226
+ if grey == colour[next] {
227
+ // Report the cycle itself, not the walk that found it.
228
+ return append(append([]string{}, path[indexof(path, next):]...), next)
229
+ }
230
+ if black == colour[next] {
231
+ continue
232
+ }
233
+ colour[next] = grey
234
+ path = append(path, next)
235
+ stack = append(stack, frame{ref: next, i: 0})
236
+ }
237
+ }
238
+ return nil
239
+ }
240
+
241
+ // CheckCycle raises on a cycle, naming it. Separate from the detector so
242
+ // the detector stays pure and corpus-testable.
243
+ func CheckCycle(nodes []DependNode) error {
244
+ if cycle := DependencyCycle(nodes); nil != cycle {
245
+ return Fail("plugin_dependency_cycle",
246
+ "requirements cycle: "+join(cycle, " -> "),
247
+ map[string]any{"cycle": cycle})
248
+ }
249
+ return nil
250
+ }
@@ -0,0 +1,194 @@
1
+ // VENDORED: @voxgig/plugin 0.1.6 (go/plugin/env.go)
2
+ // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ /* Environment overrides (§9.5) — level 7 of the ladder.
5
+ *
6
+ * One prefix, so nothing drifts: `VOXGIG_PLUGIN_*`.
7
+ *
8
+ * VOXGIG_PLUGIN_PROFILE the profile name
9
+ * VOXGIG_PLUGIN_<REF>_<PATH> one option
10
+ * VOXGIG_PLUGIN_ACTIVE/INACTIVE comma-separated refs, INACTIVE wins
11
+ *
12
+ * THE ENCODING IS LOSSY, AND THIS SAYS SO RATHER THAN PRETENDING
13
+ * OTHERWISE. Ref and path are upper-snake with `$` -> `__` and `.` ->
14
+ * `_`. But `_` is legal in a name and in a tag, and the mapping folds
15
+ * case, so `retry$fast` and `retry__fast` both encode to `RETRY__FAST`,
16
+ * as do `Retry$fast` and `retry$Fast`.
17
+ *
18
+ * Rather than restrict a grammar the rest of the stack already uses, the
19
+ * host DETECTS THE COLLISION: it encodes every ref it holds, and a key
20
+ * two refs claim is `plugin_env_ambiguous`, naming both. The affected
21
+ * pair stays configurable by document and by API, just not by
22
+ * environment — which is the honest trade.
23
+ *
24
+ * Pure: a function over a string map and a ref set. The corpus tests it
25
+ * without touching a real environment. */
26
+
27
+ package plugin
28
+
29
+ import (
30
+ "encoding/json"
31
+ "sort"
32
+ "strings"
33
+ )
34
+
35
+ const envPrefix = "VOXGIG_PLUGIN_"
36
+
37
+ type EnvResult struct {
38
+ Profile string `json:"profile,omitempty"`
39
+ Options map[string]any `json:"options"`
40
+ Active []string `json:"active"`
41
+ Inactive []string `json:"inactive"`
42
+ }
43
+
44
+ type EnvInput struct {
45
+ Env map[string]string `json:"env"`
46
+ // Refs is every ref the host holds. Needed because the encoding is
47
+ // lossy: without the set there is no way to know where the ref ends
48
+ // and the path begins in `RETRY__FAST_MIN_DELAY`.
49
+ Refs []string `json:"refs,omitempty"`
50
+ Reserved []string `json:"reserved,omitempty"`
51
+ }
52
+
53
+ // EncodeRef: `retry$fast` -> `RETRY__FAST`.
54
+ func EncodeRef(ref string) string {
55
+ s := strings.ReplaceAll(ref, "$", "__")
56
+ s = strings.ReplaceAll(s, ".", "_")
57
+ return strings.ToUpper(s)
58
+ }
59
+
60
+ func ApplyEnv(input EnvInput) (EnvResult, error) {
61
+ out := EnvResult{Options: map[string]any{}, Active: []string{}, Inactive: []string{}}
62
+
63
+ refs := []string{}
64
+ for _, r := range input.Refs {
65
+ c, err := CanonRef(r)
66
+ if nil != err {
67
+ return out, err
68
+ }
69
+ refs = append(refs, c)
70
+ }
71
+
72
+ // Encode every ref the host holds, and refuse a key that two of them
73
+ // claim. Done up front so the collision is reported even when no
74
+ // environment variable exercises it — a latent ambiguity is still an
75
+ // ambiguity, and finding it at deploy time is the failure this
76
+ // exists to prevent.
77
+ byencoded := map[string][]string{}
78
+ for _, r := range refs {
79
+ e := EncodeRef(r)
80
+ byencoded[e] = append(byencoded[e], r)
81
+ }
82
+ for _, e := range sortedkeys(byencoded) {
83
+ if 1 < len(byencoded[e]) {
84
+ pair := append([]string{}, byencoded[e]...)
85
+ sort.Strings(pair)
86
+ return out, Fail("plugin_env_ambiguous",
87
+ "refs collide in the environment encoding as "+e+": "+strings.Join(pair, ", "),
88
+ map[string]any{"encoded": e, "refs": pair})
89
+ }
90
+ }
91
+
92
+ // Longest encoded ref first, so `retry$fast` wins over `retry` on
93
+ // `RETRY__FAST_MIN`. Shortest-first would read the tag as a path.
94
+ // Equal lengths break bytewise: the canonical leans on JavaScript's
95
+ // stable sort over insertion order, which a Go map cannot reproduce
96
+ // and which no entry can distinguish anyway.
97
+ encoded := sortedkeys(byencoded)
98
+ sort.SliceStable(encoded, func(i, j int) bool {
99
+ return len(encoded[i]) > len(encoded[j])
100
+ })
101
+
102
+ for _, key := range sortedkeys(input.Env) {
103
+ if !strings.HasPrefix(key, envPrefix) {
104
+ continue
105
+ }
106
+ rest := key[len(envPrefix):]
107
+
108
+ if "PROFILE" == rest {
109
+ out.Profile = input.Env[key]
110
+ continue
111
+ }
112
+
113
+ if "ACTIVE" == rest || "INACTIVE" == rest {
114
+ for _, r := range splitlist(input.Env[key]) {
115
+ c, err := CanonRef(r)
116
+ if nil != err {
117
+ return out, err
118
+ }
119
+ // The reservation covers EVERY input layer (§9.1).
120
+ // VOXGIG_PLUGIN_INACTIVE=station is easier to set than
121
+ // editing a config file, and INACTIVE has the final
122
+ // word — so guarding documents alone would leave the one
123
+ // lever this mechanism exists to deny wide open.
124
+ if err := checkreservedref(c, input.Reserved); nil != err {
125
+ return out, err
126
+ }
127
+ if "ACTIVE" == rest {
128
+ out.Active = append(out.Active, c)
129
+ } else {
130
+ out.Inactive = append(out.Inactive, c)
131
+ }
132
+ }
133
+ continue
134
+ }
135
+
136
+ enc := ""
137
+ for _, e := range encoded {
138
+ if rest == e || strings.HasPrefix(rest, e+"_") {
139
+ enc = e
140
+ break
141
+ }
142
+ }
143
+ if "" == enc {
144
+ continue // not for any ref this host holds
145
+ }
146
+ ref := byencoded[enc][0]
147
+ if err := checkreservedref(ref, input.Reserved); nil != err {
148
+ return out, err
149
+ }
150
+
151
+ if rest == enc {
152
+ continue // a ref with no path sets nothing
153
+ }
154
+ path := strings.Split(strings.ToLower(rest[len(enc)+1:]), "_")
155
+
156
+ node, ok := out.Options[ref].(map[string]any)
157
+ if !ok {
158
+ node = map[string]any{}
159
+ out.Options[ref] = node
160
+ }
161
+ for i := 0; i < len(path)-1; i++ {
162
+ child, ok := node[path[i]].(map[string]any)
163
+ if !ok {
164
+ child = map[string]any{}
165
+ node[path[i]] = child
166
+ }
167
+ node = child
168
+ }
169
+ node[path[len(path)-1]] = parsevalue(input.Env[key])
170
+ }
171
+
172
+ return out, nil
173
+ }
174
+
175
+ func splitlist(v string) []string {
176
+ out := []string{}
177
+ for _, s := range strings.Split(v, ",") {
178
+ if t := strings.TrimSpace(s); 0 < len(t) {
179
+ out = append(out, t)
180
+ }
181
+ }
182
+ return out
183
+ }
184
+
185
+ // parsevalue: values parse as JSON, FALLING BACK TO STRING — so `8080`
186
+ // is a number, `true` is a boolean, `{"a":1}` is a map, and `hello` is
187
+ // the string it looks like rather than a parse error.
188
+ func parsevalue(v string) any {
189
+ var out any
190
+ if err := json.Unmarshal([]byte(v), &out); nil != err {
191
+ return v
192
+ }
193
+ return out
194
+ }
@@ -0,0 +1,80 @@
1
+ // VENDORED: @voxgig/plugin 0.1.6 (go/plugin/export.go)
2
+ // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
3
+ // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
+ /* Exports (§11).
5
+ *
6
+ * An instance publishes values for other plugins and for the
7
+ * application. Read with `host.Exports("retry$fast/client")`.
8
+ *
9
+ * THE UNQUALIFIED ALIAS IS THE INTERESTING PART. `retry/client` resolves
10
+ * to the UNTAGGED instance if one exists; if not, and exactly one tagged
11
+ * instance exports that key, it resolves to that one; if two do, it is
12
+ * `plugin_export_ambiguous` — deliberately diverging from seneca's
13
+ * silent last-wins, because with multi-instance as a headline feature an
14
+ * ambiguous alias is a defect waiting for production. */
15
+
16
+ package plugin
17
+
18
+ import (
19
+ "sort"
20
+ "strconv"
21
+ "strings"
22
+ )
23
+
24
+ type Exported struct {
25
+ Ref string
26
+ Key string
27
+ Value any
28
+ }
29
+
30
+ func ResolveExport(spec string, exported []Exported) (any, error) {
31
+ cut := strings.Index(spec, "/")
32
+ if -1 == cut {
33
+ return nil, Fail("plugin_export_ambiguous", "export spec needs a key: "+spec,
34
+ map[string]any{"spec": spec})
35
+ }
36
+ head := spec[:cut]
37
+ key := spec[cut+1:]
38
+
39
+ // A fully qualified ref: exactly one answer or none.
40
+ want := canon(head)
41
+ for _, e := range exported {
42
+ if e.Ref == want && e.Key == key {
43
+ return e.Value, nil
44
+ }
45
+ }
46
+
47
+ // An alias: the name, not a ref. Look at every instance of it.
48
+ byname := []Exported{}
49
+ for _, e := range exported {
50
+ if refname(e.Ref) == head && e.Key == key {
51
+ byname = append(byname, e)
52
+ }
53
+ }
54
+ if 0 == len(byname) {
55
+ return nil, nil
56
+ }
57
+
58
+ for _, e := range byname {
59
+ if r, err := ParseRef(e.Ref); nil == err && "" == r.Tag {
60
+ return e.Value, nil
61
+ }
62
+ }
63
+
64
+ if 1 == len(byname) {
65
+ return byname[0].Value, nil
66
+ }
67
+
68
+ refs := []string{}
69
+ for _, e := range byname {
70
+ refs = append(refs, e.Ref)
71
+ }
72
+ sort.Strings(refs)
73
+ return nil, Fail("plugin_export_ambiguous",
74
+ "alias "+spec+" matches "+itoa(len(refs))+" instances: "+join(refs, ", "),
75
+ map[string]any{"spec": spec, "refs": refs})
76
+ }
77
+
78
+ func itoa(n int) string { return strconv.Itoa(n) }
79
+
80
+ func join(l []string, sep string) string { return strings.Join(l, sep) }