@tailor-platform/sdk 2.0.0-next.1 → 2.0.0-next.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +514 -2
- package/README.md +9 -9
- package/agent-skills/{tailor-sdk → tailor}/SKILL.md +3 -1
- package/dist/aigateway-B3oZZE6v.mjs +15 -0
- package/dist/aigateway-B3oZZE6v.mjs.map +1 -0
- package/dist/application-D2hSK1ZL.mjs +3 -0
- package/dist/{application-DqS1yBg3.mjs → application-eHp9jXld.mjs} +1397 -684
- package/dist/application-eHp9jXld.mjs.map +1 -0
- package/dist/{authconnection-D2MhtTN5.mjs → authconnection-BGQM8FZI.mjs} +2 -2
- package/dist/authconnection-BGQM8FZI.mjs.map +1 -0
- package/dist/cli/cache/bundle-cache.d.mts +1 -0
- package/dist/cli/cache/store.d.mts +1 -0
- package/dist/cli/cache/types.d.mts +1 -0
- package/dist/cli/commands/api/api-call.d.mts +19 -0
- package/dist/cli/commands/api/index.d.mts +3 -0
- package/dist/cli/commands/deploy/aigateway.d.mts +1 -0
- package/dist/cli/commands/deploy/application.d.mts +1 -0
- package/dist/cli/commands/deploy/apply-phases.d.mts +1 -0
- package/dist/cli/commands/deploy/auth.d.mts +1 -0
- package/dist/cli/commands/deploy/deploy.d.mts +24 -0
- package/dist/cli/commands/deploy/executor.d.mts +1 -0
- package/dist/cli/commands/deploy/function-registry-types.d.mts +12 -0
- package/dist/cli/commands/deploy/function-registry.d.mts +2 -0
- package/dist/cli/commands/deploy/idp.d.mts +1 -0
- package/dist/cli/commands/deploy/resolver.d.mts +1 -0
- package/dist/cli/commands/deploy/secret-manager.d.mts +1 -0
- package/dist/cli/commands/deploy/staticwebsite.d.mts +1 -0
- package/dist/cli/commands/deploy/tailordb/index.d.mts +1 -0
- package/dist/cli/commands/deploy/types.d.mts +1 -0
- package/dist/cli/commands/deploy/workflow.d.mts +1 -0
- package/dist/cli/commands/executor/get.d.mts +29 -0
- package/dist/cli/commands/executor/jobs.d.mts +123 -0
- package/dist/cli/commands/executor/list.d.mts +19 -0
- package/dist/cli/commands/executor/transform.d.mts +41 -0
- package/dist/cli/commands/executor/trigger.d.mts +41 -0
- package/dist/cli/commands/executor/webhook.d.mts +22 -0
- package/dist/cli/commands/function/get.d.mts +18 -0
- package/dist/cli/commands/function/list.d.mts +22 -0
- package/dist/cli/commands/function/transform.d.mts +11 -0
- package/dist/cli/commands/generate/options.d.mts +7 -0
- package/dist/cli/commands/generate/seed/bundler.d.mts +26 -0
- package/dist/cli/commands/generate/service.d.mts +11 -0
- package/dist/cli/commands/machineuser/list.d.mts +27 -0
- package/dist/cli/commands/machineuser/token.d.mts +22 -0
- package/dist/cli/commands/oauth2client/get.d.mts +18 -0
- package/dist/cli/commands/oauth2client/list.d.mts +20 -0
- package/dist/cli/commands/oauth2client/transform.d.mts +20 -0
- package/dist/cli/commands/organization/folder/create.d.mts +18 -0
- package/dist/cli/commands/organization/folder/delete.d.mts +16 -0
- package/dist/cli/commands/organization/folder/get.d.mts +17 -0
- package/dist/cli/commands/organization/folder/list.d.mts +22 -0
- package/dist/cli/commands/organization/folder/update.d.mts +18 -0
- package/dist/cli/commands/organization/get.d.mts +16 -0
- package/dist/cli/commands/organization/list.d.mts +15 -0
- package/dist/cli/commands/organization/transform.d.mts +27 -0
- package/dist/cli/commands/organization/tree.d.mts +25 -0
- package/dist/cli/commands/organization/update.d.mts +17 -0
- package/dist/cli/commands/remove.d.mts +16 -0
- package/dist/cli/commands/show.d.mts +34 -0
- package/dist/cli/commands/tailordb/migrate/bundler.d.mts +28 -0
- package/dist/cli/commands/tailordb/migrate/config.d.mts +19 -0
- package/dist/cli/commands/tailordb/migrate/diff-calculator.d.mts +223 -0
- package/dist/cli/commands/tailordb/migrate/generate.d.mts +17 -0
- package/dist/cli/commands/tailordb/migrate/snapshot-types.d.mts +202 -0
- package/dist/cli/commands/tailordb/migrate/snapshot.d.mts +98 -0
- package/dist/cli/commands/tailordb/migrate/types.d.mts +7 -0
- package/dist/cli/commands/tailordb/truncate.d.mts +19 -0
- package/dist/cli/commands/workflow/executions.d.mts +75 -0
- package/dist/cli/commands/workflow/get.d.mts +29 -0
- package/dist/cli/commands/workflow/list.d.mts +19 -0
- package/dist/cli/commands/workflow/resume.d.mts +23 -0
- package/dist/cli/commands/workflow/start.d.mts +61 -0
- package/dist/cli/commands/workflow/status.d.mts +5 -0
- package/dist/cli/commands/workflow/transform.d.mts +33 -0
- package/dist/cli/commands/workflow/wait.d.mts +16 -0
- package/dist/cli/commands/workflow/waiter.d.mts +23 -0
- package/dist/cli/commands/workspace/app/health.d.mts +18 -0
- package/dist/cli/commands/workspace/app/list.d.mts +22 -0
- package/dist/cli/commands/workspace/app/transform.d.mts +18 -0
- package/dist/cli/commands/workspace/create.d.mts +25 -0
- package/dist/cli/commands/workspace/delete.d.mts +15 -0
- package/dist/cli/commands/workspace/get.d.mts +17 -0
- package/dist/cli/commands/workspace/list.d.mts +17 -0
- package/dist/cli/commands/workspace/restore.d.mts +15 -0
- package/dist/cli/commands/workspace/transform.d.mts +16 -0
- package/dist/cli/commands/workspace/user/invite.d.mts +22 -0
- package/dist/cli/commands/workspace/user/list.d.mts +22 -0
- package/dist/cli/commands/workspace/user/remove.d.mts +17 -0
- package/dist/cli/commands/workspace/user/transform.d.mts +8 -0
- package/dist/cli/commands/workspace/user/update.d.mts +22 -0
- package/dist/cli/erd-viewer-assets/app.js +279 -36
- package/dist/cli/erd-viewer-assets/index.html +4 -0
- package/dist/cli/erd-viewer-assets/styles.css +252 -5
- package/dist/cli/index.d.mts +18 -3
- package/dist/cli/index.mjs +2193 -519
- package/dist/cli/index.mjs.map +1 -1
- package/dist/cli/lib.d.mts +81 -21048
- package/dist/cli/lib.mjs +8 -12
- package/dist/cli/lib.mjs.map +1 -1
- package/dist/cli/query/index.d.mts +35 -0
- package/dist/cli/services/application.d.mts +1 -0
- package/dist/cli/services/auth/service.d.mts +1 -0
- package/dist/cli/services/executor/service.d.mts +1 -0
- package/dist/cli/services/http-adapter/bundler.d.mts +1 -0
- package/dist/cli/services/http-adapter/service.d.mts +1 -0
- package/dist/cli/services/resolver/service.d.mts +1 -0
- package/dist/cli/services/tailordb/service.d.mts +1 -0
- package/dist/cli/services/workflow/bundler.d.mts +1 -0
- package/dist/cli/services/workflow/service.d.mts +1 -0
- package/dist/cli/shared/args.d.mts +13 -0
- package/dist/cli/shared/client.d.mts +1273 -0
- package/dist/cli/shared/config-loader.d.mts +26 -0
- package/dist/cli/shared/context.d.mts +28 -0
- package/dist/cli/shared/script-executor.d.mts +75 -0
- package/dist/cli/shared/seed-chunker.d.mts +46 -0
- package/dist/cli/shared/trigger-context.d.mts +1 -0
- package/dist/cli/shared/type-generator.d.mts +20 -0
- package/dist/cli/ts-hook.d.mts +4 -0
- package/dist/cli/ts-hook.mjs +303 -0
- package/dist/completion/zsh-worker.zsh +1577 -1098
- package/dist/configure/config/index.d.mts +21 -0
- package/dist/configure/config/types.d.mts +103 -0
- package/dist/configure/index.d.mts +122 -8
- package/dist/configure/index.mjs +74 -34
- package/dist/configure/index.mjs.map +1 -1
- package/dist/configure/services/aigateway/index.d.mts +17 -0
- package/dist/configure/services/aigateway/types.d.mts +11 -0
- package/dist/configure/services/auth/index.d.mts +34 -0
- package/dist/configure/services/auth/types.d.mts +172 -0
- package/dist/configure/services/executor/executor.d.mts +81 -0
- package/dist/configure/services/executor/index.d.mts +8 -0
- package/dist/configure/services/executor/operation.d.mts +45 -0
- package/dist/configure/services/executor/trigger/event.d.mts +272 -0
- package/dist/configure/services/executor/trigger/index.d.mts +8 -0
- package/dist/configure/services/executor/trigger/schedule.d.mts +25 -0
- package/dist/configure/services/executor/trigger/webhook.d.mts +44 -0
- package/dist/configure/services/executor/types.d.mts +2 -0
- package/dist/configure/services/http-adapter/http-adapter.d.mts +125 -0
- package/dist/configure/services/http-adapter/index.d.mts +2 -0
- package/dist/configure/services/idp/index.d.mts +64 -0
- package/dist/configure/services/idp/permission.d.mts +80 -0
- package/dist/configure/services/idp/types.d.mts +20 -0
- package/dist/configure/services/index.d.mts +32 -0
- package/dist/configure/services/resolver/index.d.mts +5 -0
- package/dist/configure/services/resolver/resolver.d.mts +75 -0
- package/dist/configure/services/resolver/types.d.mts +6 -0
- package/dist/configure/services/secrets/index.d.mts +38 -0
- package/dist/configure/services/secrets/types.d.mts +11 -0
- package/dist/configure/services/staticwebsite/index.d.mts +19 -0
- package/dist/configure/services/staticwebsite/types.d.mts +11 -0
- package/dist/configure/services/tailordb/index.d.mts +4 -0
- package/dist/configure/services/tailordb/permission.d.mts +119 -0
- package/dist/configure/services/tailordb/schema.d.mts +456 -0
- package/dist/configure/services/tailordb/types.d.mts +149 -0
- package/dist/configure/services/workflow/index.d.mts +6 -0
- package/dist/configure/services/workflow/job.d.mts +79 -0
- package/dist/configure/services/workflow/types.d.mts +2 -0
- package/dist/configure/services/workflow/wait-point.d.mts +73 -0
- package/dist/configure/services/workflow/workflow.d.mts +54 -0
- package/dist/configure/types/aigateway-name.d.mts +12 -0
- package/dist/configure/types/connection-name.d.mts +12 -0
- package/dist/configure/types/field-runtime.d.mts +17 -0
- package/dist/configure/types/field.d.mts +9 -0
- package/dist/configure/types/field.types.d.mts +109 -0
- package/dist/configure/types/idp-name.d.mts +12 -0
- package/dist/configure/types/index.d.mts +4 -0
- package/dist/configure/types/machine-user.d.mts +2 -0
- package/dist/configure/types/type.d.mts +82 -0
- package/dist/context-Bd266-ru.mjs.map +1 -1
- package/dist/{crashreport-BsjAkFWw.mjs → crashreport-Cg-pqRJV.mjs} +9 -11
- package/dist/{crashreport-BsjAkFWw.mjs.map → crashreport-Cg-pqRJV.mjs.map} +1 -1
- package/dist/{crashreport-pr6Rhvza.mjs → crashreport-D3RjuSYb.mjs} +1 -1
- package/dist/enum-constants-j9QBF0cB.mjs.map +1 -1
- package/dist/{errors-Dtf2WPaW.mjs → errors-118wUDRr.mjs} +2 -2
- package/dist/errors-118wUDRr.mjs.map +1 -0
- package/dist/field-runtime-CAnh_oow.mjs +183 -0
- package/dist/field-runtime-CAnh_oow.mjs.map +1 -0
- package/dist/{file-_oUZo76X.mjs → file-BbdFGdMV.mjs} +2 -10
- package/dist/file-BbdFGdMV.mjs.map +1 -0
- package/dist/{file-utils-DcyIPFQh.mjs → file-utils-CYZnO1pX.mjs} +5 -5
- package/dist/file-utils-CYZnO1pX.mjs.map +1 -0
- package/dist/{globals-Crz8o65k.mjs → globals-DhwZj0RB.mjs} +5 -47
- package/dist/globals-DhwZj0RB.mjs.map +1 -0
- package/dist/{idp-BDbK5gjm.mjs → idp-Bx25ZBdN.mjs} +9 -1
- package/dist/idp-Bx25ZBdN.mjs.map +1 -0
- package/dist/{interceptor-D-q1rvRl.mjs → interceptor-e33JtsC-.mjs} +2 -2
- package/dist/interceptor-e33JtsC-.mjs.map +1 -0
- package/dist/kysely/index.d.mts +2 -3
- package/dist/{kysely-type-DR8uzZTA.mjs → kysely-type-5eAChaHO.mjs} +4 -2
- package/dist/kysely-type-5eAChaHO.mjs.map +1 -0
- package/dist/{logger-CxF-Ex5d.mjs → logger-BEiZZ3qT.mjs} +3 -3
- package/dist/{logger-CxF-Ex5d.mjs.map → logger-BEiZZ3qT.mjs.map} +1 -1
- package/dist/parser/service/auth/index.d.mts +1 -0
- package/dist/parser/service/auth/schema.d.mts +1 -0
- package/dist/parser/service/http-adapter/index.d.mts +1 -0
- package/dist/parser/service/http-adapter/schema.d.mts +1 -0
- package/dist/parser/service/idp/types.d.mts +4 -0
- package/dist/parser/service/tailordb/types.d.mts +126 -0
- package/dist/platform-serialize-RoRtBS0v.mjs +46 -0
- package/dist/platform-serialize-RoRtBS0v.mjs.map +1 -0
- package/dist/plugin/builtin/enum-constants/index.d.mts +16 -1
- package/dist/plugin/builtin/file-utils/index.d.mts +16 -1
- package/dist/plugin/builtin/file-utils/index.mjs +1 -1
- package/dist/plugin/builtin/kysely-type/index.d.mts +16 -1
- package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
- package/dist/plugin/builtin/seed/index.d.mts +45 -1
- package/dist/plugin/builtin/seed/index.mjs +1 -1
- package/dist/plugin/get-generated-type.d.mts +17 -0
- package/dist/plugin/index.d.mts +3 -117
- package/dist/plugin/index.mjs +1 -1
- package/dist/plugin/index.mjs.map +1 -1
- package/dist/plugin/manager.d.mts +1 -0
- package/dist/plugin/types.d.mts +243 -0
- package/dist/plugin/with-context.d.mts +102 -0
- package/dist/{runtime-n9NCkjee.mjs → register-ts-hook-ZpBacA07.mjs} +4374 -2446
- package/dist/register-ts-hook-ZpBacA07.mjs.map +1 -0
- package/dist/{registry-DdsYlL_P.mjs → registry-DH4m7eYo.mjs} +4 -2
- package/dist/registry-DH4m7eYo.mjs.map +1 -0
- package/dist/{repl-editor-DmGr9zMw.mjs → repl-editor-BCozyiNq.mjs} +6 -5
- package/dist/{repl-editor-DmGr9zMw.mjs.map → repl-editor-BCozyiNq.mjs.map} +1 -1
- package/dist/runtime/aigateway.d.mts +35 -0
- package/dist/runtime/aigateway.mjs +3 -0
- package/dist/runtime/authconnection.d.mts +31 -2
- package/dist/runtime/authconnection.mjs +1 -1
- package/dist/runtime/context.d.mts +46 -2
- package/dist/runtime/file.d.mts +210 -2
- package/dist/runtime/file.mjs +2 -2
- package/dist/runtime/globals.d.mts +31 -19
- package/dist/runtime/iconv.d.mts +121 -2
- package/dist/runtime/idp.d.mts +186 -2
- package/dist/runtime/idp.mjs +1 -1
- package/dist/runtime/index.d.mts +47 -9
- package/dist/runtime/index.mjs +6 -5
- package/dist/runtime/secretmanager.d.mts +54 -2
- package/dist/runtime/types.d.mts +20 -0
- package/dist/runtime/workflow.d.mts +112 -2
- package/dist/runtime/workflow.mjs +2 -2
- package/dist/{schema-BhkpP5Hw.mjs → schema-89dYxNC2.mjs} +25 -187
- package/dist/schema-89dYxNC2.mjs.map +1 -0
- package/dist/{secret-file-DBqZhjFQ.mjs → secret-file-aoNXJmKa.mjs} +28 -3
- package/dist/secret-file-aoNXJmKa.mjs.map +1 -0
- package/dist/secretmanager-Bd45j7an.mjs +98 -0
- package/dist/secretmanager-Bd45j7an.mjs.map +1 -0
- package/dist/seed/index.d.mts +1 -2
- package/dist/{seed-jf3008-h.mjs → seed-CRSQJI_z.mjs} +16 -6
- package/dist/seed-CRSQJI_z.mjs.map +1 -0
- package/dist/service-CkIwEctX.mjs +3 -0
- package/dist/{service-DU1mVzri.mjs → service-DeZeYa06.mjs} +3 -3
- package/dist/{service-DU1mVzri.mjs.map → service-DeZeYa06.mjs.map} +1 -1
- package/dist/service-ufH7sS8o.mjs +797 -0
- package/dist/service-ufH7sS8o.mjs.map +1 -0
- package/dist/{client-z_oHGVNy.mjs → service_pb-CIrhGwHk.mjs} +38 -466
- package/dist/service_pb-CIrhGwHk.mjs.map +1 -0
- package/dist/service_pb-DjwIn4jO.mjs +3 -0
- package/dist/tailor-proto/src/tailor/v1/aigateway_pb.d.mts +204 -0
- package/dist/tailor-proto/src/tailor/v1/aigateway_resource_pb.d.mts +58 -0
- package/dist/tailor-proto/src/tailor/v1/application_pb.d.mts +316 -0
- package/dist/tailor-proto/src/tailor/v1/application_resource_pb.d.mts +161 -0
- package/dist/tailor-proto/src/tailor/v1/auth_pb.d.mts +2070 -0
- package/dist/tailor-proto/src/tailor/v1/auth_resource_pb.d.mts +861 -0
- package/dist/tailor-proto/src/tailor/v1/events_pb.d.mts +112 -0
- package/dist/tailor-proto/src/tailor/v1/events_resource_pb.d.mts +69 -0
- package/dist/tailor-proto/src/tailor/v1/executor_pb.d.mts +439 -0
- package/dist/tailor-proto/src/tailor/v1/executor_resource_pb.d.mts +564 -0
- package/dist/tailor-proto/src/tailor/v1/function_pb.d.mts +145 -0
- package/dist/tailor-proto/src/tailor/v1/function_registry_pb.d.mts +451 -0
- package/dist/tailor-proto/src/tailor/v1/function_resource_pb.d.mts +192 -0
- package/dist/tailor-proto/src/tailor/v1/http_adapter_resource_pb.d.mts +50 -0
- package/dist/tailor-proto/src/tailor/v1/idp_pb.d.mts +407 -0
- package/dist/tailor-proto/src/tailor/v1/idp_resource_pb.d.mts +430 -0
- package/dist/tailor-proto/src/tailor/v1/metadata_pb.d.mts +73 -0
- package/dist/tailor-proto/src/tailor/v1/metadata_resource_pb.d.mts +17 -0
- package/dist/tailor-proto/src/tailor/v1/meter_pb.d.mts +309 -0
- package/dist/tailor-proto/src/tailor/v1/pipeline_pb.d.mts +591 -0
- package/dist/tailor-proto/src/tailor/v1/pipeline_resource_pb.d.mts +330 -0
- package/dist/tailor-proto/src/tailor/v1/resource_pb.d.mts +113 -0
- package/dist/tailor-proto/src/tailor/v1/secret_manager_pb.d.mts +346 -0
- package/dist/tailor-proto/src/tailor/v1/secret_manager_resource_pb.d.mts +54 -0
- package/dist/tailor-proto/src/tailor/v1/service_pb.d.mts +3576 -0
- package/dist/tailor-proto/src/tailor/v1/stateflow_pb.d.mts +187 -0
- package/dist/tailor-proto/src/tailor/v1/stateflow_resource_pb.d.mts +29 -0
- package/dist/tailor-proto/src/tailor/v1/staticwebsite_pb.d.mts +429 -0
- package/dist/tailor-proto/src/tailor/v1/staticwebsite_resource_pb.d.mts +90 -0
- package/dist/tailor-proto/src/tailor/v1/tailordb_pb.d.mts +684 -0
- package/dist/tailor-proto/src/tailor/v1/tailordb_resource_pb.d.mts +797 -0
- package/dist/tailor-proto/src/tailor/v1/telemetryrouter_pb.d.mts +330 -0
- package/dist/tailor-proto/src/tailor/v1/telemetryrouter_resource_pb.d.mts +183 -0
- package/dist/tailor-proto/src/tailor/v1/workflow_pb.d.mts +842 -0
- package/dist/tailor-proto/src/tailor/v1/workflow_resource_pb.d.mts +276 -0
- package/dist/tailor-proto/src/tailor/v1/workspace_pb.d.mts +2015 -0
- package/dist/tailor-proto/src/tailor/v1/workspace_resource_pb.d.mts +483 -0
- package/dist/{telemetry-CdqJEzkj.mjs → telemetry-BRVdwh14.mjs} +3 -3
- package/dist/telemetry-BRVdwh14.mjs.map +1 -0
- package/dist/telemetry-CkbkeJxl.mjs +3 -0
- package/dist/test-env-key-D7UkZp99.mjs +75 -0
- package/dist/test-env-key-D7UkZp99.mjs.map +1 -0
- package/dist/types/aigateway.generated.d.mts +9 -0
- package/dist/types/app-config.generated.d.mts +4 -0
- package/dist/types/auth-connection.generated.d.mts +20 -0
- package/dist/types/auth.generated.d.mts +145 -0
- package/dist/types/executor.generated.d.mts +177 -0
- package/dist/types/helpers.d.mts +39 -0
- package/dist/types/http-adapter.generated.d.mts +17 -0
- package/dist/{workflow.generated-DtQwEo-x.d.mts → types/idp.generated.d.mts} +98 -185
- package/dist/types/resolver.generated.d.mts +39 -0
- package/dist/types/secrets.generated.d.mts +14 -0
- package/dist/types/staticwebsite.generated.d.mts +10 -0
- package/dist/types/tailordb.generated.d.mts +428 -0
- package/dist/types/workflow.generated.d.mts +12 -0
- package/dist/types-C-lQ4se3.mjs +4 -0
- package/dist/types-CXF2OYdR.mjs +199 -0
- package/dist/types-CXF2OYdR.mjs.map +1 -0
- package/dist/utils/test/index.d.mts +5 -98
- package/dist/utils/test/index.mjs +4 -13
- package/dist/utils/test/index.mjs.map +1 -1
- package/dist/utils/test/mock.d.mts +87 -0
- package/dist/vitest/environment.d.mts +1 -2
- package/dist/vitest/environment.mjs +2 -2
- package/dist/vitest/environment.mjs.map +1 -1
- package/dist/vitest/index.d.mts +12 -428
- package/dist/vitest/index.mjs +741 -10
- package/dist/vitest/index.mjs.map +1 -1
- package/dist/vitest/mock-kysely.d.mts +62 -0
- package/dist/vitest/mock.d.mts +9 -0
- package/dist/vitest/mocks/aigateway.d.mts +30 -0
- package/dist/vitest/mocks/authconnection.d.mts +28 -0
- package/dist/vitest/mocks/file.d.mts +41 -0
- package/dist/vitest/mocks/iconv.d.mts +27 -0
- package/dist/vitest/mocks/idp.d.mts +44 -0
- package/dist/vitest/mocks/secretmanager.d.mts +33 -0
- package/dist/vitest/mocks/tailordb.d.mts +71 -0
- package/dist/vitest/mocks/workflow.d.mts +115 -0
- package/dist/vitest/setup.d.mts +1 -2
- package/dist/vitest/setup.mjs +2 -2
- package/dist/vitest/workflow-local.d.mts +40 -0
- package/dist/{workflow-DgemCAz3.mjs → workflow-Bo59B75H.mjs} +16 -4
- package/dist/workflow-Bo59B75H.mjs.map +1 -0
- package/docs/cli/application.md +98 -250
- package/docs/cli/auth.md +48 -292
- package/docs/cli/completion.md +1 -25
- package/docs/cli/crashreport.md +3 -61
- package/docs/cli/executor.md +72 -183
- package/docs/cli/function.md +14 -130
- package/docs/cli/organization.md +11 -221
- package/docs/cli/plugin.md +29 -0
- package/docs/cli/query.md +2 -22
- package/docs/cli/secret.md +71 -251
- package/docs/cli/setup.md +138 -40
- package/docs/cli/skills.md +50 -39
- package/docs/cli/staticwebsite.md +32 -180
- package/docs/cli/tailordb.md +97 -323
- package/docs/cli/upgrade.md +2 -22
- package/docs/cli/user.md +78 -247
- package/docs/cli/workflow.md +150 -172
- package/docs/cli/workspace.md +165 -538
- package/docs/cli-reference.md +184 -78
- package/docs/configuration.md +10 -4
- package/docs/github-actions.md +64 -24
- package/docs/migration/v2.md +735 -0
- package/docs/multi-environment.md +29 -7
- package/docs/plugin/index.md +6 -6
- package/docs/quickstart.md +8 -7
- package/docs/runtime.md +6 -2
- package/docs/services/aigateway.md +18 -2
- package/docs/services/auth.md +44 -52
- package/docs/services/executor.md +3 -3
- package/docs/services/http-adapter.md +16 -1
- package/docs/services/idp.md +55 -2
- package/docs/services/resolver.md +7 -7
- package/docs/services/secret.md +11 -11
- package/docs/services/staticwebsite.md +8 -2
- package/docs/services/tailordb-migration.md +24 -22
- package/docs/services/tailordb.md +39 -14
- package/docs/services/workflow.md +18 -18
- package/docs/testing.md +108 -50
- package/package.json +46 -35
- package/postinstall.mjs +4 -6
- package/dist/application-DB2r36Et.mjs +0 -3
- package/dist/application-DqS1yBg3.mjs.map +0 -1
- package/dist/authconnection-D2MhtTN5.mjs.map +0 -1
- package/dist/authconnection-DvUQAjQS.d.mts +0 -39
- package/dist/client-Dbohmtkv.mjs +0 -3
- package/dist/client-z_oHGVNy.mjs.map +0 -1
- package/dist/context-BuuIb8CC.d.mts +0 -68
- package/dist/errors-Dtf2WPaW.mjs.map +0 -1
- package/dist/field-DOsJCPFa.mjs +0 -22
- package/dist/field-DOsJCPFa.mjs.map +0 -1
- package/dist/file-BB8Vs9O_.d.mts +0 -250
- package/dist/file-_oUZo76X.mjs.map +0 -1
- package/dist/file-utils-DcyIPFQh.mjs.map +0 -1
- package/dist/globals-Crz8o65k.mjs.map +0 -1
- package/dist/http-adapter.generated-WgMnb7Sb.d.mts +0 -580
- package/dist/iconv-Co-TOPuH.d.mts +0 -122
- package/dist/idp-BDbK5gjm.mjs.map +0 -1
- package/dist/idp-DrhVrLmV.d.mts +0 -160
- package/dist/index-5vPyRu1y.d.mts +0 -18
- package/dist/index-B7AKc18V.d.mts +0 -47
- package/dist/index-BlpzXncY.d.mts +0 -1016
- package/dist/index-CK7u9isy.d.mts +0 -46
- package/dist/index-CNYe5lnW.d.mts +0 -18
- package/dist/index-DjUdWlzf.d.mts +0 -18
- package/dist/index-ZePLwxw7.d.mts +0 -208
- package/dist/interceptor-D-q1rvRl.mjs.map +0 -1
- package/dist/job-fuc3j1Ma.mjs +0 -53
- package/dist/job-fuc3j1Ma.mjs.map +0 -1
- package/dist/kysely-type-DR8uzZTA.mjs.map +0 -1
- package/dist/mock-BjFj5o1I.mjs +0 -804
- package/dist/mock-BjFj5o1I.mjs.map +0 -1
- package/dist/registry-DdsYlL_P.mjs.map +0 -1
- package/dist/runtime-n9NCkjee.mjs.map +0 -1
- package/dist/schema-BhkpP5Hw.mjs.map +0 -1
- package/dist/secret-file-DBqZhjFQ.mjs.map +0 -1
- package/dist/secretmanager-B3n4KHfm.d.mts +0 -55
- package/dist/seed-jf3008-h.mjs.map +0 -1
- package/dist/service-CCL8ruDf.mjs +0 -459
- package/dist/service-CCL8ruDf.mjs.map +0 -1
- package/dist/service-D6yonf2I.mjs +0 -3
- package/dist/telemetry-CdqJEzkj.mjs.map +0 -1
- package/dist/telemetry-ClwW5ohF.mjs +0 -3
- package/dist/test-env-key-D9kM6ETE.mjs +0 -49
- package/dist/test-env-key-D9kM6ETE.mjs.map +0 -1
- package/dist/types-B2RpYyA_.mjs +0 -371
- package/dist/types-B2RpYyA_.mjs.map +0 -1
- package/dist/types-ClhIrW_C.mjs +0 -4
- package/dist/types-DCUhgpyI.d.mts +0 -784
- package/dist/types-DhO_VEZd.d.mts +0 -574
- package/dist/types-DwDgacni.d.mts +0 -338
- package/dist/workflow-BbKvGLQg.d.mts +0 -96
- package/dist/workflow-DgemCAz3.mjs.map +0 -1
|
@@ -208,7 +208,7 @@ Validation functions receive:
|
|
|
208
208
|
|
|
209
209
|
- `value` - The field value being validated
|
|
210
210
|
- `data` - The entire input object
|
|
211
|
-
- `
|
|
211
|
+
- `invoker` - The principal performing the operation
|
|
212
212
|
|
|
213
213
|
You can specify validation as:
|
|
214
214
|
|
|
@@ -234,8 +234,8 @@ Validation runs automatically before the `body` function executes. When validati
|
|
|
234
234
|
Define actual resolver logic in the `body` function. Function arguments include:
|
|
235
235
|
|
|
236
236
|
- `input` - Input data from GraphQL request
|
|
237
|
-
- `
|
|
238
|
-
- `invoker` - The principal running this function; equals `
|
|
237
|
+
- `caller` - The user or machine user who called this resolver; unaffected by `invoker`. `null` for anonymous calls.
|
|
238
|
+
- `invoker` - The principal running this function; equals `caller` by default, or the machine user configured through the resolver `invoker` option. `null` for anonymous calls.
|
|
239
239
|
- `env` - Environment variables declared in `tailor.config.ts`
|
|
240
240
|
|
|
241
241
|
### Using Kysely for Database Access
|
|
@@ -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
|
|
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
|
|
|
@@ -352,7 +352,7 @@ createResolver({
|
|
|
352
352
|
|
|
353
353
|
## Authentication
|
|
354
354
|
|
|
355
|
-
Specify an `
|
|
355
|
+
Specify an `invoker` to execute the resolver with machine user credentials. Pass the machine user name as a plain string — it is type-narrowed to the names you defined in your auth config:
|
|
356
356
|
|
|
357
357
|
```typescript
|
|
358
358
|
import { createResolver, t } from "@tailor-platform/sdk";
|
|
@@ -365,10 +365,10 @@ export default createResolver({
|
|
|
365
365
|
// Executes as "batch-processor" machine user
|
|
366
366
|
return { result: "ok" };
|
|
367
367
|
},
|
|
368
|
-
|
|
368
|
+
invoker: "batch-processor",
|
|
369
369
|
});
|
|
370
370
|
```
|
|
371
371
|
|
|
372
372
|
The machine user name is looked up in the auth service configured on your app (`machineUsers` in `defineAuth`). The namespace is resolved automatically — no need to import `auth` from `tailor.config.ts` in resolver files.
|
|
373
373
|
|
|
374
|
-
**Note:** `
|
|
374
|
+
**Note:** The `invoker` option controls the permissions for database operations and other platform actions. The `caller` object passed to `body` still reflects the original caller, while the `invoker` body field reflects the principal actually running the body.
|
package/docs/services/secret.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
206
|
+
tailor secret vault list
|
|
207
207
|
|
|
208
208
|
# List secrets in a vault (values are hidden)
|
|
209
|
-
tailor
|
|
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
|
|
216
|
+
tailor secret delete --vault-name api-keys --name old-key --yes
|
|
217
217
|
|
|
218
218
|
# Delete a vault (must be empty)
|
|
219
|
-
tailor
|
|
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
|
|
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", {
|
|
@@ -12,7 +12,7 @@ For the CLI command reference, see [`tailordb migration`](../cli/tailordb.md#tai
|
|
|
12
12
|
|
|
13
13
|
- **Local snapshot–based diff detection** — each migration is generated by diffing your current type definitions against the previous snapshot stored in `migrations/<NNNN>/`.
|
|
14
14
|
- **Transaction-wrapped data migrations** — each `migrate.ts` script runs inside a database transaction on the platform; if the script throws, all changes in that migration roll back.
|
|
15
|
-
- **Automatic execution during `apply`** — `tailor
|
|
15
|
+
- **Automatic execution during `apply`** — `tailor deploy` detects pending migrations, runs the two-stage type update (pre-migration → script → post-migration), and updates the migration checkpoint label.
|
|
16
16
|
- **Type-safe scripts** — the generated `db.ts` provides Kysely types that reflect the schema state **before** the migration runs, so transformations are written against the actual data shape.
|
|
17
17
|
|
|
18
18
|
**Files in `migrations/`**
|
|
@@ -42,24 +42,24 @@ When you start with no `migrations/` directory:
|
|
|
42
42
|
2. Define your initial types in `tailordb/`.
|
|
43
43
|
3. Generate the initial migration:
|
|
44
44
|
```bash
|
|
45
|
-
tailor
|
|
45
|
+
tailor tailordb migration generate
|
|
46
46
|
```
|
|
47
47
|
This creates `migrations/0000/schema.json` from your current types.
|
|
48
|
-
4. Run `tailor
|
|
48
|
+
4. Run `tailor deploy`. The migration label is set to `0000` on the deployed namespace.
|
|
49
49
|
|
|
50
50
|
### Adding migrations to an existing project
|
|
51
51
|
|
|
52
52
|
If you already have a deployed workspace whose schema matches your local type definitions:
|
|
53
53
|
|
|
54
54
|
1. Add the `migration` block to `tailor.config.ts`.
|
|
55
|
-
2. Run `tailor
|
|
56
|
-
3. Run `tailor
|
|
55
|
+
2. Run `tailor tailordb migration generate` to create `0000/schema.json` from current local types.
|
|
56
|
+
3. Run `tailor deploy`. Because remote schema already matches, no script runs; only the migration label is set.
|
|
57
57
|
|
|
58
58
|
If your local types and remote schema have **diverged**, reconcile them before introducing migrations — either update local types to match remote, or accept that the first non-`0000` migration will reflect that gap.
|
|
59
59
|
|
|
60
60
|
### Resetting
|
|
61
61
|
|
|
62
|
-
`tailor
|
|
62
|
+
`tailor tailordb migration generate --init` deletes the existing `migrations/` directory and starts over from `0000`. Use this only on projects that are not yet deployed, or when you have decided to re-baseline (the next `apply` will see all migrations as new and require coordination — see [Resetting a deployed project](#resetting-a-deployed-project)).
|
|
63
63
|
|
|
64
64
|
## Migration Workflow
|
|
65
65
|
|
|
@@ -79,7 +79,7 @@ A typical change cycle:
|
|
|
79
79
|
2. **Generate the migration.**
|
|
80
80
|
|
|
81
81
|
```bash
|
|
82
|
-
tailor
|
|
82
|
+
tailor tailordb migration generate --name "add email to user"
|
|
83
83
|
```
|
|
84
84
|
|
|
85
85
|
Output:
|
|
@@ -109,7 +109,7 @@ A typical change cycle:
|
|
|
109
109
|
|
|
110
110
|
4. **Apply.**
|
|
111
111
|
```bash
|
|
112
|
-
tailor
|
|
112
|
+
tailor deploy
|
|
113
113
|
```
|
|
114
114
|
The pre-migration phase relaxes the new field to optional, the script runs and populates values, then the post-migration phase enforces `required: true`.
|
|
115
115
|
|
|
@@ -126,10 +126,10 @@ Warning: data loss possible:
|
|
|
126
126
|
No `migrate.ts` is generated automatically because the schema change itself is non-breaking, but the existing data is dropped during the post-migration phase. If you need to preserve or transform that data first (for example, copy a column into another table before it disappears), add a script with:
|
|
127
127
|
|
|
128
128
|
```bash
|
|
129
|
-
tailor
|
|
129
|
+
tailor tailordb migration script 0002
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
-
This writes `migrations/0002/migrate.ts` and `migrations/0002/db.ts` next to the existing `diff.json`. The removed field stays readable inside `migrate.ts` because the pre-migration phase keeps it on the type until the script finishes (see [Per-migration phases](#per-migration-phases)). The next `tailor
|
|
132
|
+
This writes `migrations/0002/migrate.ts` and `migrations/0002/db.ts` next to the existing `diff.json`. The removed field stays readable inside `migrate.ts` because the pre-migration phase keeps it on the type until the script finishes (see [Per-migration phases](#per-migration-phases)). The next `tailor deploy` runs the script automatically — `migrate.ts` is executed whenever the file exists on disk, regardless of whether the diff itself required it.
|
|
133
133
|
|
|
134
134
|
## Configuration
|
|
135
135
|
|
|
@@ -245,7 +245,7 @@ The same pattern works for switching between scalar and array.
|
|
|
245
245
|
|
|
246
246
|
## Automatic Migration Execution
|
|
247
247
|
|
|
248
|
-
When you run `tailor
|
|
248
|
+
When you run `tailor deploy`, the SDK detects pending migrations (anything past the current `sdk-migration` label on the deployed namespace) and runs them in order before continuing with the rest of the apply.
|
|
249
249
|
|
|
250
250
|
### Per-migration phases
|
|
251
251
|
|
|
@@ -275,10 +275,12 @@ Namespace: tailordb
|
|
|
275
275
|
- Field 'email': required: remote=false, expected=true
|
|
276
276
|
```
|
|
277
277
|
|
|
278
|
+
The error also points you at `migration status`, `migration generate`, `migration sync`, and `migration set` — see [Remote schema drift detected](#remote-schema-drift-detected) for which one applies.
|
|
279
|
+
|
|
278
280
|
To bypass both checks (not recommended outside of recovery scenarios):
|
|
279
281
|
|
|
280
282
|
```bash
|
|
281
|
-
tailor
|
|
283
|
+
tailor deploy --no-schema-check
|
|
282
284
|
```
|
|
283
285
|
|
|
284
286
|
### Example output
|
|
@@ -297,7 +299,7 @@ tailor-sdk deploy --no-schema-check
|
|
|
297
299
|
|
|
298
300
|
## `migration set` Semantics
|
|
299
301
|
|
|
300
|
-
`tailor
|
|
302
|
+
`tailor tailordb migration set <N>` updates the `sdk-migration` label on the deployed namespace's metadata. **It does not modify any data or schema.** It only changes which migrations the next `apply` will consider pending.
|
|
301
303
|
|
|
302
304
|
| Movement | Effect on next `apply` | Effect on data |
|
|
303
305
|
| -------------------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------- |
|
|
@@ -314,7 +316,7 @@ Use cases:
|
|
|
314
316
|
|
|
315
317
|
## `migration sync` Semantics
|
|
316
318
|
|
|
317
|
-
`tailor
|
|
319
|
+
`tailor tailordb migration sync <N>` reconstructs the schema snapshot at migration `N` from the working tree's migration history and **overwrites the remote schema to match it**, then sets the `sdk-migration` label to `N`. Unlike `migration set`, it changes the remote schema as well as the bookkeeping. Like `set`, it never runs `migrate.ts` scripts itself — it only changes what the next `apply` considers pending:
|
|
318
320
|
|
|
319
321
|
| Movement | Effect on next `apply` | Effect on data |
|
|
320
322
|
| -------------------------------- | ----------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------- |
|
|
@@ -325,7 +327,7 @@ Before anything is sent to the remote, `sync` verifies that replaying the full m
|
|
|
325
327
|
|
|
326
328
|
Because syncing backward causes already-applied scripts to re-execute on the next deploy, **write `migrate.ts` scripts to be idempotent** (see [Performance and Large Tables](#performance-and-large-tables) for resumable `where` clauses).
|
|
327
329
|
|
|
328
|
-
The main use case is recovering from drift after a `deploy --no-schema-check` from an older revision: instead of checking out that revision, run `migration sync <N>` to restore the remote to a known snapshot, then `tailor
|
|
330
|
+
The main use case is recovering from drift after a `deploy --no-schema-check` from an older revision: instead of checking out that revision, run `migration sync <N>` to restore the remote to a known snapshot, then `tailor deploy` to apply the remaining migrations from the working tree.
|
|
329
331
|
|
|
330
332
|
## Team Workflow and CI/CD
|
|
331
333
|
|
|
@@ -340,7 +342,7 @@ Migration numbers are assigned sequentially, so two developers branching off the
|
|
|
340
342
|
### CI / CD
|
|
341
343
|
|
|
342
344
|
- For non-interactive environments, pass `--yes` to `migration generate` and `--yes` to `apply`. `apply` runs migrations automatically when the `migrations/` directory is configured.
|
|
343
|
-
- Run `tailor
|
|
345
|
+
- Run `tailor tailordb migration status` in CI to detect "developer forgot to commit a migration" situations early. The exit code is non-zero only on errors, so check the output.
|
|
344
346
|
- Avoid running migrations in parallel against the same workspace — there is no locking. Serialize deploys per environment.
|
|
345
347
|
|
|
346
348
|
### Resetting a deployed project
|
|
@@ -348,8 +350,8 @@ Migration numbers are assigned sequentially, so two developers branching off the
|
|
|
348
350
|
`migration generate --init` is destructive locally but does not touch the deployed workspace. Re-baselining a deployed project requires:
|
|
349
351
|
|
|
350
352
|
1. Run `migration generate --init` to start over from `0000`.
|
|
351
|
-
2. Run `tailor
|
|
352
|
-
3. Run `tailor
|
|
353
|
+
2. Run `tailor tailordb migration set 0` against the deployed namespace.
|
|
354
|
+
3. Run `tailor deploy` — the new `0000` becomes the baseline.
|
|
353
355
|
|
|
354
356
|
Coordinate this with your team because everyone else's local migrations will be invalidated.
|
|
355
357
|
|
|
@@ -367,7 +369,7 @@ After a failure:
|
|
|
367
369
|
|
|
368
370
|
1. Read the `Logs:` block in the apply output to find the cause.
|
|
369
371
|
2. Fix `migrate.ts` (or the data it depends on).
|
|
370
|
-
3. Re-run `tailor
|
|
372
|
+
3. Re-run `tailor deploy`. The same migration runs again because its label was never bumped, and the prior-checkpoint schema is a clean baseline to retry against.
|
|
371
373
|
|
|
372
374
|
If a migration **succeeds in script** but the **post-migration phase** fails (rare; usually a constraint violation the script should have prevented), the pre-migration changes are **not** rolled back: the script's data changes are already committed and the post-migration phase may have dropped removed columns or types, which cannot be reverted without data loss. Investigate, fix, and re-run.
|
|
373
375
|
|
|
@@ -396,7 +398,7 @@ The machine user needs read/write access to every type the migration script touc
|
|
|
396
398
|
|
|
397
399
|
If you see `No machine user available for migration execution`, either:
|
|
398
400
|
|
|
399
|
-
- Add `machineUsers: { ... }` to your auth config and `tailor
|
|
401
|
+
- Add `machineUsers: { ... }` to your auth config and `tailor deploy` it, or
|
|
400
402
|
- Set `migration.machineUser` to an existing machine user name in the db config.
|
|
401
403
|
|
|
402
404
|
## Multi-Namespace Coordination
|
|
@@ -439,7 +441,7 @@ For genuinely different schemas across environments, prefer separate workspaces
|
|
|
439
441
|
|
|
440
442
|
**Resolution:**
|
|
441
443
|
|
|
442
|
-
1. `tailor
|
|
444
|
+
1. `tailor tailordb migration status` to see local vs remote.
|
|
443
445
|
2. Compare with teammates — has someone applied different migrations?
|
|
444
446
|
3. If remote was changed manually, decide whether to update local migrations to match or to use `migration set <N>` to align bookkeeping.
|
|
445
447
|
4. To force the remote schema back to a known snapshot, use `migration sync <N>` (see [`migration sync` Semantics](#migration-sync-semantics)).
|
|
@@ -471,7 +473,7 @@ For genuinely different schemas across environments, prefer separate workspaces
|
|
|
471
473
|
|
|
472
474
|
**Cause:** Runtime error in your `migrate.ts`, a permission error from the machine user, or a constraint violation when post-migration tightens types.
|
|
473
475
|
|
|
474
|
-
**Resolution:** Read the `Logs:` block. Fix the script or the data assumption it relies on, and re-run `tailor
|
|
476
|
+
**Resolution:** Read the `Logs:` block. Fix the script or the data assumption it relies on, and re-run `tailor deploy`. The label is not bumped on failure, so the same migration retries.
|
|
475
477
|
|
|
476
478
|
### `migrate.ts` not found for a migration that needs one
|
|
477
479
|
|
|
@@ -254,13 +254,36 @@ type User {
|
|
|
254
254
|
- `toward.as` - Customizes the field name for accessing the related type from this type
|
|
255
255
|
- `backward` - Customizes the field name for accessing this type from the related type
|
|
256
256
|
|
|
257
|
+
Relation names share the same GraphQL field namespace as fields, files, and other relations on
|
|
258
|
+
the type. The SDK rejects duplicate or empty relation names. Use `toward.as` when multiple fields
|
|
259
|
+
on the same type point to the same target type, because their default forward names are derived
|
|
260
|
+
from the target type name:
|
|
261
|
+
|
|
262
|
+
```typescript
|
|
263
|
+
const post = db.type("Post", {
|
|
264
|
+
authorID: db.uuid().relation({
|
|
265
|
+
type: "n-1",
|
|
266
|
+
toward: { type: user, as: "author" },
|
|
267
|
+
backward: "authoredPosts",
|
|
268
|
+
}),
|
|
269
|
+
reviewerID: db.uuid().relation({
|
|
270
|
+
type: "n-1",
|
|
271
|
+
toward: { type: user, as: "reviewer" },
|
|
272
|
+
backward: "reviewedPosts",
|
|
273
|
+
}),
|
|
274
|
+
});
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
Use `toward.as` or `backward` when a generated relation name would conflict with an existing
|
|
278
|
+
field, files entry, or relation on the same type.
|
|
279
|
+
|
|
257
280
|
### Hooks
|
|
258
281
|
|
|
259
282
|
Add hooks to execute functions during data creation or update. Hooks receive three arguments:
|
|
260
283
|
|
|
261
284
|
- `value`: User input if provided, otherwise existing value on update or null on create
|
|
262
285
|
- `data`: Entire record data (for accessing other field values)
|
|
263
|
-
- `
|
|
286
|
+
- `invoker`: Principal performing the operation
|
|
264
287
|
|
|
265
288
|
#### Field-level Hooks
|
|
266
289
|
|
|
@@ -268,7 +291,7 @@ Set hooks directly on individual fields:
|
|
|
268
291
|
|
|
269
292
|
```typescript
|
|
270
293
|
db.string().hooks({
|
|
271
|
-
create: ({
|
|
294
|
+
create: ({ invoker }) => invoker?.id ?? "",
|
|
272
295
|
update: ({ value }) => value,
|
|
273
296
|
});
|
|
274
297
|
```
|
|
@@ -323,7 +346,7 @@ Add validation rules to fields. Validators receive three arguments (executed aft
|
|
|
323
346
|
|
|
324
347
|
- `value`: Field value after hook transformation
|
|
325
348
|
- `data`: Entire record data after hook transformations (for accessing other field values)
|
|
326
|
-
- `
|
|
349
|
+
- `invoker`: Principal performing the operation
|
|
327
350
|
|
|
328
351
|
Validators return `true` for success, `false` for failure. Use array form `[validator, errorMessage]` for custom error messages.
|
|
329
352
|
|
|
@@ -409,6 +432,8 @@ export const user = db.type("User", {
|
|
|
409
432
|
});
|
|
410
433
|
```
|
|
411
434
|
|
|
435
|
+
`db.fields.timestamps()` adds non-null `createdAt` and `updatedAt` datetime fields. Both fields are populated when a record is created; provided values are preserved so seed data can use historical timestamps. `updatedAt` is also refreshed automatically when a record is updated.
|
|
436
|
+
|
|
412
437
|
## Type Modifiers
|
|
413
438
|
|
|
414
439
|
### Composite Indexes
|
|
@@ -461,7 +486,7 @@ db.type("User", {
|
|
|
461
486
|
|
|
462
487
|
- When `publishEvents: true`, record creation/update/deletion events are published
|
|
463
488
|
- When not specified, it is **automatically set to `true`** if an executor uses this type with `recordCreatedTrigger`, `recordUpdatedTrigger`, or `recordDeletedTrigger`
|
|
464
|
-
- When explicitly set to `false` while an executor uses this type, an error is thrown during `tailor
|
|
489
|
+
- When explicitly set to `false` while an executor uses this type, an error is thrown during `tailor deploy`
|
|
465
490
|
|
|
466
491
|
**Use cases:**
|
|
467
492
|
|
|
@@ -516,8 +541,8 @@ const user = db.type("User", {
|
|
|
516
541
|
...db.fields.timestamps(),
|
|
517
542
|
});
|
|
518
543
|
|
|
519
|
-
// Pick id and
|
|
520
|
-
user.pickFields(["id", "createdAt"], { optional: true });
|
|
544
|
+
// Pick id, createdAt, and updatedAt, making them optional
|
|
545
|
+
user.pickFields(["id", "createdAt", "updatedAt"], { optional: true });
|
|
521
546
|
```
|
|
522
547
|
|
|
523
548
|
Available options:
|
|
@@ -532,8 +557,8 @@ Available options:
|
|
|
532
557
|
Return all fields except the specified ones:
|
|
533
558
|
|
|
534
559
|
```typescript
|
|
535
|
-
// All fields except id and
|
|
536
|
-
user.omitFields(["id", "createdAt"]);
|
|
560
|
+
// All fields except id, createdAt, and updatedAt
|
|
561
|
+
user.omitFields(["id", "createdAt", "updatedAt"]);
|
|
537
562
|
```
|
|
538
563
|
|
|
539
564
|
#### Common Pattern: Input Schema Composition
|
|
@@ -548,9 +573,9 @@ export default createResolver({
|
|
|
548
573
|
name: "createUser",
|
|
549
574
|
operation: "mutation",
|
|
550
575
|
input: {
|
|
551
|
-
// id/createdAt are optional (auto-generated), other fields are required
|
|
552
|
-
...user.pickFields(["id", "createdAt"], { optional: true }),
|
|
553
|
-
...user.omitFields(["id", "createdAt"]),
|
|
576
|
+
// id/createdAt/updatedAt are optional (auto-generated), other fields are required
|
|
577
|
+
...user.pickFields(["id", "createdAt", "updatedAt"], { optional: true }),
|
|
578
|
+
...user.omitFields(["id", "createdAt", "updatedAt"]),
|
|
554
579
|
},
|
|
555
580
|
output: t.object({ id: t.uuid() }),
|
|
556
581
|
body: async (context) => {
|
|
@@ -567,8 +592,8 @@ import { t } from "@tailor-platform/sdk";
|
|
|
567
592
|
import { invoice } from "../../tailordb/invoice";
|
|
568
593
|
|
|
569
594
|
const schemaType = t.object({
|
|
570
|
-
...invoice.pickFields(["id", "createdAt"], { optional: true }),
|
|
571
|
-
...invoice.omitFields(["id", "createdAt", "invoiceNumber", "sequentialId"]),
|
|
595
|
+
...invoice.pickFields(["id", "createdAt", "updatedAt"], { optional: true }),
|
|
596
|
+
...invoice.omitFields(["id", "createdAt", "updatedAt", "invoiceNumber", "sequentialId"]),
|
|
572
597
|
});
|
|
573
598
|
```
|
|
574
599
|
|
|
@@ -620,6 +645,6 @@ db.type("User", {
|
|
|
620
645
|
|
|
621
646
|
## Migrations
|
|
622
647
|
|
|
623
|
-
When you change a TailorDB type definition, the SDK can generate a migration that captures the diff and, for breaking changes, runs a data transformation script during `tailor
|
|
648
|
+
When you change a TailorDB type definition, the SDK can generate a migration that captures the diff and, for breaking changes, runs a data transformation script during `tailor deploy`. See the [TailorDB Migrations guide](./tailordb-migration.md) for the full workflow, configuration, supported change types, team coordination, and troubleshooting.
|
|
624
649
|
|
|
625
650
|
For the CLI command reference, see [`tailordb migration`](../cli/tailordb.md#tailordb-migration).
|
|
@@ -180,8 +180,8 @@ export const processOrder = createWorkflowJob({
|
|
|
180
180
|
name: "process-order",
|
|
181
181
|
body: (input: { customerId: string }, { env, invoker }) => {
|
|
182
182
|
// `env` contains values from `tailor.config.ts` -> `env`.
|
|
183
|
-
// `invoker` is the principal running this job,
|
|
184
|
-
//
|
|
183
|
+
// `invoker` is the principal running this job, or the machine user
|
|
184
|
+
// configured through the trigger `invoker` option; `null` for anonymous calls.
|
|
185
185
|
// Trigger other jobs by calling .trigger() on the job object.
|
|
186
186
|
const customer = fetchCustomer.trigger({
|
|
187
187
|
customerId: input.customerId,
|
|
@@ -207,23 +207,23 @@ Wait points allow a workflow job to suspend execution and wait for an external s
|
|
|
207
207
|
|
|
208
208
|
### Defining Wait Points
|
|
209
209
|
|
|
210
|
-
Use `
|
|
210
|
+
Use `createWaitPoint` to create a single typed wait point:
|
|
211
211
|
|
|
212
212
|
```typescript
|
|
213
|
-
import {
|
|
213
|
+
import { createWaitPoint } from "@tailor-platform/sdk";
|
|
214
214
|
|
|
215
|
-
export const approval =
|
|
215
|
+
export const approval = createWaitPoint<
|
|
216
216
|
{ message: string; requestId: string },
|
|
217
217
|
{ approved: boolean }
|
|
218
218
|
>("approval");
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
For multiple wait points, use `
|
|
221
|
+
For multiple wait points, use `createWaitPoints` with a builder callback. Property names become wait point keys, and JSDoc on each property is preserved in IDE autocompletion:
|
|
222
222
|
|
|
223
223
|
```typescript
|
|
224
|
-
import {
|
|
224
|
+
import { createWaitPoints } from "@tailor-platform/sdk";
|
|
225
225
|
|
|
226
|
-
export const waitPoints =
|
|
226
|
+
export const waitPoints = createWaitPoints((define) => ({
|
|
227
227
|
/** Manager approval step */
|
|
228
228
|
managerApproval: define<{ amount: number }, { approved: boolean }>(),
|
|
229
229
|
/** Finance review step */
|
|
@@ -245,9 +245,9 @@ Both must be JsonValue-compatible (plain objects/arrays; no class instances or f
|
|
|
245
245
|
Call `.wait()` inside a workflow job body to suspend execution:
|
|
246
246
|
|
|
247
247
|
```typescript
|
|
248
|
-
import { createWorkflow, createWorkflowJob
|
|
248
|
+
import { createWaitPoint, createWorkflow, createWorkflowJob } from "@tailor-platform/sdk";
|
|
249
249
|
|
|
250
|
-
export const approval =
|
|
250
|
+
export const approval = createWaitPoint<
|
|
251
251
|
{ message: string; requestId: string },
|
|
252
252
|
{ approved: boolean }
|
|
253
253
|
>("approval");
|
|
@@ -356,7 +356,7 @@ export default createWorkflow({
|
|
|
356
356
|
You can start a workflow execution from a resolver using `workflow.trigger()`.
|
|
357
357
|
|
|
358
358
|
- `workflow.trigger(args, options?)` returns a workflow run ID (`Promise<string>`).
|
|
359
|
-
- To run with machine-user permissions, pass `{
|
|
359
|
+
- To run with machine-user permissions, pass `{ invoker: "<machine-user>" }`. The name is type-narrowed to the machine users defined in your auth config.
|
|
360
360
|
|
|
361
361
|
```typescript
|
|
362
362
|
import { createResolver, t } from "@tailor-platform/sdk";
|
|
@@ -372,7 +372,7 @@ export default createResolver({
|
|
|
372
372
|
body: async ({ input }) => {
|
|
373
373
|
const workflowRunId = await orderProcessingWorkflow.trigger(
|
|
374
374
|
{ orderId: input.orderId, customerId: input.customerId },
|
|
375
|
-
{
|
|
375
|
+
{ invoker: "manager-machine-user" },
|
|
376
376
|
);
|
|
377
377
|
|
|
378
378
|
return { workflowRunId };
|
|
@@ -406,22 +406,22 @@ Manage workflows using the CLI:
|
|
|
406
406
|
|
|
407
407
|
```bash
|
|
408
408
|
# List workflows
|
|
409
|
-
tailor
|
|
409
|
+
tailor workflow list
|
|
410
410
|
|
|
411
411
|
# Get workflow details
|
|
412
|
-
tailor
|
|
412
|
+
tailor workflow get <name>
|
|
413
413
|
|
|
414
414
|
# Start a workflow
|
|
415
|
-
tailor
|
|
415
|
+
tailor workflow start <name> -m <machine-user> -a '{"key": "value"}'
|
|
416
416
|
|
|
417
417
|
# List executions
|
|
418
|
-
tailor
|
|
418
|
+
tailor workflow executions
|
|
419
419
|
|
|
420
420
|
# Get execution details with logs
|
|
421
|
-
tailor
|
|
421
|
+
tailor workflow executions <execution-id> --logs
|
|
422
422
|
|
|
423
423
|
# Resume a failed execution
|
|
424
|
-
tailor
|
|
424
|
+
tailor workflow resume <execution-id>
|
|
425
425
|
```
|
|
426
426
|
|
|
427
427
|
See [Workflow CLI Commands](../cli/workflow.md) for full documentation.
|