@tailor-platform/sdk 2.0.0-next.2 → 2.0.0-next.4

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 (441) hide show
  1. package/CHANGELOG.md +511 -10
  2. package/README.md +9 -9
  3. package/agent-skills/{tailor-sdk → tailor}/SKILL.md +3 -1
  4. package/dist/aigateway-DR4Kwuik.mjs +9 -0
  5. package/dist/aigateway-DR4Kwuik.mjs.map +1 -0
  6. package/dist/application-BO4ZF8wP.mjs +3 -0
  7. package/dist/application-BX13RArL.mjs +6669 -0
  8. package/dist/application-BX13RArL.mjs.map +1 -0
  9. package/dist/authconnection-CZvi9ANm.mjs +9 -0
  10. package/dist/authconnection-CZvi9ANm.mjs.map +1 -0
  11. package/dist/brand-Eo4pLXPJ.mjs.map +1 -1
  12. package/dist/cli/cache/bundle-cache.d.mts +1 -0
  13. package/dist/cli/cache/store.d.mts +1 -0
  14. package/dist/cli/cache/types.d.mts +1 -0
  15. package/dist/cli/commands/api/api-call.d.mts +19 -0
  16. package/dist/cli/commands/api/index.d.mts +3 -0
  17. package/dist/cli/commands/deploy/aigateway.d.mts +1 -0
  18. package/dist/cli/commands/deploy/application.d.mts +1 -0
  19. package/dist/cli/commands/deploy/apply-phases.d.mts +1 -0
  20. package/dist/cli/commands/deploy/auth.d.mts +1 -0
  21. package/dist/cli/commands/deploy/deploy.d.mts +24 -0
  22. package/dist/cli/commands/deploy/executor.d.mts +1 -0
  23. package/dist/cli/commands/deploy/function-registry-types.d.mts +12 -0
  24. package/dist/cli/commands/deploy/function-registry.d.mts +2 -0
  25. package/dist/cli/commands/deploy/idp.d.mts +1 -0
  26. package/dist/cli/commands/deploy/resolver.d.mts +1 -0
  27. package/dist/cli/commands/deploy/secret-manager.d.mts +1 -0
  28. package/dist/cli/commands/deploy/staticwebsite.d.mts +1 -0
  29. package/dist/cli/commands/deploy/tailordb/index.d.mts +1 -0
  30. package/dist/cli/commands/deploy/types.d.mts +1 -0
  31. package/dist/cli/commands/deploy/workflow-execution-policy.d.mts +1 -0
  32. package/dist/cli/commands/deploy/workflow.d.mts +1 -0
  33. package/dist/cli/commands/executor/get.d.mts +29 -0
  34. package/dist/cli/commands/executor/jobs.d.mts +123 -0
  35. package/dist/cli/commands/executor/list.d.mts +19 -0
  36. package/dist/cli/commands/executor/transform.d.mts +41 -0
  37. package/dist/cli/commands/executor/trigger.d.mts +41 -0
  38. package/dist/cli/commands/executor/webhook.d.mts +22 -0
  39. package/dist/cli/commands/function/get.d.mts +18 -0
  40. package/dist/cli/commands/function/list.d.mts +22 -0
  41. package/dist/cli/commands/function/transform.d.mts +11 -0
  42. package/dist/cli/commands/generate/options.d.mts +7 -0
  43. package/dist/cli/commands/generate/seed/bundler.d.mts +26 -0
  44. package/dist/cli/commands/generate/service.d.mts +11 -0
  45. package/dist/cli/commands/machineuser/list.d.mts +27 -0
  46. package/dist/cli/commands/machineuser/token.d.mts +22 -0
  47. package/dist/cli/commands/oauth2client/get.d.mts +18 -0
  48. package/dist/cli/commands/oauth2client/list.d.mts +20 -0
  49. package/dist/cli/commands/oauth2client/transform.d.mts +20 -0
  50. package/dist/cli/commands/organization/folder/create.d.mts +18 -0
  51. package/dist/cli/commands/organization/folder/delete.d.mts +16 -0
  52. package/dist/cli/commands/organization/folder/get.d.mts +17 -0
  53. package/dist/cli/commands/organization/folder/list.d.mts +22 -0
  54. package/dist/cli/commands/organization/folder/update.d.mts +18 -0
  55. package/dist/cli/commands/organization/get.d.mts +16 -0
  56. package/dist/cli/commands/organization/list.d.mts +15 -0
  57. package/dist/cli/commands/organization/transform.d.mts +27 -0
  58. package/dist/cli/commands/organization/tree.d.mts +25 -0
  59. package/dist/cli/commands/organization/update.d.mts +17 -0
  60. package/dist/cli/commands/remove.d.mts +16 -0
  61. package/dist/cli/commands/show.d.mts +34 -0
  62. package/dist/cli/commands/tailordb/migrate/bundler.d.mts +28 -0
  63. package/dist/cli/commands/tailordb/migrate/config.d.mts +19 -0
  64. package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +223 -0
  65. package/dist/cli/commands/tailordb/migrate/generate.d.mts +17 -0
  66. package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +202 -0
  67. package/dist/cli/commands/tailordb/migrate/snapshot.d.mts +98 -0
  68. package/dist/cli/commands/tailordb/migrate/types.d.mts +7 -0
  69. package/dist/cli/commands/tailordb/truncate.d.mts +19 -0
  70. package/dist/cli/commands/workflow/executions.d.mts +75 -0
  71. package/dist/cli/commands/workflow/get.d.mts +29 -0
  72. package/dist/cli/commands/workflow/list.d.mts +19 -0
  73. package/dist/cli/commands/workflow/resume.d.mts +23 -0
  74. package/dist/cli/commands/workflow/start.d.mts +61 -0
  75. package/dist/cli/commands/workflow/status.d.mts +5 -0
  76. package/dist/cli/commands/workflow/transform.d.mts +33 -0
  77. package/dist/cli/commands/workflow/wait.d.mts +16 -0
  78. package/dist/cli/commands/workflow/waiter.d.mts +23 -0
  79. package/dist/cli/commands/workspace/app/health.d.mts +18 -0
  80. package/dist/cli/commands/workspace/app/list.d.mts +22 -0
  81. package/dist/cli/commands/workspace/app/transform.d.mts +18 -0
  82. package/dist/cli/commands/workspace/create.d.mts +25 -0
  83. package/dist/cli/commands/workspace/delete.d.mts +15 -0
  84. package/dist/cli/commands/workspace/get.d.mts +17 -0
  85. package/dist/cli/commands/workspace/list.d.mts +17 -0
  86. package/dist/cli/commands/workspace/restore.d.mts +15 -0
  87. package/dist/cli/commands/workspace/transform.d.mts +16 -0
  88. package/dist/cli/commands/workspace/user/invite.d.mts +22 -0
  89. package/dist/cli/commands/workspace/user/list.d.mts +22 -0
  90. package/dist/cli/commands/workspace/user/remove.d.mts +17 -0
  91. package/dist/cli/commands/workspace/user/transform.d.mts +8 -0
  92. package/dist/cli/commands/workspace/user/update.d.mts +22 -0
  93. package/dist/cli/erd-viewer-assets/app.js +279 -36
  94. package/dist/cli/erd-viewer-assets/index.html +4 -0
  95. package/dist/cli/erd-viewer-assets/styles.css +252 -5
  96. package/dist/cli/index.d.mts +18 -3
  97. package/dist/cli/index.mjs +2237 -520
  98. package/dist/cli/index.mjs.map +1 -1
  99. package/dist/cli/lib.d.mts +81 -21107
  100. package/dist/cli/lib.mjs +7 -10
  101. package/dist/cli/lib.mjs.map +1 -1
  102. package/dist/cli/query/index.d.mts +39 -0
  103. package/dist/cli/services/application.d.mts +1 -0
  104. package/dist/cli/services/auth/service.d.mts +1 -0
  105. package/dist/cli/services/executor/service.d.mts +1 -0
  106. package/dist/cli/services/http-adapter/bundler.d.mts +1 -0
  107. package/dist/cli/services/http-adapter/service.d.mts +1 -0
  108. package/dist/cli/services/resolver/service.d.mts +1 -0
  109. package/dist/cli/services/tailordb/service.d.mts +1 -0
  110. package/dist/cli/services/workflow/bundler.d.mts +1 -0
  111. package/dist/cli/services/workflow/service.d.mts +1 -0
  112. package/dist/cli/shared/args.d.mts +13 -0
  113. package/dist/cli/shared/client.d.mts +1273 -0
  114. package/dist/cli/shared/config-loader.d.mts +26 -0
  115. package/dist/cli/shared/context.d.mts +28 -0
  116. package/dist/cli/shared/script-executor.d.mts +75 -0
  117. package/dist/cli/shared/seed-chunker.d.mts +46 -0
  118. package/dist/cli/shared/trigger-context.d.mts +1 -0
  119. package/dist/cli/shared/type-generator.d.mts +20 -0
  120. package/dist/cli/ts-hook.d.mts +4 -0
  121. package/dist/cli/ts-hook.mjs +333 -0
  122. package/dist/completion/zsh-worker.zsh +1531 -1131
  123. package/dist/configure/config/index.d.mts +21 -0
  124. package/dist/configure/config/types.d.mts +105 -0
  125. package/dist/configure/index.d.mts +124 -9
  126. package/dist/configure/index.mjs +136 -23
  127. package/dist/configure/index.mjs.map +1 -1
  128. package/dist/configure/services/aigateway/index.d.mts +17 -0
  129. package/dist/configure/services/aigateway/types.d.mts +11 -0
  130. package/dist/configure/services/auth/index.d.mts +34 -0
  131. package/dist/configure/services/auth/types.d.mts +172 -0
  132. package/dist/configure/services/executor/executor.d.mts +81 -0
  133. package/dist/configure/services/executor/index.d.mts +8 -0
  134. package/dist/configure/services/executor/operation.d.mts +45 -0
  135. package/dist/configure/services/executor/trigger/event.d.mts +272 -0
  136. package/dist/configure/services/executor/trigger/index.d.mts +8 -0
  137. package/dist/configure/services/executor/trigger/schedule.d.mts +25 -0
  138. package/dist/configure/services/executor/trigger/webhook.d.mts +44 -0
  139. package/dist/configure/services/executor/types.d.mts +2 -0
  140. package/dist/configure/services/http-adapter/http-adapter.d.mts +125 -0
  141. package/dist/configure/services/http-adapter/index.d.mts +2 -0
  142. package/dist/configure/services/idp/index.d.mts +64 -0
  143. package/dist/configure/services/idp/permission.d.mts +80 -0
  144. package/dist/configure/services/idp/types.d.mts +20 -0
  145. package/dist/configure/services/index.d.mts +34 -0
  146. package/dist/configure/services/resolver/index.d.mts +5 -0
  147. package/dist/configure/services/resolver/resolver.d.mts +75 -0
  148. package/dist/configure/services/resolver/types.d.mts +6 -0
  149. package/dist/configure/services/secrets/index.d.mts +38 -0
  150. package/dist/configure/services/secrets/types.d.mts +11 -0
  151. package/dist/configure/services/staticwebsite/index.d.mts +19 -0
  152. package/dist/configure/services/staticwebsite/types.d.mts +11 -0
  153. package/dist/configure/services/tailordb/index.d.mts +4 -0
  154. package/dist/configure/services/tailordb/permission.d.mts +119 -0
  155. package/dist/configure/services/tailordb/schema.d.mts +456 -0
  156. package/dist/configure/services/tailordb/types.d.mts +149 -0
  157. package/dist/configure/services/workflow/execution-policy.d.mts +71 -0
  158. package/dist/configure/services/workflow/execution-policy.types.d.mts +104 -0
  159. package/dist/configure/services/workflow/index.d.mts +8 -0
  160. package/dist/configure/services/workflow/job.d.mts +84 -0
  161. package/dist/configure/services/workflow/types.d.mts +2 -0
  162. package/dist/configure/services/workflow/wait-point.d.mts +73 -0
  163. package/dist/configure/services/workflow/workflow.d.mts +54 -0
  164. package/dist/configure/types/aigateway-name.d.mts +12 -0
  165. package/dist/configure/types/connection-name.d.mts +12 -0
  166. package/dist/configure/types/field-runtime.d.mts +17 -0
  167. package/dist/configure/types/field.d.mts +9 -0
  168. package/dist/configure/types/field.types.d.mts +109 -0
  169. package/dist/configure/types/idp-name.d.mts +12 -0
  170. package/dist/configure/types/index.d.mts +4 -0
  171. package/dist/configure/types/machine-user.d.mts +2 -0
  172. package/dist/configure/types/type.d.mts +82 -0
  173. package/dist/{context-Bd266-ru.mjs → context-DYQVYWqZ.mjs} +4 -5
  174. package/dist/context-DYQVYWqZ.mjs.map +1 -0
  175. package/dist/{crashreport-DFq-vsU0.mjs → crashreport-Cg-pqRJV.mjs} +6 -6
  176. package/dist/{crashreport-DFq-vsU0.mjs.map → crashreport-Cg-pqRJV.mjs.map} +1 -1
  177. package/dist/{crashreport-BMWcxeSE.mjs → crashreport-D3RjuSYb.mjs} +1 -1
  178. package/dist/enum-constants-j9QBF0cB.mjs.map +1 -1
  179. package/dist/{errors-Dtf2WPaW.mjs → errors-118wUDRr.mjs} +2 -2
  180. package/dist/errors-118wUDRr.mjs.map +1 -0
  181. package/dist/field-runtime-CAnh_oow.mjs +183 -0
  182. package/dist/field-runtime-CAnh_oow.mjs.map +1 -0
  183. package/dist/{file-BbdFGdMV.mjs → file-BUcmVIH2.mjs} +12 -14
  184. package/dist/file-BUcmVIH2.mjs.map +1 -0
  185. package/dist/{file-utils-CYZnO1pX.mjs → file-utils-yEiIS4nJ.mjs} +2 -2
  186. package/dist/file-utils-yEiIS4nJ.mjs.map +1 -0
  187. package/dist/{globals-Cf0sxIt8.mjs → globals-BjhJJ2dN.mjs} +5 -47
  188. package/dist/globals-BjhJJ2dN.mjs.map +1 -0
  189. package/dist/iconv-QWaZh0TT.mjs +38 -0
  190. package/dist/iconv-QWaZh0TT.mjs.map +1 -0
  191. package/dist/{idp-BDbK5gjm.mjs → idp-RA_swu-h.mjs} +12 -5
  192. package/dist/idp-RA_swu-h.mjs.map +1 -0
  193. package/dist/{interceptor-D-q1rvRl.mjs → interceptor-e33JtsC-.mjs} +2 -2
  194. package/dist/interceptor-e33JtsC-.mjs.map +1 -0
  195. package/dist/kysely/index.d.mts +2 -3
  196. package/dist/{kysely-type-DR8uzZTA.mjs → kysely-type-D-zflMGf.mjs} +2 -2
  197. package/dist/{kysely-type-DR8uzZTA.mjs.map → kysely-type-D-zflMGf.mjs.map} +1 -1
  198. package/dist/{logger-CxF-Ex5d.mjs → logger-BEiZZ3qT.mjs} +3 -3
  199. package/dist/{logger-CxF-Ex5d.mjs.map → logger-BEiZZ3qT.mjs.map} +1 -1
  200. package/dist/parser/service/auth/index.d.mts +1 -0
  201. package/dist/parser/service/auth/schema.d.mts +1 -0
  202. package/dist/parser/service/http-adapter/index.d.mts +1 -0
  203. package/dist/parser/service/http-adapter/schema.d.mts +1 -0
  204. package/dist/parser/service/idp/types.d.mts +4 -0
  205. package/dist/parser/service/tailordb/types.d.mts +126 -0
  206. package/dist/platform-serialize-RoRtBS0v.mjs +46 -0
  207. package/dist/platform-serialize-RoRtBS0v.mjs.map +1 -0
  208. package/dist/plugin/builtin/enum-constants/index.d.mts +16 -1
  209. package/dist/plugin/builtin/file-utils/index.d.mts +16 -1
  210. package/dist/plugin/builtin/file-utils/index.mjs +1 -1
  211. package/dist/plugin/builtin/kysely-type/index.d.mts +16 -1
  212. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  213. package/dist/plugin/builtin/seed/index.d.mts +45 -1
  214. package/dist/plugin/builtin/seed/index.mjs +1 -1
  215. package/dist/plugin/get-generated-type.d.mts +17 -0
  216. package/dist/plugin/index.d.mts +3 -118
  217. package/dist/plugin/index.mjs +1 -1
  218. package/dist/plugin/index.mjs.map +1 -1
  219. package/dist/plugin/manager.d.mts +1 -0
  220. package/dist/plugin/types.d.mts +243 -0
  221. package/dist/plugin/with-context.d.mts +102 -0
  222. package/dist/{runtime-CY4JvrDj.mjs → register-ts-hook-BM1caLT0.mjs} +4128 -2744
  223. package/dist/register-ts-hook-BM1caLT0.mjs.map +1 -0
  224. package/dist/{registry-DH4m7eYo.mjs → registry-BSbq6SPo.mjs} +4 -3
  225. package/dist/registry-BSbq6SPo.mjs.map +1 -0
  226. package/dist/{repl-editor-DmGr9zMw.mjs → repl-editor-BCozyiNq.mjs} +6 -5
  227. package/dist/{repl-editor-DmGr9zMw.mjs.map → repl-editor-BCozyiNq.mjs.map} +1 -1
  228. package/dist/resource_pb-BRv7AMXK.mjs +49 -0
  229. package/dist/resource_pb-BRv7AMXK.mjs.map +1 -0
  230. package/dist/runtime/aigateway.d.mts +26 -0
  231. package/dist/runtime/aigateway.mjs +3 -0
  232. package/dist/runtime/authconnection.d.mts +22 -2
  233. package/dist/runtime/authconnection.mjs +2 -2
  234. package/dist/runtime/context.d.mts +55 -2
  235. package/dist/runtime/context.mjs +2 -2
  236. package/dist/runtime/file.d.mts +170 -2
  237. package/dist/runtime/file.mjs +2 -2
  238. package/dist/runtime/globals.d.mts +31 -19
  239. package/dist/runtime/iconv.d.mts +73 -2
  240. package/dist/runtime/iconv.mjs +2 -2
  241. package/dist/runtime/idp.d.mts +129 -2
  242. package/dist/runtime/idp.mjs +2 -2
  243. package/dist/runtime/index.d.mts +47 -9
  244. package/dist/runtime/index.mjs +9 -8
  245. package/dist/runtime/secretmanager.d.mts +41 -2
  246. package/dist/runtime/secretmanager.mjs +2 -2
  247. package/dist/{types-BZ7QKVE8.d.mts → runtime/types.d.mts} +4 -5
  248. package/dist/runtime/workflow.d.mts +113 -2
  249. package/dist/runtime/workflow.mjs +2 -2
  250. package/dist/{schema-Dtw9Orye.mjs → schema-C4LYbXVG.mjs} +21 -186
  251. package/dist/schema-C4LYbXVG.mjs.map +1 -0
  252. package/dist/{secret-file-VSVGy1V0.mjs → secret-file-aoNXJmKa.mjs} +3 -3
  253. package/dist/secret-file-aoNXJmKa.mjs.map +1 -0
  254. package/dist/secretmanager-Bd45j7an.mjs +98 -0
  255. package/dist/secretmanager-Bd45j7an.mjs.map +1 -0
  256. package/dist/secretmanager-CYlpffsz.mjs +13 -0
  257. package/dist/secretmanager-CYlpffsz.mjs.map +1 -0
  258. package/dist/seed/index.d.mts +1 -2
  259. package/dist/{seed-izIEyP3z.mjs → seed-CRSQJI_z.mjs} +14 -3
  260. package/dist/seed-CRSQJI_z.mjs.map +1 -0
  261. package/dist/service-CkIwEctX.mjs +3 -0
  262. package/dist/{service-DU1mVzri2.mjs → service-DeZeYa06.mjs} +3 -3
  263. package/dist/service-DeZeYa06.mjs.map +1 -0
  264. package/dist/{service-DjyqbCaJ.mjs → service-ufH7sS8o.mjs} +396 -58
  265. package/dist/service-ufH7sS8o.mjs.map +1 -0
  266. package/dist/service_pb-B2FF59sP.mjs +3 -0
  267. package/dist/service_pb-B5w9rjPY.mjs +955 -0
  268. package/dist/service_pb-B5w9rjPY.mjs.map +1 -0
  269. package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +204 -0
  270. package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +58 -0
  271. package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +316 -0
  272. package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +161 -0
  273. package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +2070 -0
  274. package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +861 -0
  275. package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +112 -0
  276. package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +69 -0
  277. package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +439 -0
  278. package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +564 -0
  279. package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +145 -0
  280. package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +451 -0
  281. package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +192 -0
  282. package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +50 -0
  283. package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +407 -0
  284. package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +430 -0
  285. package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +73 -0
  286. package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +17 -0
  287. package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +309 -0
  288. package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +591 -0
  289. package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +330 -0
  290. package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +113 -0
  291. package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +346 -0
  292. package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +54 -0
  293. package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +3576 -0
  294. package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +187 -0
  295. package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +29 -0
  296. package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +429 -0
  297. package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +90 -0
  298. package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +684 -0
  299. package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +797 -0
  300. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +330 -0
  301. package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +183 -0
  302. package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +862 -0
  303. package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +310 -0
  304. package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +2015 -0
  305. package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +483 -0
  306. package/dist/{telemetry-CdqJEzkj.mjs → telemetry-BRVdwh14.mjs} +3 -3
  307. package/dist/telemetry-BRVdwh14.mjs.map +1 -0
  308. package/dist/telemetry-CkbkeJxl.mjs +3 -0
  309. package/dist/types/aigateway.generated.d.mts +9 -0
  310. package/dist/types/app-config.generated.d.mts +4 -0
  311. package/dist/types/auth-connection.generated.d.mts +20 -0
  312. package/dist/types/auth.generated.d.mts +145 -0
  313. package/dist/types/executor.generated.d.mts +177 -0
  314. package/dist/types/helpers.d.mts +39 -0
  315. package/dist/types/http-adapter.generated.d.mts +17 -0
  316. package/dist/{workflow.generated-ClEjBYhm.d.mts → types/idp.generated.d.mts} +98 -185
  317. package/dist/types/resolver.generated.d.mts +39 -0
  318. package/dist/types/secrets.generated.d.mts +14 -0
  319. package/dist/types/staticwebsite.generated.d.mts +10 -0
  320. package/dist/{types-CdcQh4Z2.d.mts → types/tailordb.generated.d.mts} +2 -287
  321. package/dist/types/workflow.generated.d.mts +12 -0
  322. package/dist/types-C-lQ4se3.mjs +4 -0
  323. package/dist/types-CXF2OYdR.mjs +199 -0
  324. package/dist/types-CXF2OYdR.mjs.map +1 -0
  325. package/dist/utils/test/index.d.mts +5 -89
  326. package/dist/utils/test/index.mjs.map +1 -1
  327. package/dist/utils/test/mock.d.mts +87 -0
  328. package/dist/vitest/environment.d.mts +1 -2
  329. package/dist/vitest/environment.mjs +2 -2
  330. package/dist/vitest/environment.mjs.map +1 -1
  331. package/dist/vitest/index.d.mts +12 -428
  332. package/dist/vitest/index.mjs +740 -9
  333. package/dist/vitest/index.mjs.map +1 -1
  334. package/dist/vitest/mock-kysely.d.mts +62 -0
  335. package/dist/vitest/mock.d.mts +9 -0
  336. package/dist/vitest/mocks/aigateway.d.mts +30 -0
  337. package/dist/vitest/mocks/authconnection.d.mts +28 -0
  338. package/dist/vitest/mocks/file.d.mts +41 -0
  339. package/dist/vitest/mocks/iconv.d.mts +27 -0
  340. package/dist/vitest/mocks/idp.d.mts +44 -0
  341. package/dist/vitest/mocks/secretmanager.d.mts +33 -0
  342. package/dist/vitest/mocks/tailordb.d.mts +71 -0
  343. package/dist/vitest/mocks/workflow.d.mts +117 -0
  344. package/dist/vitest/setup.d.mts +1 -2
  345. package/dist/vitest/setup.mjs +2 -2
  346. package/dist/vitest/workflow-local.d.mts +40 -0
  347. package/dist/workflow-GNuSnsTx.mjs +22 -0
  348. package/dist/workflow-GNuSnsTx.mjs.map +1 -0
  349. package/docs/cli/application.md +98 -250
  350. package/docs/cli/auth.md +51 -295
  351. package/docs/cli/completion.md +1 -25
  352. package/docs/cli/crashreport.md +3 -61
  353. package/docs/cli/executor.md +23 -187
  354. package/docs/cli/function.md +14 -130
  355. package/docs/cli/organization.md +11 -221
  356. package/docs/cli/plugin.md +29 -0
  357. package/docs/cli/query.md +2 -22
  358. package/docs/cli/secret.md +71 -251
  359. package/docs/cli/setup.md +137 -41
  360. package/docs/cli/skills.md +50 -39
  361. package/docs/cli/staticwebsite.md +32 -180
  362. package/docs/cli/tailordb.md +97 -323
  363. package/docs/cli/upgrade.md +2 -22
  364. package/docs/cli/user.md +78 -247
  365. package/docs/cli/workflow.md +44 -203
  366. package/docs/cli/workspace.md +165 -538
  367. package/docs/cli-reference.md +167 -67
  368. package/docs/configuration.md +34 -4
  369. package/docs/github-actions.md +46 -19
  370. package/docs/migration/v2.md +397 -26
  371. package/docs/multi-environment.md +29 -7
  372. package/docs/plugin/custom.md +4 -4
  373. package/docs/plugin/index.md +8 -8
  374. package/docs/quickstart.md +8 -7
  375. package/docs/runtime.md +9 -3
  376. package/docs/services/aigateway.md +18 -2
  377. package/docs/services/auth.md +34 -42
  378. package/docs/services/http-adapter.md +16 -1
  379. package/docs/services/idp.md +55 -2
  380. package/docs/services/resolver.md +2 -2
  381. package/docs/services/secret.md +11 -11
  382. package/docs/services/staticwebsite.md +8 -2
  383. package/docs/services/tailordb-migration.md +25 -23
  384. package/docs/services/tailordb.md +55 -32
  385. package/docs/services/workflow.md +92 -14
  386. package/docs/testing.md +49 -3
  387. package/package.json +42 -31
  388. package/postinstall.mjs +4 -6
  389. package/dist/application-Dtqap5jM.mjs +0 -3
  390. package/dist/application-XuMWK4eq.mjs +0 -7257
  391. package/dist/application-XuMWK4eq.mjs.map +0 -1
  392. package/dist/authconnection-D2MhtTN5.mjs +0 -15
  393. package/dist/authconnection-D2MhtTN5.mjs.map +0 -1
  394. package/dist/authconnection-DvUQAjQS.d.mts +0 -39
  395. package/dist/context-Bd266-ru.mjs.map +0 -1
  396. package/dist/context-C2lEi9uw.d.mts +0 -47
  397. package/dist/errors-Dtf2WPaW.mjs.map +0 -1
  398. package/dist/field-DOsJCPFa.mjs +0 -22
  399. package/dist/field-DOsJCPFa.mjs.map +0 -1
  400. package/dist/file-BbdFGdMV.mjs.map +0 -1
  401. package/dist/file-Dq3NIt_F.d.mts +0 -211
  402. package/dist/file-utils-CYZnO1pX.mjs.map +0 -1
  403. package/dist/globals-Cf0sxIt8.mjs.map +0 -1
  404. package/dist/http-adapter.generated-DFsXDdm5.d.mts +0 -581
  405. package/dist/iconv-Co-TOPuH.d.mts +0 -122
  406. package/dist/iconv-D2vi8G36.mjs +0 -63
  407. package/dist/iconv-D2vi8G36.mjs.map +0 -1
  408. package/dist/idp-BDbK5gjm.mjs.map +0 -1
  409. package/dist/idp-DrhVrLmV.d.mts +0 -160
  410. package/dist/index-BI-_j9Z3.d.mts +0 -1013
  411. package/dist/index-C4JirJH8.d.mts +0 -18
  412. package/dist/index-CZfWhr0a.d.mts +0 -18
  413. package/dist/index-Cg8VKAdN.d.mts +0 -46
  414. package/dist/index-DYRjoLXD.d.mts +0 -47
  415. package/dist/index-lFpcjHPU.d.mts +0 -201
  416. package/dist/index-nW7hE6oE.d.mts +0 -18
  417. package/dist/interceptor-D-q1rvRl.mjs.map +0 -1
  418. package/dist/mock-FPxmnt-y.mjs +0 -759
  419. package/dist/mock-FPxmnt-y.mjs.map +0 -1
  420. package/dist/registry-DH4m7eYo.mjs.map +0 -1
  421. package/dist/rolldown-runtime-DXywRVcq.mjs +0 -20
  422. package/dist/runtime-CY4JvrDj.mjs.map +0 -1
  423. package/dist/schema-Dtw9Orye.mjs.map +0 -1
  424. package/dist/secret-file-VSVGy1V0.mjs.map +0 -1
  425. package/dist/secretmanager-B3n4KHfm.d.mts +0 -55
  426. package/dist/secretmanager-BVxw3ih_.mjs +0 -24
  427. package/dist/secretmanager-BVxw3ih_.mjs.map +0 -1
  428. package/dist/seed-izIEyP3z.mjs.map +0 -1
  429. package/dist/service-DCqIWibD.mjs +0 -3
  430. package/dist/service-DU1mVzri2.mjs.map +0 -1
  431. package/dist/service-DjyqbCaJ.mjs.map +0 -1
  432. package/dist/telemetry-CdqJEzkj.mjs.map +0 -1
  433. package/dist/telemetry-ClwW5ohF.mjs +0 -3
  434. package/dist/types-74etvaxy.mjs +0 -4
  435. package/dist/types-BDRml5C3.d.mts +0 -574
  436. package/dist/types-BQijbo4m.mjs +0 -371
  437. package/dist/types-BQijbo4m.mjs.map +0 -1
  438. package/dist/types-BX4q6Mo6.d.mts +0 -339
  439. package/dist/workflow-BOmaZwwG.mjs +0 -43
  440. package/dist/workflow-BOmaZwwG.mjs.map +0 -1
  441. package/dist/workflow-BVy4XWjS.d.mts +0 -101
@@ -6,7 +6,7 @@ Plugins extend TailorDB types by automatically generating additional types, exec
6
6
 
7
7
  ## Overview
8
8
 
9
- When you run `tailor-sdk generate`, the SDK:
9
+ When you run `tailor generate`, the SDK:
10
10
 
11
11
  1. Loads all TailorDB types with plugin attachments
12
12
  2. Passes each type to the attached plugins
@@ -43,7 +43,7 @@ Use the `.plugin()` method to attach plugins to specific types:
43
43
  import { db } from "@tailor-platform/sdk";
44
44
 
45
45
  export const user = db
46
- .type("User", {
46
+ .table("User", {
47
47
  name: db.string(),
48
48
  email: db.string(),
49
49
  })
@@ -58,7 +58,7 @@ Some plugins accept per-type configuration:
58
58
 
59
59
  ```typescript
60
60
  export const customer = db
61
- .type("Customer", {
61
+ .table("Customer", {
62
62
  name: db.string(),
63
63
  // ...
64
64
  })
@@ -102,18 +102,18 @@ Plugins can generate:
102
102
  - **Field Extensions**: Additional fields added to the source type
103
103
  - **Output Files**: TypeScript code and other files via generation-time hooks
104
104
 
105
- Generated files are placed under `.tailor-sdk/<plugin-id>/` (the plugin ID is sanitized,
105
+ Generated files are placed under `.tailor/<plugin-id>/` (the plugin ID is sanitized,
106
106
  e.g. `@example/soft-delete` → `example-soft-delete`), such as:
107
107
 
108
- - `.tailor-sdk/example-soft-delete/types`
109
- - `.tailor-sdk/example-soft-delete/executors`
108
+ - `.tailor/example-soft-delete/types`
109
+ - `.tailor/example-soft-delete/executors`
110
110
 
111
111
  ## Plugin Lifecycle
112
112
 
113
- Plugins have 5 hooks across two lifecycle phases. Each hook fires at a specific point in the `tailor-sdk generate` pipeline:
113
+ Plugins have 5 hooks across two lifecycle phases. Each hook fires at a specific point in the `tailor generate` pipeline:
114
114
 
115
115
  ```
116
- tailor-sdk generate
116
+ tailor generate
117
117
 
118
118
  ├─ Load TailorDB types
119
119
  │ ├─ onTypeLoaded ← per type with .plugin() attached
@@ -12,7 +12,7 @@ Contact us [here](https://www.tailor.tech/demo) to get started.
12
12
 
13
13
  ### Install Node.js
14
14
 
15
- The SDK requires Node.js 22 or later. Install Node.js via your package manager by following the official Node.js instructions.
15
+ The SDK requires Node.js 22.15.0 or later. Install Node.js via your package manager by following the official Node.js instructions.
16
16
 
17
17
  Alternatively, you can use [Bun](https://bun.sh/) as the runtime.
18
18
 
@@ -24,20 +24,22 @@ The following command creates a new project with the required configuration file
24
24
 
25
25
  ```bash
26
26
  npm create @tailor-platform/sdk -- --template hello-world example-app
27
+ cd example-app
27
28
  # Or with Bun:
28
29
  # bun create @tailor-platform/sdk --template hello-world example-app
30
+ # cd example-app
29
31
  ```
30
32
 
31
33
  Before deploying your app, you need to create a workspace:
32
34
 
33
35
  ```bash
34
- npx tailor-sdk login
35
- npx tailor-sdk workspace create --name <workspace-name> --region <workspace-region>
36
- npx tailor-sdk workspace list
36
+ npx tailor login
37
+ npx tailor workspace create --name <workspace-name> --region <workspace-region>
38
+ npx tailor workspace list
37
39
 
38
40
  # Or with Bun:
39
- # bunx tailor-sdk login
40
- # bunx tailor-sdk workspace create --name <workspace-name> --region <workspace-region>
41
+ # bunx tailor login
42
+ # bunx tailor workspace create --name <workspace-name> --region <workspace-region>
41
43
 
42
44
  # OR
43
45
  # Create a new workspace using Tailor Platform Console
@@ -49,7 +51,6 @@ npx tailor-sdk workspace list
49
51
  Run the deploy command to deploy your project:
50
52
 
51
53
  ```bash
52
- cd example-app
53
54
  npm run deploy -- --workspace-id <your-workspace-id>
54
55
  # Or with Bun:
55
56
  # bun run deploy --workspace-id <your-workspace-id>
package/docs/runtime.md CHANGED
@@ -19,6 +19,7 @@ import {
19
19
  workflow,
20
20
  context,
21
21
  file,
22
+ aigateway,
22
23
  } from "@tailor-platform/sdk/runtime";
23
24
 
24
25
  const utf8 = iconv.convert(sjisBuffer, "Shift_JIS", "UTF-8");
@@ -35,6 +36,8 @@ const executionId = await workflow.triggerWorkflow("approval", { reportId });
35
36
  const invoker = context.getInvoker();
36
37
 
37
38
  const { metadata } = await file.upload("my-namespace", "Document", "attachment", recordId, bytes);
39
+
40
+ const { url } = await aigateway.get("my-aigateway");
38
41
  ```
39
42
 
40
43
  ## Subpath imports
@@ -42,10 +45,12 @@ const { metadata } = await file.upload("my-namespace", "Document", "attachment",
42
45
  Each namespace can also be imported individually so you only pull what you need:
43
46
 
44
47
  ```ts
45
- import * as iconv from "@tailor-platform/sdk/runtime/iconv";
46
- import type { ListUsersResponse, ClientConfig } from "@tailor-platform/sdk/runtime/idp";
48
+ import { iconv } from "@tailor-platform/sdk/runtime/iconv";
49
+ import { idp, type ListUsersResponse, type ClientConfig } from "@tailor-platform/sdk/runtime/idp";
47
50
  ```
48
51
 
52
+ `TailorContextAPI` and `TailorWorkflowAPI` describe the imported SDK wrapper objects. When typing direct access to the platform-provided globals or a runtime mock, use `PlatformContextAPI` or `PlatformWorkflowAPI` instead.
53
+
49
54
  ## Activating the global types
50
55
 
51
56
  Most users do not need to touch the globals entry — `@tailor-platform/sdk/runtime` (and its subpath modules) cover the same surface without depending on any ambient declaration.
@@ -76,9 +81,10 @@ The runtime entry re-exports the following namespaces. Detailed signatures, para
76
81
  - `secretmanager` — secret-vault access (`getSecret`, `getSecrets`)
77
82
  - `authconnection` — OAuth-style connection tokens (`getConnectionToken`)
78
83
  - `idp` — IdP user management (`new Client({ namespace })`)
79
- - `workflow` — workflow & job control (`triggerWorkflow`, `triggerJobFunction`, `wait`, `resolve`)
84
+ - `workflow` — workflow & job control (`triggerWorkflow`, `resumeWorkflow`, `triggerJobFunction`, `wait`, `resolve`)
80
85
  - `context` — execution context (`getInvoker`)
81
86
  - `file` — `tailordb.file` BLOB API (`upload`, `download`, `downloadAsBase64`, `delete`, `getMetadata`, `downloadStream`, `uploadStream`)
87
+ - `aigateway` — AI Gateway URL resolution (`get`)
82
88
 
83
89
  ## Testing
84
90
 
@@ -1,12 +1,12 @@
1
1
  # AI Gateway
2
2
 
3
- AI Gateway provides a unified endpoint for accessing multiple LLM providers (Azure OpenAI, Google Vertex AI Gemini, Anthropic via Vertex AI) through a single OpenAI-compatible API, with platform-managed credentials and workspace-scoped authentication.
3
+ AI Gateway provides a unified endpoint for accessing a range of large language models through a single OpenAI-compatible API, with platform-managed credentials and workspace-scoped authentication.
4
4
 
5
5
  ## Overview
6
6
 
7
7
  AI Gateway provides:
8
8
 
9
- - A unified, OpenAI-compatible endpoint for multiple LLM providers
9
+ - A unified, OpenAI-compatible endpoint for multiple LLM models
10
10
  - Mandatory authentication via your workspace's auth (request tokens are resolved against the configured auth namespace)
11
11
  - Per-workspace isolation: each gateway is provisioned with its own platform-assigned URL
12
12
  - Optional CORS allow-list for browser-based clients
@@ -31,6 +31,7 @@ const aiGateway = defineAIGateway("my-aigateway", {
31
31
  });
32
32
 
33
33
  export default defineConfig({
34
+ name: "my-app",
34
35
  aiGateways: [aiGateway],
35
36
  });
36
37
  ```
@@ -80,6 +81,7 @@ const website = defineStaticWebSite("my-frontend", {
80
81
  });
81
82
 
82
83
  const aiGateway = defineAIGateway("my-aigateway", {
84
+ // Name of an auth namespace in your workspace; request tokens are resolved against it.
83
85
  authNamespace: "default",
84
86
  cors: [website.url],
85
87
  });
@@ -95,3 +97,17 @@ export default defineConfig({
95
97
  aiGateways: [aiGateway],
96
98
  });
97
99
  ```
100
+
101
+ ## Runtime Usage
102
+
103
+ Resolvers, executors, and workflow jobs can resolve a gateway's platform-assigned URL by name via `aigateway.get()`. The name is type-checked and autocompleted against the AI Gateways defined in `aiGateways`:
104
+
105
+ ```typescript
106
+ import { aigateway } from "@tailor-platform/sdk/runtime";
107
+
108
+ const { url } = await aigateway.get("my-aigateway");
109
+
110
+ // await aigateway.get("unknown"); // Type error — only "my-aigateway" is allowed
111
+ ```
112
+
113
+ Type narrowing is provided by the generated `tailor.d.ts` (the `AIGatewayNameRegistry` interface). Run `tailor generate` (or `deploy`) after defining new AI Gateways to refresh it. Before the first generate run, `get()` accepts any string.
@@ -86,7 +86,7 @@ Example TailorDB type for user profile:
86
86
  // tailordb/user.ts
87
87
  import { db } from "@tailor-platform/sdk";
88
88
 
89
- export const user = db.type("User", {
89
+ export const user = db.table("User", {
90
90
  email: db.string().unique(), // usernameField must have unique constraint
91
91
  role: db.enum(["admin", "user"]),
92
92
  ...db.fields.timestamps(),
@@ -130,7 +130,7 @@ Example TailorDB type with UUID fields for attribute list:
130
130
  // tailordb/user.ts
131
131
  import { db } from "@tailor-platform/sdk";
132
132
 
133
- export const user = db.type("User", {
133
+ export const user = db.table("User", {
134
134
  email: db.string().unique(),
135
135
  role: db.enum(["admin", "user"]),
136
136
  organizationId: db.uuid(), // Can be used in attributeList
@@ -182,7 +182,7 @@ export const auth = defineAuth("my-auth", {
182
182
  To update types in `tailor.d.ts`, run:
183
183
 
184
184
  ```bash
185
- tailor-sdk generate
185
+ tailor generate
186
186
  ```
187
187
 
188
188
  ## Machine Users
@@ -264,7 +264,7 @@ Machine users are useful for:
264
264
  Get a machine user token using the CLI:
265
265
 
266
266
  ```bash
267
- tailor-sdk machineuser token <name>
267
+ tailor machineuser token <name>
268
268
  ```
269
269
 
270
270
  ### Specifying a machine user invoker
@@ -308,7 +308,7 @@ export default createResolver({
308
308
  });
309
309
  ```
310
310
 
311
- Type narrowing is provided by the generated `tailor.d.ts` (the `MachineUserNameRegistry` interface). Run `tailor-sdk generate` (or `apply`) after defining new machine users to refresh it.
311
+ Type narrowing is provided by the generated `tailor.d.ts` (the `MachineUserNameRegistry` interface). Run `tailor generate` (or `deploy`) after defining new machine users to refresh it.
312
312
 
313
313
  ## OAuth 2.0 Clients
314
314
 
@@ -348,7 +348,7 @@ oauth2Clients: {
348
348
  Get OAuth2 client credentials using the CLI:
349
349
 
350
350
  ```bash
351
- tailor-sdk oauth2client get <name>
351
+ tailor oauth2client get <name>
352
352
  ```
353
353
 
354
354
  ## Identity Provider
@@ -363,21 +363,18 @@ See [IdP](./idp.md) for configuring identity providers.
363
363
 
364
364
  ## Auth Connections
365
365
 
366
- Auth connections enable OAuth2 authentication with external providers (Google, Microsoft 365, QuickBooks, etc.) for application-to-application flows. Functions can access connection tokens at runtime via `tailor.authconnection.getConnectionToken()`.
366
+ Auth connections enable OAuth2 authentication with external providers (Google, Microsoft 365, QuickBooks, etc.) for application-to-application flows. Functions can access connection tokens at runtime via `authconnection.getConnectionToken()` (from `@tailor-platform/sdk/runtime`).
367
367
 
368
368
  For the official Tailor Platform documentation, see [AuthConnection Guide](https://docs.tailor.tech/guides/auth/authconnection).
369
369
 
370
- > [!WARNING]
371
- > **Managing connections through `tailor.config.ts` is unreliable for shared and CI deploys.**
372
- > A deploy revokes and recreates the connection — discarding the token obtained via `authconnection authorize` — whenever it cannot confirm the secret is unchanged. That check relies on a hash stored locally in `.tailor-sdk/secrets-state.json`, which is gitignored and therefore not shared across machines. So a deploy from CI, a clean checkout, another developer's machine, or after deleting `.tailor-sdk/` recreates the connection and drops its token. Only repeated deploys from the same machine that still holds that state keep the token.
373
- >
374
- > Because of this, prefer to **create the connection and its token from the Console**. You can jump to the connections page with:
370
+ > [!NOTE]
371
+ > Deploy updates connections **in-place**, preserving the OAuth token. If the connection requires re-authorization after an update, the deploy will warn you:
375
372
  >
376
373
  > ```bash
377
- > tailor-sdk authconnection open
374
+ > tailor authconnection authorize --name <connection-name>
375
+ > # Or via the Console:
376
+ > tailor authconnection open
378
377
  > ```
379
- >
380
- > The `connections` field in `defineAuth()` and the `authconnection authorize` flow are documented below for reference.
381
378
 
382
379
  ### Setup Flow
383
380
 
@@ -409,10 +406,10 @@ export const auth = defineAuth("my-auth", {
409
406
  });
410
407
  ```
411
408
 
412
- After `tailor-sdk deploy`, authorize the connection:
409
+ After `tailor deploy`, authorize the connection:
413
410
 
414
411
  ```bash
415
- tailor-sdk authconnection authorize --name google-connection \
412
+ tailor authconnection authorize --name google-connection \
416
413
  --scopes "openid,profile,email"
417
414
  ```
418
415
 
@@ -430,30 +427,25 @@ The authorize command opens a browser for the OAuth2 flow. The authorization cod
430
427
  | `authUrl` | `string` | No | Override for the authorization endpoint. |
431
428
  | `tokenUrl` | `string` | No | Override for the token endpoint. |
432
429
 
433
- ### Change Detection
434
-
435
- The SDK uses hash-based change detection for connection configs. Only connections whose configuration has changed since the last `apply` are updated (revoked and recreated). Deleting the `.tailor-sdk/` directory forces all connections to be re-sent.
430
+ ### Retrieving Connection Tokens
436
431
 
437
- > [!WARNING]
438
- > The secret hash lives in `.tailor-sdk/secrets-state.json`, which is gitignored and not shared across machines or CI. When that state is missing — a clean checkout, CI, another machine, or after deleting `.tailor-sdk/` — a deploy cannot confirm the secret is unchanged, so it revokes and recreates the connection and discards the token stored by `authconnection authorize`. For shared and CI workflows, manage the connection and create its token from the Console (`tailor-sdk authconnection open`) instead.
439
-
440
- ### `auth.getConnectionToken()`
441
-
442
- `auth.getConnectionToken()` retrieves connection tokens at runtime by calling `tailor.authconnection.getConnectionToken()` internally. When `connections` is defined in `defineAuth()`, the connection name is type-checked and autocompleted against the defined keys:
432
+ Use `authconnection.getConnectionToken()` from `@tailor-platform/sdk/runtime` to retrieve connection tokens at runtime. The connection name is type-checked and autocompleted against the connections defined in `defineAuth()`'s `connections`:
443
433
 
444
434
  ```typescript
445
- import { auth } from "../tailor.config";
435
+ import { authconnection } from "@tailor-platform/sdk/runtime";
446
436
 
447
437
  // In a resolver, executor, or workflow:
448
- const tokens = await auth.getConnectionToken("google-connection");
438
+ const tokens = await authconnection.getConnectionToken("google-connection");
449
439
  const response = await fetch("https://www.googleapis.com/...", {
450
440
  headers: { Authorization: `Bearer ${tokens.access_token}` },
451
441
  });
452
442
 
453
- // auth.getConnectionToken("unknown"); // Type error — only "google-connection" is allowed
443
+ // authconnection.getConnectionToken("unknown"); // Type error — only "google-connection" is allowed
454
444
  ```
455
445
 
456
- When `connections` is not defined, `getConnectionToken()` accepts any string. This supports connections managed entirely via the CLI.
446
+ Type narrowing is provided by the generated `tailor.d.ts` (the `ConnectionNameRegistry` interface). Run `tailor generate` (or `deploy`) after defining new connections to refresh it. Before the first generate, or when `connections` is not defined in `defineAuth()`, `getConnectionToken()` accepts any string this also supports connections managed entirely via the CLI.
447
+
448
+ This keeps runtime files independent from `tailor.config.ts`.
457
449
 
458
450
  See [Built-in Interfaces](https://docs.tailor.tech/guides/function/builtin-interfaces.html#auth-connection) for the full runtime API.
459
451
 
@@ -463,19 +455,19 @@ Auth connections can also be managed via the CLI:
463
455
 
464
456
  ```bash
465
457
  # Open the connections page in the Console (recommended for creating connections/tokens)
466
- tailor-sdk authconnection open
458
+ tailor authconnection open
467
459
 
468
460
  # Authorize (opens browser for OAuth2 flow)
469
- tailor-sdk authconnection authorize --name google-connection
461
+ tailor authconnection authorize --name google-connection
470
462
 
471
463
  # List all connections
472
- tailor-sdk authconnection list
464
+ tailor authconnection list
473
465
 
474
466
  # Revoke a connection
475
- tailor-sdk authconnection revoke --name google-connection
467
+ tailor authconnection revoke --name google-connection
476
468
  ```
477
469
 
478
- Connection creation is handled by `tailor-sdk deploy` via the config, but recreation on deploy can drop the authorized token (see the warning at the top of this section) — for shared and CI workflows, create connections and tokens from the Console (`tailor-sdk authconnection open`) instead.
470
+ Connection creation and updates are handled by `tailor deploy` via the config. Deploy updates connections in-place, preserving the authorized token, and warns you if an update requires re-authorization (see the note above).
479
471
 
480
472
  See [Auth Resource Commands](../cli/auth.md) for full CLI documentation.
481
473
 
@@ -538,21 +530,21 @@ Manage Auth resources using the CLI:
538
530
 
539
531
  ```bash
540
532
  # Auth connections
541
- tailor-sdk authconnection authorize --name <name>
542
- tailor-sdk authconnection list
543
- tailor-sdk authconnection revoke --name <name>
533
+ tailor authconnection authorize --name <name>
534
+ tailor authconnection list
535
+ tailor authconnection revoke --name <name>
544
536
 
545
537
  # List machine users
546
- tailor-sdk machineuser list
538
+ tailor machineuser list
547
539
 
548
540
  # Get machine user token
549
- tailor-sdk machineuser token <name>
541
+ tailor machineuser token <name>
550
542
 
551
543
  # List OAuth2 clients
552
- tailor-sdk oauth2client list
544
+ tailor oauth2client list
553
545
 
554
546
  # Get OAuth2 client credentials
555
- tailor-sdk oauth2client get <name>
547
+ tailor oauth2client get <name>
556
548
  ```
557
549
 
558
550
  See [Auth Resource Commands](../cli/auth.md) for full documentation.
@@ -7,7 +7,7 @@ HTTP adapters expose REST-style HTTP endpoints on your application by translatin
7
7
  Each HTTP adapter is a single file that declares:
8
8
 
9
9
  - A `pathPattern` (which methods it handles is derived from the `input` keys)
10
- - An `input` object keyed by lowercase HTTP method (`get`, `post`, `put`, `patch`, `delete`) — each value is a function that converts an incoming HTTP request into a GraphQL request (`query`, `variables`, `operationName`)
10
+ - An `input` object keyed by lowercase HTTP method (`get`, `post`, `put`, `patch`, `delete`) — each value is a function that converts an incoming HTTP request into a GraphQL request (`query`, `variables`, `operationName`). `query` can be a GraphQL string or a generated `TypedDocumentNode`.
11
11
  - An optional `output` function — **shared across all methods** — that converts the GraphQL response into an HTTP response (`statusCode`, `headers`, `body`)
12
12
 
13
13
  Adapters are deployed together with your application. When a request arrives under the `/api/` prefix and matches an adapter, the handler for the request method runs server-side.
@@ -74,6 +74,21 @@ A request to `GET /api/users/abc-123` invokes the `get` handler, runs the result
74
74
 
75
75
  If `output` is omitted, the raw GraphQL response is returned as JSON.
76
76
 
77
+ ### Typed GraphQL Documents
78
+
79
+ `input` handlers can return generated `TypedDocumentNode` values instead of query strings. The SDK uses the document's variables type for `variables`, and passes the document's result type to `output` as `resp.data`.
80
+
81
+ ```typescript
82
+ import { GetUserDocument } from "../generated/graphql";
83
+
84
+ get: (req) => ({
85
+ query: GetUserDocument,
86
+ variables: { id: req.path.split("/")[2] ?? "" },
87
+ });
88
+ ```
89
+
90
+ When multiple methods return different typed documents, `resp.data` is the union of those result types because `output` is shared across the adapter. If a method returns a plain string query, its result type is `unknown`. When extracting an input handler and annotating it separately, pass the document type to `HttpAdapterInputFn` so required variables stay typed.
91
+
77
92
  ### Optional fields
78
93
 
79
94
  Beyond `name`, `pathPattern`, `input`, and `output`, two optional fields control deploy-time behavior:
@@ -86,7 +86,8 @@ defineIdp("my-idp", {
86
86
  - `read` - Controls who can read IdP users
87
87
  - `update` - Controls who can update IdP users
88
88
  - `delete` - Controls who can delete IdP users
89
- - `sendPasswordResetEmail` - Controls who can send password reset emails. The examples above disable this operation; to enable it, use a permission such as `[{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }]`.
89
+ - `sendPasswordResetEmail` - Controls who can send password reset emails. Required unless `userAuthPolicy.disablePasswordAuth` is `true` or `gqlOperations.sendPasswordResetEmail` is `false` (the password-reset flow has no meaning when password authentication is off or the operation is disabled). Set `[{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }]` to allow, or `[]` to deny.
90
+ - `unenrollMfa` - Controls who can remove an enrolled MFA factor from a user. Required when `userAuthPolicy.enableMfa` is `true` unless `gqlOperations.unenrollMfa` is `false`; omit otherwise. Typically restricted to administrators.
90
91
 
91
92
  **Policy fields:** each entry in an operation's policy array supports:
92
93
 
@@ -166,6 +167,37 @@ defineIdp("my-idp", {
166
167
  - `allowGoogleOauth` - Enable the "Sign in with Google" button. Default `false`.
167
168
  - `allowMicrosoftOauth` - Enable the "Sign in with Microsoft" button. Default `false`.
168
169
 
170
+ **MFA (TOTP):**
171
+
172
+ ```typescript
173
+ import { defineIdp, defineStaticWebSite } from "@tailor-platform/sdk";
174
+
175
+ const website = defineStaticWebSite("my-frontend", { description: "App frontend" });
176
+
177
+ defineIdp("my-idp", {
178
+ clients: ["my-client"],
179
+ userAuthPolicy: {
180
+ enableMfa: true,
181
+ requireMfa: false,
182
+ allowedReturnOrigins: [website.url, "https://admin.example.com"],
183
+ mfaIssuer: "My App",
184
+ },
185
+ permission: {
186
+ create: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }],
187
+ read: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }],
188
+ update: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }],
189
+ delete: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }],
190
+ sendPasswordResetEmail: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }],
191
+ unenrollMfa: [{ conditions: [[{ user: "role" }, "=", "ADMIN"]], permit: true }],
192
+ },
193
+ });
194
+ ```
195
+
196
+ - `enableMfa` - Make TOTP MFA available for users in this namespace. Default `false`. When enabled, users can register an authenticator app (Google Authenticator, 1Password, etc.) from the IdP self-service page.
197
+ - `requireMfa` - Force password-authenticated users to enroll and pass an MFA challenge on each sign-in. Default `false`. Social sign-in (`allowGoogleOauth` / `allowMicrosoftOauth`) is not affected; the upstream provider's MFA covers those sessions.
198
+ - `allowedReturnOrigins` - Origins the IdP self-service pages (such as `/mfa/settings`) are allowed to redirect back to. Each entry is either a literal origin (`https://app.example.com`, scheme + host + optional port, no path/query/fragment) or a static-website placeholder `<name>:url` (e.g. `website.url`) that the CLI resolves to the deployed website's URL at apply time. Required when `enableMfa` is `true`.
199
+ - `mfaIssuer` - Label shown next to the user account in authenticator apps when TOTP is enrolled. Up to 64 characters. Falls back to `"Tailor Platform IdP"` when empty.
200
+
169
201
  **Constraints:** the following combinations are rejected at parse time.
170
202
 
171
203
  - `passwordMinLength` must be less than or equal to `passwordMaxLength`.
@@ -173,6 +205,23 @@ defineIdp("my-idp", {
173
205
  - `allowGoogleOauth` requires a non-empty `allowedEmailDomains`.
174
206
  - `allowMicrosoftOauth` requires both a non-empty `allowedEmailDomains` and `disablePasswordAuth: true`.
175
207
  - `disablePasswordAuth` requires `allowGoogleOauth` or `allowMicrosoftOauth`, and cannot be combined with `allowSelfPasswordReset`.
208
+ - `requireMfa: true` requires `enableMfa: true`.
209
+ - `enableMfa: true` requires at least one entry in `allowedReturnOrigins`.
210
+ - `enableMfa: true` requires `permission` to be defined and to include an explicit `unenrollMfa` policy (an empty array `[]` to deny is fine), unless `gqlOperations.unenrollMfa` is `false` (or `gqlOperations: "query"`, which normalizes to the same), in which case the operation is turned off and the policy may be omitted.
211
+
212
+ **Runtime API:** function code can inspect and revoke a user's enrolled factor through `idp.Client`. The `User` records returned by `user`, `userByName`, `users`, `createUser`, and `updateUser` expose `mfaEnrolled` (boolean) and `mfaFactorIds` (string array), and `client.unenrollMfa({ userId, mfaFactorId })` removes a single factor. The factor ID to pass back is one of the entries in `user.mfaFactorIds`. Calling `unenrollMfa` requires the `unenrollMfa` permission above.
213
+
214
+ ```typescript
215
+ import { idp } from "@tailor-platform/sdk/runtime";
216
+
217
+ const client = new idp.Client({ namespace: "my-idp" });
218
+ const user = await client.user("user-id");
219
+ if (user.mfaEnrolled) {
220
+ for (const factorId of user.mfaFactorIds) {
221
+ await client.unenrollMfa({ userId: user.id, mfaFactorId: factorId });
222
+ }
223
+ }
224
+ ```
176
225
 
177
226
  ### gqlOperations
178
227
 
@@ -187,6 +236,8 @@ defineIdp("my-idp", {
187
236
  update: true,
188
237
  delete: false,
189
238
  sendPasswordResetEmail: false,
239
+ requestMfaSettingsUrl: false,
240
+ unenrollMfa: false,
190
241
  },
191
242
  });
192
243
  ```
@@ -198,8 +249,10 @@ defineIdp("my-idp", {
198
249
  - `update` - The `_updateUser` mutation.
199
250
  - `delete` - The `_deleteUser` mutation.
200
251
  - `sendPasswordResetEmail` - The `_sendPasswordResetEmail` mutation.
252
+ - `requestMfaSettingsUrl` - The `_requestMfaSettingsUrl` query that issues a self-service URL for MFA settings.
253
+ - `unenrollMfa` - The `_unenrollMfa` mutation that removes a user's enrolled MFA factor. When set to `false`, `permission.unenrollMfa` may be omitted even with `userAuthPolicy.enableMfa: true`.
201
254
 
202
- **Shortcut:** pass the string `"query"` to expose a read-only IdP. It enables `read` and disables every mutation.
255
+ **Shortcut:** pass the string `"query"` to expose a read-only IdP. It enables the queries (`read`, `requestMfaSettingsUrl`) and disables every mutation.
203
256
 
204
257
  ```typescript
205
258
  defineIdp("my-idp", {
@@ -108,7 +108,7 @@ Define input/output schemas using methods of `t` object. Basic usage and support
108
108
  You can reuse fields defined with `db` object, but note that unsupported options will be ignored:
109
109
 
110
110
  ```typescript
111
- const user = db.type("User", {
111
+ const user = db.table("User", {
112
112
  name: db.string().unique(),
113
113
  age: db.int(),
114
114
  });
@@ -306,7 +306,7 @@ createResolver({
306
306
 
307
307
  - When `publishEvents: true`, resolver execution events are published
308
308
  - When not specified, it is **automatically set to `true`** if an executor uses this resolver with `resolverExecutedTrigger`
309
- - When explicitly set to `false` while an executor uses this resolver, an error is thrown during `tailor-sdk deploy`
309
+ - When explicitly set to `false` while an executor uses this resolver, an error is thrown during `tailor deploy`
310
310
 
311
311
  **Use cases:**
312
312
 
@@ -34,11 +34,11 @@ Secrets are key-value pairs stored within a vault. Secret values are encrypted a
34
34
 
35
35
  ## Managing Secrets
36
36
 
37
- There are two ways to manage secrets: declaratively via `defineSecretManager()` in `tailor.config.ts`, or imperatively via the [CLI](#cli-management). Management is scoped per vault — **do not mix both approaches for the same vault**. When a vault is defined in config, the config becomes the source of truth: any secrets in that vault not present in the config will be deleted on `tailor-sdk deploy`.
37
+ There are two ways to manage secrets: declaratively via `defineSecretManager()` in `tailor.config.ts`, or imperatively via the [CLI](#cli-management). Management is scoped per vault — **do not mix both approaches for the same vault**. When a vault is defined in config, the config becomes the source of truth: any secrets in that vault not present in the config will be deleted on `tailor deploy`.
38
38
 
39
39
  ### Declarative Configuration
40
40
 
41
- Define your secrets in `tailor.config.ts` using `defineSecretManager()`. Each key is a vault name, and its value is a record of secret names to their values. These values are deployed to each vault on `tailor-sdk deploy`.
41
+ Define your secrets in `tailor.config.ts` using `defineSecretManager()`. Each key is a vault name, and its value is a record of secret names to their values. These values are deployed to each vault on `tailor deploy`.
42
42
 
43
43
  Since secret values should not be committed to source control, use environment variables:
44
44
 
@@ -87,7 +87,7 @@ When `ignoreNullishValues: true`:
87
87
  - Skipped secrets are shown in the deploy output for visibility
88
88
  - Secrets removed from the config entirely are still deleted (orphan cleanup)
89
89
 
90
- This allows you to set secret values once (e.g., via local `tailor-sdk deploy` or the CLI) and then deploy from CI without needing the actual values in CI environment variables.
90
+ This allows you to set secret values once (e.g., via local `tailor deploy` or the CLI) and then deploy from CI without needing the actual values in CI environment variables.
91
91
 
92
92
  ## Using Secrets
93
93
 
@@ -175,25 +175,25 @@ At runtime, these references are replaced with the actual secret values.
175
175
 
176
176
  Use the CLI to manage vaults that are **not** defined in `defineSecretManager()`. If you attempt to modify a vault that is managed by the config, the CLI will show a warning and ask for confirmation. Once confirmed, the CLI releases the vault's ownership label so it is no longer managed by config.
177
177
 
178
- After ownership is released, the next `tailor-sdk deploy` will treat the vault as an unmanaged resource and prompt for confirmation before taking any action on it.
178
+ After ownership is released, the next `tailor deploy` will treat the vault as an unmanaged resource and prompt for confirmation before taking any action on it.
179
179
 
180
180
  ### Create a Vault
181
181
 
182
182
  ```bash
183
- tailor-sdk secret vault create --name api-keys
183
+ tailor secret vault create --name api-keys
184
184
  ```
185
185
 
186
186
  ### Add Secrets
187
187
 
188
188
  ```bash
189
189
  # Create a secret
190
- tailor-sdk secret create \
190
+ tailor secret create \
191
191
  --vault-name api-keys \
192
192
  --name stripe-secret-key \
193
193
  --value sk_live_xxxxx
194
194
 
195
195
  # Update a secret
196
- tailor-sdk secret update \
196
+ tailor secret update \
197
197
  --vault-name api-keys \
198
198
  --name stripe-secret-key \
199
199
  --value sk_live_yyyyy
@@ -203,20 +203,20 @@ tailor-sdk secret update \
203
203
 
204
204
  ```bash
205
205
  # List vaults
206
- tailor-sdk secret vault list
206
+ tailor secret vault list
207
207
 
208
208
  # List secrets in a vault (values are hidden)
209
- tailor-sdk secret list --vault-name api-keys
209
+ tailor secret list --vault-name api-keys
210
210
  ```
211
211
 
212
212
  ### Delete Secrets
213
213
 
214
214
  ```bash
215
215
  # Delete a secret
216
- tailor-sdk secret delete --vault-name api-keys --name old-key --yes
216
+ tailor secret delete --vault-name api-keys --name old-key --yes
217
217
 
218
218
  # Delete a vault (must be empty)
219
- tailor-sdk secret vault delete --name old-vault --yes
219
+ tailor secret vault delete --name old-vault --yes
220
220
  ```
221
221
 
222
222
  See [Secret CLI Commands](../cli/secret.md) for full documentation.
@@ -72,7 +72,7 @@ defineStaticWebSite("my-website", {
72
72
  });
73
73
  ```
74
74
 
75
- After deploying, use `tailor-sdk staticwebsite domain get <domain>` to check domain status and retrieve the CNAME targets required for DNS configuration.
75
+ After deploying, use `tailor staticwebsite domain get <domain>` to check domain status and retrieve the CNAME targets required for DNS configuration.
76
76
 
77
77
  A domain can be associated with only one workspace at a time. To set custom domains only in the workspace that owns the domain, see [Multi-Environment Configuration](../multi-environment.md#settings-that-belong-to-a-single-environment).
78
78
 
@@ -124,8 +124,14 @@ const website = defineStaticWebSite("my-frontend", {
124
124
  });
125
125
 
126
126
  const idp = defineIdp("my-idp", {
127
- authorization: "loggedIn",
128
127
  clients: ["default-client"],
128
+ permission: {
129
+ create: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }],
130
+ read: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }],
131
+ update: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }],
132
+ delete: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }],
133
+ sendPasswordResetEmail: [{ conditions: [[{ user: "_loggedIn" }, "=", true]], permit: true }],
134
+ },
129
135
  });
130
136
 
131
137
  const auth = defineAuth("my-auth", {