@tailor-platform/sdk 1.40.1 → 1.44.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/README.md +23 -0
  3. package/dist/{actor-B2oEmlTc.d.mts → actor-DzCuoMlP.d.mts} +2 -2
  4. package/dist/application-BZRbA1pL.mjs +4 -0
  5. package/dist/{application-EvhIIVg0.mjs → application-DkVNbIuh.mjs} +95 -16
  6. package/dist/application-DkVNbIuh.mjs.map +1 -0
  7. package/dist/brand-Ll48SMXe.mjs.map +1 -1
  8. package/dist/cli/index.mjs +56 -43
  9. package/dist/cli/index.mjs.map +1 -1
  10. package/dist/cli/lib.d.mts +75 -18
  11. package/dist/cli/lib.mjs +9 -9
  12. package/dist/cli/lib.mjs.map +1 -1
  13. package/dist/cli/skills.mjs.map +1 -1
  14. package/dist/{client-CcV6Jjds.mjs → client-DQl5NPG9.mjs} +103 -43
  15. package/dist/{client-CcV6Jjds.mjs.map → client-DQl5NPG9.mjs.map} +1 -1
  16. package/dist/{client-Cn9SqhZT.mjs → client-EI4pMzvm.mjs} +1 -1
  17. package/dist/configure/index.d.mts +5 -5
  18. package/dist/configure/index.mjs +84 -4
  19. package/dist/configure/index.mjs.map +1 -1
  20. package/dist/{crash-report-CUbm1ErM.mjs → crash-report-CSSrblUv.mjs} +4 -4
  21. package/dist/{crash-report-CUbm1ErM.mjs.map → crash-report-CSSrblUv.mjs.map} +1 -1
  22. package/dist/{crash-report-CSYupJ0T.mjs → crash-report-DtkFq9JF.mjs} +1 -1
  23. package/dist/{enum-constants-Dx82rSjf.mjs → enum-constants-C3KSpsYj.mjs} +1 -1
  24. package/dist/{enum-constants-Dx82rSjf.mjs.map → enum-constants-C3KSpsYj.mjs.map} +1 -1
  25. package/dist/{errors-ChWX5ZG8.mjs → errors-_M2TVoWh.mjs} +1 -1
  26. package/dist/{errors-ChWX5ZG8.mjs.map → errors-_M2TVoWh.mjs.map} +1 -1
  27. package/dist/{file-utils-DeWpvq3T.mjs → file-utils-775qWKoo.mjs} +1 -1
  28. package/dist/{file-utils-DeWpvq3T.mjs.map → file-utils-775qWKoo.mjs.map} +1 -1
  29. package/dist/{index-Chvw1Eod.d.mts → index-0Dk-fDWi.d.mts} +2 -2
  30. package/dist/{index-CiNNNpuH.d.mts → index-BEEL1-6Z.d.mts} +2 -2
  31. package/dist/{index-D_ezppY7.d.mts → index-Br4XCvX1.d.mts} +103 -86
  32. package/dist/{index-BtXZdz-F.d.mts → index-DdsUV-aA.d.mts} +2 -2
  33. package/dist/{index-reFAYSX7.d.mts → index-ZZYEd_0R.d.mts} +2 -2
  34. package/dist/interceptor-4UC-KTno.mjs.map +1 -1
  35. package/dist/{job-p6zf8Qpg.mjs → job-BOvKyNdT.mjs} +15 -9
  36. package/dist/job-BOvKyNdT.mjs.map +1 -0
  37. package/dist/kysely/index.mjs.map +1 -1
  38. package/dist/{kysely-type-CwtvQuxh.mjs → kysely-type-BQsYEZoY.mjs} +1 -1
  39. package/dist/kysely-type-BQsYEZoY.mjs.map +1 -0
  40. package/dist/logger-DTNAMYGy.mjs.map +1 -1
  41. package/dist/{package-json-CWp8s9dE.mjs → package-json-CRzw5eUf.mjs} +1 -1
  42. package/dist/{package-json-CWp8s9dE.mjs.map → package-json-CRzw5eUf.mjs.map} +1 -1
  43. package/dist/package-json-DR_mqrCW.mjs +4 -0
  44. package/dist/plugin/builtin/enum-constants/index.d.mts +1 -1
  45. package/dist/plugin/builtin/enum-constants/index.mjs +1 -1
  46. package/dist/plugin/builtin/file-utils/index.d.mts +1 -1
  47. package/dist/plugin/builtin/file-utils/index.mjs +1 -1
  48. package/dist/plugin/builtin/kysely-type/index.d.mts +1 -1
  49. package/dist/plugin/builtin/kysely-type/index.mjs +1 -1
  50. package/dist/plugin/builtin/seed/index.d.mts +1 -1
  51. package/dist/plugin/builtin/seed/index.mjs +1 -1
  52. package/dist/plugin/index.d.mts +2 -2
  53. package/dist/plugin/index.mjs.map +1 -1
  54. package/dist/repl-editor-DjycioU-.mjs.map +1 -1
  55. package/dist/{runtime-B9R1TzLD.mjs → runtime-l7GFD3Xg.mjs} +503 -196
  56. package/dist/runtime-l7GFD3Xg.mjs.map +1 -0
  57. package/dist/{schema-CEcfEyPN.mjs → schema-DBq6hr6h.mjs} +13 -2
  58. package/dist/{schema-CEcfEyPN.mjs.map → schema-DBq6hr6h.mjs.map} +1 -1
  59. package/dist/{seed-CyYPhvNL.mjs → seed-BkVKgsxf.mjs} +1 -1
  60. package/dist/{seed-CyYPhvNL.mjs.map → seed-BkVKgsxf.mjs.map} +1 -1
  61. package/dist/{service-SrG26B9T.mjs → service-CCnx_IFw.mjs} +2 -2
  62. package/dist/{service-SrG26B9T.mjs.map → service-CCnx_IFw.mjs.map} +1 -1
  63. package/dist/{tailor-db-field-CoFKRCYW.d.mts → tailor-db-field-D_z185oq.d.mts} +36 -6
  64. package/dist/{telemetry-BuDto_2q.mjs → telemetry-B6Le9XT-.mjs} +2 -2
  65. package/dist/{telemetry-BuDto_2q.mjs.map → telemetry-B6Le9XT-.mjs.map} +1 -1
  66. package/dist/telemetry-C_WXxIo0.mjs +4 -0
  67. package/dist/types-Duhhsx3R.mjs.map +1 -1
  68. package/dist/utils/test/index.d.mts +36 -3
  69. package/dist/utils/test/index.mjs +78 -9
  70. package/dist/utils/test/index.mjs.map +1 -1
  71. package/dist/{workflow.generated-Btz6srLR.d.mts → workflow.generated-CDCnZNkH.d.mts} +2 -2
  72. package/docs/cli/application.md +130 -5
  73. package/docs/cli/crash-report.md +12 -1
  74. package/docs/cli/executor.md +6 -4
  75. package/docs/cli/function.md +83 -1
  76. package/docs/cli/organization.md +6 -5
  77. package/docs/cli/workspace.md +16 -13
  78. package/docs/cli-reference.md +13 -10
  79. package/docs/services/executor.md +4 -0
  80. package/docs/services/idp.md +16 -0
  81. package/docs/services/resolver.md +4 -2
  82. package/docs/services/workflow.md +117 -3
  83. package/docs/testing.md +95 -7
  84. package/package.json +24 -24
  85. package/dist/application-CE2s_a6w.mjs +0 -4
  86. package/dist/application-EvhIIVg0.mjs.map +0 -1
  87. package/dist/job-p6zf8Qpg.mjs.map +0 -1
  88. package/dist/kysely-type-CwtvQuxh.mjs.map +0 -1
  89. package/dist/package-json-CPR7s5hf.mjs +0 -4
  90. package/dist/runtime-B9R1TzLD.mjs.map +0 -1
  91. package/dist/telemetry-C1hzFaiV.mjs +0 -4
@@ -311,7 +311,7 @@ Call Tailor Platform API endpoints directly.
311
311
  **Usage**
312
312
 
313
313
  ```
314
- tailor-sdk api [options] <endpoint>
314
+ tailor-sdk api [options] [command] <endpoint>
315
315
  ```
316
316
 
317
317
  <!-- politty:command:api:usage:end -->
@@ -320,9 +320,9 @@ tailor-sdk api [options] <endpoint>
320
320
 
321
321
  **Arguments**
322
322
 
323
- | Argument | Description | Required |
324
- | ---------- | ------------------------------------------------------------------------------------------- | -------- |
325
- | `endpoint` | API endpoint to call (e.g., 'GetApplication' or 'tailor.v1.OperatorService/GetApplication') | Yes |
323
+ | Argument | Description | Required |
324
+ | ---------- | -------------------------------------------------------------------------------------------- | -------- |
325
+ | `endpoint` | API endpoint to call (e.g., 'GetApplication' or 'tailor.v1.OperatorService/GetApplication'). | Yes |
326
326
 
327
327
  <!-- politty:command:api:arguments:end -->
328
328
 
@@ -335,7 +335,7 @@ tailor-sdk api [options] <endpoint>
335
335
  | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
336
336
  | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
337
337
  | `--config <CONFIG>` | `-c` | Path to SDK config file | No | `"tailor.config.ts"` | `TAILOR_PLATFORM_SDK_CONFIG_PATH` |
338
- | `--body <BODY>` | `-b` | Request body as JSON | No | `"{}"` | - |
338
+ | `--body <BODY>` | `-b` | Request body as JSON. | No | `"{}"` | - |
339
339
 
340
340
  <!-- politty:command:api:options:end -->
341
341
 
@@ -345,10 +345,36 @@ See [Global Options](../cli-reference.md#global-options) for options available t
345
345
 
346
346
  <!-- politty:command:api:global-options-link:end -->
347
347
 
348
+ <!-- politty:command:api:examples:start -->
349
+
350
+ **Examples**
351
+
352
+ **Call an endpoint; workspaceId is auto-injected.**
353
+
354
+ ```bash
355
+ $ tailor-sdk api GetApplication -b '{"applicationName":"app-1"}'
356
+ ```
357
+
358
+ **List all invocable OperatorService methods.**
359
+
360
+ ```bash
361
+ $ tailor-sdk api list
362
+ ```
363
+
364
+ **Show the input message tree for an endpoint.**
365
+
366
+ ```bash
367
+ $ tailor-sdk api inspect GetApplication
368
+ ```
369
+
370
+ <!-- politty:command:api:examples:end -->
371
+
348
372
  <!-- politty:command:api:notes:start -->
349
373
 
350
374
  **Notes**
351
375
 
376
+ Use `tailor-sdk api list` to enumerate invocable methods and `tailor-sdk api inspect <endpoint>` to print an endpoint's input message tree (combine with `--json` for machine-readable output).
377
+
352
378
  The request body is inferred from the proto definition of the target endpoint, and commonly required fields are auto-injected so they can be omitted from `--body`:
353
379
 
354
380
  - `workspaceId` — resolved from `-w` / `TAILOR_PLATFORM_WORKSPACE_ID` / the selected profile.
@@ -359,3 +385,102 @@ The request body is inferred from the proto definition of the target endpoint, a
359
385
  Values already present in `--body` are never overridden. If a value cannot be resolved (e.g. no config found), injection is silently skipped and the server-side validation error takes precedence.
360
386
 
361
387
  <!-- politty:command:api:notes:end -->
388
+ <!-- politty:command:api inspect:heading:start -->
389
+
390
+ ### api inspect
391
+
392
+ <!-- politty:command:api inspect:heading:end -->
393
+
394
+ <!-- politty:command:api inspect:description:start -->
395
+
396
+ Print the input message tree of an OperatorService endpoint.
397
+
398
+ <!-- politty:command:api inspect:description:end -->
399
+
400
+ <!-- politty:command:api inspect:usage:start -->
401
+
402
+ **Usage**
403
+
404
+ ```
405
+ tailor-sdk api inspect <endpoint>
406
+ ```
407
+
408
+ <!-- politty:command:api inspect:usage:end -->
409
+
410
+ <!-- politty:command:api inspect:arguments:start -->
411
+
412
+ **Arguments**
413
+
414
+ | Argument | Description | Required |
415
+ | ---------- | ----------------------------------------------------------------------------------------------- | -------- |
416
+ | `endpoint` | API endpoint to inspect (e.g., 'GetApplication' or 'tailor.v1.OperatorService/GetApplication'). | Yes |
417
+
418
+ <!-- politty:command:api inspect:arguments:end -->
419
+
420
+ <!-- politty:command:api inspect:global-options-link:start -->
421
+
422
+ See [Global Options](../cli-reference.md#global-options) for options available to all commands.
423
+
424
+ <!-- politty:command:api inspect:global-options-link:end -->
425
+
426
+ <!-- politty:command:api inspect:examples:start -->
427
+
428
+ **Examples**
429
+
430
+ **Show fields of GetApplicationRequest.**
431
+
432
+ ```bash
433
+ $ tailor-sdk api inspect GetApplication
434
+ ```
435
+
436
+ **Inspect a deeply nested input with `(oneof config)` annotations.**
437
+
438
+ ```bash
439
+ $ tailor-sdk api inspect CreateExecutorExecutor
440
+ ```
441
+
442
+ <!-- politty:command:api inspect:examples:end -->
443
+
444
+ <!-- politty:command:api inspect:notes:start -->
445
+
446
+ **Notes**
447
+
448
+ Combine with the global `--json` flag for a machine-readable descriptor. Recursive type references and `oneof` membership are annotated. Use `tailor-sdk api list` to discover endpoint names.
449
+
450
+ <!-- politty:command:api inspect:notes:end -->
451
+
452
+ <!-- politty:command:api list:heading:start -->
453
+
454
+ ### api list
455
+
456
+ <!-- politty:command:api list:heading:end -->
457
+
458
+ <!-- politty:command:api list:description:start -->
459
+
460
+ List all invocable OperatorService methods.
461
+
462
+ <!-- politty:command:api list:description:end -->
463
+
464
+ <!-- politty:command:api list:usage:start -->
465
+
466
+ **Usage**
467
+
468
+ ```
469
+ tailor-sdk api list
470
+ ```
471
+
472
+ <!-- politty:command:api list:usage:end -->
473
+
474
+ <!-- politty:command:api list:global-options-link:start -->
475
+
476
+ See [Global Options](../cli-reference.md#global-options) for options available to all commands.
477
+
478
+ <!-- politty:command:api list:global-options-link:end -->
479
+
480
+ <!-- politty:command:api list:notes:start -->
481
+
482
+ **Notes**
483
+
484
+ Only unary RPCs are listed; streaming methods are excluded because `tailor-sdk api run` issues a single JSON POST and reads one JSON response.
485
+
486
+ <!-- politty:command:api list:notes:end -->
@@ -57,11 +57,22 @@ List local crash report files.
57
57
  **Usage**
58
58
 
59
59
  ```
60
- tailor-sdk crash-report list
60
+ tailor-sdk crash-report list [options]
61
61
  ```
62
62
 
63
63
  <!-- politty:command:crash-report list:usage:end -->
64
64
 
65
+ <!-- politty:command:crash-report list:options:start -->
66
+
67
+ **Options**
68
+
69
+ | Option | Alias | Description | Required | Default |
70
+ | ----------------- | ----- | -------------------------------------------------------- | -------- | -------- |
71
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` |
72
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - |
73
+
74
+ <!-- politty:command:crash-report list:options:end -->
75
+
65
76
  <!-- politty:command:crash-report list:global-options-link:start -->
66
77
 
67
78
  See [Global Options](../cli-reference.md#global-options) for options available to all commands.
@@ -414,10 +414,12 @@ tailor-sdk executor webhook list [options]
414
414
 
415
415
  **Options**
416
416
 
417
- | Option | Alias | Description | Required | Default | Env |
418
- | ------------------------------- | ----- | ----------------- | -------- | ------- | ------------------------------ |
419
- | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
420
- | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
417
+ | Option | Alias | Description | Required | Default | Env |
418
+ | ------------------------------- | ----- | -------------------------------------------------------- | -------- | -------- | ------------------------------ |
419
+ | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
420
+ | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
421
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` | - |
422
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - | - |
421
423
 
422
424
  <!-- politty:command:executor webhook list:options:end -->
423
425
 
@@ -1,6 +1,6 @@
1
1
  # Function Commands
2
2
 
3
- Commands for viewing function execution logs.
3
+ Commands for managing function registries and viewing function execution logs.
4
4
 
5
5
  <!-- politty:command:function:heading:start -->
6
6
 
@@ -30,6 +30,8 @@ tailor-sdk function [command]
30
30
 
31
31
  | Command | Description |
32
32
  | ----------------------------------------- | --------------------------------------------------------------- |
33
+ | [`function get`](#function-get) | Get a function registry by name |
34
+ | [`function list`](#function-list) | List function registries in a workspace |
33
35
  | [`function logs`](#function-logs) | List or get function execution logs. |
34
36
  | [`function test-run`](#function-test-run) | Run a function on the Tailor Platform server without deploying. |
35
37
 
@@ -40,6 +42,86 @@ tailor-sdk function [command]
40
42
  See [Global Options](../cli-reference.md#global-options) for options available to all commands.
41
43
 
42
44
  <!-- politty:command:function:global-options-link:end -->
45
+ <!-- politty:command:function get:heading:start -->
46
+
47
+ ### function get
48
+
49
+ <!-- politty:command:function get:heading:end -->
50
+
51
+ <!-- politty:command:function get:description:start -->
52
+
53
+ Get a function registry by name
54
+
55
+ <!-- politty:command:function get:description:end -->
56
+
57
+ <!-- politty:command:function get:usage:start -->
58
+
59
+ **Usage**
60
+
61
+ ```
62
+ tailor-sdk function get [options]
63
+ ```
64
+
65
+ <!-- politty:command:function get:usage:end -->
66
+
67
+ <!-- politty:command:function get:options:start -->
68
+
69
+ **Options**
70
+
71
+ | Option | Alias | Description | Required | Default | Env |
72
+ | ------------------------------- | ----- | ----------------- | -------- | ------- | ------------------------------ |
73
+ | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
74
+ | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
75
+ | `--name <NAME>` | `-n` | Function name | Yes | - | - |
76
+
77
+ <!-- politty:command:function get:options:end -->
78
+
79
+ <!-- politty:command:function get:global-options-link:start -->
80
+
81
+ See [Global Options](../cli-reference.md#global-options) for options available to all commands.
82
+
83
+ <!-- politty:command:function get:global-options-link:end -->
84
+ <!-- politty:command:function list:heading:start -->
85
+
86
+ ### function list
87
+
88
+ <!-- politty:command:function list:heading:end -->
89
+
90
+ <!-- politty:command:function list:description:start -->
91
+
92
+ List function registries in a workspace
93
+
94
+ <!-- politty:command:function list:description:end -->
95
+
96
+ <!-- politty:command:function list:usage:start -->
97
+
98
+ **Usage**
99
+
100
+ ```
101
+ tailor-sdk function list [options]
102
+ ```
103
+
104
+ <!-- politty:command:function list:usage:end -->
105
+
106
+ <!-- politty:command:function list:options:start -->
107
+
108
+ **Options**
109
+
110
+ | Option | Alias | Description | Required | Default | Env |
111
+ | ------------------------------- | ----- | -------------------------------------------------------- | -------- | -------- | ------------------------------ |
112
+ | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
113
+ | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
114
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` | - |
115
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - | - |
116
+
117
+ <!-- politty:command:function list:options:end -->
118
+
119
+ <!-- politty:command:function list:global-options-link:start -->
120
+
121
+ See [Global Options](../cli-reference.md#global-options) for options available to all commands.
122
+
123
+ <!-- politty:command:function list:global-options-link:end -->
124
+
43
125
  <!-- politty:command:function logs:heading:start -->
44
126
 
45
127
  ### function logs
@@ -222,11 +222,12 @@ tailor-sdk organization folder list [options]
222
222
 
223
223
  **Options**
224
224
 
225
- | Option | Alias | Description | Required | Default | Env |
226
- | --------------------------------------- | ----- | ------------------------------------ | -------- | ------- | --------------------------------- |
227
- | `--organization-id <ORGANIZATION_ID>` | `-o` | Organization ID | Yes | - | `TAILOR_PLATFORM_ORGANIZATION_ID` |
228
- | `--parent-folder-id <PARENT_FOLDER_ID>` | - | Parent folder ID to list children of | No | - | - |
229
- | `--limit <LIMIT>` | `-l` | Maximum number of folders to list | No | - | - |
225
+ | Option | Alias | Description | Required | Default | Env |
226
+ | --------------------------------------- | ----- | -------------------------------------------------------- | -------- | -------- | --------------------------------- |
227
+ | `--organization-id <ORGANIZATION_ID>` | `-o` | Organization ID | Yes | - | `TAILOR_PLATFORM_ORGANIZATION_ID` |
228
+ | `--parent-folder-id <PARENT_FOLDER_ID>` | - | Parent folder ID to list children of | No | - | - |
229
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` | - |
230
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - | - |
230
231
 
231
232
  <!-- politty:command:organization folder list:options:end -->
232
233
 
@@ -114,9 +114,10 @@ tailor-sdk workspace list [options]
114
114
 
115
115
  **Options**
116
116
 
117
- | Option | Alias | Description | Required | Default |
118
- | ----------------- | ----- | ------------------------------------ | -------- | ------- |
119
- | `--limit <LIMIT>` | `-l` | Maximum number of workspaces to list | No | - |
117
+ | Option | Alias | Description | Required | Default |
118
+ | ----------------- | ----- | -------------------------------------------------------- | -------- | -------- |
119
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` |
120
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - |
120
121
 
121
122
  <!-- politty:command:workspace list:options:end -->
122
123
 
@@ -472,11 +473,12 @@ tailor-sdk workspace app list [options]
472
473
 
473
474
  **Options**
474
475
 
475
- | Option | Alias | Description | Required | Default | Env |
476
- | ------------------------------- | ----- | -------------------------------------- | -------- | ------- | ------------------------------ |
477
- | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
478
- | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
479
- | `--limit <LIMIT>` | `-l` | Maximum number of applications to list | No | - | - |
476
+ | Option | Alias | Description | Required | Default | Env |
477
+ | ------------------------------- | ----- | -------------------------------------------------------- | -------- | -------- | ------------------------------ |
478
+ | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
479
+ | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
480
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` | - |
481
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - | - |
480
482
 
481
483
  <!-- politty:command:workspace app list:options:end -->
482
484
 
@@ -672,11 +674,12 @@ tailor-sdk workspace user list [options]
672
674
 
673
675
  **Options**
674
676
 
675
- | Option | Alias | Description | Required | Default | Env |
676
- | ------------------------------- | ----- | ------------------------------- | -------- | ------- | ------------------------------ |
677
- | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
678
- | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
679
- | `--limit <LIMIT>` | `-l` | Maximum number of users to list | No | - | - |
677
+ | Option | Alias | Description | Required | Default | Env |
678
+ | ------------------------------- | ----- | -------------------------------------------------------- | -------- | -------- | ------------------------------ |
679
+ | `--workspace-id <WORKSPACE_ID>` | `-w` | Workspace ID | No | - | `TAILOR_PLATFORM_WORKSPACE_ID` |
680
+ | `--profile <PROFILE>` | `-p` | Workspace profile | No | - | `TAILOR_PLATFORM_PROFILE` |
681
+ | `--order <ORDER>` | - | Sort order (asc or desc) | No | `"desc"` | - |
682
+ | `--limit <LIMIT>` | `-l` | Maximum number of items to return (0 or omit: unlimited) | No | - | - |
680
683
 
681
684
  <!-- politty:command:workspace user list:options:end -->
682
685
 
@@ -95,15 +95,16 @@ Workspace ID resolution follows this priority order:
95
95
 
96
96
  Commands for managing Tailor Platform applications (work with `tailor.config.ts`).
97
97
 
98
- | Command | Description |
99
- | ----------------------------------------- | ------------------------------------------------------------------- |
100
- | [init](./cli/application.md#init) | Initialize a new project using create-sdk. |
101
- | [generate](./cli/application.md#generate) | Generate files using Tailor configuration. |
102
- | [apply](./cli/application.md#apply) | Apply Tailor configuration to deploy your application. |
103
- | [remove](./cli/application.md#remove) | Remove all resources managed by the application from the workspace. |
104
- | [show](./cli/application.md#show) | Show information about the deployed application. |
105
- | [open](./cli/application.md#open) | Open Tailor Platform Console. |
106
- | [api](./cli/application.md#api) | Call Tailor Platform API endpoints directly. |
98
+ | Command | Description |
99
+ | ----------------------------------------------- | ------------------------------------------------------------------- |
100
+ | [init](./cli/application.md#init) | Initialize a new project using create-sdk. |
101
+ | [generate](./cli/application.md#generate) | Generate files using Tailor configuration. |
102
+ | [apply](./cli/application.md#apply) | Apply Tailor configuration to deploy your application. |
103
+ | [remove](./cli/application.md#remove) | Remove all resources managed by the application from the workspace. |
104
+ | [show](./cli/application.md#show) | Show information about the deployed application. |
105
+ | [open](./cli/application.md#open) | Open Tailor Platform Console. |
106
+ | [api list](./cli/application.md#api-list) | List all invocable OperatorService methods. |
107
+ | [api inspect](./cli/application.md#api-inspect) | Print the input message tree of an OperatorService endpoint. |
107
108
 
108
109
  ### [TailorDB Commands](./cli/tailordb.md)
109
110
 
@@ -209,10 +210,12 @@ Commands for managing workflows and executions.
209
210
 
210
211
  ### [Function Commands](./cli/function.md)
211
212
 
212
- Commands for viewing function execution logs.
213
+ Commands for managing function registries and viewing function execution logs.
213
214
 
214
215
  | Command | Description |
215
216
  | -------------------------------------------------------- | --------------------------------------------------------------- |
217
+ | [function get](./cli/function.md#function-get) | Get a function registry by name |
218
+ | [function list](./cli/function.md#function-list) | List function registries in a workspace |
216
219
  | [function logs](./cli/function.md#function-logs) | List or get function execution logs. |
217
220
  | [function test-run](./cli/function.md#function-test-run) | Run a function on the Tailor Platform server without deploying. |
218
221
 
@@ -130,6 +130,8 @@ Fire when IdP users are created, updated, or deleted:
130
130
  idpUserCreatedTrigger();
131
131
  ```
132
132
 
133
+ These triggers require the IdP to publish user lifecycle events. The SDK enables `publishUserEvents` on the IdP automatically during `apply` when any executor uses an `idpUser` trigger; set the value explicitly on `defineIdp()` to override. See [IdP service - publishUserEvents](./idp.md#publishuserevents).
134
+
133
135
  ### Auth Access Token Triggers
134
136
 
135
137
  Fire on auth access token lifecycle events:
@@ -203,6 +205,8 @@ createExecutor({
203
205
  });
204
206
  ```
205
207
 
208
+ `function` and `jobFunction` `body` args include an `invoker` field: the principal running this function, overridden by `authInvoker` when set; `null` for anonymous calls. Other operation kinds (`graphql`, `webhook`, `workflow`) do not pass `invoker` into their callbacks.
209
+
206
210
  ### Job Function Operation
207
211
 
208
212
  For long-running operations, use `jobFunction` which runs asynchronously and supports extended execution times. See [Job Function Operation](https://docs.tailor.tech/guides/executor/job-function-operation) for details.
@@ -164,6 +164,22 @@ defineIdp("my-idp", {
164
164
 
165
165
  **Validation:** Each field must be 200 characters or less and must not contain newline characters.
166
166
 
167
+ ### publishUserEvents
168
+
169
+ Publish IdP user lifecycle events (`idp.user.created`, `idp.user.updated`, `idp.user.deleted`). These events are consumed by executors that use `idpUserCreatedTrigger`, `idpUserUpdatedTrigger`, `idpUserDeletedTrigger`, or `idpUserTrigger`.
170
+
171
+ ```typescript
172
+ defineIdp("my-idp", {
173
+ clients: ["my-client"],
174
+ publishUserEvents: true,
175
+ });
176
+ ```
177
+
178
+ **Auto-configuration:** When `publishUserEvents` is omitted, the SDK enables it automatically during `apply` if the project defines any executor with an `idpUser` trigger. Set the value explicitly to override:
179
+
180
+ - `publishUserEvents: true`: always publish events.
181
+ - `publishUserEvents: false`: never publish events. The SDK warns when executors with `idpUser` triggers are present, since those executors will not fire for this IdP.
182
+
167
183
  ## Using idp.provider()
168
184
 
169
185
  The `idp.provider()` method creates a type-safe reference to the IdP for use in Auth configuration. The client name is validated at compile time against the clients defined in the IdP.
@@ -234,7 +234,9 @@ 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
- - `user` - User performing the operation
237
+ - `user` - The user who called this resolver; unaffected by `authInvoker`
238
+ - `invoker` - The principal running this function; equals `user` by default, or the machine user set by `authInvoker`. `null` for anonymous calls.
239
+ - `env` - Environment variables declared in `tailor.config.ts`
238
240
 
239
241
  ### Using Kysely for Database Access
240
242
 
@@ -371,4 +373,4 @@ The machine user name is looked up in the auth service configured on your app (`
371
373
 
372
374
  > **Deprecated:** `auth.invoker("batch-processor")` still works, but is deprecated. Importing `auth` into runtime files pulls config-layer (Node-only) dependencies into the bundle.
373
375
 
374
- **Note:** `authInvoker` controls the permissions for database operations and other platform actions, but the `user` object passed to the `body` function still reflects the original caller who invoked the resolver.
376
+ **Note:** `authInvoker` controls the permissions for database operations and other platform actions. The `user` object passed to `body` still reflects the original caller, while `invoker` reflects the principal actually running the body.
@@ -60,7 +60,7 @@ export const fetchCustomer = createWorkflowJob({
60
60
 
61
61
  Workflow job inputs and outputs are serialized as JSON when passed between jobs. This imposes type constraints:
62
62
 
63
- **Input types** must be JSON-compatible — only primitives (`string`, `number`, `boolean`, `null`), arrays, and plain objects are allowed. `Date`, `Map`, `Set`, functions, and other non-serializable types cannot be used.
63
+ **Input types** must be JSON-compatible — primitives (`string`, `number`, `boolean`), arrays, and plain objects are allowed. `Date`, `Map`, `Set`, functions, and other non-serializable types cannot be used. Top-level `null` is also rejected because the platform normalizes top-level `null`/`undefined` args to `{}` (nested `null` inside objects or arrays is preserved).
64
64
 
65
65
  ```typescript
66
66
  // OK
@@ -78,9 +78,17 @@ export const badJob = createWorkflowJob({
78
78
  // ...
79
79
  },
80
80
  });
81
+
82
+ // Compile error — top-level null would be normalized to {} by the platform
83
+ export const nullJob = createWorkflowJob({
84
+ name: "null-job",
85
+ body: async (input: { id: string } | null) => {
86
+ // ...
87
+ },
88
+ });
81
89
  ```
82
90
 
83
- **Output types** are more permissive `Date` and objects with `toJSON()` are allowed because they are serialized via `JSON.stringify` at runtime (e.g., `Date` becomes a string).
91
+ **Output types** have the same restriction as inputs: must be JsonValue-compatible (plain objects/arrays; no class instances or functions). Values with methods (function-typed properties) are rejected at compile time this covers class instances like `Date` or `RegExp` as well as any plain object that exposes a method such as `toJSON()`.
84
92
 
85
93
  These constraints are enforced at compile time — you will get a type error if you use an unsupported type.
86
94
 
@@ -175,8 +183,10 @@ import { sendNotification } from "./jobs/send-notification";
175
183
  // Jobs must be named exports
176
184
  export const processOrder = createWorkflowJob({
177
185
  name: "process-order",
178
- body: async (input: { customerId: string }, { env }) => {
186
+ body: async (input: { customerId: string }, { env, invoker }) => {
179
187
  // `env` contains values from `tailor.config.ts` -> `env`.
188
+ // `invoker` is the principal running this job, overridden by `authInvoker`
189
+ // when set; `null` for anonymous calls.
180
190
  // Trigger other jobs by calling .trigger() on the job object.
181
191
  const customer = await fetchCustomer.trigger({
182
192
  customerId: input.customerId,
@@ -196,6 +206,110 @@ export default createWorkflow({
196
206
  });
197
207
  ```
198
208
 
209
+ ## Wait Points
210
+
211
+ Wait points allow a workflow job to suspend execution and wait for an external signal before resuming. This enables human-in-the-loop patterns such as approvals, reviews, and manual confirmations.
212
+
213
+ ### Defining Wait Points
214
+
215
+ Use `defineWaitPoint` to declare a single typed wait point:
216
+
217
+ ```typescript
218
+ import { defineWaitPoint } from "@tailor-platform/sdk";
219
+
220
+ export const approval = defineWaitPoint<
221
+ { message: string; requestId: string },
222
+ { approved: boolean }
223
+ >("approval");
224
+ ```
225
+
226
+ For multiple wait points, use `defineWaitPoints` with a builder callback. Property names become wait point keys, and JSDoc on each property is preserved in IDE autocompletion:
227
+
228
+ ```typescript
229
+ import { defineWaitPoints } from "@tailor-platform/sdk";
230
+
231
+ export const waitPoints = defineWaitPoints((define) => ({
232
+ /** Manager approval step */
233
+ managerApproval: define<{ amount: number }, { approved: boolean }>(),
234
+ /** Finance review step */
235
+ financeReview: define<{ invoiceId: string }, { validated: boolean }>(),
236
+ }));
237
+
238
+ await waitPoints.managerApproval.wait({ amount: 50000 });
239
+ ```
240
+
241
+ Both accept two type parameters:
242
+
243
+ - **`Payload`** — Data sent when the job suspends (passed to `.wait()`). Must be a pure JSON value (`string`, `number`, `boolean`, `null`, arrays, plain objects). Use `undefined` if no payload is needed.
244
+ - **`Result`** — Data returned when the wait point is resolved (returned from `.wait()`, produced by the `.resolve()` callback). Must be a pure JSON value.
245
+
246
+ Both must be JsonValue-compatible (plain objects/arrays; no class instances or functions). Values with methods (function-typed properties) are rejected at compile time — this covers class instances like `Date` or `RegExp` as well as any plain object that exposes a method such as `toJSON()`. Convert such values to `string` (e.g. ISO strings) or `number` (epoch millis) before passing them through a wait point.
247
+
248
+ ### Waiting in a Job
249
+
250
+ Call `.wait()` inside a workflow job body to suspend execution:
251
+
252
+ ```typescript
253
+ import { createWorkflow, createWorkflowJob, defineWaitPoint } from "@tailor-platform/sdk";
254
+
255
+ export const approval = defineWaitPoint<
256
+ { message: string; requestId: string },
257
+ { approved: boolean }
258
+ >("approval");
259
+
260
+ export const processWithApproval = createWorkflowJob({
261
+ name: "process-with-approval",
262
+ body: async (input: { orderId: string }) => {
263
+ // Suspends here until resolved externally
264
+ const result = await approval.wait({
265
+ message: `Please approve order ${input.orderId}`,
266
+ requestId: input.orderId,
267
+ });
268
+
269
+ if (!result.approved) {
270
+ return { orderId: input.orderId, status: "rejected" as const };
271
+ }
272
+ return { orderId: input.orderId, status: "approved" as const };
273
+ },
274
+ });
275
+
276
+ export default createWorkflow({
277
+ name: "approval-workflow",
278
+ mainJob: processWithApproval,
279
+ });
280
+ ```
281
+
282
+ ### Resolving from a Resolver
283
+
284
+ Call `.resolve()` from a resolver (or executor) to resume a suspended job. The callback receives the payload that was passed to `.wait()` and returns the result:
285
+
286
+ ```typescript
287
+ import { createResolver, t } from "@tailor-platform/sdk";
288
+ import { approval } from "../workflows/approval";
289
+
290
+ export default createResolver({
291
+ name: "resolveApproval",
292
+ description: "Resolve a waiting approval",
293
+ operation: "mutation",
294
+ input: {
295
+ executionId: t.string(),
296
+ approved: t.bool(),
297
+ },
298
+ body: async ({ input }) => {
299
+ await approval.resolve(input.executionId, (payload) => {
300
+ console.log("Resolving:", payload.message);
301
+ return { approved: input.approved };
302
+ });
303
+ return { resolved: true };
304
+ },
305
+ output: t.object({
306
+ resolved: t.bool(),
307
+ }),
308
+ });
309
+ ```
310
+
311
+ Wait points can be imported and used in any file (workflow jobs, resolvers, executors). For local testing, see [Testing Wait Points](../testing.md#testing-wait-points).
312
+
199
313
  ## Retry Policy
200
314
 
201
315
  You can configure automatic retry behavior with exponential backoff by setting `retryPolicy` on a workflow. All fields are required when `retryPolicy` is set: