@voxgig/sdkgen 4.8.3 → 4.9.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 (201) hide show
  1. package/bin/voxgig-sdkgen +1 -1
  2. package/package.json +1 -1
  3. package/project/.sdk/model/target/zig.aon +9 -0
  4. package/project/.sdk/src/cmp/zig/Package_zig.ts +15 -11
  5. package/project/.sdk/src/cmp/zig/fragment/Entity.fragment.zig +3 -3
  6. package/project/.sdk/src/cmp/zig/fragment/EntityListOp.fragment.zig +3 -3
  7. package/project/.sdk/src/cmp/zig/fragment/Main.fragment.zig +3 -3
  8. package/project/.sdk/src/cmp/zig/utility_zig.ts +50 -1
  9. package/project/.sdk/tm/c/tests/vendor/omni/json.c +2 -2
  10. package/project/.sdk/tm/c/tests/vendor/omni/omni.h +2 -2
  11. package/project/.sdk/tm/c/tests/vendor/omni/runner.c +2 -2
  12. package/project/.sdk/tm/c/tests/vendor/omni/util.c +2 -2
  13. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/json.clj +2 -2
  14. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/runner.clj +2 -2
  15. package/project/.sdk/tm/clojure/test/vendor/omni/voxgig/omni/util.clj +2 -2
  16. package/project/.sdk/tm/cpp/test/vendor/omni/json.hpp +2 -2
  17. package/project/.sdk/tm/cpp/test/vendor/omni/omni.hpp +2 -2
  18. package/project/.sdk/tm/cpp/test/vendor/omni/util.hpp +2 -2
  19. package/project/.sdk/tm/csharp/test/vendor/omni/Runner.cs +2 -2
  20. package/project/.sdk/tm/csharp/test/vendor/omni/Util.cs +2 -2
  21. package/project/.sdk/tm/csharp/utility/struct/Struct.cs +1 -1
  22. package/project/.sdk/tm/dart/test/vendor/omni/omni.dart +2 -2
  23. package/project/.sdk/tm/dart/test/vendor/omni/runner.dart +2 -2
  24. package/project/.sdk/tm/dart/test/vendor/omni/util.dart +2 -2
  25. package/project/.sdk/tm/elixir/test/vendor/omni/json.ex +2 -2
  26. package/project/.sdk/tm/elixir/test/vendor/omni/runner.ex +2 -2
  27. package/project/.sdk/tm/elixir/test/vendor/omni/util.ex +2 -2
  28. package/project/.sdk/tm/go/feature/secrets/plugin/capability.go +1 -1
  29. package/project/.sdk/tm/go/feature/secrets/plugin/catalog.go +1 -1
  30. package/project/.sdk/tm/go/feature/secrets/plugin/config.go +1 -1
  31. package/project/.sdk/tm/go/feature/secrets/plugin/depend.go +1 -1
  32. package/project/.sdk/tm/go/feature/secrets/plugin/env.go +1 -1
  33. package/project/.sdk/tm/go/feature/secrets/plugin/export.go +1 -1
  34. package/project/.sdk/tm/go/feature/secrets/plugin/graph.go +1 -1
  35. package/project/.sdk/tm/go/feature/secrets/plugin/host.go +1 -1
  36. package/project/.sdk/tm/go/feature/secrets/plugin/order.go +1 -1
  37. package/project/.sdk/tm/go/feature/secrets/plugin/point.go +1 -1
  38. package/project/.sdk/tm/go/feature/secrets/plugin/ref.go +1 -1
  39. package/project/.sdk/tm/go/feature/secrets/plugin/resolve.go +1 -1
  40. package/project/.sdk/tm/go/feature/secrets/plugin/types.go +1 -1
  41. package/project/.sdk/tm/go/feature/secrets/plugin/util.go +1 -1
  42. package/project/.sdk/tm/go/feature/secrets/plugin/version.go +1 -1
  43. package/project/.sdk/tm/go/feature/secrets/plugins/aws/aws.go +4 -4
  44. package/project/.sdk/tm/go/feature/secrets/plugins/aws/sigv4.go +2 -2
  45. package/project/.sdk/tm/go/feature/secrets/plugins/azuresecrets/azuresecrets.go +2 -2
  46. package/project/.sdk/tm/go/feature/secrets/plugins/boru/boru.go +2 -2
  47. package/project/.sdk/tm/go/feature/secrets/plugins/doppler/doppler.go +2 -2
  48. package/project/.sdk/tm/go/feature/secrets/plugins/gcpsecrets/gcpsecrets.go +2 -2
  49. package/project/.sdk/tm/go/feature/secrets/plugins/hashicorp/hashicorp.go +4 -5
  50. package/project/.sdk/tm/go/feature/secrets/plugins/httpjson/httpjson.go +3 -3
  51. package/project/.sdk/tm/go/feature/secrets/plugins/infisical/infisical.go +3 -4
  52. package/project/.sdk/tm/go/feature/secrets/plugins/onepassword/onepassword.go +2 -2
  53. package/project/.sdk/tm/go/feature/secrets/plugins/secretspec/secretspec.go +2 -2
  54. package/project/.sdk/tm/go/feature/secrets/sekreto/addr.go +2 -2
  55. package/project/.sdk/tm/go/feature/secrets/sekreto/providers.go +5 -2
  56. package/project/.sdk/tm/go/feature/secrets/sekreto/sekreto.go +31 -2
  57. package/project/.sdk/tm/go/test/omni/omni.go +8 -3
  58. package/project/.sdk/tm/go/test/omni/util.go +25 -4
  59. package/project/.sdk/tm/go/utility/struct/voxgigstruct.go +1 -1
  60. package/project/.sdk/tm/java/test/vendor/omni/Json.java +2 -2
  61. package/project/.sdk/tm/java/test/vendor/omni/Runner.java +2 -2
  62. package/project/.sdk/tm/java/test/vendor/omni/Util.java +2 -2
  63. package/project/.sdk/tm/java/utility/struct/Struct.java +1 -1
  64. package/project/.sdk/tm/js/src/utility/StructUtility.js +2 -2
  65. package/project/.sdk/tm/js/test/vendor/omni/index.js +1 -1
  66. package/project/.sdk/tm/js/test/vendor/omni/runner.js +18 -3
  67. package/project/.sdk/tm/js/test/vendor/omni/util.js +25 -8
  68. package/project/.sdk/tm/kotlin/test/vendor/omni/Json.kt +2 -2
  69. package/project/.sdk/tm/kotlin/test/vendor/omni/Runner.kt +2 -2
  70. package/project/.sdk/tm/kotlin/test/vendor/omni/Util.kt +2 -2
  71. package/project/.sdk/tm/kotlin/utility/struct/Struct.kt +1 -1
  72. package/project/.sdk/tm/lean/test/vendor/omni/Omni.lean +2 -2
  73. package/project/.sdk/tm/lua/test/vendor/omni/json.lua +2 -2
  74. package/project/.sdk/tm/lua/test/vendor/omni/regex.lua +2 -2
  75. package/project/.sdk/tm/lua/test/vendor/omni/runner.lua +2 -2
  76. package/project/.sdk/tm/lua/test/vendor/omni/util.lua +2 -2
  77. package/project/.sdk/tm/lua/utility/struct/regex.lua +1 -1
  78. package/project/.sdk/tm/lua/utility/struct/struct.lua +1 -1
  79. package/project/.sdk/tm/ocaml/test/vendor/omni/omni.ml +2 -2
  80. package/project/.sdk/tm/perl/lib/Voxgig/Struct.pm +1 -1
  81. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Runner.pm +1 -1
  82. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni/Util.pm +1 -1
  83. package/project/.sdk/tm/perl/t/vendor/omni/Voxgig/Omni.pm +1 -1
  84. package/project/.sdk/tm/php/test/vendor/omni/Runner.php +2 -2
  85. package/project/.sdk/tm/php/test/vendor/omni/Util.php +2 -2
  86. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/__init__.py +1 -1
  87. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/capability.py +1 -1
  88. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/catalog.py +1 -1
  89. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/config.py +1 -1
  90. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/depend.py +1 -1
  91. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/env.py +1 -1
  92. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/export.py +1 -1
  93. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/graph.py +1 -1
  94. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/host.py +1 -1
  95. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/order.py +1 -1
  96. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/point.py +1 -1
  97. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/ref.py +1 -1
  98. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/resolve.py +1 -1
  99. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/types.py +1 -1
  100. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_plugin/version.py +1 -1
  101. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/__init__.py +3 -1
  102. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/addr.py +1 -1
  103. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/aws.py +3 -3
  104. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/azuresecrets.py +1 -1
  105. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/boru.py +1 -1
  106. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/doppler.py +1 -1
  107. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/gcpsecrets.py +1 -1
  108. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/hashicorp.py +3 -4
  109. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/httpjson.py +1 -1
  110. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/infisical.py +4 -6
  111. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/onepassword.py +1 -1
  112. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/secretspec.py +1 -1
  113. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/plugins/sigv4.py +1 -1
  114. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/providers.py +1 -1
  115. package/project/.sdk/tm/py/pkg/feature/secrets/voxgig_sekreto/sekreto.py +21 -1
  116. package/project/.sdk/tm/py/pkg/utility/voxgig_struct/voxgig_struct.py +1 -1
  117. package/project/.sdk/tm/py/test/voxgig_omni/__init__.py +1 -1
  118. package/project/.sdk/tm/py/test/voxgig_omni/runner.py +16 -2
  119. package/project/.sdk/tm/py/test/voxgig_omni/util.py +27 -12
  120. package/project/.sdk/tm/rb/test/vendor/omni/runner.rb +2 -2
  121. package/project/.sdk/tm/rb/test/vendor/omni/util.rb +2 -2
  122. package/project/.sdk/tm/rb/test/vendor/omni/voxgig_omni.rb +2 -2
  123. package/project/.sdk/tm/rust/tests/vendor/omni/json.rs +2 -2
  124. package/project/.sdk/tm/rust/tests/vendor/omni/mod.rs +2 -2
  125. package/project/.sdk/tm/rust/tests/vendor/omni/regex.rs +2 -2
  126. package/project/.sdk/tm/rust/tests/vendor/omni/runner.rs +2 -2
  127. package/project/.sdk/tm/rust/tests/vendor/omni/util.rs +2 -2
  128. package/project/.sdk/tm/scala/sdktest/vendor/omni/Json.scala +2 -2
  129. package/project/.sdk/tm/scala/sdktest/vendor/omni/Runner.scala +2 -2
  130. package/project/.sdk/tm/scala/sdktest/vendor/omni/Util.scala +2 -2
  131. package/project/.sdk/tm/swift/Tests/vendor/omni/Json.swift +2 -2
  132. package/project/.sdk/tm/swift/Tests/vendor/omni/Runner.swift +2 -2
  133. package/project/.sdk/tm/swift/Tests/vendor/omni/Util.swift +2 -2
  134. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Capability.ts +1 -1
  135. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Catalog.ts +1 -1
  136. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Config.ts +1 -1
  137. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Depend.ts +1 -1
  138. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Env.ts +1 -1
  139. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Export.ts +1 -1
  140. package/project/.sdk/tm/ts/src/feature/secrets/plugin/FeatureHost.ts +1 -1
  141. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Graph.ts +1 -1
  142. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Host.ts +1 -1
  143. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Order.ts +1 -1
  144. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Point.ts +1 -1
  145. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Ref.ts +1 -1
  146. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Resolve.ts +1 -1
  147. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Types.ts +1 -1
  148. package/project/.sdk/tm/ts/src/feature/secrets/plugin/Version.ts +1 -1
  149. package/project/.sdk/tm/ts/src/feature/secrets/plugin/index.ts +1 -1
  150. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/Sekreto.ts +1 -1
  151. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/index.ts +1 -1
  152. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/aws.ts +1 -1
  153. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/azuresecrets.ts +1 -1
  154. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/boru.ts +1 -1
  155. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/doppler.ts +1 -1
  156. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/gcpsecrets.ts +1 -1
  157. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/hashicorp.ts +1 -1
  158. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/httpjson.ts +1 -1
  159. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/infisical.ts +1 -1
  160. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/onepassword.ts +1 -1
  161. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/secretspec.ts +1 -1
  162. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/plugins/sigv4.ts +1 -1
  163. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/addr.ts +1 -1
  164. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/builtin.ts +1 -1
  165. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/dotenv.ts +1 -1
  166. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/env.ts +1 -1
  167. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/file.ts +1 -1
  168. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/memory.ts +1 -1
  169. package/project/.sdk/tm/ts/src/feature/secrets/sekreto/provider/support.ts +1 -1
  170. package/project/.sdk/tm/ts/src/utility/StructUtility.ts +2 -2
  171. package/project/.sdk/tm/ts/test/vendor/omni/Runner.ts +1 -1
  172. package/project/.sdk/tm/ts/test/vendor/omni/Util.ts +1 -1
  173. package/project/.sdk/tm/ts/test/vendor/omni/index.ts +1 -1
  174. package/project/.sdk/tm/zig/Makefile +15 -1
  175. package/project/.sdk/tm/zig/build.zig +23 -5
  176. package/project/.sdk/tm/zig/core/helpers.zig +52 -11
  177. package/project/.sdk/tm/zig/core/mem.zig +17 -1
  178. package/project/.sdk/tm/zig/core/utility.zig +23 -19
  179. package/project/.sdk/tm/zig/feature/audit.zig +2 -2
  180. package/project/.sdk/tm/zig/feature/cache.zig +2 -2
  181. package/project/.sdk/tm/zig/feature/debug.zig +5 -5
  182. package/project/.sdk/tm/zig/feature/netsim.zig +2 -2
  183. package/project/.sdk/tm/zig/feature/paging.zig +2 -2
  184. package/project/.sdk/tm/zig/feature/proxy.zig +15 -8
  185. package/project/.sdk/tm/zig/feature/streaming.zig +5 -5
  186. package/project/.sdk/tm/zig/feature/support.zig +3 -3
  187. package/project/.sdk/tm/zig/feature/telemetry.zig +5 -5
  188. package/project/.sdk/tm/zig/feature/test.zig +10 -5
  189. package/project/.sdk/tm/zig/test/fh.zig +10 -10
  190. package/project/.sdk/tm/zig/test/gotcha_test.zig +5 -5
  191. package/project/.sdk/tm/zig/test/omniresolver.zig +515 -0
  192. package/project/.sdk/tm/zig/test/omnismoke_test.zig +284 -0
  193. package/project/.sdk/tm/zig/test/pipeline_test.zig +8 -8
  194. package/project/.sdk/tm/zig/test/primary_utility_test.zig +144 -154
  195. package/project/.sdk/tm/zig/test/struct_corpus.zig +264 -187
  196. package/project/.sdk/tm/zig/test/vendor/omni/omni.zig +1314 -0
  197. package/project/.sdk/tm/zig/test/vendor/omni/regex.zig +446 -0
  198. package/project/.sdk/tm/zig/utility/voxgigstruct/regex.zig +7 -4
  199. package/project/.sdk/tm/zig/utility/voxgigstruct/struct.zig +356 -157
  200. package/project/sdkgen-package.json +1 -1
  201. package/project/.sdk/tm/zig/test/struct_runner.zig +0 -465
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Depend.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Dependency cardinality, policy, and the restart graph (§11.3).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Env.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Environment overrides (§9.5) — level 7 of the ladder.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Export.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Exports (§11).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/FeatureHost.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* The sdkgen bridge (§17.2, P3 item 2).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Graph.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Whole-graph resolution (§11.4) — a phase, not a discovery.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Host.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* The host: the lifecycle state machine (§5), extension points (§6),
5
5
  * and resource capture (§8).
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Order.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Ordering (§7) — one rule, one place.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Point.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Extension points (§6). Three kinds, chosen because they are what the
5
5
  * two existing systems actually needed, and no more.
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Ref.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Identity: name+tag, written `name$tag` (§4).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Resolve.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Dynamic resolution (§10.2) — name to candidate module ids.
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Types.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Shared types. Deliberately small: the design's §19 budget says the
5
5
  * library owns naming, configuration, lifecycle, ordering, binding and
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/Version.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Versions and ranges (§11.2).
5
5
  *
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/plugin 0.1.6 (typescript/src/index.ts)
2
- // Source: https://github.com/voxgig/plugin @ 8d8968afc0a2008fbd795b41ab166307d989f02a [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/plugin @ b48ae643eb0eb56c5ebe3198da98cecdf6a7f7fc [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* The canonical surface `make parity` checks (AGENTS.md §4). Small on
5
5
  * purpose (§19): everything else is methods on the host and instance
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/Sekreto.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // sekreto: one interface for secrets, wherever they live.
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/index.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // @voxgig/sekreto - one interface for secrets, wherever they live.
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/aws.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/azuresecrets.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/boru.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/doppler.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/gcpsecrets.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/hashicorp.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/httpjson.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/infisical.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/onepassword.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/secretspec.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/plugins/sigv4.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // AWS Signature Version 4, hand-rolled.
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/addr.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/builtin.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/dotenv.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/env.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/file.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/memory.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025 Voxgig Ltd, MIT License */
5
5
 
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/sekreto 0.2.0 (typescript/src/provider/support.ts)
2
- // Source: https://github.com/voxgig/sekreto @ a5a00db6e6d3a1ddbdef7ac62e8a75be53a9e042 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/sekreto @ 86ba35a646e68a311bdece43cd5689369ca62e9d [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // What a provider is, what its declarative form looks like, and how a
5
5
  // provider kind becomes a voxgig/plugin definition.
@@ -1,9 +1,9 @@
1
1
  // VENDORED: @voxgig/struct 0.3.4 (typescript/src/StructUtility.ts)
2
- // Source: https://github.com/voxgig/struct @ 2caf7f448f265144c18dd6fab6ba270a7f3bca07 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/struct @ adda9521c828147573df5a8878408a3f2193ddf4 [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  /* Copyright (c) 2025-2026 Voxgig Ltd. MIT LICENSE. */
5
5
 
6
- // VERSION: @voxgig/struct 0.3.4
6
+ // VERSION: @voxgig/struct 0.3.5
7
7
 
8
8
  /* Voxgig Struct
9
9
  * =============
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/omni 0.1.4 (typescript/src/Runner.ts)
2
- // Source: https://github.com/voxgig/omni @ 8c3e1b573a8d35796f7fc45e3226b977023cabf7 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/omni @ 274708cc2d12b21707d975543953f845f8444be0 [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // Omni: the shared multi-language test runner.
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/omni 0.1.4 (typescript/src/Util.ts)
2
- // Source: https://github.com/voxgig/omni @ 8c3e1b573a8d35796f7fc45e3226b977023cabf7 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/omni @ 274708cc2d12b21707d975543953f845f8444be0 [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // Omni internal JSON utilities.
5
5
  //
@@ -1,5 +1,5 @@
1
1
  // VENDORED: @voxgig/omni 0.1.4 (typescript/src/index.ts)
2
- // Source: https://github.com/voxgig/omni @ 8c3e1b573a8d35796f7fc45e3226b977023cabf7 [tag: sdk-20260904-1610-0]
2
+ // Source: https://github.com/voxgig/omni @ 274708cc2d12b21707d975543953f845f8444be0 [tag: sdk-20260907-0029-0]
3
3
  // License: MIT (c) voxgig - see repository LICENSE. Do not edit: resync from upstream.
4
4
  // @voxgig/omni - shared multi-language test runner.
5
5
 
@@ -9,6 +9,16 @@ build:
9
9
  # filter the output: if "N/N tests passed" with N==total, treat as success.
10
10
  # `--summary all` is required so the count is printed.
11
11
  #
12
+ # THE SUMMARY IS PARSED IN TWO SPELLINGS. Older toolchains wrote the test
13
+ # tally as "217/223 tests passed; 6 skipped"; 0.16 writes the annotations as
14
+ # a parenthesised list instead - "217/223 tests passed (6 skipped)", and
15
+ # "(6 skipped, 1 crashed)" when something did go wrong. Reading only the
16
+ # semicolon form off 0.16 finds no skip count at all, so "passed + skipped"
17
+ # falls short of "total" and the tolerance refuses a run that was in fact
18
+ # clean - failing precisely when the teardown crash it exists for happens.
19
+ # Both spellings are accepted below, and any "failed"/"crashed"/"timed out"
20
+ # in that same annotation is a real failure, never a teardown crash.
21
+ #
12
22
  # A TEST THAT DID NOT COMPILE IS NOT IN THE TALLY. The tolerance above is for a
13
23
  # crash AFTER the tests ran, and it must never cover a build that failed: a
14
24
  # compile error means those test binaries never ran, so they never reach
@@ -32,11 +42,15 @@ test:
32
42
  echo "zig: compilation errors — not a teardown crash"; \
33
43
  exit 1; \
34
44
  fi; \
35
- summary=$$(echo "$$out" | grep -oE '[0-9]+/[0-9]+ tests passed(; [0-9]+ skipped)?' | tail -1); \
45
+ summary=$$(echo "$$out" | grep -oE '[0-9]+/[0-9]+ tests passed( \([^)]*\))?(; [0-9]+ skipped)?' | tail -1); \
36
46
  passed=$$(echo "$$summary" | sed -E 's#([0-9]+)/([0-9]+).*#\1#'); \
37
47
  total=$$(echo "$$summary" | sed -E 's#([0-9]+)/([0-9]+).*#\2#'); \
38
48
  skipped=$$(echo "$$summary" | grep -oE '[0-9]+ skipped' | grep -oE '[0-9]+'); \
39
49
  [ -n "$$skipped" ] || skipped=0; \
50
+ if echo "$$summary" | grep -qE '[0-9]+ (failed|crashed|timed out)'; then \
51
+ echo "zig: $$summary — tests failed, so this is not a teardown crash"; \
52
+ exit 1; \
53
+ fi; \
40
54
  if [ -n "$$passed" ] && [ "$$total" -gt 0 ] && [ $$((passed + skipped)) -eq "$$total" ]; then \
41
55
  exit 0; \
42
56
  fi; \
@@ -8,6 +8,10 @@ const std = @import("std");
8
8
  // exposed as the "voxgig-struct" module so the corpus runner can import it,
9
9
  // and the whole SDK is exposed as the "sdk" module (root: root.zig).
10
10
  //
11
+ // TOOLCHAIN: zig 0.16. A test artifact takes a `root_module` rather than a
12
+ // `root_source_file`, so each test file gets its own module built here with
13
+ // the struct and sdk modules already imported.
14
+ //
11
15
  // The Zig test framework can crash with signal 11 during cleanup *after* all
12
16
  // tests pass, due to *MapRef/*ListRef cross-references in arena teardown. The
13
17
  // Makefile filters the output: "N/N tests passed" with N==total is success.
@@ -22,6 +26,17 @@ pub fn build(b: *std.Build) void {
22
26
  .optimize = optimize,
23
27
  });
24
28
 
29
+ // The vendored @voxgig/omni port: the corpus test ENGINE, driven by
30
+ // test/omniresolver.zig. A MODULE, not a path import, for two reasons:
31
+ // omni.zig reaches its own regex.zig by path, so the pair must belong to
32
+ // exactly one module; and `@import("omni")` cannot then be confused with
33
+ // the resolver that adapts it.
34
+ const omni_mod = b.addModule("omni", .{
35
+ .root_source_file = b.path("test/vendor/omni/omni.zig"),
36
+ .target = target,
37
+ .optimize = optimize,
38
+ });
39
+
25
40
  // The SDK module (root re-exports the public surface).
26
41
  const sdk_mod = b.addModule("sdk", .{
27
42
  .root_source_file = b.path("root.zig"),
@@ -32,7 +47,7 @@ pub fn build(b: *std.Build) void {
32
47
 
33
48
  const test_step = b.step("test", "Run all tests");
34
49
 
35
- // Every test file: gets both the struct and sdk modules.
50
+ // Every test file: gets the struct, sdk and omni modules.
36
51
  const test_files = [_][]const u8{
37
52
  "test/struct_corpus.zig",
38
53
  "test/generated_test.zig",
@@ -40,17 +55,20 @@ pub fn build(b: *std.Build) void {
40
55
  "test/feature_test.zig",
41
56
  "test/primary_utility_test.zig",
42
57
  "test/gotcha_test.zig",
58
+ "test/omnismoke_test.zig",
43
59
  };
44
60
 
45
61
  for (test_files) |tf| {
46
- // Skip test files that do not exist yet (during template dev).
47
- const t = b.addTest(.{
62
+ const test_mod = b.createModule(.{
48
63
  .root_source_file = b.path(tf),
49
64
  .target = target,
50
65
  .optimize = optimize,
51
66
  });
52
- t.root_module.addImport("voxgig-struct", struct_mod);
53
- t.root_module.addImport("sdk", sdk_mod);
67
+ test_mod.addImport("voxgig-struct", struct_mod);
68
+ test_mod.addImport("sdk", sdk_mod);
69
+ test_mod.addImport("omni", omni_mod);
70
+
71
+ const t = b.addTest(.{ .root_module = test_mod });
54
72
  const run_t = b.addRunArtifact(t);
55
73
  run_t.has_side_effects = true;
56
74
  test_step.dependOn(&run_t.step);
@@ -19,6 +19,12 @@ pub fn A() Allocator {
19
19
  return mem.a();
20
20
  }
21
21
 
22
+ // The SDK's process-global Io (0.16 routes clocks/sleep/env/file IO through
23
+ // one). See core/mem.zig for why it is global rather than a parameter.
24
+ pub fn IO() std.Io {
25
+ return mem.io();
26
+ }
27
+
22
28
  // ---- constructors ------------------------------------------------------
23
29
 
24
30
  pub fn vstr(s: []const u8) Value {
@@ -249,33 +255,33 @@ pub fn veq(x: Value, y: Value) bool {
249
255
  // ---- key / item vectors (test feature convenience) ---------------------
250
256
 
251
257
  pub fn keysof_vec(v: Value) [][]const u8 {
252
- var out = std.ArrayList([]const u8).init(A());
258
+ var out: std.ArrayList([]const u8) = .empty;
253
259
  if (v == .object) {
254
260
  var it = v.object.iterator();
255
- while (it.next()) |kv| out.append(kv.key_ptr.*) catch {};
261
+ while (it.next()) |kv| out.append(A(), kv.key_ptr.*) catch {};
256
262
  }
257
- return out.toOwnedSlice() catch &.{};
263
+ return out.toOwnedSlice(A()) catch &.{};
258
264
  }
259
265
 
260
266
  pub const KVpair = struct { k: []const u8, v: Value };
261
267
 
262
268
  pub fn items_vec(v: Value) []KVpair {
263
- var out = std.ArrayList(KVpair).init(A());
269
+ var out: std.ArrayList(KVpair) = .empty;
264
270
  if (v == .object) {
265
271
  var it = v.object.iterator();
266
- while (it.next()) |kv| out.append(.{ .k = kv.key_ptr.*, .v = kv.value_ptr.* }) catch {};
272
+ while (it.next()) |kv| out.append(A(), .{ .k = kv.key_ptr.*, .v = kv.value_ptr.* }) catch {};
267
273
  }
268
- return out.toOwnedSlice() catch &.{};
274
+ return out.toOwnedSlice(A()) catch &.{};
269
275
  }
270
276
 
271
277
  // ---- clocks / rng ------------------------------------------------------
272
278
 
273
279
  pub fn now_ms() i64 {
274
- return std.time.milliTimestamp();
280
+ return std.Io.Clock.real.now(IO()).toMilliseconds();
275
281
  }
276
282
 
277
283
  pub fn sleep_ms(ms: i64) void {
278
- if (ms > 0) std.time.sleep(@as(u64, @intCast(ms)) * std.time.ns_per_ms);
284
+ if (ms > 0) IO().sleep(.fromMilliseconds(ms), .awake) catch {};
279
285
  }
280
286
 
281
287
  var rand_seed: i64 = 123456789;
@@ -290,15 +296,50 @@ pub fn rand_int(n: i64) i64 {
290
296
 
291
297
  pub const CallFn = *const fn (ctx: *anyopaque, allocator: Allocator, arg: Value) anyerror!Value;
292
298
 
299
+ // An SDK callable — an injected transport, clock, sleeper, id generator, a
300
+ // custom utility, or a response body thunk — carries a captured context
301
+ // pointer, because every one of them is created at run time over run-time
302
+ // state. Zig has no closures, so the context travels beside the function.
303
+ //
304
+ // The struct port's `JsonFunc` is a bare `*const fn (Allocator) anyerror!Value`
305
+ // with no context slot, so the BOX is what lives in the `.function` slot,
306
+ // pointer-cast to fit. That is the same arrangement the SDK has always had:
307
+ // the slot held `*const Callable` before too, and the type it is declared with
308
+ // upstream is the only thing that changed. Every struct operation the SDK puts
309
+ // callables through — clone, merge, validate, stringify, typify — treats the
310
+ // slot as an opaque pointer and is unaffected.
311
+ //
312
+ // The one thing that must not happen is struct CALLING the slot as code. It
313
+ // does that in exactly three places: a `getprop` whose `alt` is a function, a
314
+ // single-segment `getpath` whose one part names a function held directly in
315
+ // the store, and a `$`-prefixed validate command that is not built in and
316
+ // resolves to a function in the store. The SDK reaches none of them — its
317
+ // `getprop` alts are never functions, `h.getpath` is never called with a
318
+ // one-segment path, and the validate store only ever holds `$TOP`/`$DTOP`-style
319
+ // keys, all of which are built in. SDK code invokes its own callables through
320
+ // `call_vfn`, never by letting struct resolve them.
321
+ //
322
+ // That was measured, not just reasoned: instrumenting all three sites in a
323
+ // throwaway copy of the vendored file and running the whole suite records ONE
324
+ // invocation, and it is the struct corpus's own `$FOO` handler — a real
325
+ // context-free JsonFunc, which is what those sites are for.
326
+ pub const Callable = struct {
327
+ ctx: *anyopaque,
328
+ call: CallFn,
329
+ };
330
+
293
331
  pub fn callable(ctx_ptr: *anyopaque, f: CallFn) Value {
294
- const c = A().create(vs.Callable) catch unreachable;
332
+ const c = A().create(Callable) catch unreachable;
295
333
  c.* = .{ .ctx = ctx_ptr, .call = f };
296
- return .{ .function = c };
334
+ return .{ .function = @ptrCast(@alignCast(c)) };
297
335
  }
298
336
 
299
337
  pub fn call_vfn(f: Value, arg: Value) Value {
300
338
  return switch (f) {
301
- .function => |c| c.call(c.ctx, A(), arg) catch vnull(),
339
+ .function => |fp| blk: {
340
+ const c: *const Callable = @ptrCast(@alignCast(fp));
341
+ break :blk c.call(c.ctx, A(), arg) catch vnull();
342
+ },
302
343
  else => vnull(),
303
344
  };
304
345
  }
@@ -1,4 +1,4 @@
1
- // Process-global arena allocator for the SDK data model.
1
+ // Process-global arena allocator and Io for the SDK data model.
2
2
  //
3
3
  // The SDK data model is the vendored voxgig struct Value (reference-stable
4
4
  // *MapRef / *ListRef nodes). Rust leans on a global allocator + Rc; Zig has
@@ -7,6 +7,14 @@
7
7
  // close to the Rust original and sidesteps the test allocator's leak checks
8
8
  // for SDK/struct data (tests still use testing.allocator for their own
9
9
  // bookkeeping). Mirrors struct/zig's per-run arena approach.
10
+ //
11
+ // Zig 0.16 routes clocks, sleeping, the environment and file IO through an
12
+ // `std.Io` instance rather than free functions on `std.time` / `std.process` /
13
+ // `std.fs`. An SDK cannot demand one from its caller without changing every
14
+ // public signature, so — exactly as with the arena — one process-global
15
+ // instance is used. `Io.Threaded.global_single_threaded` is the statically
16
+ // initialised singleton std itself falls back to; it needs no allocator and no
17
+ // deinit, and the startup code fills in its environment block.
10
18
 
11
19
  const std = @import("std");
12
20
 
@@ -18,3 +26,11 @@ pub fn a() std.mem.Allocator {
18
26
  }
19
27
  return arena.?.allocator();
20
28
  }
29
+
30
+ pub fn threaded() *std.Io.Threaded {
31
+ return std.Io.Threaded.global_single_threaded;
32
+ }
33
+
34
+ pub fn io() std.Io {
35
+ return threaded().io();
36
+ }