@vellumai/cli 0.11.6 → 0.11.7-staging.2

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 (807) hide show
  1. package/AGENTS.md +3 -1
  2. package/knip.json +1 -0
  3. package/node_modules/@vellumai/avatar-manifest/package.json +18 -0
  4. package/node_modules/@vellumai/avatar-manifest/src/__tests__/manifest.test.ts +173 -0
  5. package/node_modules/@vellumai/avatar-manifest/src/__tests__/read.test.ts +114 -0
  6. package/node_modules/@vellumai/avatar-manifest/src/index.ts +29 -0
  7. package/node_modules/@vellumai/avatar-manifest/src/layout.ts +18 -0
  8. package/node_modules/@vellumai/avatar-manifest/src/manifest.ts +156 -0
  9. package/node_modules/@vellumai/avatar-manifest/src/read.ts +109 -0
  10. package/node_modules/@vellumai/avatar-manifest/tsconfig.json +20 -0
  11. package/node_modules/@vellumai/environments/package.json +2 -1
  12. package/node_modules/@vellumai/environments/src/shell.test.ts +56 -0
  13. package/node_modules/@vellumai/environments/src/shell.ts +65 -0
  14. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/package.json +18 -0
  15. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/__tests__/manifest.test.ts +173 -0
  16. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/__tests__/read.test.ts +114 -0
  17. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/index.ts +29 -0
  18. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/layout.ts +18 -0
  19. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/manifest.ts +156 -0
  20. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/src/read.ts +109 -0
  21. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/avatar-manifest/tsconfig.json +20 -0
  22. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/environments/package.json +2 -1
  23. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/environments/src/shell.test.ts +56 -0
  24. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/environments/src/shell.ts +65 -0
  25. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/LICENSE +21 -0
  26. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/README.md +208 -0
  27. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.cjs +33 -0
  28. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.d.cts +4 -0
  29. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.d.ts +4 -0
  30. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/index.js +4 -0
  31. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.cjs +17 -0
  32. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.d.cts +1 -0
  33. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.d.ts +1 -0
  34. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/index.js +1 -0
  35. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/locales/package.json +6 -0
  36. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.cjs +32 -0
  37. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.d.cts +3 -0
  38. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.d.ts +3 -0
  39. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/index.js +3 -0
  40. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/mini/package.json +6 -0
  41. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/package.json +135 -0
  42. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/index.ts +4 -0
  43. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/locales/index.ts +1 -0
  44. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/mini/index.ts +3 -0
  45. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/ZodError.ts +330 -0
  46. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/datetime.ts +58 -0
  47. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/discriminatedUnion.ts +80 -0
  48. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/index.ts +59 -0
  49. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/ipv4.ts +57 -0
  50. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/object.ts +69 -0
  51. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/primitives.ts +162 -0
  52. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/realworld.ts +63 -0
  53. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/string.ts +55 -0
  54. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/benchmarks/union.ts +80 -0
  55. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/errors.ts +13 -0
  56. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/external.ts +6 -0
  57. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/enumUtil.ts +17 -0
  58. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/errorUtil.ts +8 -0
  59. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/parseUtil.ts +176 -0
  60. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/partialUtil.ts +34 -0
  61. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/typeAliases.ts +2 -0
  62. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/helpers/util.ts +224 -0
  63. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/index.ts +4 -0
  64. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/locales/en.ts +124 -0
  65. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/standard-schema.ts +113 -0
  66. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/Mocker.ts +54 -0
  67. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/all-errors.test.ts +157 -0
  68. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/anyunknown.test.ts +28 -0
  69. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/array.test.ts +71 -0
  70. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/async-parsing.test.ts +388 -0
  71. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/async-refinements.test.ts +46 -0
  72. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/base.test.ts +29 -0
  73. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/bigint.test.ts +55 -0
  74. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/branded.test.ts +53 -0
  75. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/catch.test.ts +220 -0
  76. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/coerce.test.ts +133 -0
  77. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/complex.test.ts +70 -0
  78. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/custom.test.ts +31 -0
  79. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/date.test.ts +32 -0
  80. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/deepmasking.test.ts +186 -0
  81. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/default.test.ts +112 -0
  82. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/description.test.ts +33 -0
  83. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/discriminated-unions.test.ts +315 -0
  84. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/enum.test.ts +80 -0
  85. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/error.test.ts +551 -0
  86. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/firstparty.test.ts +87 -0
  87. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/firstpartyschematypes.test.ts +21 -0
  88. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/function.test.ts +261 -0
  89. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/generics.test.ts +48 -0
  90. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/instanceof.test.ts +37 -0
  91. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/intersection.test.ts +110 -0
  92. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/language-server.source.ts +76 -0
  93. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/language-server.test.ts +207 -0
  94. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/literal.test.ts +36 -0
  95. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/map.test.ts +110 -0
  96. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/masking.test.ts +4 -0
  97. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/mocker.test.ts +19 -0
  98. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/nan.test.ts +24 -0
  99. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/nativeEnum.test.ts +87 -0
  100. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/nullable.test.ts +42 -0
  101. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/number.test.ts +176 -0
  102. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/object-augmentation.test.ts +29 -0
  103. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/object-in-es5-env.test.ts +29 -0
  104. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/object.test.ts +434 -0
  105. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/optional.test.ts +42 -0
  106. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/parseUtil.test.ts +23 -0
  107. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/parser.test.ts +41 -0
  108. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/partials.test.ts +243 -0
  109. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/pickomit.test.ts +111 -0
  110. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/pipeline.test.ts +29 -0
  111. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/preprocess.test.ts +186 -0
  112. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/primitive.test.ts +440 -0
  113. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/promise.test.ts +90 -0
  114. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/readonly.test.ts +194 -0
  115. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/record.test.ts +171 -0
  116. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/recursive.test.ts +197 -0
  117. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/refine.test.ts +313 -0
  118. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/safeparse.test.ts +27 -0
  119. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/set.test.ts +142 -0
  120. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/standard-schema.test.ts +83 -0
  121. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/string.test.ts +916 -0
  122. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/transformer.test.ts +233 -0
  123. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/tuple.test.ts +90 -0
  124. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/unions.test.ts +57 -0
  125. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/validations.test.ts +133 -0
  126. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/tests/void.test.ts +15 -0
  127. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v3/types.ts +5138 -0
  128. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/checks.ts +32 -0
  129. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/coerce.ts +27 -0
  130. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/compat.ts +70 -0
  131. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/errors.ts +82 -0
  132. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/external.ts +51 -0
  133. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/from-json-schema.ts +643 -0
  134. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/index.ts +5 -0
  135. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/iso.ts +90 -0
  136. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/parse.ts +82 -0
  137. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/schemas.ts +2409 -0
  138. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/anyunknown.test.ts +26 -0
  139. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/apply.test.ts +59 -0
  140. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/array.test.ts +264 -0
  141. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/assignability.test.ts +210 -0
  142. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/async-parsing.test.ts +381 -0
  143. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/async-refinements.test.ts +68 -0
  144. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/base.test.ts +7 -0
  145. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/bigint.test.ts +54 -0
  146. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/brand.test.ts +106 -0
  147. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/catch.test.ts +276 -0
  148. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/coalesce.test.ts +20 -0
  149. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/codec-examples.test.ts +573 -0
  150. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/codec.test.ts +562 -0
  151. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/coerce.test.ts +160 -0
  152. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/continuability.test.ts +374 -0
  153. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/custom.test.ts +40 -0
  154. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/date.test.ts +62 -0
  155. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/datetime.test.ts +302 -0
  156. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/default.test.ts +365 -0
  157. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/describe-meta-checks.test.ts +27 -0
  158. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/description.test.ts +32 -0
  159. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/discriminated-unions.test.ts +661 -0
  160. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/enum.test.ts +285 -0
  161. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/error-utils.test.ts +595 -0
  162. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/error.test.ts +711 -0
  163. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/file.test.ts +96 -0
  164. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/firstparty.test.ts +179 -0
  165. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/fix-json-issue.test.ts +26 -0
  166. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/from-json-schema.test.ts +734 -0
  167. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/function.test.ts +360 -0
  168. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/generics.test.ts +72 -0
  169. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/hash.test.ts +68 -0
  170. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/index.test.ts +939 -0
  171. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/instanceof.test.ts +60 -0
  172. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/intersection.test.ts +198 -0
  173. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/json.test.ts +109 -0
  174. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/lazy.test.ts +227 -0
  175. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/literal.test.ts +117 -0
  176. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/map.test.ts +330 -0
  177. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nan.test.ts +21 -0
  178. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nested-refine.test.ts +168 -0
  179. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nonoptional.test.ts +101 -0
  180. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/nullable.test.ts +22 -0
  181. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/number.test.ts +270 -0
  182. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/object.test.ts +640 -0
  183. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/optional.test.ts +223 -0
  184. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/partial.test.ts +427 -0
  185. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/pickomit.test.ts +211 -0
  186. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/pipe.test.ts +101 -0
  187. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/prefault.test.ts +74 -0
  188. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/preprocess.test.ts +282 -0
  189. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/primitive.test.ts +175 -0
  190. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/promise.test.ts +81 -0
  191. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/prototypes.test.ts +23 -0
  192. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/readonly.test.ts +252 -0
  193. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/record.test.ts +632 -0
  194. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/recursive-types.test.ts +582 -0
  195. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/refine.test.ts +570 -0
  196. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/registries.test.ts +243 -0
  197. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/set.test.ts +181 -0
  198. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/standard-schema.test.ts +134 -0
  199. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/string-formats.test.ts +125 -0
  200. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/string.test.ts +1175 -0
  201. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/stringbool.test.ts +106 -0
  202. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/template-literal.test.ts +771 -0
  203. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/to-json-schema-methods.test.ts +438 -0
  204. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/to-json-schema.test.ts +2990 -0
  205. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/transform.test.ts +361 -0
  206. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/tuple.test.ts +183 -0
  207. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/union.test.ts +219 -0
  208. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/url.test.ts +13 -0
  209. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/validations.test.ts +283 -0
  210. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/classic/tests/void.test.ts +12 -0
  211. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/api.ts +1798 -0
  212. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/checks.ts +1293 -0
  213. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/config.ts +15 -0
  214. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/core.ts +138 -0
  215. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/doc.ts +44 -0
  216. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/errors.ts +448 -0
  217. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/index.ts +16 -0
  218. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/json-schema-generator.ts +126 -0
  219. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/json-schema-processors.ts +667 -0
  220. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/json-schema.ts +147 -0
  221. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/parse.ts +195 -0
  222. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/regexes.ts +183 -0
  223. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/registries.ts +105 -0
  224. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/schemas.ts +4538 -0
  225. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/standard-schema.ts +159 -0
  226. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/extend.test.ts +59 -0
  227. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/index.test.ts +46 -0
  228. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/be.test.ts +124 -0
  229. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/en.test.ts +22 -0
  230. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/es.test.ts +181 -0
  231. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/he.test.ts +379 -0
  232. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/nl.test.ts +46 -0
  233. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/ru.test.ts +128 -0
  234. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/tr.test.ts +69 -0
  235. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/locales/uz.test.ts +83 -0
  236. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/record-constructor.test.ts +67 -0
  237. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/tests/recursive-tuples.test.ts +45 -0
  238. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/to-json-schema.ts +613 -0
  239. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/util.ts +966 -0
  240. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/versions.ts +5 -0
  241. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/core/zsf.ts +323 -0
  242. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/index.ts +4 -0
  243. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ar.ts +115 -0
  244. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/az.ts +111 -0
  245. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/be.ts +176 -0
  246. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/bg.ts +128 -0
  247. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ca.ts +116 -0
  248. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/cs.ts +118 -0
  249. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/da.ts +123 -0
  250. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/de.ts +116 -0
  251. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/en.ts +119 -0
  252. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/eo.ts +118 -0
  253. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/es.ts +141 -0
  254. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fa.ts +126 -0
  255. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fi.ts +121 -0
  256. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fr-CA.ts +116 -0
  257. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/fr.ts +116 -0
  258. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/he.ts +246 -0
  259. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/hu.ts +117 -0
  260. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/hy.ts +164 -0
  261. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/id.ts +115 -0
  262. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/index.ts +49 -0
  263. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/is.ts +119 -0
  264. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/it.ts +116 -0
  265. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ja.ts +114 -0
  266. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ka.ts +123 -0
  267. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/kh.ts +7 -0
  268. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/km.ts +119 -0
  269. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ko.ts +121 -0
  270. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/lt.ts +239 -0
  271. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/mk.ts +118 -0
  272. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ms.ts +115 -0
  273. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/nl.ts +121 -0
  274. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/no.ts +116 -0
  275. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ota.ts +117 -0
  276. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/pl.ts +118 -0
  277. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ps.ts +126 -0
  278. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/pt.ts +116 -0
  279. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ru.ts +176 -0
  280. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/sl.ts +118 -0
  281. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/sv.ts +119 -0
  282. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ta.ts +118 -0
  283. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/th.ts +119 -0
  284. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/tr.ts +111 -0
  285. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ua.ts +7 -0
  286. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/uk.ts +117 -0
  287. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/ur.ts +119 -0
  288. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/uz.ts +116 -0
  289. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/vi.ts +117 -0
  290. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/yo.ts +124 -0
  291. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/zh-CN.ts +116 -0
  292. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/locales/zh-TW.ts +115 -0
  293. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/checks.ts +32 -0
  294. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/coerce.ts +27 -0
  295. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/external.ts +40 -0
  296. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/index.ts +3 -0
  297. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/iso.ts +66 -0
  298. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/parse.ts +14 -0
  299. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/schemas.ts +1916 -0
  300. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/apply.test.ts +24 -0
  301. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/assignability.test.ts +129 -0
  302. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/brand.test.ts +94 -0
  303. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/checks.test.ts +144 -0
  304. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/codec.test.ts +529 -0
  305. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/computed.test.ts +36 -0
  306. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/error.test.ts +22 -0
  307. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/functions.test.ts +5 -0
  308. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/index.test.ts +963 -0
  309. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/number.test.ts +95 -0
  310. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/object.test.ts +227 -0
  311. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/prototypes.test.ts +43 -0
  312. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/recursive-types.test.ts +275 -0
  313. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/standard-schema.test.ts +50 -0
  314. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4/mini/tests/string.test.ts +347 -0
  315. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/src/v4-mini/index.ts +3 -0
  316. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.cjs +138 -0
  317. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.d.cts +164 -0
  318. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.d.ts +164 -0
  319. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/ZodError.js +133 -0
  320. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.cjs +17 -0
  321. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.d.cts +5 -0
  322. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.d.ts +5 -0
  323. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/errors.js +9 -0
  324. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.cjs +22 -0
  325. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.d.cts +6 -0
  326. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.d.ts +6 -0
  327. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/external.js +6 -0
  328. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.cjs +2 -0
  329. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.d.cts +8 -0
  330. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.d.ts +8 -0
  331. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/enumUtil.js +1 -0
  332. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.cjs +9 -0
  333. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.d.cts +9 -0
  334. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.d.ts +9 -0
  335. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/errorUtil.js +6 -0
  336. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.cjs +124 -0
  337. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.d.cts +78 -0
  338. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.d.ts +78 -0
  339. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/parseUtil.js +109 -0
  340. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.cjs +2 -0
  341. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.d.cts +8 -0
  342. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.d.ts +8 -0
  343. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/partialUtil.js +1 -0
  344. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.cjs +2 -0
  345. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.d.cts +2 -0
  346. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.d.ts +2 -0
  347. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/typeAliases.js +1 -0
  348. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.cjs +137 -0
  349. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.d.cts +85 -0
  350. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.d.ts +85 -0
  351. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/helpers/util.js +133 -0
  352. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.cjs +33 -0
  353. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.d.cts +4 -0
  354. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.d.ts +4 -0
  355. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/index.js +4 -0
  356. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.cjs +112 -0
  357. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.d.cts +3 -0
  358. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.d.ts +3 -0
  359. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/locales/en.js +109 -0
  360. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/package.json +6 -0
  361. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.cjs +2 -0
  362. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.d.cts +102 -0
  363. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.d.ts +102 -0
  364. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/standard-schema.js +1 -0
  365. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.cjs +3777 -0
  366. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.d.cts +1034 -0
  367. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.d.ts +1034 -0
  368. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v3/types.js +3695 -0
  369. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.cjs +33 -0
  370. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.d.cts +1 -0
  371. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.d.ts +1 -0
  372. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/checks.js +1 -0
  373. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.cjs +47 -0
  374. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.d.cts +17 -0
  375. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.d.ts +17 -0
  376. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/coerce.js +17 -0
  377. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.cjs +61 -0
  378. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.d.cts +50 -0
  379. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.d.ts +50 -0
  380. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/compat.js +31 -0
  381. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.cjs +74 -0
  382. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.d.cts +30 -0
  383. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.d.ts +30 -0
  384. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/errors.js +48 -0
  385. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.cjs +73 -0
  386. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.d.cts +15 -0
  387. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.d.ts +15 -0
  388. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/external.js +20 -0
  389. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.cjs +610 -0
  390. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.d.cts +12 -0
  391. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.d.ts +12 -0
  392. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/from-json-schema.js +584 -0
  393. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.cjs +33 -0
  394. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.d.cts +4 -0
  395. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.d.ts +4 -0
  396. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/index.js +4 -0
  397. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.cjs +60 -0
  398. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.d.cts +22 -0
  399. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.d.ts +22 -0
  400. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/iso.js +30 -0
  401. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/package.json +6 -0
  402. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.cjs +41 -0
  403. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.d.cts +31 -0
  404. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.d.ts +31 -0
  405. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/parse.js +15 -0
  406. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.cjs +1272 -0
  407. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.d.cts +739 -0
  408. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.d.ts +739 -0
  409. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/classic/schemas.js +1157 -0
  410. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.cjs +1222 -0
  411. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.d.cts +304 -0
  412. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.d.ts +304 -0
  413. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/api.js +1082 -0
  414. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.cjs +601 -0
  415. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.d.cts +278 -0
  416. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.d.ts +278 -0
  417. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/checks.js +575 -0
  418. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.cjs +83 -0
  419. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.d.cts +70 -0
  420. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.d.ts +70 -0
  421. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/core.js +76 -0
  422. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.cjs +39 -0
  423. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.d.cts +14 -0
  424. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.d.ts +14 -0
  425. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/doc.js +35 -0
  426. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.cjs +213 -0
  427. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.d.cts +220 -0
  428. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.d.ts +220 -0
  429. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/errors.js +182 -0
  430. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.cjs +47 -0
  431. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.d.cts +16 -0
  432. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.d.ts +16 -0
  433. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/index.js +16 -0
  434. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.cjs +99 -0
  435. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.d.cts +65 -0
  436. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.d.ts +65 -0
  437. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-generator.js +95 -0
  438. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.cjs +648 -0
  439. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.d.cts +49 -0
  440. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.d.ts +49 -0
  441. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema-processors.js +605 -0
  442. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.cjs +2 -0
  443. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.d.cts +88 -0
  444. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.d.ts +88 -0
  445. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/json-schema.js +1 -0
  446. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/package.json +6 -0
  447. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.cjs +131 -0
  448. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.d.cts +49 -0
  449. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.d.ts +49 -0
  450. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/parse.js +93 -0
  451. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.cjs +166 -0
  452. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.d.cts +79 -0
  453. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.d.ts +79 -0
  454. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/regexes.js +133 -0
  455. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.cjs +56 -0
  456. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.d.cts +35 -0
  457. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.d.ts +35 -0
  458. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/registries.js +51 -0
  459. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.cjs +2124 -0
  460. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.d.cts +1146 -0
  461. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.d.ts +1146 -0
  462. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/schemas.js +2093 -0
  463. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.cjs +2 -0
  464. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.d.cts +126 -0
  465. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.d.ts +126 -0
  466. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/standard-schema.js +1 -0
  467. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.cjs +446 -0
  468. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.d.cts +114 -0
  469. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.d.ts +114 -0
  470. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/to-json-schema.js +437 -0
  471. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.cjs +710 -0
  472. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.d.cts +199 -0
  473. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.d.ts +199 -0
  474. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/util.js +651 -0
  475. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.cjs +8 -0
  476. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.d.cts +5 -0
  477. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.d.ts +5 -0
  478. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/core/versions.js +5 -0
  479. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.cjs +22 -0
  480. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.d.cts +3 -0
  481. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.d.ts +3 -0
  482. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/index.js +3 -0
  483. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.cjs +133 -0
  484. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.d.cts +5 -0
  485. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.d.ts +4 -0
  486. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ar.js +106 -0
  487. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.cjs +132 -0
  488. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.d.cts +5 -0
  489. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.d.ts +4 -0
  490. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/az.js +105 -0
  491. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.cjs +183 -0
  492. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.d.cts +5 -0
  493. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.d.ts +4 -0
  494. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/be.js +156 -0
  495. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.cjs +147 -0
  496. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.d.cts +5 -0
  497. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.d.ts +4 -0
  498. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/bg.js +120 -0
  499. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.cjs +134 -0
  500. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.d.cts +5 -0
  501. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.d.ts +4 -0
  502. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ca.js +107 -0
  503. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.cjs +138 -0
  504. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.d.cts +5 -0
  505. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.d.ts +4 -0
  506. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/cs.js +111 -0
  507. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.cjs +142 -0
  508. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.d.cts +5 -0
  509. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.d.ts +4 -0
  510. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/da.js +115 -0
  511. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.cjs +135 -0
  512. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.d.cts +5 -0
  513. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.d.ts +4 -0
  514. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/de.js +108 -0
  515. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.cjs +136 -0
  516. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.d.cts +5 -0
  517. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.d.ts +4 -0
  518. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/en.js +109 -0
  519. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.cjs +136 -0
  520. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.d.cts +5 -0
  521. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.d.ts +4 -0
  522. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/eo.js +109 -0
  523. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.cjs +159 -0
  524. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.d.cts +5 -0
  525. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.d.ts +4 -0
  526. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/es.js +132 -0
  527. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.cjs +141 -0
  528. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.d.cts +5 -0
  529. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.d.ts +4 -0
  530. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fa.js +114 -0
  531. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.cjs +139 -0
  532. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.d.cts +5 -0
  533. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.d.ts +4 -0
  534. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fi.js +112 -0
  535. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.cjs +134 -0
  536. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.d.cts +5 -0
  537. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.d.ts +4 -0
  538. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr-CA.js +107 -0
  539. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.cjs +135 -0
  540. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.d.cts +5 -0
  541. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.d.ts +4 -0
  542. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/fr.js +108 -0
  543. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.cjs +241 -0
  544. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.d.cts +5 -0
  545. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.d.ts +4 -0
  546. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/he.js +214 -0
  547. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.cjs +135 -0
  548. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.d.cts +5 -0
  549. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.d.ts +4 -0
  550. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hu.js +108 -0
  551. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.cjs +174 -0
  552. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.d.cts +5 -0
  553. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.d.ts +4 -0
  554. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/hy.js +147 -0
  555. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.cjs +133 -0
  556. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.d.cts +5 -0
  557. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.d.ts +4 -0
  558. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/id.js +106 -0
  559. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.cjs +104 -0
  560. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.d.cts +49 -0
  561. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.d.ts +49 -0
  562. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/index.js +49 -0
  563. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.cjs +136 -0
  564. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.d.cts +5 -0
  565. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.d.ts +4 -0
  566. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/is.js +109 -0
  567. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.cjs +135 -0
  568. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.d.cts +5 -0
  569. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.d.ts +4 -0
  570. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/it.js +108 -0
  571. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.cjs +134 -0
  572. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.d.cts +5 -0
  573. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.d.ts +4 -0
  574. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ja.js +107 -0
  575. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.cjs +139 -0
  576. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.d.cts +5 -0
  577. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.d.ts +4 -0
  578. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ka.js +112 -0
  579. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.cjs +12 -0
  580. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.d.cts +5 -0
  581. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.d.ts +5 -0
  582. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/kh.js +5 -0
  583. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.cjs +137 -0
  584. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.d.cts +5 -0
  585. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.d.ts +4 -0
  586. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/km.js +110 -0
  587. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.cjs +138 -0
  588. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.d.cts +5 -0
  589. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.d.ts +4 -0
  590. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ko.js +111 -0
  591. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.cjs +230 -0
  592. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.d.cts +5 -0
  593. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.d.ts +4 -0
  594. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/lt.js +203 -0
  595. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.cjs +136 -0
  596. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.d.cts +5 -0
  597. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.d.ts +4 -0
  598. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/mk.js +109 -0
  599. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.cjs +134 -0
  600. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.d.cts +5 -0
  601. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.d.ts +4 -0
  602. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ms.js +107 -0
  603. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.cjs +137 -0
  604. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.d.cts +5 -0
  605. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.d.ts +4 -0
  606. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/nl.js +110 -0
  607. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.cjs +135 -0
  608. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.d.cts +5 -0
  609. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.d.ts +4 -0
  610. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/no.js +108 -0
  611. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.cjs +136 -0
  612. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.d.cts +5 -0
  613. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.d.ts +4 -0
  614. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ota.js +109 -0
  615. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/package.json +6 -0
  616. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.cjs +136 -0
  617. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.d.cts +5 -0
  618. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.d.ts +4 -0
  619. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pl.js +109 -0
  620. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.cjs +141 -0
  621. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.d.cts +5 -0
  622. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.d.ts +4 -0
  623. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ps.js +114 -0
  624. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.cjs +135 -0
  625. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.d.cts +5 -0
  626. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.d.ts +4 -0
  627. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/pt.js +108 -0
  628. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.cjs +183 -0
  629. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.d.cts +5 -0
  630. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.d.ts +4 -0
  631. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ru.js +156 -0
  632. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.cjs +136 -0
  633. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.d.cts +5 -0
  634. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.d.ts +4 -0
  635. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sl.js +109 -0
  636. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.cjs +137 -0
  637. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.d.cts +5 -0
  638. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.d.ts +4 -0
  639. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/sv.js +110 -0
  640. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.cjs +137 -0
  641. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.d.cts +5 -0
  642. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.d.ts +4 -0
  643. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ta.js +110 -0
  644. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.cjs +137 -0
  645. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.d.cts +5 -0
  646. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.d.ts +4 -0
  647. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/th.js +110 -0
  648. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.cjs +132 -0
  649. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.d.cts +5 -0
  650. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.d.ts +4 -0
  651. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/tr.js +105 -0
  652. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.cjs +12 -0
  653. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.d.cts +5 -0
  654. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.d.ts +5 -0
  655. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ua.js +5 -0
  656. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.cjs +135 -0
  657. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.d.cts +5 -0
  658. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.d.ts +4 -0
  659. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uk.js +108 -0
  660. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.cjs +137 -0
  661. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.d.cts +5 -0
  662. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.d.ts +4 -0
  663. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/ur.js +110 -0
  664. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.cjs +136 -0
  665. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.d.cts +5 -0
  666. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.d.ts +4 -0
  667. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/uz.js +109 -0
  668. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.cjs +135 -0
  669. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.d.cts +5 -0
  670. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.d.ts +4 -0
  671. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/vi.js +108 -0
  672. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.cjs +134 -0
  673. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.d.cts +5 -0
  674. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.d.ts +4 -0
  675. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/yo.js +107 -0
  676. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.cjs +136 -0
  677. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.d.cts +5 -0
  678. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.d.ts +4 -0
  679. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-CN.js +109 -0
  680. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.cjs +134 -0
  681. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.d.cts +5 -0
  682. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.d.ts +4 -0
  683. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/locales/zh-TW.js +107 -0
  684. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.cjs +34 -0
  685. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.d.cts +1 -0
  686. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.d.ts +1 -0
  687. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/checks.js +1 -0
  688. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.cjs +52 -0
  689. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.d.cts +7 -0
  690. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.d.ts +7 -0
  691. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/coerce.js +22 -0
  692. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.cjs +63 -0
  693. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.d.cts +12 -0
  694. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.d.ts +12 -0
  695. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/external.js +14 -0
  696. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.cjs +32 -0
  697. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.d.cts +3 -0
  698. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.d.ts +3 -0
  699. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/index.js +3 -0
  700. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.cjs +64 -0
  701. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.d.cts +22 -0
  702. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.d.ts +22 -0
  703. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/iso.js +34 -0
  704. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/package.json +6 -0
  705. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.cjs +16 -0
  706. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.d.cts +1 -0
  707. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.d.ts +1 -0
  708. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/parse.js +1 -0
  709. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.cjs +1046 -0
  710. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.d.cts +427 -0
  711. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.d.ts +427 -0
  712. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/mini/schemas.js +925 -0
  713. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4/package.json +6 -0
  714. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.cjs +32 -0
  715. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.d.cts +3 -0
  716. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.d.ts +3 -0
  717. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/index.js +3 -0
  718. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/node_modules/zod/v4-mini/package.json +6 -0
  719. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/package.json +37 -0
  720. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/attachment-naming.test.ts +104 -0
  721. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/channels.test.ts +36 -0
  722. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/contracts.test.ts +299 -0
  723. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/conversation-handle.test.ts +316 -0
  724. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +280 -0
  725. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/package-boundary.test.ts +151 -0
  726. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/redacted-credential.test.ts +200 -0
  727. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
  728. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/secret-detection.test.ts +449 -0
  729. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/stripe-currency.test.ts +37 -0
  730. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/__tests__/url-normalization.test.ts +135 -0
  731. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/attachment-naming.ts +118 -0
  732. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/channels.ts +92 -0
  733. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/client-metadata.ts +46 -0
  734. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/conversation-handle.ts +246 -0
  735. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/credential-rpc.ts +21 -0
  736. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/error.ts +26 -0
  737. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/handles.ts +212 -0
  738. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/index.ts +32 -0
  739. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/ingress.ts +175 -0
  740. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/redacted-credential.ts +226 -0
  741. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +816 -0
  742. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/rpc.ts +408 -0
  743. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/secret-detection.ts +468 -0
  744. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/stripe-currency.ts +55 -0
  745. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/transport.ts +133 -0
  746. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/trust-rules.ts +116 -0
  747. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/twilio-ingress.ts +73 -0
  748. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/src/url-normalization.ts +107 -0
  749. package/node_modules/@vellumai/local-mode/node_modules/@vellumai/service-contracts/tsconfig.json +20 -0
  750. package/node_modules/@vellumai/local-mode/package.json +3 -1
  751. package/node_modules/@vellumai/local-mode/src/__tests__/guardian-token.test.ts +45 -0
  752. package/node_modules/@vellumai/local-mode/src/__tests__/package-boundary.test.ts +32 -14
  753. package/node_modules/@vellumai/local-mode/src/__tests__/pair.test.ts +1535 -155
  754. package/node_modules/@vellumai/local-mode/src/__tests__/status.test.ts +71 -1
  755. package/node_modules/@vellumai/local-mode/src/avatar.test.ts +404 -0
  756. package/node_modules/@vellumai/local-mode/src/avatar.ts +151 -0
  757. package/node_modules/@vellumai/local-mode/src/devices.test.ts +62 -0
  758. package/node_modules/@vellumai/local-mode/src/devices.ts +12 -0
  759. package/node_modules/@vellumai/local-mode/src/guardian-token.ts +27 -34
  760. package/node_modules/@vellumai/local-mode/src/index.ts +26 -3
  761. package/node_modules/@vellumai/local-mode/src/lockfile-contract.ts +1 -1
  762. package/node_modules/@vellumai/local-mode/src/lockfile.test.ts +1 -0
  763. package/node_modules/@vellumai/local-mode/src/lockfile.ts +6 -3
  764. package/node_modules/@vellumai/local-mode/src/pair.ts +1099 -129
  765. package/node_modules/@vellumai/local-mode/src/status.ts +67 -22
  766. package/node_modules/@vellumai/service-contracts/src/__tests__/ingress.test.ts +37 -0
  767. package/node_modules/@vellumai/service-contracts/src/__tests__/remote-web-pairing.test.ts +389 -0
  768. package/node_modules/@vellumai/service-contracts/src/ingress.ts +22 -0
  769. package/node_modules/@vellumai/service-contracts/src/remote-web-pairing.ts +508 -18
  770. package/node_modules/@vellumai/service-contracts/src/rpc.ts +174 -0
  771. package/package.json +3 -1
  772. package/src/__tests__/connect-import.test.ts +512 -172
  773. package/src/__tests__/detached-process.test.ts +152 -0
  774. package/src/__tests__/devices.test.ts +12 -0
  775. package/src/__tests__/hatch-provider-secrets.test.ts +95 -0
  776. package/src/__tests__/pair.test.ts +319 -305
  777. package/src/__tests__/provider-secrets.test.ts +158 -0
  778. package/src/__tests__/tunnel.test.ts +200 -23
  779. package/src/__tests__/wake.test.ts +51 -1
  780. package/src/adapters/install.sh +2 -1
  781. package/src/adapters/openclaw.ts +2 -1
  782. package/src/commands/client.ts +81 -58
  783. package/src/commands/connect/import.ts +248 -52
  784. package/src/commands/connect.ts +1 -1
  785. package/src/commands/devices.ts +4 -0
  786. package/src/commands/pair.ts +173 -298
  787. package/src/commands/tunnel.ts +162 -54
  788. package/src/commands/voice.ts +370 -0
  789. package/src/components/DefaultMainScreen.tsx +0 -144
  790. package/src/index.ts +5 -2
  791. package/src/lib/detached-process.ts +81 -0
  792. package/src/lib/docker.ts +21 -4
  793. package/src/lib/guardian-token.ts +19 -2
  794. package/src/lib/hatch-local.ts +23 -5
  795. package/src/lib/live-voice/client.test.ts +316 -0
  796. package/src/lib/live-voice/client.ts +363 -0
  797. package/src/lib/live-voice/connection.ts +133 -0
  798. package/src/lib/live-voice/pcm-player.test.ts +101 -0
  799. package/src/lib/live-voice/pcm-player.ts +356 -0
  800. package/src/lib/live-voice/protocol.test.ts +53 -0
  801. package/src/lib/live-voice/protocol.ts +193 -0
  802. package/src/lib/local.ts +2 -1
  803. package/src/lib/provider-secrets.ts +195 -0
  804. package/src/lib/shell-arg.test.ts +24 -0
  805. package/src/lib/shell-arg.ts +17 -0
  806. package/src/lib/tunnel-edge.ts +31 -2
  807. package/src/shared/provider-env-vars.ts +1 -0
@@ -1,6 +1,7 @@
1
1
  /**
2
- * Tests for `vellum connect import <blob>`: decode a `vellum pair` bundle and
3
- * persist a lockfile entry + guardian token under a unique local id.
2
+ * Tests for `vellum connect import <link-or-url>`: drive the host-side pairing
3
+ * session (device-code exchange) and persist a lockfile entry + guardian token
4
+ * under a unique local id.
4
5
  */
5
6
  import {
6
7
  afterAll,
@@ -8,6 +9,7 @@ import {
8
9
  beforeEach,
9
10
  describe,
10
11
  expect,
12
+ setSystemTime,
11
13
  spyOn,
12
14
  test,
13
15
  } from "bun:test";
@@ -27,291 +29,629 @@ import {
27
29
  } from "../lib/assistant-config.js";
28
30
  import { loadGuardianToken } from "../lib/guardian-token.js";
29
31
 
30
- function bundleFor(overrides: Record<string, unknown> = {}): string {
31
- const obj = {
32
- gatewayUrl: "http://10.0.0.5:7830",
33
- assistantId: "self",
34
- token: "test-token",
35
- deviceId: "dev-aaa",
32
+ const HOST = "https://host.example.ts.net";
33
+ const PAIRING_LINK = `${HOST}/assistant/pair#device_code=dev-code`;
34
+ const CHALLENGE_URL = `${HOST}/v1/remote-web/pairing-challenge`;
35
+ const TOKEN_URL = `${HOST}/v1/remote-web/pairing-token`;
36
+
37
+ // The gateway's own poll cadence, which is what the CLI waits between polls.
38
+ // The waits run on a virtual clock (see the `Bun.sleep` stub below), so a
39
+ // realistic cadence costs the suite nothing.
40
+ const POLL_INTERVAL_SECONDS = 5;
41
+
42
+ function jsonResponse(body: unknown, status = 200): Response {
43
+ return new Response(JSON.stringify(body), {
44
+ status,
45
+ headers: { "content-type": "application/json" },
46
+ });
47
+ }
48
+
49
+ function challengeBody(overrides: Record<string, unknown> = {}) {
50
+ return {
51
+ deviceCode: "dev-code",
52
+ userCode: "ABCD-EFGH",
53
+ verificationUri: `${HOST}/assistant/pair`,
54
+ expiresAt: new Date(Date.now() + 600_000).toISOString(),
55
+ expiresInSeconds: 600,
56
+ intervalSeconds: POLL_INTERVAL_SECONDS,
36
57
  ...overrides,
37
58
  };
38
- return Buffer.from(JSON.stringify(obj)).toString("base64");
59
+ }
60
+
61
+ function approvedBody(overrides: Record<string, unknown> = {}) {
62
+ return {
63
+ status: "approved",
64
+ accessToken: "acc-tok",
65
+ refreshToken: "refresh-tok",
66
+ refreshTokenExpiresAt: "2030-01-01T00:00:00.000Z",
67
+ refreshAfter: "2029-01-01T00:00:00.000Z",
68
+ ...overrides,
69
+ };
70
+ }
71
+
72
+ interface FetchCall {
73
+ url: string;
74
+ body: Record<string, unknown>;
75
+ }
76
+
77
+ /** Install a fetch stub that answers from `replies`, recording every call. */
78
+ function stubFetch(
79
+ replies: (call: FetchCall, index: number) => Response,
80
+ ): FetchCall[] {
81
+ const calls: FetchCall[] = [];
82
+ globalThis.fetch = (async (url: string, init?: RequestInit) => {
83
+ const call = {
84
+ url,
85
+ body: JSON.parse((init?.body as string) ?? "{}") as Record<
86
+ string,
87
+ unknown
88
+ >,
89
+ };
90
+ calls.push(call);
91
+ return replies(call, calls.length - 1);
92
+ }) as unknown as typeof fetch;
93
+ return calls;
94
+ }
95
+
96
+ function captureLogs(): { logs: string[]; restore: () => void } {
97
+ const logs: string[] = [];
98
+ const logSpy = spyOn(console, "log").mockImplementation((...a: unknown[]) => {
99
+ logs.push(a.join(" "));
100
+ });
101
+ return { logs, restore: () => logSpy.mockRestore() };
102
+ }
103
+
104
+ /** Run the command with console.error and process.exit captured. */
105
+ async function runExpectingExit(): Promise<{ exited: boolean; out: string }> {
106
+ const messages: string[] = [];
107
+ const errSpy = spyOn(console, "error").mockImplementation(
108
+ (...a: unknown[]) => {
109
+ messages.push(a.join(" "));
110
+ },
111
+ );
112
+ const logSpy = spyOn(console, "log").mockImplementation((...a: unknown[]) => {
113
+ messages.push(a.join(" "));
114
+ });
115
+ const exitSpy = spyOn(process, "exit").mockImplementation(((c?: number) => {
116
+ throw new Error(`exit:${c}`);
117
+ }) as never);
118
+ let exited = false;
119
+ try {
120
+ await connectImport();
121
+ } catch (e) {
122
+ exited = (e as Error).message === "exit:1";
123
+ } finally {
124
+ errSpy.mockRestore();
125
+ logSpy.mockRestore();
126
+ exitSpy.mockRestore();
127
+ }
128
+ return { exited, out: messages.join("\n") };
39
129
  }
40
130
 
41
131
  describe("connect import", () => {
132
+ const originalFetch = globalThis.fetch;
133
+ /** Every wait the command asked for, in milliseconds, in order. */
134
+ let waits: number[];
135
+ let sleepSpy: ReturnType<typeof spyOn>;
136
+
42
137
  beforeEach(() => {
43
138
  process.env.VELLUM_LOCKFILE_DIR = testDir;
44
139
  process.env.XDG_CONFIG_HOME = testDir;
140
+ waits = [];
141
+ // The command turns the poll cadence straight into a `Bun.sleep`. Freeze
142
+ // the clock and have each wait advance it by exactly what was asked for:
143
+ // the deadlines the retry loop reads then move in step with the waits, so
144
+ // a multi-second cadence is exercised in full without being spent, and
145
+ // both the cadence and the backoff are assertable rather than implicit.
146
+ setSystemTime(new Date());
147
+ sleepSpy = spyOn(Bun, "sleep").mockImplementation((async (ms: number) => {
148
+ waits.push(ms);
149
+ setSystemTime(new Date(Date.now() + ms));
150
+ }) as never);
45
151
  });
46
152
 
47
153
  afterEach(() => {
154
+ sleepSpy.mockRestore();
155
+ setSystemTime();
48
156
  process.argv = [...ORIGINAL_ARGV];
49
- if (ORIGINAL_LOCKFILE_DIR === undefined)
157
+ globalThis.fetch = originalFetch;
158
+ if (ORIGINAL_LOCKFILE_DIR === undefined) {
50
159
  delete process.env.VELLUM_LOCKFILE_DIR;
51
- else process.env.VELLUM_LOCKFILE_DIR = ORIGINAL_LOCKFILE_DIR;
52
- if (ORIGINAL_CONFIG_HOME === undefined) delete process.env.XDG_CONFIG_HOME;
53
- else process.env.XDG_CONFIG_HOME = ORIGINAL_CONFIG_HOME;
160
+ } else {
161
+ process.env.VELLUM_LOCKFILE_DIR = ORIGINAL_LOCKFILE_DIR;
162
+ }
163
+ if (ORIGINAL_CONFIG_HOME === undefined) {
164
+ delete process.env.XDG_CONFIG_HOME;
165
+ } else {
166
+ process.env.XDG_CONFIG_HOME = ORIGINAL_CONFIG_HOME;
167
+ }
54
168
  });
55
169
 
56
170
  afterAll(() => {
57
171
  rmSync(testDir, { recursive: true, force: true });
58
172
  });
59
173
 
60
- test("writes a lockfile entry + guardian token from a valid bundle", async () => {
61
- process.argv = ["bun", "vellum", "connect", "import", bundleFor()];
62
- const logSpy = spyOn(console, "log").mockImplementation(() => {});
174
+ test("a pairing link imports on the first poll, with no approval step", async () => {
175
+ process.argv = [
176
+ "bun",
177
+ "vellum",
178
+ "connect",
179
+ "import",
180
+ PAIRING_LINK,
181
+ "--name",
182
+ "link-box",
183
+ ];
184
+ const calls = stubFetch(() => jsonResponse(approvedBody()));
185
+ const { logs, restore } = captureLogs();
63
186
  try {
64
187
  await connectImport();
65
188
  } finally {
66
- logSpy.mockRestore();
189
+ restore();
67
190
  }
68
191
 
69
- const entry = findAssistantByName("paired-dev-aaa");
192
+ // The link carries an approved device code, so nothing is minted: one
193
+ // exchange, and it is the import.
194
+ expect(calls).toHaveLength(1);
195
+ expect(calls[0].url).toBe(TOKEN_URL);
196
+ expect(calls[0].body.deviceCode).toBe("dev-code");
197
+ expect(typeof calls[0].body.deviceId).toBe("string");
198
+ expect(calls[0].body.platform).toBe("cli");
199
+
200
+ const entry = findAssistantByName("link-box");
70
201
  expect(entry).not.toBeNull();
71
- expect(entry!.runtimeUrl).toBe("http://10.0.0.5:7830");
202
+ expect(entry!.runtimeUrl).toBe(HOST);
72
203
  expect(entry!.cloud).toBe("paired");
73
- expect(loadGuardianToken("paired-dev-aaa")?.accessToken).toBe("test-token");
74
- // Back-compat: a bundle without refresh fields imports access-only.
75
- expect(loadGuardianToken("paired-dev-aaa")?.refreshToken).toBe("");
204
+ const token = loadGuardianToken("link-box");
205
+ expect(token?.accessToken).toBe("acc-tok");
206
+ expect(token?.refreshToken).toBe("refresh-tok");
207
+ expect(token?.refreshTokenExpiresAt).toBe("2030-01-01T00:00:00.000Z");
208
+
209
+ const output = logs.join("\n");
210
+ expect(output).toContain("Imported paired assistant 'link-box'");
211
+ expect(output).toContain("vellum client link-box");
212
+ // No intermediate output: an approved link never shows an approval code.
213
+ expect(output).not.toContain("Code:");
214
+ expect(output).not.toContain("Waiting for approval");
76
215
  });
77
216
 
78
- test("persists the refresh credential when the bundle carries one", async () => {
217
+ test("a bare address prints the approval code and polls until approved", async () => {
79
218
  process.argv = [
80
219
  "bun",
81
220
  "vellum",
82
221
  "connect",
83
222
  "import",
84
- bundleFor({
85
- deviceId: "dev-refresh",
86
- token: "acc-tok",
87
- refreshToken: "refresh-tok",
88
- refreshTokenExpiresAt: "2027-01-01T00:00:00.000Z",
89
- refreshAfter: "2026-07-01T00:00:00.000Z",
90
- }),
223
+ HOST,
224
+ "--name",
225
+ "coded-box",
91
226
  ];
92
- const logSpy = spyOn(console, "log").mockImplementation(() => {});
227
+ const calls = stubFetch((call, index) => {
228
+ if (call.url === CHALLENGE_URL) {
229
+ return jsonResponse(challengeBody());
230
+ }
231
+ // First exchange is still pending; the second one is approved.
232
+ return index === 1
233
+ ? jsonResponse(
234
+ { status: "pending", intervalSeconds: POLL_INTERVAL_SECONDS },
235
+ 202,
236
+ )
237
+ : jsonResponse(
238
+ approvedBody({
239
+ refreshToken: undefined,
240
+ refreshTokenExpiresAt: undefined,
241
+ }),
242
+ );
243
+ });
244
+ const { logs, restore } = captureLogs();
93
245
  try {
94
246
  await connectImport();
95
247
  } finally {
96
- logSpy.mockRestore();
248
+ restore();
97
249
  }
98
250
 
99
- const tok = loadGuardianToken("paired-dev-refresh");
100
- expect(tok?.accessToken).toBe("acc-tok");
101
- expect(tok?.refreshToken).toBe("refresh-tok");
102
- expect(tok?.refreshTokenExpiresAt).toBe("2027-01-01T00:00:00.000Z");
103
- expect(tok?.refreshAfter).toBe("2026-07-01T00:00:00.000Z");
251
+ expect(calls.map((c) => c.url)).toEqual([
252
+ CHALLENGE_URL,
253
+ TOKEN_URL,
254
+ TOKEN_URL,
255
+ ]);
256
+ expect(calls[0].body).toEqual({ publicBaseUrl: HOST });
257
+ expect(calls[1].body.platform).toBe("cli");
258
+
259
+ // One pending poll, waited out at exactly the cadence the gateway named.
260
+ expect(waits).toEqual([POLL_INTERVAL_SECONDS * 1000]);
261
+
262
+ const output = logs.join("\n");
263
+ expect(output).toContain("Code: ABCD-EFGH");
264
+ expect(output).toContain("vellum pair --web-approve ABCD-EFGH");
265
+ expect(output).toContain("Imported paired assistant 'coded-box'");
266
+ // No refresh credential came back, so the import is access-only.
267
+ expect(output).toContain("access-only");
268
+ expect(loadGuardianToken("coded-box")?.refreshToken).toBe("");
269
+ });
270
+
271
+ test("stops polling and reports expiry instead of looping", async () => {
272
+ process.argv = ["bun", "vellum", "connect", "import", HOST];
273
+ const calls = stubFetch((call) =>
274
+ call.url === CHALLENGE_URL
275
+ ? jsonResponse(challengeBody())
276
+ : jsonResponse(
277
+ {
278
+ status: "pending",
279
+ // The gateway moves the deadline into the past: the attempt is
280
+ // over, and the next poll must report it rather than retry.
281
+ expiresAt: new Date(Date.now() - 1000).toISOString(),
282
+ intervalSeconds: POLL_INTERVAL_SECONDS,
283
+ },
284
+ 202,
285
+ ),
286
+ );
287
+
288
+ const { exited, out } = await runExpectingExit();
289
+
290
+ expect(exited).toBe(true);
291
+ expect(out).toContain("expired");
292
+ // Challenge + one pending exchange; the expired poll never hits the wire.
293
+ expect(calls).toHaveLength(2);
294
+ });
295
+
296
+ test("surfaces a denied or unknown code as an expiry", async () => {
297
+ process.argv = ["bun", "vellum", "connect", "import", PAIRING_LINK];
298
+ stubFetch(() => jsonResponse({ error: "expired_token" }, 410));
299
+
300
+ const { exited, out } = await runExpectingExit();
301
+
302
+ expect(exited).toBe(true);
303
+ expect(out).toContain("expired or was denied");
104
304
  });
105
305
 
106
- test("preserves a numeric (epoch-ms) refreshTokenExpiresAt", async () => {
107
- // GuardianTokenData allows refreshTokenExpiresAt to be an epoch-ms number;
108
- // a numeric value in the bundle must round-trip, not be dropped to 0.
109
- const expiresMs = 1893456000000; // 2030-01-01
306
+ test("refuses a non-https address before any request", async () => {
110
307
  process.argv = [
111
308
  "bun",
112
309
  "vellum",
113
310
  "connect",
114
311
  "import",
115
- bundleFor({
116
- deviceId: "dev-num",
117
- refreshToken: "refresh-tok",
118
- refreshTokenExpiresAt: expiresMs,
119
- }),
312
+ "http://insecure.example.com",
120
313
  ];
121
- const logSpy = spyOn(console, "log").mockImplementation(() => {});
122
- try {
123
- await connectImport();
124
- } finally {
125
- logSpy.mockRestore();
126
- }
314
+ let fetched = false;
315
+ globalThis.fetch = (async () => {
316
+ fetched = true;
317
+ return jsonResponse({});
318
+ }) as unknown as typeof fetch;
127
319
 
128
- expect(loadGuardianToken("paired-dev-num")?.refreshTokenExpiresAt).toBe(
129
- expiresMs,
130
- );
320
+ const { exited, out } = await runExpectingExit();
321
+
322
+ expect(exited).toBe(true);
323
+ expect(out).toContain("https");
324
+ expect(fetched).toBe(false);
131
325
  });
132
326
 
133
- test("two different bundles (both assistantId 'self') do not collide", async () => {
327
+ test("refuses a loopback address before any request", async () => {
134
328
  process.argv = [
135
329
  "bun",
136
330
  "vellum",
137
331
  "connect",
138
332
  "import",
139
- bundleFor({ deviceId: "dev-one", token: "tok1" }),
333
+ "https://127.0.0.1:7830",
140
334
  ];
141
- const logSpy = spyOn(console, "log").mockImplementation(() => {});
142
- try {
143
- await connectImport();
144
- process.argv = [
145
- "bun",
146
- "vellum",
147
- "connect",
148
- "import",
149
- bundleFor({ deviceId: "dev-two", token: "tok2" }),
150
- ];
151
- await connectImport();
152
- } finally {
153
- logSpy.mockRestore();
154
- }
335
+ let fetched = false;
336
+ globalThis.fetch = (async () => {
337
+ fetched = true;
338
+ return jsonResponse({});
339
+ }) as unknown as typeof fetch;
340
+
341
+ const { exited, out } = await runExpectingExit();
155
342
 
156
- expect(findAssistantByName("paired-dev-one")).not.toBeNull();
157
- expect(findAssistantByName("paired-dev-two")).not.toBeNull();
158
- expect(loadGuardianToken("paired-dev-one")?.accessToken).toBe("tok1");
159
- expect(loadGuardianToken("paired-dev-two")?.accessToken).toBe("tok2");
343
+ expect(exited).toBe(true);
344
+ expect(out).toContain("points back at this machine");
345
+ expect(fetched).toBe(false);
160
346
  });
161
347
 
162
- test("--name registers the entry under that name", async () => {
348
+ test("a legacy base64 bundle still imports, deprecated", async () => {
349
+ // Rolling upgrade: a host still on the previous CLI mints a bundle. It is
350
+ // no longer an address, so the import falls back to the deprecated decoder
351
+ // rather than rejecting a second machine mid-upgrade.
163
352
  process.argv = [
164
353
  "bun",
165
354
  "vellum",
166
355
  "connect",
167
356
  "import",
168
- bundleFor({ deviceId: "dev-named" }),
357
+ Buffer.from(
358
+ JSON.stringify({ gatewayUrl: HOST, token: "bundle-tok" }),
359
+ ).toString("base64"),
169
360
  "--name",
170
- "Desk Box",
361
+ "legacy-box",
171
362
  ];
172
- const logSpy = spyOn(console, "log").mockImplementation(() => {});
363
+ let fetched = false;
364
+ globalThis.fetch = (async () => {
365
+ fetched = true;
366
+ return jsonResponse({});
367
+ }) as unknown as typeof fetch;
368
+ const { logs, restore } = captureLogs();
173
369
  try {
174
370
  await connectImport();
175
371
  } finally {
176
- logSpy.mockRestore();
372
+ restore();
177
373
  }
178
- // Slugified to a stable id.
179
- expect(findAssistantByName("desk-box")).not.toBeNull();
374
+
375
+ // A bundle carries its own credentials: nothing is exchanged.
376
+ expect(fetched).toBe(false);
377
+ const output = logs.join("\n");
378
+ expect(output).toContain("deprecated");
379
+ expect(output).toContain("vellum pair");
380
+ expect(output).toContain("Imported paired assistant 'legacy-box'");
381
+ expect(findAssistantByName("legacy-box")!.runtimeUrl).toBe(HOST);
382
+ expect(loadGuardianToken("legacy-box")?.accessToken).toBe("bundle-tok");
180
383
  });
181
384
 
182
- test("sanitizes a malicious bundle deviceId (no path traversal in the local id)", async () => {
385
+ test("a string that is neither an address nor a bundle keeps the address error", async () => {
386
+ process.argv = ["bun", "vellum", "connect", "import", "not-a-url"];
387
+ let fetched = false;
388
+ globalThis.fetch = (async () => {
389
+ fetched = true;
390
+ return jsonResponse({});
391
+ }) as unknown as typeof fetch;
392
+
393
+ const { exited, out } = await runExpectingExit();
394
+
395
+ expect(exited).toBe(true);
396
+ // The address error, not a bundle-decoding one.
397
+ expect(out).toContain("pairing link");
398
+ expect(out).not.toContain("Bundle");
399
+ expect(fetched).toBe(false);
400
+ });
401
+
402
+ test("retries a transient failure and still imports", async () => {
183
403
  process.argv = [
184
404
  "bun",
185
405
  "vellum",
186
406
  "connect",
187
407
  "import",
188
- bundleFor({ deviceId: "-/../../tmp/x", token: "tokX" }),
408
+ HOST,
409
+ "--name",
410
+ "flaky-box",
189
411
  ];
190
- const logs: string[] = [];
191
- const logSpy = spyOn(console, "log").mockImplementation(
192
- (...a: unknown[]) => {
193
- logs.push(a.join(" "));
194
- },
195
- );
412
+ let attempt = 0;
413
+ globalThis.fetch = (async (url: string) => {
414
+ if (url === CHALLENGE_URL) {
415
+ return jsonResponse(challengeBody());
416
+ }
417
+ attempt += 1;
418
+ // The first exchange dies in transport; the session stays alive.
419
+ if (attempt === 1) {
420
+ throw new Error("connect ECONNRESET");
421
+ }
422
+ return jsonResponse(approvedBody());
423
+ }) as unknown as typeof fetch;
424
+ const { logs, restore } = captureLogs();
196
425
  try {
197
426
  await connectImport();
198
427
  } finally {
199
- logSpy.mockRestore();
428
+ restore();
200
429
  }
201
430
 
202
- // The registered id must contain no path separators or `..`.
203
- const m = logs.join("\n").match(/paired assistant '([^']+)'/);
204
- expect(m).not.toBeNull();
205
- const id = m![1];
206
- expect(id).not.toContain("/");
207
- expect(id).not.toContain("..");
208
- expect(loadGuardianToken(id)?.accessToken).toBe("tokX");
431
+ expect(attempt).toBe(2);
432
+ const output = logs.join("\n");
433
+ // The stalled terminal says what it is doing, once.
434
+ expect(output).toContain("Could not reach the assistant");
435
+ expect(output).toContain("Still trying");
436
+ expect(output).toContain("Imported paired assistant 'flaky-box'");
437
+ expect(loadGuardianToken("flaky-box")?.accessToken).toBe("acc-tok");
209
438
  });
210
439
 
211
- test("does not overwrite an existing non-paired assistant", async () => {
212
- saveAssistantEntry({
213
- assistantId: "desk",
214
- name: "Desk",
215
- runtimeUrl: "http://127.0.0.1:7830",
216
- cloud: "local",
217
- species: "vellum",
218
- });
440
+ test("retries a repairable gateway refusal and still imports", async () => {
219
441
  process.argv = [
220
442
  "bun",
221
443
  "vellum",
222
444
  "connect",
223
445
  "import",
224
- bundleFor({ deviceId: "dx" }),
446
+ HOST,
225
447
  "--name",
226
- "desk",
448
+ "repairing-box",
227
449
  ];
228
- const errSpy = spyOn(console, "error").mockImplementation(() => {});
229
- const exitSpy = spyOn(process, "exit").mockImplementation(((c?: number) => {
230
- throw new Error(`exit:${c}`);
231
- }) as never);
232
- let exited = false;
450
+ let attempt = 0;
451
+ globalThis.fetch = (async (url: string) => {
452
+ if (url === CHALLENGE_URL) {
453
+ return jsonResponse(challengeBody());
454
+ }
455
+ attempt += 1;
456
+ // The gateway answers, but releases the code before a repairable
457
+ // failure, so the session stays pollable and the code is still good.
458
+ if (attempt === 1) {
459
+ return jsonResponse({ error: "guardian repair required" }, 503);
460
+ }
461
+ return jsonResponse(approvedBody());
462
+ }) as unknown as typeof fetch;
463
+ const { logs, restore } = captureLogs();
233
464
  try {
234
465
  await connectImport();
235
- } catch (e) {
236
- exited = (e as Error).message === "exit:1";
237
466
  } finally {
238
- errSpy.mockRestore();
239
- exitSpy.mockRestore();
467
+ restore();
240
468
  }
469
+
470
+ expect(attempt).toBe(2);
471
+ expect(logs.join("\n")).toContain(
472
+ "Imported paired assistant 'repairing-box'",
473
+ );
474
+ expect(loadGuardianToken("repairing-box")?.accessToken).toBe("acc-tok");
475
+ });
476
+
477
+ test("reports expiry once transient failures outlast the code", async () => {
478
+ process.argv = ["bun", "vellum", "connect", "import", HOST];
479
+ let exchanges = 0;
480
+ globalThis.fetch = (async (url: string) => {
481
+ if (url === CHALLENGE_URL) {
482
+ return jsonResponse(
483
+ challengeBody({
484
+ // A deadline the retry loop reaches within a few backoffs.
485
+ expiresAt: new Date(Date.now() + 12_000).toISOString(),
486
+ }),
487
+ );
488
+ }
489
+ exchanges += 1;
490
+ throw new Error("connect ECONNREFUSED");
491
+ }) as unknown as typeof fetch;
492
+
493
+ const { exited, out } = await runExpectingExit();
494
+
241
495
  expect(exited).toBe(true);
242
- // The original local assistant is untouched (not overwritten).
243
- const e = findAssistantByName("desk");
244
- expect(e!.runtimeUrl).toBe("http://127.0.0.1:7830");
245
- expect(e!.paired).toBeUndefined();
496
+ expect(out).toContain("expired");
497
+ // Bounded: it backed off linearly (5s, then 10s), and the poll after that
498
+ // landed past the deadline, so it stopped instead of looping forever. The
499
+ // expired poll never hits the wire.
500
+ expect(waits).toEqual([5_000, 10_000]);
501
+ expect(exchanges).toBe(2);
246
502
  });
247
503
 
248
- test("re-importing the same pairing updates in place", async () => {
249
- const logSpy = spyOn(console, "log").mockImplementation(() => {});
250
- try {
251
- process.argv = [
252
- "bun",
253
- "vellum",
254
- "connect",
255
- "import",
256
- bundleFor({ deviceId: "dev-re", token: "t1" }),
257
- ];
258
- await connectImport();
504
+ test("a pairing link does not wait out an unreachable host", async () => {
505
+ // Nothing proved this address reachable (a link opens its session without
506
+ // a request), so the failure is reported instead of retried for the full
507
+ // ten-minute TTL.
508
+ process.argv = ["bun", "vellum", "connect", "import", PAIRING_LINK];
509
+ let attempts = 0;
510
+ globalThis.fetch = (async () => {
511
+ attempts += 1;
512
+ throw new Error("connect ECONNREFUSED");
513
+ }) as unknown as typeof fetch;
514
+
515
+ const { exited, out } = await runExpectingExit();
516
+
517
+ expect(exited).toBe(true);
518
+ expect(out).toContain("Could not reach that assistant");
519
+ expect(attempts).toBe(1);
520
+ });
521
+
522
+ test("missing address exits 1 with usage", async () => {
523
+ process.argv = ["bun", "vellum", "connect", "import"];
524
+
525
+ const { exited, out } = await runExpectingExit();
526
+
527
+ expect(exited).toBe(true);
528
+ expect(out).toContain("missing assistant address");
529
+ expect(out).toContain("USAGE:");
530
+ });
531
+
532
+ test("rejects an unknown --flag instead of pairing against it", async () => {
533
+ process.argv = ["bun", "vellum", "connect", "import", "--qr", HOST];
534
+ let fetched = false;
535
+ globalThis.fetch = (async () => {
536
+ fetched = true;
537
+ return jsonResponse({});
538
+ }) as unknown as typeof fetch;
539
+
540
+ const { exited, out } = await runExpectingExit();
541
+
542
+ // The flag is named and the CLI self-update path is offered. An address
543
+ // error would be a lie: the address was never the problem.
544
+ expect(exited).toBe(true);
545
+ expect(out).toContain("unknown option '--qr'");
546
+ expect(out).toContain("bun install -g vellum@latest");
547
+ expect(out).not.toContain("pairing link");
548
+ expect(fetched).toBe(false);
549
+ });
550
+
551
+ test("rejects an unknown --flag even alongside an address and --name", async () => {
552
+ process.argv = [
553
+ "bun",
554
+ "vellum",
555
+ "connect",
556
+ "import",
557
+ HOST,
558
+ "--name",
559
+ "guarded-box",
560
+ "--frobnicate",
561
+ ];
562
+ let fetched = false;
563
+ globalThis.fetch = (async () => {
564
+ fetched = true;
565
+ return jsonResponse({});
566
+ }) as unknown as typeof fetch;
567
+
568
+ const { exited, out } = await runExpectingExit();
569
+
570
+ // Known flags and a usable address never rescue an unknown one, and
571
+ // nothing is registered before the refusal.
572
+ expect(exited).toBe(true);
573
+ expect(out).toContain("unknown option '--frobnicate'");
574
+ expect(fetched).toBe(false);
575
+ expect(findAssistantByName("guarded-box")).toBeNull();
576
+ });
577
+
578
+ test("re-pairing the same host with no --name updates one entry", async () => {
579
+ const outcomes: string[] = [];
580
+ const ids: string[] = [];
581
+ for (const token of ["tok1", "tok2"]) {
582
+ process.argv = ["bun", "vellum", "connect", "import", PAIRING_LINK];
583
+ stubFetch(() => jsonResponse(approvedBody({ accessToken: token })));
584
+ const { logs, restore } = captureLogs();
585
+ try {
586
+ await connectImport();
587
+ } finally {
588
+ restore();
589
+ }
590
+ const match = logs.join("\n").match(/(\w+) paired assistant '([^']+)'/);
591
+ expect(match).not.toBeNull();
592
+ outcomes.push(match![1]);
593
+ ids.push(match![2]);
594
+ }
595
+
596
+ // The default id keys on the assistant's address, which survives the fresh
597
+ // device id every attempt mints, so the second pairing replaces the first
598
+ // rather than stranding it in the lockfile.
599
+ expect(ids[0]).toBe(ids[1]);
600
+ expect(ids[0]).not.toContain("/");
601
+ expect(outcomes).toEqual(["Imported", "Updated"]);
602
+ expect(loadGuardianToken(ids[0])?.accessToken).toBe("tok2");
603
+ });
604
+
605
+ test("re-importing under the same --name updates in place", async () => {
606
+ for (const token of ["t1", "t2"]) {
259
607
  process.argv = [
260
608
  "bun",
261
609
  "vellum",
262
610
  "connect",
263
611
  "import",
264
- bundleFor({ deviceId: "dev-re", token: "t2" }),
612
+ PAIRING_LINK,
613
+ "--name",
614
+ "reused",
265
615
  ];
266
- await connectImport();
267
- } finally {
268
- logSpy.mockRestore();
616
+ stubFetch(() => jsonResponse(approvedBody({ accessToken: token })));
617
+ const { restore } = captureLogs();
618
+ try {
619
+ await connectImport();
620
+ } finally {
621
+ restore();
622
+ }
269
623
  }
270
- expect(loadGuardianToken("paired-dev-re")?.accessToken).toBe("t2");
624
+ expect(loadGuardianToken("reused")?.accessToken).toBe("t2");
271
625
  });
272
626
 
273
- test("rejects a bundle whose gatewayUrl is not http(s)", async () => {
627
+ test("does not overwrite an existing non-paired assistant", async () => {
628
+ saveAssistantEntry({
629
+ assistantId: "desk",
630
+ name: "Desk",
631
+ runtimeUrl: "http://127.0.0.1:7830",
632
+ cloud: "local",
633
+ species: "vellum",
634
+ });
274
635
  process.argv = [
275
636
  "bun",
276
637
  "vellum",
277
638
  "connect",
278
639
  "import",
279
- bundleFor({ gatewayUrl: "ftp://nope", deviceId: "dz" }),
640
+ PAIRING_LINK,
641
+ "--name",
642
+ "desk",
280
643
  ];
281
- const errSpy = spyOn(console, "error").mockImplementation(() => {});
282
- const exitSpy = spyOn(process, "exit").mockImplementation(((c?: number) => {
283
- throw new Error(`exit:${c}`);
284
- }) as never);
285
- let exited = false;
286
- try {
287
- await connectImport();
288
- } catch (e) {
289
- exited = (e as Error).message === "exit:1";
290
- } finally {
291
- errSpy.mockRestore();
292
- exitSpy.mockRestore();
293
- }
294
- expect(exited).toBe(true);
295
- expect(findAssistantByName("paired-dz")).toBeNull();
296
- });
644
+ const calls = stubFetch(() => jsonResponse(approvedBody()));
645
+
646
+ const { exited, out } = await runExpectingExit();
297
647
 
298
- test("a malformed bundle exits 1 and registers nothing", async () => {
299
- process.argv = ["bun", "vellum", "connect", "import", "not-valid-base64!!"];
300
- const errSpy = spyOn(console, "error").mockImplementation(() => {});
301
- const exitSpy = spyOn(process, "exit").mockImplementation(((c?: number) => {
302
- throw new Error(`exit:${c}`);
303
- }) as never);
304
- let exited = false;
305
- try {
306
- await connectImport();
307
- } catch (e) {
308
- exited = (e as Error).message === "exit:1";
309
- } finally {
310
- errSpy.mockRestore();
311
- exitSpy.mockRestore();
312
- }
313
648
  expect(exited).toBe(true);
314
- // A malformed bundle has no deviceId, so no `paired-*` entry is created.
315
- expect(findAssistantByName("paired-")).toBeNull();
649
+ expect(out).toContain("Choose a different --name");
650
+ // Refused BEFORE the exchange: the one-time code is never spent, so the
651
+ // host records no orphaned device and the link stays usable.
652
+ expect(calls).toHaveLength(0);
653
+ const entry = findAssistantByName("desk");
654
+ expect(entry!.runtimeUrl).toBe("http://127.0.0.1:7830");
655
+ expect(entry!.paired).toBeUndefined();
316
656
  });
317
657
  });