From 91fb3ed66943a5a1ce5a4078ffb09613ca0650f2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 8 Sep 2026 12:37:58 +0000 Subject: [PATCH 1/3] chore(deps): bump zod from 4.4.3 to 4.5.4 Bumps [zod](https://github.com/colinhacks/zod) from 4.4.3 to 4.5.4. - [Release notes](https://github.com/colinhacks/zod/releases) - [Commits](https://github.com/colinhacks/zod/compare/v4.4.3...v4.5.4) --- updated-dependencies: - dependency-name: zod dependency-version: 4.5.4 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- pnpm-lock.yaml | 23 ++++++++++++++--------- pnpm-workspace.yaml | 2 +- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index af3e4f83..e30f3e02 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -139,8 +139,8 @@ catalogs: specifier: 4.1.10 version: 4.1.10 zod: - specifier: 4.4.3 - version: 4.4.3 + specifier: 4.5.4 + version: 4.5.4 overrides: fast-uri@<3.1.6: 3.1.6 @@ -263,7 +263,7 @@ importers: version: 5.7.0 zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 devDependencies: '@btravstack/tsconfig': specifier: 'catalog:' @@ -285,7 +285,7 @@ importers: version: link:../../packages/contract zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 devDependencies: '@btravstack/tsconfig': specifier: 'catalog:' @@ -325,7 +325,7 @@ importers: version: 5.7.0 zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 devDependencies: '@btravstack/tsconfig': specifier: 'catalog:' @@ -423,7 +423,7 @@ importers: version: 4.1.10(@types/node@26.4.0)(@vitest/coverage-v8@4.1.10)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.13)(yaml@2.9.0) zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 packages/contract: dependencies: @@ -478,7 +478,7 @@ importers: version: 4.1.10(@types/node@26.4.0)(@vitest/coverage-v8@4.1.10)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.13)(yaml@2.9.0) zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 packages/testing: devDependencies: @@ -538,7 +538,7 @@ importers: version: 4.1.10(@types/node@26.4.0)(@vitest/coverage-v8@4.1.10)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.13)(yaml@2.9.0) zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 packages/worker: dependencies: @@ -614,7 +614,7 @@ importers: version: 4.1.10(@types/node@26.4.0)(@vitest/coverage-v8@4.1.10)(jiti@2.7.0)(terser@5.48.0)(tsx@4.23.13)(yaml@2.9.0) zod: specifier: 'catalog:' - version: 4.4.3 + version: 4.5.4 packages: @@ -5716,6 +5716,9 @@ packages: zod@4.4.3: resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} + zod@4.5.4: + resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} + zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} @@ -10866,4 +10869,6 @@ snapshots: zod@4.4.3: {} + zod@4.5.4: {} + zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 939a9b6a..e73f7b98 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -54,7 +54,7 @@ catalog: vitepress: 1.6.4 vitepress-plugin-mermaid: 2.0.17 vitest: 4.1.10 - zod: 4.4.3 + zod: 4.5.4 peerDependencyRules: ignoreMissing: From dcc48ee632a54851f74432eefa036139ed18d256 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 8 Sep 2026 12:40:28 +0000 Subject: [PATCH 2/3] Fix prepare script for custom git hooks paths Co-authored-by: btravers <3476441+btravers@users.noreply.github.com> --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index aba65652..6f91a3ce 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "format": "oxfmt .", "knip": "knip", "lint": "oxlint .", - "prepare": "lefthook install", + "prepare": "lefthook install --reset-hooks-path", "release": "pnpm build && changeset publish", "test": "turbo run test", "test:integration": "turbo run test:integration", From cb9383bda0f24b631059cde965820dd5221af2d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 8 Sep 2026 12:53:02 +0000 Subject: [PATCH 3/3] test: allow zod 4.5 validation wording --- .../worker/src/__tests__/child-wire.inprocess.spec.ts | 8 ++++---- .../src/__tests__/continue-as-new.inprocess.spec.ts | 8 ++++---- packages/worker/src/__tests__/handlers.inprocess.spec.ts | 8 ++++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/packages/worker/src/__tests__/child-wire.inprocess.spec.ts b/packages/worker/src/__tests__/child-wire.inprocess.spec.ts index 60ee491e..5241f6f7 100644 --- a/packages/worker/src/__tests__/child-wire.inprocess.spec.ts +++ b/packages/worker/src/__tests__/child-wire.inprocess.spec.ts @@ -112,8 +112,8 @@ describe("workflow entry point — wire format against a real server", () => { const cause = (result.error as WorkflowFailedError).cause; expect(cause).toBeInstanceOf(ApplicationFailure); expect((cause as ApplicationFailure).type).toBe("WorkflowOutputValidationError"); - expect((cause as ApplicationFailure).message).toBe( - 'Workflow "entryInvalidOutput" output validation failed: at n: Invalid input', + expect((cause as ApplicationFailure).message).toMatch( + /Workflow "entryInvalidOutput" output validation failed: at n: (?:Invalid input|expected number, received string)/, ); }); }); @@ -297,8 +297,8 @@ describe("child-workflow boundary — wire format against a real server", () => // EFFECT 1: the send was rejected client-side with the SAME typed // classification and message `createTypedChildSignals` produces — // naming the child workflow, the signal, and the failing field. - expect(result.sendError).toBe( - 'Child workflow "signalful" signal "note" input validation failed: at text: Invalid input', + expect(result.sendError).toMatch( + /Child workflow "signalful" signal "note" input validation failed: at text: (?:Invalid input|expected string, received number)/, ); // EFFECT 2 (corroborating): the child's OWN completed output shows it // never received a note. diff --git a/packages/worker/src/__tests__/continue-as-new.inprocess.spec.ts b/packages/worker/src/__tests__/continue-as-new.inprocess.spec.ts index 0eeb5ee8..1561deb0 100644 --- a/packages/worker/src/__tests__/continue-as-new.inprocess.spec.ts +++ b/packages/worker/src/__tests__/continue-as-new.inprocess.spec.ts @@ -162,8 +162,8 @@ describe("continue-as-new against a real server", () => { const cause = (result.error as WorkflowFailedError).cause; expect(cause).toBeInstanceOf(ApplicationFailure); expect((cause as ApplicationFailure).type).toBe("WorkflowInputValidationError"); - expect((cause as ApplicationFailure).message).toBe( - 'Workflow "invalidContinuation" input validation failed: at n: Invalid input', + expect((cause as ApplicationFailure).message).toMatch( + /Workflow "invalidContinuation" input validation failed: at n: (?:Invalid input|expected number, received string)/, ); // EFFECT (send-side guard, not just the receive-side echo of it): the @@ -275,8 +275,8 @@ describe("continue-as-new against a real server", () => { const cause = (result.error as WorkflowFailedError).cause; expect(cause).toBeInstanceOf(ApplicationFailure); expect((cause as ApplicationFailure).type).toBe("WorkflowInputValidationError"); - expect((cause as ApplicationFailure).message).toBe( - 'Workflow "archive" input validation failed: at batchId: Invalid input', + expect((cause as ApplicationFailure).message).toMatch( + /Workflow "archive" input validation failed: at batchId: (?:Invalid input|expected string, received number)/, ); // EFFECT (send-side guard, not just the receive-side echo of it): the diff --git a/packages/worker/src/__tests__/handlers.inprocess.spec.ts b/packages/worker/src/__tests__/handlers.inprocess.spec.ts index b9afb2e8..3be29d53 100644 --- a/packages/worker/src/__tests__/handlers.inprocess.spec.ts +++ b/packages/worker/src/__tests__/handlers.inprocess.spec.ts @@ -135,8 +135,8 @@ describe("handler binding against a real server", () => { const dropped = capturedLogs.find( (l) => l.level === "WARN" && l.message.includes('Dropped signal "bump"'), ); - expect(dropped?.message).toBe( - 'Dropped signal "bump": input validation failed: at by: Invalid input', + expect(dropped?.message).toMatch( + /Dropped signal "bump": input validation failed: at by: (?:Invalid input|Too small: expected number to be >0)/, ); } finally { restoreLogger(); @@ -198,8 +198,8 @@ describe("handler binding against a real server", () => { // naming the query) — not some other failure mode (e.g. an // unregistered handler, which would carry a different message). expect(rejected).toBeInstanceOf(ServiceError); - expect((rejected as ServiceError).cause?.message).toContain( - 'Query "describe" input validation failed: Invalid input', + expect((rejected as ServiceError).cause?.message).toMatch( + /Query "describe" input validation failed: (?:Invalid input|Too small: expected string to have >=1 characters)/, ); await handle.signals.finish();