@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
package/docs/testing.md
CHANGED
|
@@ -11,22 +11,22 @@ Lean on unit tests for the day-to-day feedback loop — they run fast and exerci
|
|
|
11
11
|
|
|
12
12
|
Unit-test entrypoints exposed by the SDK:
|
|
13
13
|
|
|
14
|
-
- `resolver.body({ input,
|
|
15
|
-
- `workflowJob.body(input, { env })` — invoke a workflow job body directly
|
|
14
|
+
- `resolver.body({ input, caller, invoker, env })` — invoke a resolver
|
|
15
|
+
- `workflowJob.body(input, { env, invoker })` — invoke a workflow job body directly
|
|
16
16
|
- `workflowJob.trigger(input)` — chain a workflow job through the workflow runtime
|
|
17
17
|
- `runWorkflowLocally(workflow, args)` — run a workflow chain locally with real job bodies
|
|
18
|
-
- `executor.operation.body(args)` — invoke a function-kind executor
|
|
18
|
+
- `executor.operation.body({ ...args, invoker })` — invoke a function-kind executor
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
For anonymous direct calls:
|
|
21
21
|
|
|
22
|
-
- `
|
|
22
|
+
- Pass `null` for anonymous `caller` / `invoker` context in direct unit tests.
|
|
23
23
|
|
|
24
24
|
Platform API mocks under `@tailor-platform/sdk/vitest` (for use with the [`tailor-runtime` Vitest environment](#runtime-environment-emulation-beta) below):
|
|
25
25
|
|
|
26
26
|
- `mockTailordb` — TailorDB query stubs and call recording
|
|
27
27
|
- `mockWorkflow` — `tailor.workflow` job / wait / resolve mocks
|
|
28
28
|
- `runWorkflowLocally` — local full-chain workflow runner
|
|
29
|
-
- `mockSecretmanager`, `mockAuthconnection`, `mockIdp`, `mockFile`, `mockIconv` — corresponding platform API mocks
|
|
29
|
+
- `mockSecretmanager`, `mockAuthconnection`, `mockIdp`, `mockFile`, `mockIconv`, `mockAigateway` — corresponding platform API mocks
|
|
30
30
|
|
|
31
31
|
For tighter alignment with the production runtime — Node.js module blocking, Web-only globals, and platform API mocks — pair the resolver helpers with the [`tailor-runtime` Vitest environment](#runtime-environment-emulation-beta) below.
|
|
32
32
|
|
|
@@ -63,7 +63,7 @@ export default defineConfig({
|
|
|
63
63
|
|
|
64
64
|
### Acquiring mocks with `using`
|
|
65
65
|
|
|
66
|
-
Each mock controller (`mockTailordb`, `mockWorkflow`, `mockSecretmanager`, `mockAuthconnection`, `mockIdp`, `mockFile`, `mockIconv`) is a **factory function**. Acquire it inside a test with a [`using` declaration](https://github.com/tc39/proposal-explicit-resource-management) — its state is reset automatically when the test scope exits, so you no longer need `beforeEach(() => mock.reset())`:
|
|
66
|
+
Each mock controller (`mockTailordb`, `mockWorkflow`, `mockSecretmanager`, `mockAuthconnection`, `mockIdp`, `mockFile`, `mockIconv`, `mockAigateway`) is a **factory function**. Acquire it inside a test with a [`using` declaration](https://github.com/tc39/proposal-explicit-resource-management) — its state is reset automatically when the test scope exits, so you no longer need `beforeEach(() => mock.reset())`:
|
|
67
67
|
|
|
68
68
|
```typescript
|
|
69
69
|
import { mockTailordb } from "@tailor-platform/sdk/vitest";
|
|
@@ -99,7 +99,12 @@ test("resolver queries the database", async () => {
|
|
|
99
99
|
[], // COMMIT
|
|
100
100
|
);
|
|
101
101
|
|
|
102
|
-
const result = await resolver.body({
|
|
102
|
+
const result = await resolver.body({
|
|
103
|
+
input: { email: "test@example.com" },
|
|
104
|
+
caller: null,
|
|
105
|
+
invoker: null,
|
|
106
|
+
env: {},
|
|
107
|
+
});
|
|
103
108
|
|
|
104
109
|
expect(result).toEqual({ oldAge: 30, newAge: 31 });
|
|
105
110
|
expect(db.executedQueries).toHaveLength(3);
|
|
@@ -121,7 +126,12 @@ test("content-based mock", async () => {
|
|
|
121
126
|
return [];
|
|
122
127
|
});
|
|
123
128
|
|
|
124
|
-
const result = await resolver.body({
|
|
129
|
+
const result = await resolver.body({
|
|
130
|
+
input: { userId: "1" },
|
|
131
|
+
caller: null,
|
|
132
|
+
invoker: null,
|
|
133
|
+
env: {},
|
|
134
|
+
});
|
|
125
135
|
|
|
126
136
|
expect(db.executedQueries[0].query).toContain("SELECT");
|
|
127
137
|
});
|
|
@@ -163,6 +173,8 @@ wf.enqueueResult({ valid: true });
|
|
|
163
173
|
wf.enqueueResults({ valid: true }, { txnId: "txn-1" });
|
|
164
174
|
```
|
|
165
175
|
|
|
176
|
+
Use `wf.setEnv(...)` when locally-run workflow job bodies need configuration values. Per-run `runWorkflowLocally(..., { env })` options take precedence over the mock's env.
|
|
177
|
+
|
|
166
178
|
### SecretManager Mock
|
|
167
179
|
|
|
168
180
|
```typescript
|
|
@@ -188,7 +200,7 @@ import { mockAuthconnection } from "@tailor-platform/sdk/vitest";
|
|
|
188
200
|
test("returns configured token", async () => {
|
|
189
201
|
using ac = mockAuthconnection();
|
|
190
202
|
ac.setTokens({
|
|
191
|
-
google: { access_token: "ya29.xxx"
|
|
203
|
+
google: { access_token: "ya29.xxx" },
|
|
192
204
|
});
|
|
193
205
|
|
|
194
206
|
const token = await tailor.authconnection.getConnectionToken("google");
|
|
@@ -265,28 +277,6 @@ test("mock file download stream", async () => {
|
|
|
265
277
|
});
|
|
266
278
|
```
|
|
267
279
|
|
|
268
|
-
For the deprecated `openDownloadStream`, enqueue an iterable of `StreamValue` items — `metadata`, one or more `chunk` items, and a terminal `complete`. Raw `Uint8Array` / `ArrayBuffer` chunks are rejected so tests stay aligned with the platform's structured stream contract.
|
|
269
|
-
|
|
270
|
-
```typescript
|
|
271
|
-
test("mock file download stream (deprecated openDownloadStream)", async () => {
|
|
272
|
-
using file = mockFile();
|
|
273
|
-
file.enqueueResult([
|
|
274
|
-
{
|
|
275
|
-
type: "metadata",
|
|
276
|
-
metadata: { contentType: "image/png", fileSize: 3, sha256sum: "abc" },
|
|
277
|
-
},
|
|
278
|
-
{ type: "chunk", data: new Uint8Array([1, 2]), position: 0 },
|
|
279
|
-
{ type: "chunk", data: new Uint8Array([3]), position: 2 },
|
|
280
|
-
{ type: "complete" },
|
|
281
|
-
]);
|
|
282
|
-
|
|
283
|
-
const stream = await tailordb.file.openDownloadStream("ns", "Doc", "attachment", "r-1");
|
|
284
|
-
const items = [];
|
|
285
|
-
for await (const item of stream) items.push(item);
|
|
286
|
-
expect(items).toHaveLength(4);
|
|
287
|
-
});
|
|
288
|
-
```
|
|
289
|
-
|
|
290
280
|
### Iconv Mock
|
|
291
281
|
|
|
292
282
|
```typescript
|
|
@@ -305,6 +295,23 @@ test("mock encoding conversion", () => {
|
|
|
305
295
|
});
|
|
306
296
|
```
|
|
307
297
|
|
|
298
|
+
### AI Gateway Mock
|
|
299
|
+
|
|
300
|
+
```typescript
|
|
301
|
+
import { mockAigateway } from "@tailor-platform/sdk/vitest";
|
|
302
|
+
|
|
303
|
+
test("resolves an AI Gateway URL", async () => {
|
|
304
|
+
using aigateway = mockAigateway();
|
|
305
|
+
aigateway.setUrls({ "my-aigateway": "https://my-aigateway.example.com" });
|
|
306
|
+
|
|
307
|
+
const { url } = await tailor.aigateway.get("my-aigateway");
|
|
308
|
+
expect(url).toBe("https://my-aigateway.example.com");
|
|
309
|
+
expect(aigateway.calls).toEqual([{ name: "my-aigateway" }]);
|
|
310
|
+
});
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Calling `get` for a name that hasn't been registered via `setUrls` throws.
|
|
314
|
+
|
|
308
315
|
### Loading Secrets from Config
|
|
309
316
|
|
|
310
317
|
Pass a config path to load `defineSecretManager()` values into the mock:
|
|
@@ -367,7 +374,6 @@ Unit tests call `.body()` (or `.trigger()`) directly on a resolver, workflow job
|
|
|
367
374
|
For pure logic with no external dependencies, invoke `.body()` directly:
|
|
368
375
|
|
|
369
376
|
```typescript
|
|
370
|
-
import { unauthenticatedTailorUser } from "@tailor-platform/sdk/test";
|
|
371
377
|
import { describe, expect, test } from "vitest";
|
|
372
378
|
import resolver from "../src/resolver/add";
|
|
373
379
|
|
|
@@ -375,7 +381,8 @@ describe("add resolver", () => {
|
|
|
375
381
|
test("adds two numbers", async () => {
|
|
376
382
|
const result = await resolver.body({
|
|
377
383
|
input: { left: 1, right: 2 },
|
|
378
|
-
|
|
384
|
+
caller: null,
|
|
385
|
+
invoker: null,
|
|
379
386
|
env: {},
|
|
380
387
|
});
|
|
381
388
|
expect(result).toBe(3);
|
|
@@ -392,7 +399,6 @@ Stub the global `tailordb.Client` and queue raw query results in order. Best for
|
|
|
392
399
|
> If you are running with the [`tailor-runtime` Vitest environment](#runtime-environment-emulation-beta), acquire `using db = mockTailordb()` to install and drive the mock `tailordb.Client` instead of `vi.stubGlobal()`.
|
|
393
400
|
|
|
394
401
|
```typescript
|
|
395
|
-
import { unauthenticatedTailorUser } from "@tailor-platform/sdk/test";
|
|
396
402
|
import { afterAll, afterEach, beforeAll, describe, expect, test, vi } from "vitest";
|
|
397
403
|
import resolver from "../src/resolver/incrementUserAge";
|
|
398
404
|
|
|
@@ -422,7 +428,8 @@ describe("incrementUserAge resolver", () => {
|
|
|
422
428
|
|
|
423
429
|
const result = await resolver.body({
|
|
424
430
|
input: { email: "test@example.com" },
|
|
425
|
-
|
|
431
|
+
caller: null,
|
|
432
|
+
invoker: null,
|
|
426
433
|
env: {},
|
|
427
434
|
});
|
|
428
435
|
|
|
@@ -493,7 +500,6 @@ describe("decrementUserAge", () => {
|
|
|
493
500
|
Pass `mock.db` to functions that take a Kysely instance. When a resolver or executor calls `getDB()` internally there is no such seam, so spy the generated `getDB` and point it at the mock:
|
|
494
501
|
|
|
495
502
|
```typescript
|
|
496
|
-
import { unauthenticatedTailorUser } from "@tailor-platform/sdk/test";
|
|
497
503
|
import { createKyselyMock } from "@tailor-platform/sdk/vitest";
|
|
498
504
|
import { describe, expect, test, vi } from "vitest";
|
|
499
505
|
import { getDB, type Namespace } from "../generated/db";
|
|
@@ -525,7 +531,8 @@ describe("upsertUsers resolver", () => {
|
|
|
525
531
|
{ name: "Existing", email: "exists@example.com", age: 41 },
|
|
526
532
|
],
|
|
527
533
|
},
|
|
528
|
-
|
|
534
|
+
caller: null,
|
|
535
|
+
invoker: null,
|
|
529
536
|
env: { appName: "Resolver Template", version: 1 },
|
|
530
537
|
});
|
|
531
538
|
|
|
@@ -544,7 +551,6 @@ Reach for [`mockTailordb`](#mocking-the-tailordb-client) instead when you want t
|
|
|
544
551
|
Resolvers that call `waitPoint.resolve(...)` delegate to `tailor.workflow.resolve` at runtime. With the `tailor-runtime` environment active, use `mockWorkflow().setResolveHandler` to drive the user-supplied callback and inspect `resolveCalls`:
|
|
545
552
|
|
|
546
553
|
```typescript
|
|
547
|
-
import { unauthenticatedTailorUser } from "@tailor-platform/sdk/test";
|
|
548
554
|
import { mockWorkflow } from "@tailor-platform/sdk/vitest";
|
|
549
555
|
import { describe, expect, test } from "vitest";
|
|
550
556
|
import resolver from "./resolveApproval";
|
|
@@ -559,7 +565,8 @@ describe("resolveApproval resolver", () => {
|
|
|
559
565
|
|
|
560
566
|
const result = await resolver.body({
|
|
561
567
|
input: { executionId: "exec-1", approved: true },
|
|
562
|
-
|
|
568
|
+
caller: null,
|
|
569
|
+
invoker: null,
|
|
563
570
|
env: {},
|
|
564
571
|
});
|
|
565
572
|
|
|
@@ -571,9 +578,38 @@ describe("resolveApproval resolver", () => {
|
|
|
571
578
|
|
|
572
579
|
`setResolveHandler` receives `(executionId, key, callback)` and decides whether to invoke the callback — that's how you assert the value returned to the suspended job.
|
|
573
580
|
|
|
581
|
+
#### Resolvers that resume failed workflows
|
|
582
|
+
|
|
583
|
+
Resolvers or executors that call `workflow.resumeWorkflow(executionId)` delegate to `tailor.workflow.resumeWorkflow` at runtime. With the `tailor-runtime` environment active, use `mockWorkflow().setResumeHandler` to control the returned execution ID and inspect `resumeWorkflow.mock.calls`:
|
|
584
|
+
|
|
585
|
+
```typescript
|
|
586
|
+
import { unauthenticatedTailorUser } from "@tailor-platform/sdk/test";
|
|
587
|
+
import { mockWorkflow } from "@tailor-platform/sdk/vitest";
|
|
588
|
+
import { describe, expect, test } from "vitest";
|
|
589
|
+
import resolver from "./retryFailedWorkflow";
|
|
590
|
+
|
|
591
|
+
describe("retryFailedWorkflow resolver", () => {
|
|
592
|
+
test("resumes a failed workflow execution", async () => {
|
|
593
|
+
using wf = mockWorkflow();
|
|
594
|
+
wf.setResumeHandler("exec-resumed-123");
|
|
595
|
+
|
|
596
|
+
const result = await resolver.body({
|
|
597
|
+
input: { executionId: "exec-failed-456" },
|
|
598
|
+
user: unauthenticatedTailorUser,
|
|
599
|
+
env: {},
|
|
600
|
+
});
|
|
601
|
+
|
|
602
|
+
expect(result).toEqual({ resumedExecutionId: "exec-resumed-123" });
|
|
603
|
+
expect(wf.resumeWorkflow.mock.calls).toEqual([["exec-failed-456"]]);
|
|
604
|
+
});
|
|
605
|
+
});
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
`setResumeHandler` accepts a static string (same execution ID for every call) or a function `(executionId) => string` that computes one per call. By default the mock echoes the input `executionId`.
|
|
609
|
+
|
|
574
610
|
### Testing Executors
|
|
575
611
|
|
|
576
|
-
Function-kind executors expose their handler as `executor.operation.body(args)`. The shape of `args` is determined by the trigger — for example, `recordCreatedTrigger({ type: user })` produces `{ newRecord }` typed against the type's output
|
|
612
|
+
Function-kind executors expose their handler as `executor.operation.body(args)`. The shape of `args` is determined by the trigger — for example, `recordCreatedTrigger({ type: user })` produces `{ newRecord }` typed against the type's output, plus runtime fields such as `env`, `actor`, and `invoker`. GraphQL, webhook, and workflow operation kinds are declarative and don't expose a user-authored body to test.
|
|
577
613
|
|
|
578
614
|
The `executor` template extracts shared DB access into a helper (`shared.ts`) and tests the helper directly against a mocked `tailordb.Client` (same TailorDB-mocking pattern as the resolver section). Executor handlers themselves stay thin and can be tested by spying on the helper:
|
|
579
615
|
|
|
@@ -590,6 +626,14 @@ describe("onUserCreated executor", () => {
|
|
|
590
626
|
throw new Error("expected function operation");
|
|
591
627
|
}
|
|
592
628
|
await onUserCreated.operation.body({
|
|
629
|
+
workspaceId: "workspace-1",
|
|
630
|
+
appNamespace: "app",
|
|
631
|
+
env: {},
|
|
632
|
+
actor: null,
|
|
633
|
+
invoker: null,
|
|
634
|
+
event: "created",
|
|
635
|
+
rawEvent: "tailordb.type_record.created",
|
|
636
|
+
typeName: "User",
|
|
593
637
|
newRecord: {
|
|
594
638
|
id: "user-1",
|
|
595
639
|
name: "Alice",
|
|
@@ -618,7 +662,7 @@ Workflow jobs expose the same `.body()` entrypoint as resolvers, plus `.trigger(
|
|
|
618
662
|
|
|
619
663
|
#### Simple job
|
|
620
664
|
|
|
621
|
-
Call `.body()` with the input and a stub `{ env: {} }`:
|
|
665
|
+
Call `.body()` with the input and a stub `{ env: {}, invoker: null }`:
|
|
622
666
|
|
|
623
667
|
```typescript
|
|
624
668
|
import { describe, expect, test } from "vitest";
|
|
@@ -626,14 +670,17 @@ import { validateOrder } from "./order-fulfillment";
|
|
|
626
670
|
|
|
627
671
|
describe("validateOrder", () => {
|
|
628
672
|
test("accepts a valid order", () => {
|
|
629
|
-
const result = validateOrder.body(
|
|
673
|
+
const result = validateOrder.body(
|
|
674
|
+
{ orderId: "order-1", amount: 100 },
|
|
675
|
+
{ env: {}, invoker: null },
|
|
676
|
+
);
|
|
630
677
|
expect(result).toEqual({ valid: true, orderId: "order-1" });
|
|
631
678
|
});
|
|
632
679
|
|
|
633
680
|
test("rejects a non-positive amount", () => {
|
|
634
|
-
expect(() =>
|
|
635
|
-
"
|
|
636
|
-
);
|
|
681
|
+
expect(() =>
|
|
682
|
+
validateOrder.body({ orderId: "order-1", amount: 0 }, { env: {}, invoker: null }),
|
|
683
|
+
).toThrow("Order amount must be positive");
|
|
637
684
|
});
|
|
638
685
|
});
|
|
639
686
|
```
|
|
@@ -663,7 +710,10 @@ describe("fulfillOrder", () => {
|
|
|
663
710
|
confirmed: true,
|
|
664
711
|
});
|
|
665
712
|
|
|
666
|
-
const result = await fulfillOrder.body(
|
|
713
|
+
const result = await fulfillOrder.body(
|
|
714
|
+
{ orderId: "order-1", amount: 100 },
|
|
715
|
+
{ env: {}, invoker: null },
|
|
716
|
+
);
|
|
667
717
|
|
|
668
718
|
expect(validateOrder.trigger).toHaveBeenCalledWith({ orderId: "order-1", amount: 100 });
|
|
669
719
|
expect(result).toMatchObject({ confirmed: true, paymentStatus: "completed" });
|
|
@@ -687,7 +737,10 @@ describe("processWithApproval", () => {
|
|
|
687
737
|
using wf = mockWorkflow();
|
|
688
738
|
wf.setWaitHandler({ approved: true });
|
|
689
739
|
|
|
690
|
-
const result = await processWithApproval.body(
|
|
740
|
+
const result = await processWithApproval.body(
|
|
741
|
+
{ orderId: "order-1" },
|
|
742
|
+
{ env: {}, invoker: null },
|
|
743
|
+
);
|
|
691
744
|
|
|
692
745
|
expect(result).toEqual({ orderId: "order-1", status: "approved" });
|
|
693
746
|
expect(wf.waitCalls[0]).toEqual({
|
|
@@ -700,7 +753,10 @@ describe("processWithApproval", () => {
|
|
|
700
753
|
using wf = mockWorkflow();
|
|
701
754
|
wf.setWaitHandler({ approved: false });
|
|
702
755
|
|
|
703
|
-
const result = await processWithApproval.body(
|
|
756
|
+
const result = await processWithApproval.body(
|
|
757
|
+
{ orderId: "order-2" },
|
|
758
|
+
{ env: {}, invoker: null },
|
|
759
|
+
);
|
|
704
760
|
|
|
705
761
|
expect(result.status).toBe("rejected");
|
|
706
762
|
});
|
|
@@ -729,6 +785,8 @@ describe("order-fulfillment workflow", () => {
|
|
|
729
785
|
|
|
730
786
|
Pass `{ env }` as the third argument when job bodies need configuration values during the local run.
|
|
731
787
|
|
|
788
|
+
If you already acquired `mockWorkflow()`, you can also call `wf.setEnv(...)` to reuse the same env across local workflow runs.
|
|
789
|
+
|
|
732
790
|
Like the platform runtime, the local runner re-runs the orchestrator body once per `.trigger()` call (N triggers means N+1 passes), so any side effects outside the trigger results fire on every pass. Keep the body deterministic and move repeatable side effects into the triggered jobs.
|
|
733
791
|
|
|
734
792
|
This helper is still a local runner. Use E2E tests when you need to verify deployed workflow scheduling, suspension, or replay behavior.
|
|
@@ -837,7 +895,7 @@ describe("user-profile-sync workflow", () => {
|
|
|
837
895
|
test("executes end to end", { timeout: 180_000 }, async () => {
|
|
838
896
|
const { executionId, wait } = await startWorkflow({
|
|
839
897
|
workflow: userProfileSync,
|
|
840
|
-
|
|
898
|
+
invoker: "admin",
|
|
841
899
|
arg: {
|
|
842
900
|
name: "workflow-test",
|
|
843
901
|
email: `wf-${randomUUID()}@example.com`,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tailor-platform/sdk",
|
|
3
|
-
"version": "2.0.0-next.
|
|
3
|
+
"version": "2.0.0-next.3",
|
|
4
4
|
"description": "Tailor Platform SDK - The SDK to work with Tailor Platform",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -9,12 +9,13 @@
|
|
|
9
9
|
"directory": "packages/sdk"
|
|
10
10
|
},
|
|
11
11
|
"bin": {
|
|
12
|
-
"tailor
|
|
12
|
+
"tailor": "./dist/cli/index.mjs"
|
|
13
13
|
},
|
|
14
14
|
"files": [
|
|
15
15
|
"CHANGELOG.md",
|
|
16
16
|
"dist",
|
|
17
17
|
"docs",
|
|
18
|
+
"!docs/**/*.*.md",
|
|
18
19
|
"postinstall.mjs",
|
|
19
20
|
"README.md",
|
|
20
21
|
"agent-skills"
|
|
@@ -26,6 +27,9 @@
|
|
|
26
27
|
],
|
|
27
28
|
"main": "./dist/configure/index.mjs",
|
|
28
29
|
"types": "./dist/configure/index.d.mts",
|
|
30
|
+
"imports": {
|
|
31
|
+
"#/*": "./src/*.ts"
|
|
32
|
+
},
|
|
29
33
|
"exports": {
|
|
30
34
|
".": {
|
|
31
35
|
"types": "./dist/configure/index.d.mts",
|
|
@@ -131,12 +135,17 @@
|
|
|
131
135
|
"types": "./dist/runtime/file.d.mts",
|
|
132
136
|
"import": "./dist/runtime/file.mjs",
|
|
133
137
|
"default": "./dist/runtime/file.mjs"
|
|
138
|
+
},
|
|
139
|
+
"./runtime/aigateway": {
|
|
140
|
+
"types": "./dist/runtime/aigateway.d.mts",
|
|
141
|
+
"import": "./dist/runtime/aigateway.mjs",
|
|
142
|
+
"default": "./dist/runtime/aigateway.mjs"
|
|
134
143
|
}
|
|
135
144
|
},
|
|
136
145
|
"dependencies": {
|
|
137
|
-
"@0no-co/graphql.web": "1.2
|
|
146
|
+
"@0no-co/graphql.web": "1.3.2",
|
|
138
147
|
"@badgateway/oauth2-client": "3.3.1",
|
|
139
|
-
"@bufbuild/protobuf": "2.12.
|
|
148
|
+
"@bufbuild/protobuf": "2.12.1",
|
|
140
149
|
"@bufbuild/protovalidate": "1.2.0",
|
|
141
150
|
"@connectrpc/connect": "2.1.2",
|
|
142
151
|
"@connectrpc/connect-node": "2.1.2",
|
|
@@ -145,63 +154,65 @@
|
|
|
145
154
|
"@jridgewell/trace-mapping": "0.3.31",
|
|
146
155
|
"@napi-rs/keyring": "1.3.0",
|
|
147
156
|
"@opentelemetry/api": "1.9.1",
|
|
148
|
-
"@opentelemetry/exporter-trace-otlp-proto": "0.
|
|
149
|
-
"@opentelemetry/resources": "2.
|
|
150
|
-
"@opentelemetry/sdk-trace-node": "2.
|
|
157
|
+
"@opentelemetry/exporter-trace-otlp-proto": "0.220.0",
|
|
158
|
+
"@opentelemetry/resources": "2.9.0",
|
|
159
|
+
"@opentelemetry/sdk-trace-node": "2.9.0",
|
|
151
160
|
"@opentelemetry/semantic-conventions": "1.41.1",
|
|
152
|
-
"@oxc-project/types": "0.
|
|
161
|
+
"@oxc-project/types": "0.138.0",
|
|
153
162
|
"@standard-schema/spec": "1.1.0",
|
|
154
163
|
"@tailor-platform/function-kysely-tailordb": "0.1.3",
|
|
155
|
-
"@toiroakr/lines-db": "0.
|
|
164
|
+
"@toiroakr/lines-db": "0.10.0",
|
|
156
165
|
"@toiroakr/read-multiline": "0.4.1",
|
|
157
|
-
"@urql/core": "6.0.
|
|
166
|
+
"@urql/core": "6.0.3",
|
|
167
|
+
"amaro": "1.1.10",
|
|
158
168
|
"chalk": "5.6.2",
|
|
159
169
|
"chokidar": "5.0.0",
|
|
160
170
|
"confbox": "0.2.4",
|
|
161
171
|
"date-fns": "4.4.0",
|
|
162
|
-
"es-toolkit": "1.
|
|
172
|
+
"es-toolkit": "1.49.0",
|
|
163
173
|
"find-up-simple": "1.0.1",
|
|
164
|
-
"globals": "17.
|
|
165
|
-
"graphql": "
|
|
174
|
+
"globals": "17.7.0",
|
|
175
|
+
"graphql": "17.0.1",
|
|
166
176
|
"inflection": "3.0.2",
|
|
167
177
|
"kysely": "0.29.2",
|
|
168
178
|
"madge": "8.0.0",
|
|
169
179
|
"mime-types": "3.0.2",
|
|
170
180
|
"open": "11.0.0",
|
|
171
|
-
"oxc-parser": "0.
|
|
181
|
+
"oxc-parser": "0.138.0",
|
|
172
182
|
"p-limit": "7.3.0",
|
|
173
183
|
"pathe": "2.0.3",
|
|
174
184
|
"pgsql-ast-parser": "12.0.2",
|
|
175
185
|
"pkg-types": "2.3.1",
|
|
176
|
-
"politty": "0.
|
|
177
|
-
"rolldown": "1.1.
|
|
178
|
-
"semver": "7.8.
|
|
186
|
+
"politty": "0.11.0",
|
|
187
|
+
"rolldown": "1.1.4",
|
|
188
|
+
"semver": "7.8.5",
|
|
179
189
|
"sql-highlight": "6.1.0",
|
|
180
190
|
"std-env": "4.1.0",
|
|
181
191
|
"table": "6.9.0",
|
|
182
192
|
"ts-cron-validator": "1.1.5",
|
|
183
|
-
"tsx": "4.22.4",
|
|
184
193
|
"type-fest": "5.7.0",
|
|
185
|
-
"undici": "8.
|
|
194
|
+
"undici": "8.6.0",
|
|
186
195
|
"xdg-basedir": "5.1.0",
|
|
187
196
|
"zod": "4.4.3"
|
|
188
197
|
},
|
|
189
198
|
"devDependencies": {
|
|
190
|
-
"@opentelemetry/sdk-trace-base": "2.
|
|
199
|
+
"@opentelemetry/sdk-trace-base": "2.9.0",
|
|
191
200
|
"@types/madge": "5.0.3",
|
|
192
201
|
"@types/mime-types": "3.0.1",
|
|
193
202
|
"@types/node": "24.13.2",
|
|
194
203
|
"@types/semver": "7.7.1",
|
|
195
|
-
"@typescript/native-preview": "7.0.0-dev.
|
|
196
|
-
"@vitest/coverage-v8": "4.1.
|
|
197
|
-
"
|
|
198
|
-
"
|
|
199
|
-
"oxlint
|
|
200
|
-
"
|
|
201
|
-
"
|
|
202
|
-
"
|
|
203
|
-
"
|
|
204
|
-
"
|
|
204
|
+
"@typescript/native-preview": "7.0.0-dev.20260703.1",
|
|
205
|
+
"@vitest/coverage-v8": "4.1.9",
|
|
206
|
+
"eslint-plugin-zod": "4.7.0",
|
|
207
|
+
"oxfmt": "0.57.0",
|
|
208
|
+
"oxlint": "1.72.0",
|
|
209
|
+
"oxlint-tsgolint": "0.24.0",
|
|
210
|
+
"sonda": "0.13.1",
|
|
211
|
+
"tsdown": "0.22.3",
|
|
212
|
+
"typescript": "6.0.3",
|
|
213
|
+
"vitest": "4.1.9",
|
|
214
|
+
"zinfer": "0.2.3",
|
|
215
|
+
"@tailor-platform/tailor-proto": "^0.0.0"
|
|
205
216
|
},
|
|
206
217
|
"peerDependencies": {
|
|
207
218
|
"vite": "^6.0.0 || ^7.0.0 || ^8.0.0",
|
|
@@ -217,7 +228,7 @@
|
|
|
217
228
|
},
|
|
218
229
|
"engines": {
|
|
219
230
|
"bun": ">=1.2.0",
|
|
220
|
-
"node": ">=22"
|
|
231
|
+
"node": ">=22.15.0"
|
|
221
232
|
},
|
|
222
233
|
"scripts": {
|
|
223
234
|
"test": "vitest",
|
|
@@ -226,11 +237,11 @@
|
|
|
226
237
|
"test:coverage": "vitest --coverage",
|
|
227
238
|
"docs:check": "vitest run --project=unit* src/cli/docs.test.ts",
|
|
228
239
|
"docs:update": "POLITTY_DOCS_UPDATE=true vitest run --project=unit* src/cli/docs.test.ts",
|
|
229
|
-
"build": "tsdown && politty generate-worker --bin dist/cli/index.mjs --program tailor
|
|
240
|
+
"build": "tsdown && politty generate-worker --bin dist/cli/index.mjs --program tailor --shell zsh --verify",
|
|
230
241
|
"lint": "oxlint --type-aware .",
|
|
231
|
-
"check:public-api-jsdoc": "
|
|
232
|
-
"check:zod-isolation": "
|
|
233
|
-
"check:import-cycles": "
|
|
242
|
+
"check:public-api-jsdoc": "node --experimental-strip-types scripts/check-public-api-jsdoc.ts",
|
|
243
|
+
"check:zod-isolation": "node --experimental-strip-types scripts/check-zod-isolation.ts",
|
|
244
|
+
"check:import-cycles": "node --experimental-strip-types scripts/check-import-cycles.ts",
|
|
234
245
|
"lint:fix": "oxlint --type-aware . --fix",
|
|
235
246
|
"typecheck": "tsc --noEmit",
|
|
236
247
|
"typecheck:go": "tsgo",
|
package/postinstall.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
import { existsSync } from "node:fs";
|
|
4
|
-
import { register } from "node:module";
|
|
5
4
|
import { dirname, resolve } from "node:path";
|
|
6
5
|
import { pathToFileURL } from "node:url";
|
|
7
6
|
import { findUpSync } from "find-up-simple";
|
|
@@ -12,9 +11,9 @@ const DEFAULT_CONFIG_FILENAME = "tailor.config.ts";
|
|
|
12
11
|
async function install() {
|
|
13
12
|
const cwd = process.env.INIT_CWD || process.cwd();
|
|
14
13
|
|
|
15
|
-
// Skip if running in the tailor-sdk package itself
|
|
14
|
+
// Skip if running in the @tailor-platform/sdk package itself
|
|
16
15
|
if (cwd === __dirname || cwd === resolve(__dirname, "..", "..")) {
|
|
17
|
-
console.log("⚠️ Skipping postinstall in tailor-sdk package itself");
|
|
16
|
+
console.log("⚠️ Skipping postinstall in @tailor-platform/sdk package itself");
|
|
18
17
|
return;
|
|
19
18
|
}
|
|
20
19
|
|
|
@@ -22,8 +21,8 @@ async function install() {
|
|
|
22
21
|
|
|
23
22
|
// Try to find and load the user's tailor.config.ts
|
|
24
23
|
// Priority: env/config > search parent directories
|
|
25
|
-
const configPath = process.env.
|
|
26
|
-
? resolve(cwd, process.env.
|
|
24
|
+
const configPath = process.env.TAILOR_CONFIG_PATH
|
|
25
|
+
? resolve(cwd, process.env.TAILOR_CONFIG_PATH)
|
|
27
26
|
: findUpSync(DEFAULT_CONFIG_FILENAME, { cwd });
|
|
28
27
|
|
|
29
28
|
if (!configPath || !existsSync(configPath)) {
|
|
@@ -34,7 +33,6 @@ async function install() {
|
|
|
34
33
|
try {
|
|
35
34
|
const configDir = dirname(configPath);
|
|
36
35
|
process.chdir(configDir);
|
|
37
|
-
register("tsx", import.meta.url, { data: {} });
|
|
38
36
|
|
|
39
37
|
const { generateUserTypes, loadConfig } = await import(
|
|
40
38
|
pathToFileURL(resolve(__dirname, "dist", "cli", "lib.mjs")).href
|