@tailor-platform/sdk 1.76.1 → 1.78.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/dist/{application-BUfYmf0O.mjs → application-CUxVA7Fs.mjs} +378 -1679
  3. package/dist/application-CUxVA7Fs.mjs.map +1 -0
  4. package/dist/application-Dp_-ioiP.mjs +3 -0
  5. package/dist/cli/cache/bundle-cache.d.mts +2 -1
  6. package/dist/cli/cache/store.d.mts +1 -1
  7. package/dist/cli/commands/api/index.d.mts +1 -0
  8. package/dist/cli/commands/deploy/aigateway.d.mts +5 -1
  9. package/dist/cli/commands/deploy/application.d.mts +7 -1
  10. package/dist/cli/commands/deploy/apply-phases.d.mts +14 -1
  11. package/dist/cli/commands/deploy/auth.d.mts +5 -1
  12. package/dist/cli/commands/deploy/deploy.d.mts +13 -3
  13. package/dist/cli/commands/deploy/executor.d.mts +7 -1
  14. package/dist/cli/commands/deploy/function-registry.d.mts +5 -0
  15. package/dist/cli/commands/deploy/idp.d.mts +5 -1
  16. package/dist/cli/commands/deploy/resolver.d.mts +5 -1
  17. package/dist/cli/commands/deploy/secret-manager.d.mts +5 -1
  18. package/dist/cli/commands/deploy/staticwebsite.d.mts +5 -1
  19. package/dist/cli/commands/deploy/tailordb/index.d.mts +8 -1
  20. package/dist/cli/commands/deploy/types.d.mts +3 -1
  21. package/dist/cli/commands/deploy/workflow-execution-policy.d.mts +3 -1
  22. package/dist/cli/commands/deploy/workflow.d.mts +4 -1
  23. package/dist/cli/commands/executor/get.d.mts +0 -1
  24. package/dist/cli/commands/executor/jobs.d.mts +0 -1
  25. package/dist/cli/commands/executor/list.d.mts +0 -1
  26. package/dist/cli/commands/executor/transform.d.mts +1 -0
  27. package/dist/cli/commands/executor/trigger.d.mts +0 -1
  28. package/dist/cli/commands/executor/webhook.d.mts +0 -1
  29. package/dist/cli/commands/function/get.d.mts +0 -1
  30. package/dist/cli/commands/function/list.d.mts +0 -1
  31. package/dist/cli/commands/function/transform.d.mts +1 -0
  32. package/dist/cli/commands/generate/service.d.mts +5 -1
  33. package/dist/cli/commands/generate/types.d.mts +3 -1
  34. package/dist/cli/commands/machineuser/list.d.mts +0 -1
  35. package/dist/cli/commands/machineuser/token.d.mts +0 -1
  36. package/dist/cli/commands/oauth2client/get.d.mts +0 -1
  37. package/dist/cli/commands/oauth2client/list.d.mts +0 -1
  38. package/dist/cli/commands/oauth2client/transform.d.mts +1 -0
  39. package/dist/cli/commands/organization/folder/create.d.mts +0 -1
  40. package/dist/cli/commands/organization/folder/delete.d.mts +0 -1
  41. package/dist/cli/commands/organization/folder/get.d.mts +0 -1
  42. package/dist/cli/commands/organization/folder/list.d.mts +0 -1
  43. package/dist/cli/commands/organization/folder/update.d.mts +0 -1
  44. package/dist/cli/commands/organization/get.d.mts +0 -1
  45. package/dist/cli/commands/organization/list.d.mts +0 -1
  46. package/dist/cli/commands/organization/transform.d.mts +2 -0
  47. package/dist/cli/commands/organization/tree.d.mts +0 -1
  48. package/dist/cli/commands/organization/update.d.mts +0 -1
  49. package/dist/cli/commands/remove.d.mts +0 -1
  50. package/dist/cli/commands/show.d.mts +9 -4
  51. package/dist/cli/commands/tailordb/migrate/config.d.mts +0 -1
  52. package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +0 -1
  53. package/dist/cli/commands/tailordb/migrate/generate.d.mts +0 -1
  54. package/dist/cli/commands/tailordb/migrate/snapshot.d.mts +1 -1
  55. package/dist/cli/commands/tailordb/truncate.d.mts +0 -1
  56. package/dist/cli/commands/workflow/executions.d.mts +0 -1
  57. package/dist/cli/commands/workflow/get.d.mts +2 -1
  58. package/dist/cli/commands/workflow/list.d.mts +0 -1
  59. package/dist/cli/commands/workflow/resume.d.mts +0 -1
  60. package/dist/cli/commands/workflow/start.d.mts +0 -1
  61. package/dist/cli/commands/workflow/status.d.mts +1 -0
  62. package/dist/cli/commands/workflow/transform.d.mts +1 -0
  63. package/dist/cli/commands/workflow/wait.d.mts +0 -1
  64. package/dist/cli/commands/workflow/waiter.d.mts +1 -1
  65. package/dist/cli/commands/workspace/app/health.d.mts +0 -1
  66. package/dist/cli/commands/workspace/app/list.d.mts +0 -1
  67. package/dist/cli/commands/workspace/app/transform.d.mts +2 -0
  68. package/dist/cli/commands/workspace/create.d.mts +3 -1
  69. package/dist/cli/commands/workspace/delete.d.mts +0 -1
  70. package/dist/cli/commands/workspace/get.d.mts +0 -1
  71. package/dist/cli/commands/workspace/list.d.mts +1 -1
  72. package/dist/cli/commands/workspace/restore.d.mts +0 -1
  73. package/dist/cli/commands/workspace/transform.d.mts +4 -0
  74. package/dist/cli/commands/workspace/user/invite.d.mts +0 -1
  75. package/dist/cli/commands/workspace/user/list.d.mts +0 -1
  76. package/dist/cli/commands/workspace/user/remove.d.mts +0 -1
  77. package/dist/cli/commands/workspace/user/transform.d.mts +1 -0
  78. package/dist/cli/commands/workspace/user/update.d.mts +0 -1
  79. package/dist/cli/index.d.mts +3 -1
  80. package/dist/cli/index.mjs +660 -56
  81. package/dist/cli/index.mjs.map +1 -1
  82. package/dist/cli/lib.d.mts +4 -2
  83. package/dist/cli/lib.mjs +3 -3
  84. package/dist/cli/lib.mjs.map +1 -1
  85. package/dist/cli/query/index.d.mts +0 -1
  86. package/dist/cli/services/application.d.mts +12 -1
  87. package/dist/cli/services/auth/service.d.mts +2 -0
  88. package/dist/cli/services/executor/service.d.mts +1 -1
  89. package/dist/cli/services/http-adapter/bundler.d.mts +3 -1
  90. package/dist/cli/services/http-adapter/service.d.mts +2 -1
  91. package/dist/cli/services/resolver/service.d.mts +1 -1
  92. package/dist/cli/services/tailordb/service.d.mts +3 -1
  93. package/dist/cli/services/workflow/bundler.d.mts +2 -1
  94. package/dist/cli/services/workflow/service.d.mts +1 -1
  95. package/dist/cli/shared/args.d.mts +1 -1
  96. package/dist/cli/shared/client.d.mts +1 -1
  97. package/dist/cli/shared/config-loader.d.mts +0 -1
  98. package/dist/cli/shared/context.d.mts +2 -1
  99. package/dist/cli/shared/script-executor.d.mts +0 -1
  100. package/dist/cli/shared/seed-chunker.d.mts +7 -3
  101. package/dist/cli/shared/type-generator.d.mts +0 -1
  102. package/dist/cli/shared/workspace-name.d.mts +1 -0
  103. package/dist/cli/skills.mjs +1 -1
  104. package/dist/completion/zsh-worker.zsh +18 -1
  105. package/dist/configure/config/index.d.mts +0 -1
  106. package/dist/configure/config/types.d.mts +2 -2
  107. package/dist/configure/index.d.mts +2 -1
  108. package/dist/configure/index.mjs +248 -4
  109. package/dist/configure/index.mjs.map +1 -1
  110. package/dist/configure/services/aigateway/index.d.mts +0 -1
  111. package/dist/configure/services/aigateway/types.d.mts +0 -1
  112. package/dist/configure/services/auth/index.d.mts +0 -1
  113. package/dist/configure/services/auth/types.d.mts +14 -13
  114. package/dist/configure/services/executor/executor.d.mts +0 -1
  115. package/dist/configure/services/executor/index.d.mts +1 -0
  116. package/dist/configure/services/executor/operation.d.mts +1 -2
  117. package/dist/configure/services/executor/trigger/event.d.mts +0 -1
  118. package/dist/configure/services/executor/trigger/index.d.mts +0 -1
  119. package/dist/configure/services/executor/trigger/schedule.d.mts +0 -1
  120. package/dist/configure/services/executor/trigger/webhook.d.mts +0 -1
  121. package/dist/configure/services/http-adapter/http-adapter.d.mts +1 -2
  122. package/dist/configure/services/idp/index.d.mts +1 -5
  123. package/dist/configure/services/idp/permission.d.mts +4 -5
  124. package/dist/configure/services/idp/types.d.mts +0 -1
  125. package/dist/configure/services/index.d.mts +5 -0
  126. package/dist/configure/services/resolver/resolver.d.mts +0 -1
  127. package/dist/configure/services/resolver/types.d.mts +0 -1
  128. package/dist/configure/services/secrets/index.d.mts +0 -1
  129. package/dist/configure/services/secrets/types.d.mts +0 -1
  130. package/dist/configure/services/staticwebsite/index.d.mts +0 -1
  131. package/dist/configure/services/staticwebsite/types.d.mts +0 -1
  132. package/dist/configure/services/tailordb/permission.d.mts +4 -5
  133. package/dist/configure/services/tailordb/schema.d.mts +21 -8
  134. package/dist/configure/services/tailordb/types.d.mts +4 -5
  135. package/dist/configure/services/workflow/execution-policy.d.mts +0 -1
  136. package/dist/configure/services/workflow/execution-policy.types.d.mts +0 -1
  137. package/dist/configure/services/workflow/index.d.mts +1 -0
  138. package/dist/configure/services/workflow/job.d.mts +0 -1
  139. package/dist/configure/services/workflow/wait-point.d.mts +0 -1
  140. package/dist/configure/services/workflow/workflow.d.mts +0 -1
  141. package/dist/configure/types/field-runtime.d.mts +1 -1
  142. package/dist/configure/types/field.d.mts +1 -2
  143. package/dist/configure/types/field.types.d.mts +1 -2
  144. package/dist/configure/types/type.d.mts +1 -1
  145. package/dist/configure/user.d.mts +0 -1
  146. package/dist/{crashreport-ayWANEZ6.mjs → crashreport-BNWUM6Kf.mjs} +4 -3
  147. package/dist/{crashreport-ayWANEZ6.mjs.map → crashreport-BNWUM6Kf.mjs.map} +1 -1
  148. package/dist/{crashreport-Dy4ZzSkd.mjs → crashreport-BafWvjjX.mjs} +1 -1
  149. package/dist/errors-DVFS0AZk.mjs +100 -0
  150. package/dist/errors-DVFS0AZk.mjs.map +1 -0
  151. package/dist/{globals-CcU1ONiK.mjs → globals-CvizbGLY.mjs} +2 -2
  152. package/dist/{globals-CcU1ONiK.mjs.map → globals-CvizbGLY.mjs.map} +1 -1
  153. package/dist/kysely/index.d.mts +3 -4
  154. package/dist/{logger-BEiZZ3qT.mjs → logger-BwS4ppwO.mjs} +3 -3
  155. package/dist/logger-BwS4ppwO.mjs.map +1 -0
  156. package/dist/parser/service/auth/index.d.mts +1 -1
  157. package/dist/parser/service/auth/schema.d.mts +1 -0
  158. package/dist/parser/service/http-adapter/index.d.mts +1 -1
  159. package/dist/parser/service/idp/types.d.mts +1 -0
  160. package/dist/parser/service/tailordb/types.d.mts +0 -1
  161. package/dist/plugin/builtin/enum-constants/index.d.mts +0 -1
  162. package/dist/plugin/builtin/file-utils/index.d.mts +0 -1
  163. package/dist/plugin/builtin/kysely-type/index.d.mts +0 -1
  164. package/dist/plugin/builtin/seed/index.d.mts +0 -1
  165. package/dist/plugin/builtin/seed/index.mjs +1 -1
  166. package/dist/plugin/get-generated-type.d.mts +0 -1
  167. package/dist/plugin/manager.d.mts +3 -1
  168. package/dist/plugin/types.d.mts +0 -1
  169. package/dist/plugin/with-context.d.mts +0 -1
  170. package/dist/{registry-NfSW0BRo.mjs → registry-CYBRvfaU.mjs} +4 -49
  171. package/dist/registry-CYBRvfaU.mjs.map +1 -0
  172. package/dist/runtime/aigateway.d.mts +0 -2
  173. package/dist/runtime/authconnection.d.mts +0 -2
  174. package/dist/runtime/globals.d.mts +0 -1
  175. package/dist/runtime/index.d.mts +0 -1
  176. package/dist/runtime/types.d.mts +16 -7
  177. package/dist/{runtime-_vUgjiqT.mjs → runtime-BD2vYJFT.mjs} +2382 -1167
  178. package/dist/runtime-BD2vYJFT.mjs.map +1 -0
  179. package/dist/{schema-DrVyN-LP.mjs → schema-U6DxoZ8D.mjs} +204 -3
  180. package/dist/schema-U6DxoZ8D.mjs.map +1 -0
  181. package/dist/{secret-file-VSVGy1V0.mjs → secret-file-DBqZhjFQ.mjs} +2 -27
  182. package/dist/{secret-file-VSVGy1V0.mjs.map → secret-file-DBqZhjFQ.mjs.map} +1 -1
  183. package/dist/{secretmanager-Bd45j7an.mjs → secretmanager-IY4UvinW.mjs} +42 -9
  184. package/dist/secretmanager-IY4UvinW.mjs.map +1 -0
  185. package/dist/seed/index.d.mts +3 -2
  186. package/dist/{seed-fm0LeYP2.mjs → seed-DFFigL8V.mjs} +3 -13
  187. package/dist/seed-DFFigL8V.mjs.map +1 -0
  188. package/dist/service-CghpdV-9.mjs +3 -0
  189. package/dist/{service-DBFZQloR.mjs → service-Cp0I7ZFe.mjs} +3 -3
  190. package/dist/{service-DBFZQloR.mjs.map → service-Cp0I7ZFe.mjs.map} +1 -1
  191. package/dist/{service-BCRJ-3NV.mjs → service-D12iQGcS.mjs} +2 -2
  192. package/dist/{service-BCRJ-3NV.mjs.map → service-D12iQGcS.mjs.map} +1 -1
  193. package/dist/service_pb-BoLM0X4K.mjs +167 -0
  194. package/dist/service_pb-BoLM0X4K.mjs.map +1 -0
  195. package/dist/{service_pb-B2FF59sP.mjs → service_pb-r1T7kpJc.mjs} +1 -1
  196. package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +0 -1
  197. package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +0 -1
  198. package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +0 -1
  199. package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +0 -1
  200. package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +0 -1
  201. package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +0 -1
  202. package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +0 -1
  203. package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +0 -1
  204. package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +0 -1
  205. package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +0 -1
  206. package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +0 -1
  207. package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +0 -1
  208. package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +0 -1
  209. package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +0 -1
  210. package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +0 -1
  211. package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +0 -1
  212. package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +0 -1
  213. package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +0 -1
  214. package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +0 -1
  215. package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +0 -1
  216. package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +0 -1
  217. package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +0 -1
  218. package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +0 -1
  219. package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +0 -1
  220. package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +0 -1
  221. package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +0 -1
  222. package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +0 -1
  223. package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +0 -1
  224. package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +0 -1
  225. package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +0 -1
  226. package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +0 -1
  227. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +0 -1
  228. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +0 -1
  229. package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +0 -1
  230. package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +0 -1
  231. package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +0 -1
  232. package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +0 -1
  233. package/dist/test-env-key-DuZycyWM.mjs +49 -0
  234. package/dist/test-env-key-DuZycyWM.mjs.map +1 -0
  235. package/dist/type-source-DH_LH20p.mjs +13 -0
  236. package/dist/type-source-DH_LH20p.mjs.map +1 -0
  237. package/dist/types/aigateway.generated.d.mts +5 -2
  238. package/dist/types/auth-connection.generated.d.mts +11 -5
  239. package/dist/types/auth.generated.d.mts +118 -85
  240. package/dist/types/executor.generated.d.mts +76 -84
  241. package/dist/types/helpers.d.mts +5 -5
  242. package/dist/types/http-adapter.generated.d.mts +11 -5
  243. package/dist/types/idp.generated.d.mts +536 -524
  244. package/dist/types/resolver.generated.d.mts +24 -10
  245. package/dist/types/staticwebsite.generated.d.mts +7 -3
  246. package/dist/types/tailordb.generated.d.mts +55 -29
  247. package/dist/types/workflow.generated.d.mts +9 -4
  248. package/dist/user-agent-DX2Jnw0-.mjs +28 -0
  249. package/dist/user-agent-DX2Jnw0-.mjs.map +1 -0
  250. package/dist/utils/test/index.d.mts +0 -1
  251. package/dist/utils/test/index.mjs +1 -1
  252. package/dist/utils/test/mock.d.mts +0 -1
  253. package/dist/vitest/environment.mjs +1 -1
  254. package/dist/vitest/index.d.mts +9 -9
  255. package/dist/vitest/index.mjs +600 -185
  256. package/dist/vitest/index.mjs.map +1 -1
  257. package/dist/vitest/mock-kysely.d.mts +0 -1
  258. package/dist/vitest/mock.d.mts +8 -8
  259. package/dist/vitest/mocks/aigateway.d.mts +16 -6
  260. package/dist/vitest/mocks/authconnection.d.mts +16 -6
  261. package/dist/vitest/mocks/file.d.mts +24 -6
  262. package/dist/vitest/mocks/iconv.d.mts +28 -4
  263. package/dist/vitest/mocks/idp.d.mts +26 -10
  264. package/dist/vitest/mocks/secretmanager.d.mts +16 -5
  265. package/dist/vitest/mocks/tailordb.d.mts +54 -10
  266. package/dist/vitest/mocks/workflow.d.mts +48 -11
  267. package/dist/vitest/setup.mjs +2 -2
  268. package/dist/{service_pb-B5w9rjPY.mjs → workspace_resource_pb-Db3fv68L.mjs} +57 -165
  269. package/dist/workspace_resource_pb-Db3fv68L.mjs.map +1 -0
  270. package/docs/cli/application.md +58 -11
  271. package/docs/cli/setup.md +1 -1
  272. package/docs/cli/workspace.md +6 -4
  273. package/docs/cli-reference.md +12 -8
  274. package/docs/runtime.md +3 -4
  275. package/docs/services/aigateway.md +2 -0
  276. package/docs/services/tailordb.md +52 -1
  277. package/docs/services/workflow.md +1 -1
  278. package/docs/testing.md +103 -89
  279. package/package.json +16 -16
  280. package/dist/application-BUfYmf0O.mjs.map +0 -1
  281. package/dist/application-DbvD5UUz.mjs +0 -3
  282. package/dist/cli/shared/trigger-context.d.mts +0 -1
  283. package/dist/errors-Dtf2WPaW.mjs +0 -42
  284. package/dist/errors-Dtf2WPaW.mjs.map +0 -1
  285. package/dist/field-runtime-9bfXBAOK.mjs +0 -183
  286. package/dist/field-runtime-9bfXBAOK.mjs.map +0 -1
  287. package/dist/job-D-PbD1P3.mjs +0 -55
  288. package/dist/job-D-PbD1P3.mjs.map +0 -1
  289. package/dist/logger-BEiZZ3qT.mjs.map +0 -1
  290. package/dist/registry-NfSW0BRo.mjs.map +0 -1
  291. package/dist/resource_pb-BRv7AMXK.mjs +0 -49
  292. package/dist/resource_pb-BRv7AMXK.mjs.map +0 -1
  293. package/dist/runtime-_vUgjiqT.mjs.map +0 -1
  294. package/dist/schema-DrVyN-LP.mjs.map +0 -1
  295. package/dist/secretmanager-Bd45j7an.mjs.map +0 -1
  296. package/dist/seed-fm0LeYP2.mjs.map +0 -1
  297. package/dist/service-CPMlIg3X.mjs +0 -3
  298. package/dist/service_pb-B5w9rjPY.mjs.map +0 -1
  299. package/dist/types-BwzB2okW.mjs +0 -199
  300. package/dist/types-BwzB2okW.mjs.map +0 -1
  301. package/dist/types-KlawuVKa.mjs +0 -4
package/docs/testing.md CHANGED
@@ -67,18 +67,23 @@ import { mockTailordb } from "@tailor-platform/sdk/vitest";
67
67
 
68
68
  test("...", () => {
69
69
  using db = mockTailordb();
70
- db.enqueueResult({ age: 30 });
70
+ db.onQuery(/SELECT age/).returnsRows([{ age: 30 }]);
71
71
  // …
72
72
  }); // reset automatically here
73
73
  ```
74
74
 
75
- The mock functions are also exposed directly (e.g. `db.queryObject`, `wf.triggerJobFunction`) so you can assert on them with `expect(...).toHaveBeenCalledWith(...)`.
75
+ Runtime operations are exposed as typed Vitest mocks wherever the platform API has a stable operation shape. For example, use `file.download.mockResolvedValue(...)`, `iconv.decode.mockReturnValue(...)`, or `wf.job(myJob).mockResolvedValue(...)`, then assert with native Vitest matchers. Service-specific helpers cover stateful fixtures and query matching.
76
+
77
+ Every controller provides two lifecycle methods when manual reuse is useful:
78
+
79
+ - `clear()` removes call history but preserves configured behavior.
80
+ - `reset()` removes call history and configured behavior, restoring the controller's default behavior.
76
81
 
77
82
  > **Requirements:** `using` requires TypeScript ≥ 5.2 and a runtime that provides `Symbol.dispose` (Node ≥ 20.4 — the SDK already targets Node ≥ 22, and Vitest's transformer downlevels the syntax for you).
78
83
  >
79
84
  > **Acquire what you use:** a namespace is only mocked while you hold it with `using`, so code under test that calls a platform API (e.g. `tailor.workflow`, `tailordb.Client`) must run inside a test that has acquired the matching `mockX()`. The error classes and `tailor.context` are always present.
80
85
  >
81
- > **Seeded secrets survive:** secrets seeded from `tailor.config.ts` stay available across tests; a per-test `mockSecretmanager().setSecrets(...)` override applies only within that test.
86
+ > **Seeded secrets survive:** secrets seeded from `tailor.config.ts` stay available across tests; per-test fixtures passed to `mockSecretmanager({ secrets: ... })` apply only within that test.
82
87
 
83
88
  ### TailorDB Mock
84
89
 
@@ -89,8 +94,8 @@ import { mockTailordb } from "@tailor-platform/sdk/vitest";
89
94
 
90
95
  test("resolver queries the database", async () => {
91
96
  using db = mockTailordb();
92
- // Order-based: stage rows for each upcoming query in one call
93
- db.enqueueResults(
97
+ // Use an explicit queue when transaction order is part of the test.
98
+ db.enqueueRows(
94
99
  [], // BEGIN (empty result)
95
100
  [{ age: 30 }], // SELECT (one row)
96
101
  [], // COMMIT
@@ -104,19 +109,15 @@ test("resolver queries the database", async () => {
104
109
  });
105
110
  ```
106
111
 
107
- Three response modes:
108
-
109
- - **`enqueueResult(...rows)`** — Order-based, single query. Arguments are the row objects returned by the next `queryObject` call (`enqueueResult()` for empty, `enqueueResult({ id: "1" })` for one row, `enqueueResult({ a: 1 }, { a: 2 })` for multiple rows). Consumed in FIFO order.
110
- - **`enqueueResults(...rowsArrays)`** — Order-based, multiple queries. Each argument is a rows array for one upcoming query. Equivalent to calling `enqueueResult` for each entry but easier to read for transactional sequences.
111
- - **`setQueryResolver((query, params) => rows)`** — Content-based fallback. Called when the queue is empty.
112
+ Match queries by SQL text, a regular expression, SQL plus parameters, or a predicate. The most recently registered matcher wins:
112
113
 
113
114
  ```typescript
114
115
  test("content-based mock", async () => {
115
116
  using db = mockTailordb();
116
- db.setQueryResolver((query) => {
117
- if (query.includes("SELECT")) return [{ id: "1", name: "test" }];
118
- return [];
119
- });
117
+ db.onQuery({ sql: /FROM users/i, params: ["1"] }).returnsRows([{ id: "1", name: "test" }]);
118
+ db.onQuery(/FROM audit_logs/i)
119
+ .returnsRowsOnce([{ id: "first" }])
120
+ .returnsRows([{ id: "later" }]);
120
121
 
121
122
  const result = await resolver.body({ input: { userId: "1" } });
122
123
 
@@ -124,40 +125,46 @@ test("content-based mock", async () => {
124
125
  });
125
126
  ```
126
127
 
128
+ Within one `mockTailordb()` instance, use either `onQuery()` matchers or a direct `queryObject.mockImplementation()` override. A direct override replaces matcher-based behavior, so do not combine the two styles.
129
+
130
+ `returnsRowsOnce` and `rejectsOnce` configure one-time responses before the persistent `returnsRows` or `rejects` response. `enqueueRows(...rowArrays)` remains available for transaction sequences whose exact call order is under test. The existing `enqueueResult`, `enqueueResults`, and `setQueryResolver` helpers remain supported for compatibility.
131
+
132
+ Pass `{ onUnhandled: "error" }` to make an unmatched query fail instead of returning an empty result.
133
+
127
134
  ### Workflow Mock
128
135
 
129
- `.trigger()` runs the real job bodies locally out of the box (see [Running a full workflow locally](#running-a-full-workflow-locally)). Acquire `mockWorkflow()` when you want to override responses with `setJobHandler` / `enqueueResult` or assert on `triggeredJobs`:
136
+ `.trigger()` runs real job bodies locally out of the box (see [Running a full workflow locally](#running-a-full-workflow-locally)). Use `job(definition)` or `workflow(definition)` to get a stable, fully typed Vitest mock for one definition:
130
137
 
131
138
  ```typescript
132
139
  import { mockWorkflow } from "@tailor-platform/sdk/vitest";
140
+ import { processPayment, validateOrder } from "./jobs";
133
141
 
134
142
  test("workflow triggers jobs", async () => {
135
143
  using wf = mockWorkflow();
136
- wf.setJobHandler((jobName, args) => {
137
- if (jobName === "validate-order") return { valid: true };
138
- if (jobName === "process-payment") return { txnId: "txn-1" };
139
- return null;
140
- });
144
+ const validate = wf.job(validateOrder);
145
+ const payment = wf.job(processPayment);
146
+ validate.mockResolvedValue({ valid: true });
147
+ payment.mockResolvedValue({ txnId: "txn-1" });
141
148
 
142
149
  const result = await main({ input: { orderId: "o-1" } });
143
150
 
144
- expect(wf.triggeredJobs).toEqual([
145
- { jobName: "validate-order", args: { orderId: "o-1" } },
146
- { jobName: "process-payment", args: { orderId: "o-1" } },
147
- ]);
151
+ expect(validate).toHaveBeenCalledWith({ orderId: "o-1" });
152
+ expect(payment).toHaveBeenCalledWith({ orderId: "o-1" });
148
153
  });
149
154
  ```
150
155
 
151
- `mockWorkflow()` also supports order-based responses:
156
+ Unconfigured definition mocks continue to run their real implementations. The lower-level `triggerJobFunction`, `triggerWorkflow`, `resumeWorkflow`, `wait`, and `resolve` mocks and the existing `setJobHandler`, `enqueueResult`, `enqueueResults`, and call-record helpers remain available.
157
+
158
+ Use `waitPoint(definition)` for typed wait-point control:
152
159
 
153
160
  ```typescript
154
161
  using wf = mockWorkflow();
162
+ const approvalMock = wf.waitPoint(approvalWaitPoint);
155
163
 
156
- // Single response for the next triggerJobFunction call
157
- wf.enqueueResult({ valid: true });
164
+ approvalMock.wait.mockResolvedValue({ approved: true });
165
+ await approvalWaitPoint.wait({ message: "Please approve" });
158
166
 
159
- // Multiple responses for subsequent calls (FIFO)
160
- wf.enqueueResults({ valid: true }, { txnId: "txn-1" });
167
+ expect(approvalMock.wait).toHaveBeenCalledWith({ message: "Please approve" });
161
168
  ```
162
169
 
163
170
  ### SecretManager Mock
@@ -166,13 +173,14 @@ wf.enqueueResults({ valid: true }, { txnId: "txn-1" });
166
173
  import { mockSecretmanager } from "@tailor-platform/sdk/vitest";
167
174
 
168
175
  test("reads secrets from vault", async () => {
169
- using sm = mockSecretmanager();
170
- sm.setSecrets({
171
- "my-vault": { API_KEY: "sk-123", DB_PASS: "secret" },
176
+ using sm = mockSecretmanager({
177
+ secrets: { "my-vault": { API_KEY: "sk-123" } },
172
178
  });
179
+ sm.setSecret("my-vault", "API_KEY", "override");
180
+ sm.mergeSecrets("my-vault", { DB_PASS: "secret" });
173
181
 
174
182
  const key = await tailor.secretmanager.getSecret("my-vault", "API_KEY");
175
- expect(key).toBe("sk-123");
183
+ expect(key).toBe("override");
176
184
  expect(sm.calls).toEqual([{ method: "getSecret", vault: "my-vault", name: "API_KEY" }]);
177
185
  });
178
186
  ```
@@ -183,65 +191,65 @@ test("reads secrets from vault", async () => {
183
191
  import { mockAuthconnection } from "@tailor-platform/sdk/vitest";
184
192
 
185
193
  test("returns configured token", async () => {
186
- using ac = mockAuthconnection();
187
- ac.setTokens({
188
- google: { access_token: "ya29.xxx" },
194
+ using ac = mockAuthconnection({
195
+ tokens: { google: { access_token: "ya29.xxx" } },
196
+ onUnhandled: "error",
189
197
  });
198
+ ac.setToken("google", { access_token: "replacement" });
190
199
 
191
200
  const token = await tailor.authconnection.getConnectionToken("google");
192
- expect(token.access_token).toBe("ya29.xxx");
201
+ expect(token.access_token).toBe("replacement");
193
202
  });
194
203
  ```
195
204
 
196
- When no token is configured for a connection, it returns `{ access_token: "mock-token" }`.
205
+ By default, an unconfigured connection returns `{ access_token: "mock-token" }`. Pass `onUnhandled: "error"` to fail instead.
197
206
 
198
207
  ### IDP Mock
199
208
 
200
209
  ```typescript
201
210
  import { mockIdp } from "@tailor-platform/sdk/vitest";
202
211
 
203
- test("resolver-based", async () => {
204
- using idp = mockIdp();
205
- idp.setResolver((method, args) => {
206
- if (method === "user") return { id: "u-1", name: "alice", disabled: false };
207
- return null; // falls back to defaults
212
+ test("namespace-specific mock", async () => {
213
+ using idp = mockIdp({ onUnhandled: "error" });
214
+ const customerIdp = idp.namespace("my-ns");
215
+ customerIdp.user.mockResolvedValue({
216
+ id: "u-1",
217
+ name: "alice",
218
+ disabled: false,
219
+ mfaEnrolled: false,
220
+ mfaFactorIds: [],
208
221
  });
209
222
 
210
223
  const client = new tailor.idp.Client({ namespace: "my-ns" });
211
224
  const user = await client.user("u-1");
212
225
  expect(user.name).toBe("alice");
213
- });
214
-
215
- test("queue-based", async () => {
216
- using idp = mockIdp();
217
- idp.enqueueResult({ id: "u-1", name: "alice", disabled: false });
218
-
219
- const client = new tailor.idp.Client({ namespace: "my-ns" });
220
- const user = await client.user("u-1");
221
- expect(user.name).toBe("alice");
222
- expect(idp.calls).toMatchObject([{ method: "user", namespace: "my-ns" }]);
226
+ expect(customerIdp.user).toHaveBeenCalledWith("u-1");
223
227
  });
224
228
  ```
225
229
 
230
+ Each namespace exposes typed mocks for `users`, `user`, `userByName`, `createUser`, `updateUser`, `deleteUser`, `sendPasswordResetEmail`, and `unenrollMfa`. The existing resolver, queue, and aggregate `calls` APIs remain supported.
231
+
226
232
  ### File Mock
227
233
 
228
234
  ```typescript
229
235
  import { mockFile } from "@tailor-platform/sdk/vitest";
230
236
 
231
237
  test("mock file download", async () => {
232
- using file = mockFile();
233
- file.enqueueResult({
238
+ using file = mockFile({ onUnhandled: "error" });
239
+ file.download.mockResolvedValue({
234
240
  data: new Uint8Array([1, 2, 3]),
235
241
  metadata: { contentType: "image/png", fileSize: 3, sha256sum: "abc", lastUploadedAt: "" },
236
242
  });
237
243
 
238
244
  const result = await tailordb.file.download("ns", "Doc", "attachment", "r-1");
239
245
  expect(result.data).toEqual(new Uint8Array([1, 2, 3]));
240
- expect(file.calls).toMatchObject([{ method: "download", recordId: "r-1" }]);
246
+ expect(file.download).toHaveBeenCalledWith("ns", "Doc", "attachment", "r-1");
241
247
  });
242
248
  ```
243
249
 
244
- For `downloadStream`, enqueue a `FileDownloadStreamResponse` object with a `ReadableStream` body and metadata:
250
+ All File operations are typed Vitest mocks: `upload`, `download`, `downloadAsBase64`, `delete`, `getMetadata`, `openDownloadStream`, `downloadStream`, and `uploadStream`. Use native methods such as `mockResolvedValueOnce` and `mockRejectedValueOnce` to model success and failure. The existing resolver, queue, and aggregate `calls` APIs remain supported.
251
+
252
+ For `downloadStream`, configure a `FileDownloadStreamResponse` object with a `ReadableStream` body and metadata:
245
253
 
246
254
  ```typescript
247
255
  test("mock file download stream", async () => {
@@ -252,7 +260,7 @@ test("mock file download stream", async () => {
252
260
  controller.close();
253
261
  },
254
262
  });
255
- file.enqueueResult({
263
+ file.downloadStream.mockResolvedValue({
256
264
  body,
257
265
  metadata: { contentType: "image/png", fileSize: 3, sha256sum: "abc", lastUploadedAt: "" },
258
266
  });
@@ -262,7 +270,7 @@ test("mock file download stream", async () => {
262
270
  });
263
271
  ```
264
272
 
265
- For the deprecated `openDownloadStream`, enqueue an iterable of `StreamValue` items — `metadata`, one or more `chunk` items, and a terminal `complete`. Raw `Uint8Array` / `ArrayBuffer` chunks are rejected so tests stay aligned with the platform's structured stream contract.
273
+ For the deprecated `openDownloadStream`, `enqueueResult` can adapt an iterable of `StreamValue` items — `metadata`, one or more `chunk` items, and a terminal `complete`. Raw `Uint8Array` / `ArrayBuffer` chunks are rejected so tests stay aligned with the platform's structured stream contract.
266
274
 
267
275
  ```typescript
268
276
  test("mock file download stream (deprecated openDownloadStream)", async () => {
@@ -291,10 +299,7 @@ import { mockIconv } from "@tailor-platform/sdk/vitest";
291
299
 
292
300
  test("mock encoding conversion", () => {
293
301
  using iconv = mockIconv();
294
- iconv.setResolver((method, args) => {
295
- if (method === "decode") return "decoded-text";
296
- return null; // falls back to default empty string
297
- });
302
+ iconv.decode.mockReturnValue("decoded-text");
298
303
 
299
304
  const result = tailor.iconv.decode(new Uint8Array([0x48, 0x69]), "UTF-8");
300
305
  expect(result).toBe("decoded-text");
@@ -302,22 +307,26 @@ test("mock encoding conversion", () => {
302
307
  });
303
308
  ```
304
309
 
310
+ `convert`, `convertBuffer`, `decode`, `encode`, and `encodings` are all typed Vitest mocks. Pass `{ onUnhandled: "error" }` to fail calls without a configured implementation. The existing resolver and aggregate `calls` APIs remain supported.
311
+
305
312
  ### AI Gateway Mock
306
313
 
307
314
  ```typescript
308
315
  import { mockAigateway } from "@tailor-platform/sdk/vitest";
309
316
 
310
317
  test("resolves an AI Gateway URL", async () => {
311
- using aigateway = mockAigateway();
312
- aigateway.setUrls({ "my-aigateway": "https://my-aigateway.example.com" });
318
+ using aigateway = mockAigateway({
319
+ urls: { "my-aigateway": "https://my-aigateway.example.com" },
320
+ });
321
+ aigateway.setUrl("my-aigateway", "https://replacement.example.com");
313
322
 
314
323
  const { url } = await tailor.aigateway.get("my-aigateway");
315
- expect(url).toBe("https://my-aigateway.example.com");
324
+ expect(url).toBe("https://replacement.example.com");
316
325
  expect(aigateway.calls).toEqual([{ name: "my-aigateway" }]);
317
326
  });
318
327
  ```
319
328
 
320
- Calling `get` for a name that hasn't been registered via `setUrls` throws.
329
+ Calling `get` for a name that has not been registered throws. `setUrls` remains available when replacing the complete URL fixture.
321
330
 
322
331
  ### Loading Secrets from Config
323
332
 
@@ -330,7 +339,7 @@ export default defineConfig({
330
339
  });
331
340
  ```
332
341
 
333
- This makes `tailor.secretmanager.getSecret("vault", "key")` return the values defined in your config. You can still override with `using sm = mockSecretmanager(); sm.setSecrets(...)` in individual tests: a per-test override applies only within that test, and the config-loaded secrets remain available to every other test.
342
+ This makes `tailor.secretmanager.getSecret("vault", "key")` return the values defined in your config. You can still override with `mockSecretmanager({ secrets: ... })` in individual tests: a per-test overlay applies only within that test, and the config-loaded secrets remain available to every other test.
334
343
 
335
344
  ### Per-Project Configuration
336
345
 
@@ -555,20 +564,22 @@ Reach for [`mockTailordb`](#mocking-the-tailordb-client) instead when you want t
555
564
 
556
565
  #### Resolvers that resume a workflow
557
566
 
558
- Resolvers that call `waitPoint.resolve(...)` delegate to `tailor.workflow.resolve` at runtime. With the `tailor-runtime` environment active, use `mockWorkflow().setResolveHandler` to drive the user-supplied callback and inspect `resolveCalls`:
567
+ Resolvers that call `waitPoint.resolve(...)` delegate to `tailor.workflow.resolve` at runtime. With the `tailor-runtime` environment active, use `mockWorkflow().waitPoint(definition)` to invoke the callback with the payload that originally suspended the job:
559
568
 
560
569
  ```typescript
561
570
  import { unauthenticatedTailorUser } from "@tailor-platform/sdk/test";
562
571
  import { mockWorkflow } from "@tailor-platform/sdk/vitest";
563
572
  import { describe, expect, test } from "vitest";
573
+ import { approval } from "../workflow/approval";
564
574
  import resolver from "./resolveApproval";
565
575
 
566
576
  describe("resolveApproval resolver", () => {
567
577
  test("resolves approval with approved=true", async () => {
568
578
  using wf = mockWorkflow();
569
- wf.setResolveHandler((_executionId, _key, callback) => {
570
- const result = callback({ message: "Please approve order order-1", orderId: "order-1" });
571
- expect(result).toEqual({ approved: true });
579
+ const approvalMock = wf.waitPoint(approval);
580
+ approvalMock.setResolvePayload({
581
+ message: "Please approve order order-1",
582
+ orderId: "order-1",
572
583
  });
573
584
 
574
585
  const result = await resolver.body({
@@ -578,12 +589,12 @@ describe("resolveApproval resolver", () => {
578
589
  });
579
590
 
580
591
  expect(result).toEqual({ resolved: true });
581
- expect(wf.resolveCalls).toEqual([{ executionId: "exec-1", key: "approval" }]);
592
+ expect(approvalMock.resolve).toHaveBeenCalledWith("exec-1", expect.any(Function));
582
593
  });
583
594
  });
584
595
  ```
585
596
 
586
- `setResolveHandler` receives `(executionId, key, callback)` and decides whether to invoke the callback that's how you assert the value returned to the suspended job.
597
+ `setResolvePayload` is typed from the wait-point definition. The lower-level `setResolveHandler` and `resolveCalls` APIs remain available when a test must control several wait points together.
587
598
 
588
599
  #### Resolvers that resume failed workflows
589
600
 
@@ -683,24 +694,26 @@ describe("validateOrder", () => {
683
694
 
684
695
  #### Jobs that trigger other jobs
685
696
 
686
- Spy on each dependent job's `.trigger()` to replace it with a deterministic result:
697
+ Use `mockWorkflow().job(definition)` to replace dependent jobs with deterministic results:
687
698
 
688
699
  ```typescript
689
- import { describe, expect, test, vi } from "vitest";
700
+ import { mockWorkflow } from "@tailor-platform/sdk/vitest";
701
+ import { describe, expect, test } from "vitest";
690
702
  import { fulfillOrder, processPayment, sendConfirmation, validateOrder } from "./order-fulfillment";
691
703
 
692
704
  describe("fulfillOrder", () => {
693
705
  test("chains validate → pay → confirm", async () => {
694
- using _validateSpy = vi.spyOn(validateOrder, "trigger").mockResolvedValue({
706
+ using wf = mockWorkflow();
707
+ const validate = wf.job(validateOrder).mockResolvedValue({
695
708
  valid: true,
696
709
  orderId: "order-1",
697
710
  });
698
- using _paymentSpy = vi.spyOn(processPayment, "trigger").mockResolvedValue({
711
+ wf.job(processPayment).mockResolvedValue({
699
712
  transactionId: "txn-order-1",
700
713
  amount: 100,
701
714
  status: "completed",
702
715
  });
703
- using _confirmSpy = vi.spyOn(sendConfirmation, "trigger").mockResolvedValue({
716
+ wf.job(sendConfirmation).mockResolvedValue({
704
717
  orderId: "order-1",
705
718
  transactionId: "txn-order-1",
706
719
  confirmed: true,
@@ -708,7 +721,7 @@ describe("fulfillOrder", () => {
708
721
 
709
722
  const result = await fulfillOrder.body({ orderId: "order-1", amount: 100 }, { env: {} });
710
723
 
711
- expect(validateOrder.trigger).toHaveBeenCalledWith({ orderId: "order-1", amount: 100 });
724
+ expect(validate).toHaveBeenCalledWith({ orderId: "order-1", amount: 100 });
712
725
  expect(result).toMatchObject({ confirmed: true, paymentStatus: "completed" });
713
726
  });
714
727
  });
@@ -718,30 +731,31 @@ describe("fulfillOrder", () => {
718
731
 
719
732
  #### Jobs that wait on approval
720
733
 
721
- `.wait()` calls delegate to `tailor.workflow.wait`. With the `tailor-runtime` environment active, use `mockWorkflow().setWaitHandler` to drive each branch and inspect `waitCalls`:
734
+ `.wait()` calls delegate to `tailor.workflow.wait`. With the `tailor-runtime` environment active, use `mockWorkflow().waitPoint(definition)` to drive each branch with a typed mock:
722
735
 
723
736
  ```typescript
724
737
  import { mockWorkflow } from "@tailor-platform/sdk/vitest";
725
738
  import { describe, expect, test } from "vitest";
726
- import { processWithApproval } from "./approval";
739
+ import { approval, processWithApproval } from "./approval";
727
740
 
728
741
  describe("processWithApproval", () => {
729
742
  test("returns approved status when .wait() resolves positively", async () => {
730
743
  using wf = mockWorkflow();
731
- wf.setWaitHandler({ approved: true });
744
+ const approvalMock = wf.waitPoint(approval);
745
+ approvalMock.wait.mockResolvedValue({ approved: true });
732
746
 
733
747
  const result = await processWithApproval.body({ orderId: "order-1" }, { env: {} });
734
748
 
735
749
  expect(result).toEqual({ orderId: "order-1", status: "approved" });
736
- expect(wf.waitCalls[0]).toEqual({
737
- key: "approval",
738
- payload: { message: "Please approve order order-1", orderId: "order-1" },
750
+ expect(approvalMock.wait).toHaveBeenCalledWith({
751
+ message: "Please approve order order-1",
752
+ orderId: "order-1",
739
753
  });
740
754
  });
741
755
 
742
756
  test("returns rejected status when .wait() resolves negatively", async () => {
743
757
  using wf = mockWorkflow();
744
- wf.setWaitHandler({ approved: false });
758
+ wf.waitPoint(approval).wait.mockResolvedValue({ approved: false });
745
759
 
746
760
  const result = await processWithApproval.body({ orderId: "order-2" }, { env: {} });
747
761
 
@@ -750,7 +764,7 @@ describe("processWithApproval", () => {
750
764
  });
751
765
  ```
752
766
 
753
- `setWaitHandler` accepts a static value (returned from every `.wait()` call) or a function `(key, payload) => unknown` to compute one per call. `waitCalls` captures the `key` and `payload` passed in.
767
+ The lower-level `setWaitHandler` and `waitCalls` APIs remain available when one handler must cover several wait points.
754
768
 
755
769
  #### Running a full workflow locally
756
770
 
@@ -769,7 +783,7 @@ describe("order-fulfillment workflow", () => {
769
783
  });
770
784
  ```
771
785
 
772
- Acquire `mockWorkflow()` only when you need to override a dependent job with `wf.setJobHandler(...)` / `wf.enqueueResult(...)` (the rest still run their real bodies), control the env via `wf.setEnv(...)`, or assert on `wf.triggeredJobs`.
786
+ Acquire `mockWorkflow()` only when you need to override a dependent definition with `wf.job(...)` / `wf.workflow(...)` (the rest still run their real bodies), control the env via `wf.setEnv(...)`, or assert on calls.
773
787
 
774
788
  **Use when:** you want to verify orchestration end to end without the cost of a real deployment.
775
789
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tailor-platform/sdk",
3
- "version": "1.76.1",
3
+ "version": "1.78.0",
4
4
  "description": "Tailor Platform SDK - The SDK to work with Tailor Platform",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -158,8 +158,8 @@
158
158
  "@opentelemetry/exporter-trace-otlp-proto": "0.220.0",
159
159
  "@opentelemetry/resources": "2.9.0",
160
160
  "@opentelemetry/sdk-trace-node": "2.9.0",
161
- "@opentelemetry/semantic-conventions": "1.42.0",
162
- "@oxc-project/types": "0.138.0",
161
+ "@opentelemetry/semantic-conventions": "1.43.0",
162
+ "@oxc-project/types": "0.139.0",
163
163
  "@standard-schema/spec": "1.1.0",
164
164
  "@tailor-platform/function-kysely-tailordb": "0.1.3",
165
165
  "@toiroakr/lines-db": "0.10.1",
@@ -178,21 +178,21 @@
178
178
  "madge": "8.0.0",
179
179
  "mime-types": "3.0.2",
180
180
  "open": "11.0.0",
181
- "oxc-parser": "0.138.0",
181
+ "oxc-parser": "0.139.0",
182
182
  "p-limit": "7.3.0",
183
183
  "pathe": "2.0.3",
184
184
  "pgsql-ast-parser": "12.0.2",
185
185
  "pkg-types": "2.3.1",
186
- "politty": "0.11.0",
187
- "rolldown": "1.1.4",
186
+ "politty": "0.11.2",
187
+ "rolldown": "1.1.5",
188
188
  "semver": "7.8.5",
189
189
  "sql-highlight": "6.1.0",
190
- "std-env": "4.1.0",
190
+ "std-env": "4.2.0",
191
191
  "table": "6.9.0",
192
192
  "ts-cron-validator": "1.1.5",
193
193
  "tsx": "4.23.0",
194
- "type-fest": "5.7.0",
195
- "undici": "8.6.0",
194
+ "type-fest": "5.8.0",
195
+ "undici": "8.7.0",
196
196
  "xdg-basedir": "5.1.0",
197
197
  "zod": "4.4.3"
198
198
  },
@@ -200,18 +200,18 @@
200
200
  "@opentelemetry/sdk-trace-base": "2.9.0",
201
201
  "@types/madge": "5.0.3",
202
202
  "@types/mime-types": "3.0.1",
203
- "@types/node": "24.13.2",
203
+ "@types/node": "24.13.3",
204
204
  "@types/semver": "7.7.1",
205
- "@typescript/native-preview": "7.0.0-dev.20260706.1",
205
+ "@typescript/native-preview": "7.0.0-dev.20260707.2",
206
206
  "@vitest/coverage-v8": "4.1.10",
207
- "oxfmt": "0.57.0",
208
- "oxlint": "1.72.0",
207
+ "oxfmt": "0.58.0",
208
+ "oxlint": "1.73.0",
209
209
  "oxlint-tsgolint": "0.24.0",
210
210
  "sonda": "0.14.0",
211
- "tsdown": "0.22.3",
211
+ "tsdown": "0.22.5",
212
212
  "typescript": "6.0.3",
213
213
  "vitest": "4.1.10",
214
- "zinfer": "0.2.3",
214
+ "zinfer": "0.2.5",
215
215
  "@tailor-platform/tailor-proto": "^0.0.0"
216
216
  },
217
217
  "peerDependencies": {
@@ -244,7 +244,7 @@
244
244
  "check:import-cycles": "tsx scripts/check-import-cycles.ts",
245
245
  "lint:fix": "oxlint --type-aware . --fix",
246
246
  "typecheck": "tsc --noEmit",
247
- "typecheck:go": "tsgo",
247
+ "typecheck:go": "tsgo --tsBuildInfoFile ./.tsgo.tsbuildinfo",
248
248
  "perf:typecheck": "bash scripts/perf/exec.sh",
249
249
  "perf:runtime": "bash scripts/perf/runtime-perf.sh",
250
250
  "prepublish": "pnpm run build",