Skip to content

Update dependency @tailor-platform/sdk to v2 - #116

Open
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/tailor-platform-sdk-2.x
Open

Update dependency @tailor-platform/sdk to v2#116
renovate[bot] wants to merge 1 commit into
mainfrom
renovate/tailor-platform-sdk-2.x

Conversation

@renovate

@renovate renovate Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

ℹ️ Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@tailor-platform/sdk (source) 1.56.02.7.0 age confidence

Release Notes

tailor-platform/sdk (@​tailor-platform/sdk)

v2.7.0

Compare Source

Minor Changes
  • #​2181 8f48d23 Thanks @​dqn! - Trace each service's apply step and each TailorDB migration phase when OTLP tracing is enabled. deploy now emits apply.<service>.createUpdate spans under apply.createUpdateServices and apply.createUpdateDependentServices, plus apply.tailorDB.migration.prePhase and .postPhase per pending migration and .script for each migration that carries a migrate.ts, so a slow deploy can be attributed to a service or to a migration script rather than to a whole phase.

  • #​2168 aef699b Thanks @​dqn! - Move the tailor setup commands into the optional @tailor-platform/sdk-plugin-setup CLI plugin.

    setup generates GitHub repository automation, which not every project uses, but its workflow templates and its @croct/json5-parser / json5 dependencies shipped with the SDK for everyone. Splitting it out follows the same CLI plugin mechanism as tailor tailordb erd.

    To keep using tailor setup <command>, install the plugin next to the SDK:

    npm install -D @tailor-platform/sdk-plugin-setup

    The commands, options, generated files, and the .github/tailor.lock format are unchanged.

  • #​2167 4c74e1b Thanks @​dqn! - Run TailorDB migration scripts as workflow jobs so they are no longer bound by the 60-second script execution limit.

    A data migration that previously failed with deadline_exceeded — losing its logs along with any record of how far it got — now runs to completion. tailor deploy waits for it and reports its logs as before. This applies to every migration; no flag or migration-file change is required.

Patch Changes
  • #​2170 2f79d38 Thanks @​dqn! - Keep the generated Kysely table types and migration types in agreement on which array columns need ArrayColumnType, so a future column type cannot pick up an array form that Kysely can read through in one and not the other.

  • #​2145 293a0c3 Thanks @​dqn! - Generate Date-based migration types for date columns, matching the values returned by the function runtime and the existing generated table types. Reading a date column in migrate.ts now yields a Date instead of a string, while writes accept either. Migration scripts can also read and write date and datetime array columns. Existing migration scripts that treat selected date values as strings must be updated.

  • #​2163 58bfd7f Thanks @​toiroakr! - Fail deploy with a clear error when a resolver, executor, or workflow job references a Node-only global (process, Buffer, require, etc.) that the Tailor Platform runtime never defines, instead of deploying successfully and only failing with a ReferenceError at runtime. Use defineConfig({ env }) and the env argument passed into the body function to read configuration values.

  • #​2156 e36bc5d Thanks @​dqn! - - Speed up deployments by reducing metadata API calls.

    • Stop CLI wait commands when a function execution is canceled and report the cancellation as a failure.
  • #​2162 1c1b989 Thanks @​dqn! - Reduce the chance that deploy metadata writes overwrite labels changed by another client.

  • #​2177 dd5bf5a Thanks @​toiroakr! - Remove unused internal .brand() calls from config schemas. This is invisible to users: the generated public types were already unaffected by these calls.

  • #​2152 fa17d16 Thanks @​renovate! - fix(deps): update dependency rolldown to v1.2.5

  • #​2153 07ac5d0 Thanks @​renovate! - fix(deps): update dependency @​inquirer/prompts to v8.6.0

  • #​2006 1aca9f2 Thanks @​renovate! - fix(deps): update oxc

  • #​2155 3535006 Thanks @​renovate! - fix(deps): update dependency @​inquirer/core to v12

  • #​2165 f9bb880 Thanks @​renovate! - fix(deps): update dependency @​0no-co/graphql.web to v1.3.4

  • #​2173 4090591 Thanks @​renovate! - chore(deps): update dependency @​electric-sql/pglite to v0.5.6

v2.6.0

Compare Source

Minor Changes
  • #​2136 6fba096 Thanks @​toiroakr! - .relation()'s toward.type option is renamed to toward.table, since it names a target table rather than a TypeScript/GraphQL type — matching the db.type()db.table() rename. The old spelling keeps working as a deprecated alias until v3; tailor upgrade offers the v3/relation-toward-table codemod to rewrite toward: { type: ... } to toward: { table: ... } across TypeScript/JavaScript sources. The relation's own type (its cardinality, e.g. "n-1") is unchanged.

  • #​2144 92db44d Thanks @​dqn! - Export the CLI foundation (logger, styles, defineAppCommand, createCommonArgs, the shared argument shapes, and the arg/defineCommand/runCommand/runMain command toolkit) from @tailor-platform/sdk/cli, and move the CLI plugins onto it. Plugins previously bundled their own copy of the logger, so --json and --verbose set by a plugin never reached the SDK code paths it calls; both flags now feed one logger state, and --verbose also enables logger.debug output.

  • #​2157 310b098 Thanks @​dqn! - Support JSONC and JSON5 Renovate configs in tailor setup deps without changing their comments or formatting. Renovate configs that Renovate itself would reject for duplicate keys are now reported for manual inspection instead of being updated.

Patch Changes
  • #​2159 1dc8b53 Thanks @​dqn! - Internal refactoring: the bundle concurrency limiter now uses the p-limit dependency already used elsewhere in the CLI instead of a hand-rolled worker pool. The concurrency cap, input-order results, and failure handling are unchanged; the only observable difference is that the first bundle now starts a microtask later instead of synchronously.

  • #​2142 f576eb4 Thanks @​dqn! - Internal refactoring: the wait point key rules and the platform runtime globals allowlist each moved to a single definition shared by validation and the test-runtime emulation. Accepted keys, error messages, and the emulated runtime surface are unchanged.

  • #​2161 189b993 Thanks @​dqn! - TAILOR_APPLY_CONCURRENCY and TAILOR_BUNDLE_CONCURRENCY now fall back to their defaults when set above Number.MAX_SAFE_INTEGER. Such values were previously used as-is, which silently lifted the concurrency cap or applied a rounded number that did not match what was set. Values with leading zeros (0007) are now accepted.

  • #​2143 25814af Thanks @​dqn! - Internal refactoring: TailorDB and IdP permission definitions are now normalized by one shared implementation. Accepted permission formats and their behavior are unchanged.

  • #​2140 361afa5 Thanks @​dqn! - Remove the unused internal DeepWidening type helper chain, including a TrueFalseToBool helper whose implementation never matched its name.

  • #​2123 2504afc Thanks @​renovate! - fix(deps): update dependency get-tsconfig to v4.14.3

  • #​2135 5b7b676 Thanks @​renovate! - fix(deps): update dependency politty to v0.11.9

  • #​2006 1aca9f2 Thanks @​renovate! - chore(deps): lock file maintenance

v2.5.0

Compare Source

Minor Changes
  • #​2076 d4a23f0 Thanks @​dqn! - Add tailor function script, which scaffolds a one-off script executed by tailor function run without deploying. By default, the skeleton imports the project's generated getDB() when kyselyTypePlugin is configured; without the plugin, the command generates a script-scoped db.ts and db.snapshot.json from local table definitions. Pass --remote to generate those script-scoped files from a deployed or external namespace instead. function run refuses to execute the script when that snapshot no longer matches the deployed or locally defined table and field structure (override with --allow-schema-drift).

  • #​2103 0578df4 Thanks @​toiroakr! - Add PluginConfigRegistry to @tailor-platform/sdk/plugin, an interface builtin plugins extend via declaration merging to register their config type under their own id. kyselyTypePlugin and seedPlugin now register through it.

  • #​2088 c9f91d9 Thanks @​dqn! - The --branch option of tailor setup branch is renamed to --target, so it no longer collides with the subcommand name. The old spelling keeps working as a deprecated alias until v3 and prints a deprecation warning when used; tailor upgrade offers the v3/setup-branch-flag-rename codemod to rewrite setup branch --branch invocations across package.json scripts, shell and Windows scripts, YAML, Markdown, and JavaScript/TypeScript sources. The --branch option of setup tag, setup preview, and setup coordinate is unchanged.

  • #​2110 fca0ff0 Thanks @​dqn! - Breaking change (beta): Rename tailor setup renovate to tailor setup deps, which selects the dependency update provider with --provider (currently renovate, the default).

  • #​2124 e8e8097 Thanks @​dqn! - Breaking change (beta): Rename the remaining TailorDB identifiers that named a db.table() definition a type:

    • record trigger config typeNametableName
    • PluginRecordTriggerConfig.typeNametableName
    • generator auth input userProfile.typeNametableName
    • mockFile().calls[] entries expose tableName
    • tailordb.file runtime parameters and their JSDoc

    Update custom plugins that build a record trigger config, and test assertions that read mockFile().calls[].typeName. Executor runtime args keep typeName, since that is the key the platform sends into a deployed executor; the proto type_name wire field, TRN type segments, and the .typeName() field builder are unchanged.

  • #​2067 a2e431f Thanks @​dqn! - Add tailor tailordb migration generate --data-only to create a migration with no schema changes that exists to run a data transformation script. Pass --namespace to pick the target when more than one namespace configures migrations.

Patch Changes
  • #​2128 2a97723 Thanks @​dqn! - Simplify how build-only resolver bundles are merged across config files. No observable behavior change.

  • #​2087 e98a03d Thanks @​toiroakr! - Deprecate execJobFunction on the workflow value imported from @tailor-platform/sdk/runtime(/workflow); it is removed in v3. Calling a workflow job by name through it has no working use — the build already rejects a direct call to it from inside a job body — so call the target job's own .start() method instead. The ambient tailor.workflow.execJobFunction global (what .start() itself compiles down to) is unaffected.

  • #​2134 46e2b6e Thanks @​dqn! - Prevent unchanged Executor, pipeline resolver, Auth IdP, user-profile, and tenant-provider resources from appearing as updates when the platform returns omitted fields with their default values.

  • #​2110 a588f78 Thanks @​dqn! - Fix the missing deprecation warning for tailor function test-run when a global option precedes the subcommand, such as tailor function --json test-run.

  • #​2138 870c8cd Thanks @​dqn! - Stop exporting internal declarations that were only used within their own module.

  • #​2102 4f017f2 Thanks @​dqn! - Report a connection failure while preparing the login or auth-connection authorization URL as a normal command error, instead of treating it as an SDK crash.

  • #​2122 f5b5b24 Thanks @​toiroakr! - Minify the SDK's build output (function names are preserved for readable stack traces), shrinking the CLI bundle by roughly 40%. Pin the script expression generated for db.fields.timestamps()'s built-in updatedAt hook so it no longer changes across SDK builds, which previously could surface as a spurious "hooks modified" migration diff for every table using it.

  • #​2120 e4966ec Thanks @​toiroakr! - Fix tailor deploy warning Could not validate OAuth2 client "<name>": unresolved attribute. The pre-flight check could not evaluate the rule that rejects requireDpop: true on a browser client, so it skipped it for every OAuth2 client. The rule now runs: a browser client with requireDpop: true fails pre-flight, and other client types no longer produce the warning.

  • #​2129 124db73 Thanks @​dqn! - Report the real error when the folder lookup in tailor organization folder delete fails with something other than "not found" (e.g. network, permission, or authentication errors), instead of always claiming the folder was not found.

  • #​2074 13cd666 Thanks @​dqn! - Prevent TailorDB migration processing from changing object prototypes when snapshots contain special record keys

  • #​2006 1aca9f2 Thanks @​renovate! - fix(deps): update oxc

  • #​2030 943b577 Thanks @​renovate! - chore(deps): update dependency tsx to v4.23.12

  • #​2081 80403ce Thanks @​renovate! - chore(deps): update dependency @​electric-sql/pglite to v0.5.5

  • #​2083 fa4fc36 Thanks @​renovate! - fix(deps): update dependency get-tsconfig to v4.14.2

  • #​2084 bb85f06 Thanks @​renovate! - fix(deps): update dependency kysely to v0.29.5

  • #​2085 98542d3 Thanks @​renovate! - fix(deps): update dependency open to v11.0.1

  • #​2108 c2a1fb5 Thanks @​renovate! - fix(deps): update dependency @​bufbuild/protobuf to v2.14.0

  • #​2109 b48e4e0 Thanks @​renovate! - fix(deps): update dependency globals to v17.11.0

  • #​2117 cedf0f6 Thanks @​renovate! - fix(deps): update dependency es-toolkit to v1.51.0

  • #​2132 bec3a20 Thanks @​dqn! - Skip reloading resolver files when a namespace's resolvers were already loaded but yielded none, avoiding duplicate imports and log output.

  • #​2064 737edfe Thanks @​dqn! - Fix tailor seed apply timing out with deadline_exceeded when seeding 100+ IdP _User rows. _User rows are now sent in chunks of 25, and when a chunk fails the confirmed created/updated counts are reported so re-running with --upsert is an informed choice.

  • #​2126 889bd16 Thanks @​dqn! - Refactor TailorDB migration snapshot internals into focused modules without changing CLI behavior or persisted formats.

  • #​2130 f67de20 Thanks @​dqn! - Output an empty JSON array from tailor staticwebsite domain list --json when no custom domains exist, instead of producing no stdout output.

  • #​2127 37e3105 Thanks @​dqn! - Fix TailorDB hooks and validators sharing one function reference (e.g. hooks: { create: fn, update: fn }) being deployed with the argument shape of only the last role, which made the other role read undefined values at runtime.

  • #​2073 f03ea04 Thanks @​dqn! - Rename the plugin authoring APIs that model TailorDB tables:

    • PluginGeneratedTypePluginGeneratedTable
    • TailorDBTypeForPluginTailorDBTableForPlugin
    • TypePluginOutputTablePluginOutput
    • PluginProcessContextPluginTableProcessContext
    • typeConfigRequiredtableConfigRequired
    • onTypeLoadedonTableLoaded
    • callback context type / typeConfigtable / tableConfig
    • plugin output typestables
    • TailorDBNamespaceData.typesTailorDBNamespaceData.tables
    • executor context sourceTypesourceTable
    • getGeneratedTypegetGeneratedTable
    • PluginGeneratedTypeSourcePluginGeneratedTableSource
    • isPluginGeneratedTypeisPluginGeneratedTable
    • source metadata generatedTypeKindgeneratedTableKind

    Update custom plugins, generated-table lookups, and CLI source metadata consumers to use the new names. The generated .tailor/<plugin-id>/types directory and the TailorDB ERD artifact's generatedTypeKind field are unchanged.

  • #​2070 fea7726 Thanks @​dqn! - The remaining internal comments, JSDoc, and test titles that named a db.table() definition a type now say table (table-level hooks, table-attached plugins, table renames, and so on). Behavior is unchanged; a few internal error messages follow the rename, such as Plugin "..." does not support table-attached processing. Identifiers and persisted formats are untouched.

  • #​2089 90948e6 Thanks @​toiroakr! - Add a targeted hint to the Remote schema drift detected error when every reported drift is a missing script hash — the pattern left by an environment last deployed with the pre-v2 CLI, which never wrote script hashes. The hint points at migration sync <N>, which is already listed as one of the general resolution options. The v2 migration guide (docs/migration/v2.md) now also documents that the first tailor deploy against such an environment needs a migration sync first.

  • #​2131 cb83f59 Thanks @​dqn! - Cancel the internal upload timeout timer in tailor staticwebsite deploy once each upload settles, so finished deploys no longer hold the process open for the remaining timeout when the CLI is used programmatically.

  • #​2087 9e0ad76 Thanks @​toiroakr! - Fail the build instead of silently dropping a workflow job. A createWorkflowJob whose name/body isn't a static literal (e.g. body: someWrapper(fn)), a job's .start() call factored into a helper function outside any job body (including a helper defined in another file, even one outside the workflow service's files pattern), or a job called by calling execJobFunction directly instead of <job>.start() (on the ambient tailor.workflow global or the workflow value imported from @tailor-platform/sdk/runtime) — previously passed typecheck/lint/apply but either threw at runtime ("...is rewritten at build time and is unavailable in the bundle") or silently dropped the target job from the bundle the first time it was invoked. All of these now fail the build with the offending job name and file. A workflow file with a syntax error now fails with a clear parse error instead of the same job-detection error. The runtime stub error also names the job so a leftover case is easier to diagnose.

  • #​2133 35b2997 Thanks @​dqn! - Report the real error when the workspace lookup in tailor workspace delete fails for a reason other than the workspace not existing (e.g. network or authentication errors), instead of always claiming the workspace was not found.

v2.4.0

Compare Source

Minor Changes
  • #​2054 6a753cb Thanks @​toiroakr! - defineAIGateway()'s authNamespace is now optional, defaulting to the application's own Auth service (local or external) — the common case, since an AI Gateway usually authenticates against its own app's auth. To authenticate against a different application's Auth service, reference it via auth: { name, external: true } and let authNamespace default to it, the same way a local defineAuth() does. Once tailor.d.ts is generated, authNamespace is type-narrowed to your application's own auth namespace name; register additional names via declare module "@tailor-platform/sdk" { interface AuthNamespaceNameRegistry { ... } } only if you need to set authNamespace explicitly to a namespace your own auth doesn't reference.

  • #​2075 bd0e397 Thanks @​dqn! - tailor function test-run is renamed to tailor function run. The old name keeps working as a deprecated alias until v3 and prints a deprecation warning when used; tailor upgrade offers the v3/function-test-run-rename codemod to rewrite function test-run invocations across package.json scripts, shell and Windows scripts, YAML, Markdown, and JavaScript/TypeScript sources.

Patch Changes
  • #​2071 7ae89fe Thanks @​dqn! - Fix tailor deploy never creating TailorDB types that appear in no pending migration diff and define no GraphQL permission — for example baseline tables when a migration history is replayed into a fresh workspace. Such types are now created before any migration script runs.

  • #​2050 a124fed Thanks @​toiroakr! - Stop dumping the request payload in API error messages. Failed requests (including tailor query timeouts) previously printed the full request body, which could expose credentials such as machine user access tokens embedded in query arguments to terminal and CI logs. Error messages now carry only allowlisted identifiers (resource names, namespaces, and ids) so a failing resource can still be identified.

  • #​1970 2b70c30 Thanks @​renovate! - fix(deps): update rolldown

  • #​2036 d8ec141 Thanks @​renovate! - chore(deps): update dependency esbuild@>=0.17.0 <0.28.1 to v0.28.2

  • #​2047 228e394 Thanks @​renovate! - fix(deps): update dependency @​toiroakr/lines-db to v0.12.1

  • #​2065 5a3a0e1 Thanks @​toiroakr! - Raise the minimum supported Node.js version to 22.18.0 (from 22.15.0).

    tailor seed validate crashed on Node 22.15.0–22.17.x with Expected a string, an ArrayBuffer, or a TypedArray to be returned for the "source" from the "load" hook but got null. This is a Node.js bug (nodejs/node#58607): requiring a node:-scheme-only builtin (node:sqlite, used internally by the seed validator) while both a synchronous resolve and load hook are registered via module.registerHooks() crashes the loader on those versions. The SDK always registers both hooks, so any project on Node 22.15.0–22.17.x hit this. Node fixed it upstream in 22.18.0 (nodejs/node#58612); this release raises engines.node to match, since Node 22.15.0–22.17.x never actually supported tailor seed validate.

  • #​2068 80260b3 Thanks @​dqn! - The remaining CLI output and generated artifacts that named a db.table() definition a type now say table.

    • The deploy plan labels a TailorDB table change (table) instead of (type). This also changes the machine-readable deploy --dry-run --json output: the changes[].labels value "type" becomes "table". Update any CI that matches on the old label.
    • The seed chunker's oversized-record error reads A single record in table "Order" ....
    • The duplicate plugin-generated table name error reads Duplicate plugin-generated table name "...", and the header of each generated .tailor/<plugin-id>/types/*.ts file reads Auto-generated table by plugin. Both name the originating table (or (namespace)) under a neutral source: / Source: key.
    • The seed plugin's generated _User.schema.ts comment reads no TailorDB backing table. The next tailor generate rewrites the file; existing files keep working as-is.
  • #​2069 d07a120 Thanks @​dqn! - The remaining published docs that named a db.table() definition a type now say table: the migration guide's rebaseline description, the testing guide's executor trigger description, and the create-sdk tailordb template README's feature list (field-level and table-level validations).

  • #​2062 153a780 Thanks @​dqn! - tailor seed now calls a db.table() definition a table instead of a type, in its help, progress, and errors — Seeding 3 tables via Kysely batch insert. The fillSeedData documentation and the create-sdk template hint follow.

    Messages that list the seed targets say entities rather than tables, because _User is an IdP entity rather than a TailorDB table and can appear in the same list.

    The positional is now named entities, so --help shows [entities] instead of [types]. Positionals are matched by argv order, so existing invocations are unaffected.

  • #​2063 5d16dc9 Thanks @​dqn! - The remaining docs and editor tooltips now describe a db.table() definition as a table instead of a type. The TailorDB docs say table-level (matching the sentences around them that already say table), the file-upload runtime API documents its typeName parameters as table names, and the create-sdk tailordb template's test titles follow suit.

  • #​2060 c880f23 Thanks @​dqn! - deploy, schema loading, and the config parser now call a db.table() definition a table instead of a type, matching the vocabulary the docs and db.table() already use. The deploy plan lists a TailorDB tables section and names a deleted table as TailorDB table "Order", a table missing .permission() is reported as TailorDB table "User" has no .permission() configured, and relation errors read Field "userID" on table "Employee".

    The built-in plugin descriptions say table for the same reason — kyselyTypePlugin now reads "Generates Kysely type definitions for TailorDB tables", keeping "type definitions" for the TypeScript output it writes.

    Messages about a field's data type, and the TypeScript types generated into db.ts, are unchanged.

  • #​2055 303e209 Thanks @​dqn! - TailorDB migration output now calls a db.table() definition a table instead of a type, matching the vocabulary the docs already use. Schema drift details read Table 'User' exists in snapshot but not in remote, a removal warning reads Table removed (all records in this table will be deleted during post-migration cleanup), and the --rename / --drop / --expand-contract help and errors describe their arguments as "Table.field" and "OldTable:NewTable".

    Only the wording changed: those flags accept exactly the values they did before, and the removal warning recorded in diff.json is never read back, so migrations generated earlier keep their wording and stay valid.

    Messages about a field's data type are unchanged, as is the DB types: line naming the generated db.ts.

  • #​2061 c2be0d3 Thanks @​dqn! - The config types now describe a db.table() definition as a table instead of a type, so editor tooltips match the vocabulary db.table() already uses. Hovering db.table(...).features({ ... }) documents gqlOperations and publishEvents in terms of a table, aggregation and bulkUpsert gain the descriptions they were missing, and an executor's record trigger documents typeName as "TailorDB table name to watch for events".

    tailordb query reports an unresolvable name as Could not find namespace for tables in query: ….

    Field-level descriptions still say type where they mean a field's data type, and the key names themselves are unchanged.

  • #​2057 6bee645 Thanks @​dqn! - tailor tailordb truncate now calls a db.table() definition a table instead of a type, in its help, prompts, and results. The positional argument is named tables, and TruncateOptions.types from @tailor-platform/sdk/cli is now TruncateOptions.tables:

    await truncate({ types: ["User"] }); // before
    await truncate({ tables: ["User"] }); // after

    Passing table names positionally is unchanged, as in tailor tailordb truncate User Post. The argument also binds by name, so an invocation spelled --types User now has to read --tables User.

v2.3.0

Compare Source

Minor Changes
  • #​2041 0d2d542 Thanks @​dqn! - Add tailor setup renovate to generate a Renovate config that extends Tailor's shared preset without overwriting existing or customized configuration.

  • #​2043 2524e2f Thanks @​dqn! - Allow generated GitHub workflows to fail on unsuppressed setup drift when the TAILOR_PLATFORM_FAIL_ON_DRIFT repository variable is set to true. Execution and configuration errors in the drift check now fail regardless of this variable. Re-run the relevant tailor setup command after upgrading to regenerate the workflow.

  • #​2035 a928959 Thanks @​dqn! - Convert a TailorDB field to a type that cannot be applied in place without writing the migrations by hand. tailor tailordb migration generate now offers to carry the values through a temporary field and writes both migrations for you; you supply the conversion expression. Non-interactive runs opt in per field with --expand-contract "Type.field", and still fail without it.

    Writes that land on the field while the conversion runs are dropped rather than converted, so stop writing to it first on a live workspace. Array-cardinality changes, unique fields, and fields named by an index, relationship, permission, or type-level script remain manual.

  • #​2033 d5801fc Thanks @​dqn! - Support more TailorDB field type changes as single in-place migrations: integer now converts to string and decimal, float to string and decimal, decimal to float, and boolean to string. A float field that is already unique keeps to the 3-step migration when converting to decimal, because rounding to the target scale can merge distinct values.

  • #​1991 dcc66a6 Thanks @​dqn! - Renaming a TailorDB field no longer silently drops the field's data: tailordb migration generate now detects rename candidates and records a confirmed rename as a single breaking field_renamed change with a scaffolded data-copy script, instead of decomposing it into a removal plus an addition. Note: older SDK versions cannot read a diff.json that contains a field_renamed change and stop with a validation error.

  • #​2026 1346b75 Thanks @​dqn! - Renaming a TailorDB type no longer silently drops its records: tailordb migration generate now detects type rename candidates and records a confirmed rename as a single breaking type_renamed change with a scaffolded id-preserving data-copy script, instead of decomposing it into a removal plus an addition (confirm interactively, or via --rename "OldType:NewType" / --drop "Type" in non-interactive runs). Note: older SDK versions cannot read a diff.json that contains a type_renamed change and stop with a validation error.

  • #​1933 89b5647 Thanks @​toiroakr! - Support wait point keys with runtime values. Write $paramName in a key passed to createWaitPoints' define and the param names become the argument of .with(), which builds the concrete key:

    export const { lineApproval } = createWaitPoints((define) => ({
      lineApproval: define.for("line-approval-$lineId")<{ message: string }, { approved: boolean }>(),
    }));
    
    await lineApproval.with({ lineId: line.id }).wait({ message: "Please approve" });

    This makes it possible for one execution to suspend on the same logical wait point more than once at a time — one approval per order line, one per approver — which previously failed because a suspension with that key was already pending. A parameterized wait point exposes only .with(), so the unsubstituted key can never be waited on. mockWorkflow().waitPointWith(definition, params) gives typed mocks for one binding.

    The key has to come before the Payload / Result type arguments, because TypeScript stops inferring it as a literal type once those are given explicitly, and the param names can only be read off a literal. createWaitPoint takes its type arguments first, so it cannot type $params; deploy rejects such a key and points at createWaitPoints. Its own signature is unchanged.

    Wait point keys are now checked by deploy instead of failing when the job creates the suspension. Keys must match [a-z0-9-], be 3 to 63 characters long, and start and end with [a-z0-9]. A key that never worked — a camelCase createWaitPoints property name, say — was rejected by the platform once the job ran; deploy now reports it before anything is deployed. Inside createWaitPoints, pass a valid key to define to keep the property name you read at the call site:

    managerApproval: define.for("manager-approval")<{ amount: number }, { approved: boolean }>(),

    This works for a key without $params too, which is the way to keep a property name that reads well at the call site while the key stays within the platform grammar.

Patch Changes
  • #​2025 2574bdd Thanks @​dqn! - Treat migrate.test.ts as a migration artifact: tailordb migration rebaseline now removes a test-only migration directory together with the history it belongs to, and aborts when one is added while its confirmation prompt is open.

  • #​2012 8826675 Thanks @​renovate! - chore(deps): lock file maintenance

  • #​2014 3852f3a Thanks @​renovate! - chore(deps): update dependency tsx to v4.23.10

  • #​2018 6d13888 Thanks @​renovate! - fix(deps): update dependency @​toiroakr/lines-db to v0.12.0

  • #​2042 6ee6584 Thanks @​dqn! - Retry machine-user access token requests after transient connection timeouts.

  • #​2032 b173a0d Thanks @​dqn! - Workflows generated by tailor setup preview now include a tailor-drift-check step, so preview-only repositories audit their generated workflows in CI like branch, tag, and coordinator workflows already do. The check is warning-only and never fails the job. tailor setup check reports targets generated with an older template as outdated; re-run the matching tailor setup subcommand to regenerate them.

  • #​2034 413f6cb Thanks @​dqn! - Name the serial-column constraint in db.insertInto(...).values({ ... }) and .set({ ... }) errors, where TypeScript previously truncated the explanation away

  • #​2051 a3b980d Thanks @​toiroakr! - Fix tailordb deploy/migrate failing with type_hook.create.expr: must be at most 10000 characters on TailorDB types with many field hooks. The generated hook scripts are now optimized to avoid duplication.

    Since generated hook/validate script text changes for any type with hooks, the first tailordb migration generate after upgrading will report a script update for those types even without any code changes on your side — this is expected and required for the fix to take effect.

  • #​2049 b3b2aae Thanks @​dqn! - TailorDB schema snapshots now keep their tables under a tables key instead of types, completing the db.type()db.table() rename. Committed migration histories keep replaying: a legacy types key in schema.json is still read and moved on load, so no migration files need editing. Migration file format version is now 5 and this SDK reads versions 1 through 5.

    Code that imports SchemaSnapshot or NormalizedSchemaSnapshot from @tailor-platform/sdk/cli and reads snapshot.types no longer compiles:

    Object.keys(snapshot.types); // before
    Object.keys(snapshot.tables); // after

    This also applies to the snapshots returned by compareSnapshots, createSnapshotFromLocalTypes, reconstructSnapshotFromMigrations, and compareLocalTypesWithSnapshot.

    The types key on parsed TailorDB service config is a different thing and is unchanged.

  • #​2044 8a5cc3f Thanks @​dqn! - TailorDB migration diffs now describe table-level changes as table_* instead of type_*, completing the db.type()db.table() rename. Migration histories written by earlier versions keep working: type_* change kinds in committed diff.json files are still read and normalized on load, so no migration files need editing. Migration file format version is now 3 and this SDK reads versions 1 through 3. CLI diff output reads [Table] and table(s) added where it previously read [Type] and type(s) added.

    Code that imports MigrationDiff / DiffChange from @tailor-platform/sdk/cli and compares change.kind against a renamed spelling no longer compiles, because the discriminant literal is gone from the union:

    Old spelling New spelling

Note

PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate
renovate Bot requested a review from a team as a code owner August 22, 2026 11:53
@renovate
renovate Bot force-pushed the renovate/tailor-platform-sdk-2.x branch from 302343f to d40bef2 Compare August 29, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants