From 93e26a8827ce2902a8917cc42d6005aa079c5b99 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 11:15:43 +0000 Subject: [PATCH 1/7] feat(ci): alchemy CI and deploy shape from the starter, effect 4.1.0 (SYS-900) CI is two workflows, check.yml and deploy.yml, both copied byte for byte from the starter's #104. deploy.yml is dormant until the repository variable ALCHEMY_DEPLOY is true. Credentials are code: apps/site/stacks/github.ts mints a scoped Cloudflare token into repository secrets, and the app stack posts the preview URL as a comment. - effect and every published @effect/* package at 4.1.0; alchemy and its cloudflare and github packages pinned to the starter's pkg.alchemy.run tarballs; @alchemy.run/frontend-frameworks dropped (unused) - turbo.json, bin/cloud, package.json scripts check-env/deploy/destroy and the commitlint comments as in the starter - the required status context is now `check` alone; the release gate, changesets, release.jsonc, the mutation shard planner and both composite actions are removed; STRATEGY.md and AGENTS.md job-shape lines updated - stacks/github.ts lowercases GITHUB_REPOSITORY before naming the stack, so Owner/Repo and owner/repo are one stack effect 4.1.0 fallout fixed here: - KeyValueStore.makeStringOnly requires `keys`; the three test stores in Atom.integration.test.ts gain it - concurrent Atom.pull requests could finish out of order and leave the atom on the shorter batch; an accumulating pull now keeps the longest batch - @effect/platform-node-shared 4.1.0 reads process.platform at module load and the browser test projects import it, so those two projects define it --- .changeset/README.md | 27 - .changeset/effect-4-0-1-floor.md | 7 - .changeset/effect-4-0-5-peer-floor.md | 11 - .changeset/full-version-dependency-ranges.md | 7 - .changeset/funny-goats-repeat.md | 7 - .changeset/hungry-doors-stare.md | 5 - .changeset/ledger.yaml | 1 - .changeset/loose-moons-assert.md | 9 - .changeset/quiet-hooks-subscribe.md | 12 - .changeset/tsgo-0-63-brands.md | 8 - .github/actions/cloudflare-secrets/action.yml | 18 - .github/actions/dev-shell/action.yml | 26 - .github/rulesets/gates.json | 11 +- .github/workflows/changeset-check.yml | 20 - .github/workflows/check.yml | 52 + .github/workflows/ci.yml | 97 - .github/workflows/commitlint.yml | 22 - .github/workflows/deploy.yml | 81 + .github/workflows/previews.yml | 65 - .github/workflows/release-gate.yml | 102 - .github/workflows/release.yml | 25 - AGENTS.md | 2 +- README.md | 50 +- STRATEGY.md | 2 +- apps/site/alchemy.run.ts | 15 +- apps/site/package.json | 3 +- apps/site/src/cloudflare-env.d.ts | 2 +- apps/site/stacks/github.ts | 60 + bin/cloud | 15 +- commitlint.config.ts | 6 +- package.json | 1 + .../atom/effect-atom-react/vitest.config.ts | 1 + .../atom/effect-atom/src/atom.blueprint.ts | 43 +- .../tests/Atom.integration.test.ts | 3 + packages/atom/effect-atom/vitest.config.ts | 1 + pnpm-lock.yaml | 1873 +++++------------ pnpm-workspace.yaml | 21 +- release.jsonc | 20 - scripts/check-branch-rules.test.ts | 13 +- scripts/check-branch-rules.ts | 13 +- scripts/mutation-shards.test.ts | 155 -- scripts/mutation-shards.ts | 110 - turbo.json | 36 +- 43 files changed, 868 insertions(+), 2190 deletions(-) delete mode 100644 .changeset/README.md delete mode 100644 .changeset/effect-4-0-1-floor.md delete mode 100644 .changeset/effect-4-0-5-peer-floor.md delete mode 100644 .changeset/full-version-dependency-ranges.md delete mode 100644 .changeset/funny-goats-repeat.md delete mode 100644 .changeset/hungry-doors-stare.md delete mode 100644 .changeset/ledger.yaml delete mode 100644 .changeset/loose-moons-assert.md delete mode 100644 .changeset/quiet-hooks-subscribe.md delete mode 100644 .changeset/tsgo-0-63-brands.md delete mode 100644 .github/actions/cloudflare-secrets/action.yml delete mode 100644 .github/actions/dev-shell/action.yml delete mode 100644 .github/workflows/changeset-check.yml create mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/commitlint.yml create mode 100644 .github/workflows/deploy.yml delete mode 100644 .github/workflows/previews.yml delete mode 100644 .github/workflows/release-gate.yml delete mode 100644 .github/workflows/release.yml create mode 100644 apps/site/stacks/github.ts delete mode 100644 release.jsonc delete mode 100644 scripts/mutation-shards.test.ts delete mode 100755 scripts/mutation-shards.ts diff --git a/.changeset/README.md b/.changeset/README.md deleted file mode 100644 index df1fbb0..0000000 --- a/.changeset/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# Changesets - -This directory holds change-intent files consumed by pnpm-native workspace -versioning (`pnpm version -r`). One file per change, authored with: - -``` -pnpm change --bump --summary "" [...] -``` - -- A PR that changes anything under an application or package path MUST ship with - an intent here. Root tooling is outside the verdict. -- `--bump none` records a change that needs no release. A `none` on a - behavior-visible change is the same silent non-release the gate exists to - catch. -- Intents are consumed by `pnpm version -r` when the Release PR - lands: consumption is recorded in `ledger.yaml` and the intent files - are retained, so a present intent alone never implies a pending release. -- This README is NOT a changeset: the gate requires a file whose frontmatter - parses as `"": `. - -Releasing is handled by the shared release tooling in -`systemfsoftware/pnpm-release-management`, which this repository calls as a -reusable workflow (`.github/workflows/release.yml`) rather than carrying its own -copy; `release.jsonc` configures it. There is no registry publish: when the -Release PR lands, each released version is tagged `@vX.Y.Z` and its GitHub -Release is cut from the authored changelog. Consumers depend on packages as Nix -flake outputs pinned from git refs, so the tag is the release record. diff --git a/.changeset/effect-4-0-1-floor.md b/.changeset/effect-4-0-1-floor.md deleted file mode 100644 index bbb3687..0000000 --- a/.changeset/effect-4-0-1-floor.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@systemfsoftware/effect-atom": patch -"@systemfsoftware/effect-atom-react": patch -"@systemfsoftware/storybook-gherkin": patch ---- - -The published `effect` and `@effect/*` dependency ranges now start at 4.0.1 (`^4.0.1`, was `^4`), so a consumer resolves at least Effect 4.0.1. `@systemfsoftware/discern` also bundles `@effect/platform-node` and `@effect/platform-node-shared` 4.0.1 instead of 4.0.0. diff --git a/.changeset/effect-4-0-5-peer-floor.md b/.changeset/effect-4-0-5-peer-floor.md deleted file mode 100644 index 327503d..0000000 --- a/.changeset/effect-4-0-5-peer-floor.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@systemfsoftware/effect-atom-react": patch -"@systemfsoftware/effect-atom": patch -"@systemfsoftware/storybook-gherkin": patch ---- - -The Effect dependency now resolves to 4.0.5, and so does every `@effect/*` package installed with it. - -- Effect 4.0.5 requires `effect@^4.0.5` as a peer, so a tree mixing 4.0.5 with an earlier 4.0.x fails at import, not at install. Install the versions your tree's `@effect/*` packages name. -- `FileSystem.File.Info` reports `dev`, `ino`, `rdev`, `nlink` and `blocks` as `bigint` where it reported `number`. Convert at your own boundary with `BigInt` or `Number`. -- A decision's `instructions` and its classify and probability `criteria` accept a JSON object or array as well as a string, and a rating's `criteria` are `{ label, description }` entries rather than bare labels. Read a level's `label`, not the entry. diff --git a/.changeset/full-version-dependency-ranges.md b/.changeset/full-version-dependency-ranges.md deleted file mode 100644 index 252d60c..0000000 --- a/.changeset/full-version-dependency-ranges.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@systemfsoftware/effect-atom": patch -"@systemfsoftware/effect-atom-react": patch -"@systemfsoftware/storybook-gherkin": patch ---- - -Published dependency ranges now name a full version: `vitest`, `@vitest/*` and `@types/node` ranges start at 5.0.1 and 26.6.2 (were `^5` and `^26`), `typescript` at 7.0.2 (was `^7`) and `playwright` at 1.63.0 (was `^1`). The `vitest` peer dependency of `@systemfsoftware/effect-gherkin-spec`, `@systemfsoftware/effect-schema-law`, `@systemfsoftware/effect-schema-vite`, `@systemfsoftware/effect-spec-runtime`, `@systemfsoftware/storybook-gherkin`, `@systemfsoftware/trace-spec`, `@systemfsoftware/vitest` and `@systemfsoftware/vitest-config` is now `^5.0.1`, so a consumer needs at least Vitest 5.0.1. `@systemfsoftware/trace-spec` depends on `@opentelemetry/semantic-conventions` `^1.43.0` (was `^1.33`). diff --git a/.changeset/funny-goats-repeat.md b/.changeset/funny-goats-repeat.md deleted file mode 100644 index ffb8a76..0000000 --- a/.changeset/funny-goats-repeat.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -"@systemfsoftware/effect-atom": patch -"@systemfsoftware/effect-atom-react": patch -"@systemfsoftware/storybook-gherkin": patch ---- - -The packed `devDependencies` range on `@systemfsoftware/oxlint-config-recommended` moves to its new major. diff --git a/.changeset/hungry-doors-stare.md b/.changeset/hungry-doors-stare.md deleted file mode 100644 index 3037bde..0000000 --- a/.changeset/hungry-doors-stare.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@systemfsoftware/oxlint-config-frontend": patch ---- - -The frontend oxlint preset moved into the frontend repository with its rules unchanged. diff --git a/.changeset/ledger.yaml b/.changeset/ledger.yaml deleted file mode 100644 index 0967ef4..0000000 --- a/.changeset/ledger.yaml +++ /dev/null @@ -1 +0,0 @@ -{} diff --git a/.changeset/loose-moons-assert.md b/.changeset/loose-moons-assert.md deleted file mode 100644 index a6c4da3..0000000 --- a/.changeset/loose-moons-assert.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -"@systemfsoftware/storybook-gherkin": minor ---- - -Step contexts now carry `expect`: the assertions of whichever runner the play runs in. - -Under Storybook it stays `storybook/test`'s `expect`. In vitest browser mode (through `@storybook/addon-vitest`) it is vitest's own `expect`, so a step handler can reach the matchers only vitest has — `toMatchScreenshot`, `toMatchAriaInlineSnapshot`, `toMatchTextContent` — as `await ctx.expect(locator).toMatchAriaInlineSnapshot(…)`, without importing `vitest` where a project bans that import. - -The assertions are promise-shaped: `await` them. `vitest` is an optional peer dependency. diff --git a/.changeset/quiet-hooks-subscribe.md b/.changeset/quiet-hooks-subscribe.md deleted file mode 100644 index b5c6635..0000000 --- a/.changeset/quiet-hooks-subscribe.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@systemfsoftware/effect-atom-react": major ---- - -The code that mounts the app owns the registry; the binding never creates one or writes registry state during render. Call `Atom.Hydration.hydrate(registry, state)` before the first render, while the atoms the state names have not been read yet: hydration assigns each named atom its saved value and replaces a value the registry already holds. - -- `RegistryProvider` requires a `registry`. Make it with `Atom.Registry.make({ initialValues, scheduleTask: AtomReact.scheduleTask })` before the first render and dispose it at teardown. -- `HydrationBoundary` is removed: call `Atom.Hydration.hydrate(registry, state)` before `hydrateRoot`. -- `useAtomInitialValues` and `AnyInitialValue` are removed: pass `initialValues` to `Atom.Registry.make`. -- `useAtomSubscribe` is removed: use `Atom.Registry.subscribe` in a scoped Effect. - -An island makes its registry at module scope; a Storybook story makes it in its loader and disposes it in `beforeEach`'s cleanup. diff --git a/.changeset/tsgo-0-63-brands.md b/.changeset/tsgo-0-63-brands.md deleted file mode 100644 index 1d189d7..0000000 --- a/.changeset/tsgo-0-63-brands.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -"@systemfsoftware/effect-atom-react": patch -"@systemfsoftware/effect-atom": patch -"@systemfsoftware/storybook-gherkin": minor ---- - -- `DuplicateCapture` carries its capture name in `capture` and `OutlineDuplicateRowName` carries its row name in `rowName`, where both carried it in `name`. A `name` payload field shadows the error's own `name`, so logs showed the field value instead of the error type. Read `capture` or `rowName`. -- Every `Schema.Class`, `TaggedClass` and `TaggedError` the packages export is branded, so two classes with the same shape are no longer assignable to each other. diff --git a/.github/actions/cloudflare-secrets/action.yml b/.github/actions/cloudflare-secrets/action.yml deleted file mode 100644 index 9b5c35c..0000000 --- a/.github/actions/cloudflare-secrets/action.yml +++ /dev/null @@ -1,18 +0,0 @@ -name: Cloudflare secrets -description: >- - Fails fast when this repository's own Cloudflare secrets are absent, so a - deploy or preview names the missing secret instead of failing inside alchemy. -runs: - using: composite - steps: - - name: Check the Cloudflare secrets are set - shell: bash - run: | - missing=0 - for name in CLOUDFLARE_API_TOKEN CLOUDFLARE_ACCOUNT_ID; do - if [ -z "${!name:-}" ]; then - echo "::error::Repository secret ${name} is not set. This workflow deploys to your own Cloudflare account: add ${name} under Settings > Secrets and variables > Actions." - missing=1 - fi - done - exit "$missing" diff --git a/.github/actions/dev-shell/action.yml b/.github/actions/dev-shell/action.yml deleted file mode 100644 index 65a7fb3..0000000 --- a/.github/actions/dev-shell/action.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Dev shell and sandbox -description: >- - Installs Nix, lets the sandbox create user namespaces on ubuntu-24.04, - creates .cache/ (where sandboxed steps leave files for the host, since - the runner's $GITHUB_OUTPUT and /tmp are outside the sandbox), and - installs the workspace through the sandbox, offline from the Nix pnpm - store. -inputs: - install: - description: Install the workspace through the sandbox - default: "true" -runs: - using: composite - steps: - - uses: cachix/install-nix-action@v31 - - name: Lift the ubuntu-24.04 AppArmor block on user namespaces - if: runner.os == 'Linux' - shell: bash - run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 - - name: Create the sandbox's output directory - shell: bash - run: mkdir -p .cache - - name: Install through the sandbox, offline from the Nix pnpm store - if: inputs.install == 'true' - shell: bash - run: nix develop --command pnpm bootstrap diff --git a/.github/rulesets/gates.json b/.github/rulesets/gates.json index c5c7849..2f270f8 100644 --- a/.github/rulesets/gates.json +++ b/.github/rulesets/gates.json @@ -25,16 +25,7 @@ "parameters": { "strict_required_status_checks_policy": true, "required_status_checks": [ - { "context": "check (format)" }, - { "context": "check (lint)" }, - { "context": "check (typecheck)" }, - { "context": "check (test)" }, - { "context": "check (dist)" }, - { "context": "check (sfs-sources)" }, - { "context": "journeys" }, - { "context": "lint PR commits" }, - { "context": "changeset · shared tooling / a publishable-package change needs an intent" }, - { "context": "rules" } + { "context": "check" } ] } } diff --git a/.github/workflows/changeset-check.yml b/.github/workflows/changeset-check.yml deleted file mode 100644 index e0eaf55..0000000 --- a/.github/workflows/changeset-check.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Changeset Check - -on: - pull_request: - types: [opened, synchronize, reopened, ready_for_review] - -permissions: - contents: read - pull-requests: read - -jobs: - check: - name: changeset · shared tooling - uses: systemfsoftware/pnpm-release-management/.github/workflows/changeset-check.yml@main - with: - tools-ref: main - devshell: true - permissions: - contents: read - pull-requests: read diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 0000000..b522e63 --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,52 @@ +name: Check + +on: + pull_request: + types: [opened, synchronize, reopened] + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: check-${{ github.ref }} + cancel-in-progress: ${{ github.event_name == 'pull_request' }} + +jobs: + check: + name: check + runs-on: ubuntu-latest + timeout-minutes: 45 + env: + CI: "true" + OXLINT_FORMAT: github + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + fetch-depth: 0 + - uses: cachix/install-nix-action@v31 + - name: Lift the ubuntu-24.04 AppArmor block on user namespaces + run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + - name: Create the sandbox's output directory + run: mkdir -p .cache + - name: Install through the sandbox, offline from the Nix pnpm store + run: nix develop --command pnpm bootstrap + - name: Turbo cache + uses: actions/cache@v6 + with: + path: .turbo/cache + key: turbo-${{ runner.os }}-check-${{ github.sha }} + restore-keys: | + turbo-${{ runner.os }}-check- + turbo-${{ runner.os }}- + - name: Check + run: nix develop --command pnpm exec turbo run format:check lint typecheck test --affected + - name: Lint PR commits + if: github.event_name == 'pull_request' && github.actor != 'dependabot[bot]' + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + HEAD_SHA: ${{ github.event.pull_request.head.sha }} + run: nix develop --command sandbox -- pnpm exec commitlint --from "$BASE_SHA" --to "$HEAD_SHA" --verbose diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml deleted file mode 100644 index 9c88ffd..0000000 --- a/.github/workflows/ci.yml +++ /dev/null @@ -1,97 +0,0 @@ -name: CI - -on: - pull_request: - workflow_dispatch: - workflow_call: - -permissions: - contents: read - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - check: - name: check (${{ matrix.leg }}) - strategy: - fail-fast: false - matrix: - include: - - leg: format - runs-on: ubuntu-latest - gate: pnpm format:check - - leg: lint - runs-on: ubuntu-latest - gate: pnpm lint - - leg: typecheck - runs-on: ubuntu-latest - gate: pnpm typecheck - - leg: test - runs-on: ubuntu-latest - gate: pnpm test - - leg: dist - runs-on: ubuntu-latest - gate: pnpm gate:dist - - leg: sfs-sources - runs-on: ubuntu-latest - gate: pnpm check:sfs-sources - runs-on: ${{ matrix.runs-on }} - timeout-minutes: 45 - env: - CI: "true" - OXLINT_FORMAT: github - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/dev-shell - - name: Turbo cache - uses: actions/cache@v6 - with: - path: .turbo/cache - key: turbo-${{ runner.os }}-dist-${{ github.sha }} - restore-keys: | - turbo-${{ runner.os }}-dist- - turbo-${{ runner.os }}- - - name: Gate - run: nix develop --command ${{ matrix.gate }} - - journeys: - name: journeys - runs-on: ubuntu-latest - timeout-minutes: 30 - env: - CI: "true" - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/dev-shell - - name: Journeys against pnpm dev - run: nix develop --command pnpm journeys - - if: always() - uses: actions/upload-artifact@v6 - with: - name: journeys - path: | - apps/site-e2e/artifacts/ - .journeys/dev.log - if-no-files-found: ignore - - rules: - name: rules - runs-on: ubuntu-latest - timeout-minutes: 15 - permissions: - contents: read - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/dev-shell - - name: Main's active rules require every pull-request check - env: - GITHUB_TOKEN: ${{ github.token }} - run: nix develop --command pnpm check:branch-rules diff --git a/.github/workflows/commitlint.yml b/.github/workflows/commitlint.yml deleted file mode 100644 index d9b4ac8..0000000 --- a/.github/workflows/commitlint.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Commitlint - -on: - pull_request: - branches: [main] - -permissions: - contents: read - -jobs: - commitlint: - if: github.actor != 'dependabot[bot]' - name: lint PR commits - runs-on: ubuntu-latest - timeout-minutes: 15 - steps: - - uses: actions/checkout@v7 - with: - fetch-depth: 0 - persist-credentials: false - - uses: ./.github/actions/dev-shell - - run: nix develop --command sandbox -- pnpm exec commitlint --from ${{ github.event.pull_request.base.sha }} --to ${{ github.event.pull_request.head.sha }} --verbose diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..c3f2ad4 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,81 @@ +name: Deploy + +on: + push: + branches: [main] + pull_request: + types: [opened, reopened, synchronize, closed] + +permissions: + contents: read + pull-requests: write + +concurrency: + group: deploy-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: false + +env: + ALCHEMY_STAGE: ${{ github.event_name == 'pull_request' && format('pr-{0}', github.event.number) || (github.ref == 'refs/heads/main' && 'prod' || github.ref_name) }} + +jobs: + deploy: + name: deploy + if: ${{ github.event.action != 'closed' && !github.event.repository.is_template && vars.ALCHEMY_DEPLOY == 'true' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository) }} + runs-on: ubuntu-latest + timeout-minutes: 45 + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + - uses: cachix/install-nix-action@v31 + - name: Lift the ubuntu-24.04 AppArmor block on user namespaces + run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + - name: Create the sandbox's output directory + run: mkdir -p .cache + - name: Install through the sandbox, offline from the Nix pnpm store + run: nix develop --command pnpm bootstrap + - name: Check provider environment + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + run: nix develop --command pnpm run check-env + - name: Deploy + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + SITE_DOMAIN: ${{ github.ref == 'refs/heads/main' && vars.SITE_DOMAIN || '' }} + ALCHEMY_GITHUB_TOKEN: ${{ github.token }} + PULL_REQUEST: ${{ github.event.number }} + GITHUB_SHA: ${{ github.sha }} + run: nix develop --command pnpm run deploy + + cleanup: + name: cleanup + if: ${{ github.event_name == 'pull_request' && github.event.action == 'closed' && !github.event.repository.is_template && vars.ALCHEMY_DEPLOY == 'true' && github.event.pull_request.head.repo.full_name == github.repository }} + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + - uses: cachix/install-nix-action@v31 + - name: Lift the ubuntu-24.04 AppArmor block on user namespaces + run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + - name: Create the sandbox's output directory + run: mkdir -p .cache + - name: Install through the sandbox, offline from the Nix pnpm store + run: nix develop --command pnpm bootstrap + - name: Safety check + run: | + if [ "$ALCHEMY_STAGE" = "prod" ]; then + echo "refusing to destroy the prod stage" >&2 + exit 1 + fi + - name: Destroy preview + env: + CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} + ALCHEMY_GITHUB_TOKEN: ${{ github.token }} + PULL_REQUEST: ${{ github.event.number }} + GITHUB_SHA: ${{ github.sha }} + run: nix develop --command pnpm run destroy diff --git a/.github/workflows/previews.yml b/.github/workflows/previews.yml deleted file mode 100644 index f35f01d..0000000 --- a/.github/workflows/previews.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: Preview - -on: - pull_request: - types: [opened, synchronize, reopened, closed] - -permissions: - contents: read - pull-requests: write - -concurrency: - group: preview-${{ github.event.pull_request.number }} - cancel-in-progress: false - -jobs: - deploy: - name: preview · deploy - if: ${{ !github.event.repository.is_template && github.event.action != 'closed' && github.event.pull_request.head.repo.full_name == github.repository }} - runs-on: ubuntu-latest - timeout-minutes: 45 - env: - ALCHEMY_STAGE: pr-${{ github.event.pull_request.number }} - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/cloudflare-secrets - - uses: ./.github/actions/dev-shell - - name: Deploy the preview - run: nix develop --command pnpm run deploy - - name: Read the preview URL - id: site - run: | - state="$(nix develop --command ./bin/cloud pnpm --filter @endgame/site exec alchemy state cat --backend cloudflare "Endgame/${ALCHEMY_STAGE}/output" | sed -n '/^{/,$p')" - echo "url=$(jq -er '.url' <<<"$state")" >> "$GITHUB_OUTPUT" - - name: Comment on the pull request - env: - GH_TOKEN: ${{ github.token }} - GH_REPO: ${{ github.repository }} - SITE_URL: ${{ steps.site.outputs.url }} - PR: ${{ github.event.pull_request.number }} - run: | - body="$(printf '### Preview %s\n\n%s\n\n[Preview run](%s/%s/actions/runs/%s)\n' \ - "$ALCHEMY_STAGE" "$SITE_URL" "${{ github.server_url }}" "${{ github.repository }}" "${{ github.run_id }}")" - gh pr comment "$PR" --edit-last --create-if-none --body "$body" - - destroy: - name: preview · destroy - if: ${{ !github.event.repository.is_template && github.event.action == 'closed' && github.event.pull_request.head.repo.full_name == github.repository }} - runs-on: ubuntu-latest - timeout-minutes: 30 - env: - ALCHEMY_STAGE: pr-${{ github.event.pull_request.number }} - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/cloudflare-secrets - - uses: ./.github/actions/dev-shell - - name: Destroy the preview - run: nix develop --command pnpm run destroy diff --git a/.github/workflows/release-gate.yml b/.github/workflows/release-gate.yml deleted file mode 100644 index 5992b1e..0000000 --- a/.github/workflows/release-gate.yml +++ /dev/null @@ -1,102 +0,0 @@ -name: Release gate - -on: - push: - branches: [main] - -permissions: - contents: read - -concurrency: - group: release-gate-${{ github.ref }} - cancel-in-progress: false - -jobs: - ci: - uses: ./.github/workflows/ci.yml - - plan: - name: plan · mutation shards - runs-on: ubuntu-latest - timeout-minutes: 15 - outputs: - shards: ${{ steps.shards.outputs.shards }} - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/dev-shell - with: - install: "false" - - id: shards - run: | - nix develop --command sandbox --allow-host jsr.io -- ./scripts/mutation-shards.ts --output .cache/mutation-shards.out - cat .cache/mutation-shards.out >> "$GITHUB_OUTPUT" - - mutation: - name: mutation · ${{ matrix.shard.package }} - needs: [plan] - runs-on: ubuntu-latest - timeout-minutes: 75 - strategy: - fail-fast: false - matrix: - shard: ${{ fromJSON(needs.plan.outputs.shards) }} - env: - CI: "true" - PACKAGE: ${{ matrix.shard.package }} - MUTATE: ${{ join(matrix.shard.mutate, ',') }} - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/dev-shell - - name: Stryker incremental cache - uses: actions/cache@v6 - with: - path: | - apps/*/reports/stryker-incremental.json - packages/*/reports/stryker-incremental.json - key: stryker-${{ matrix.shard.package }}-${{ github.sha }} - restore-keys: stryker-${{ matrix.shard.package }}- - - name: Mutation dependencies - shell: bash - run: | - deps="$(nix develop --command pnpm exec turbo run mutation --filter="$PACKAGE" --dry=json | jq -r --arg self "$PACKAGE#mutation" '[.tasks[].taskId | select(. != $self)] | join(" ")')" - read -ra tasks <<< "$deps" - if [ "${#tasks[@]}" -gt 0 ]; then nix develop --command pnpm exec sandbox -- turbo run "${tasks[@]}"; fi - - name: Mutation at break 100 - run: nix develop --command pnpm exec sandbox --pass-env GITHUB_ACTIONS -- turbo run mutation --filter="$PACKAGE" --only -- --mutate "$MUTATE" - - if: always() - uses: actions/upload-artifact@v6 - with: - name: mutation-report-${{ strategy.job-index }} - path: | - apps/*/reports/mutation-report.* - packages/*/reports/mutation-report.* - if-no-files-found: ignore - - deploy: - name: deploy · production - needs: [ci, plan, mutation] - if: ${{ !github.event.repository.is_template }} - runs-on: ubuntu-latest - timeout-minutes: 45 - env: - ALCHEMY_STAGE: prod - CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - SITE_DOMAIN: ${{ vars.SITE_DOMAIN }} - steps: - - uses: actions/checkout@v7 - with: - persist-credentials: false - - uses: ./.github/actions/cloudflare-secrets - - uses: ./.github/actions/dev-shell - - name: Deploy production - run: nix develop --command pnpm run deploy - - name: Read the production URL - id: site - run: | - state="$(nix develop --command ./bin/cloud pnpm --filter @endgame/site exec alchemy state cat --backend cloudflare "Endgame/prod/output" | sed -n '/^{/,$p')" - echo "url=$(jq -er '.url' <<<"$state")" >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index a8e8a89..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: Release - -on: - push: - branches: [main] - -concurrency: - group: release-${{ github.ref }} - cancel-in-progress: false - -permissions: - contents: write - pull-requests: write - actions: write - -jobs: - release: - name: release · shared tooling - uses: systemfsoftware/pnpm-release-management/.github/workflows/release.yml@main - with: - ci-workflow: ci.yml - permissions: - contents: write - pull-requests: write - actions: write diff --git a/AGENTS.md b/AGENTS.md index 84f58c8..9cd7ed9 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,7 +31,7 @@ applications — both are workspace globs in `pnpm-workspace.yaml`. Turbo declar - This repo is a template and holds no credentials; CI proves everything locally. Gate: review of the workflow diff; a job that needs a secret carries `if: ${{ !github.event.repository.is_template }}`. - Every job runs on GitHub-hosted `ubuntu-latest` runners. This repository is public, and the org's self-hosted fleet runner group admits only private repositories (fork safety), so a `[self-hosted, systemfsoftware-runner, *]` job here queues forever. Gate: review of the workflow diff. - Cloudflare credentials enter a sandbox only through `bin/cloud` (deploy, destroy, state reads). Gate: review of the workflow diff — wrong: `sandbox --pass-env CLOUDFLARE_API_TOKEN -- pnpm --filter @endgame/site exec alchemy deploy`; right: `./bin/cloud pnpm --filter @endgame/site exec alchemy deploy`. -- Heavy suites split across parallel hosted jobs instead of a larger runner: Linux `check:ci` runs as one job per part (format, lint, typecheck, test, dist), and mutation on `main` runs one job per package. Gate: review of the workflow diff. +- CI is two workflows: `check.yml` (one `check` job: `turbo run format:check lint typecheck test --affected` plus commitlint over the PR range) and `deploy.yml` (a `deploy` and a `cleanup` job, dormant until the repository variable `ALCHEMY_DEPLOY` is `true`); mutation is an on-demand package script and never gates a deploy. Gate: review of the workflow diff. ## End of Session diff --git a/README.md b/README.md index 61475de..58efeff 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ [![License: Apache-2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE) [![Effect: 4.0](https://img.shields.io/badge/Effect-4.0-purple.svg)](https://effect.website) -[![CI](https://github.com/systemfsoftware/starter/actions/workflows/ci.yml/badge.svg)](https://github.com/systemfsoftware/starter/actions/workflows/ci.yml) +[![CI](https://github.com/systemfsoftware/starter/actions/workflows/check.yml/badge.svg)](https://github.com/systemfsoftware/starter/actions/workflows/check.yml) > 🏛️ **starter** is an opinionated monorepo template for serious TypeScript with Effect and AI coding agents. > 🔒 One architecture, zero knobs, and mechanical gates that reject the slop agents produce when left unconstrained. @@ -57,7 +57,6 @@ read (impure) ──► decode (pure) ──► decide (pure) ──► shape (p | 🎨 **dprint** | Fast, deterministic code and markdown formatting (`dprint.json`) | | 🧪 **Vitest** | Fast unit and integration test runner with TypeScript support | | 🔬 **Stryker** | Mutation testing ensuring tests fail when bugs are introduced | -| 📝 **Changesets** | Automated versioning and changelogs, released as git tags via shared tooling | | 🪝 **Husky & Commitlint** | Git hooks enforcing conventional commit standards | | 🌳 **Worktrunk Scripts** | Deno-powered git worktree lifecycle hooks for isolated agent work | @@ -139,7 +138,7 @@ A copy gets the template's files, not its repository settings, so nothing stops gh api -X POST repos/{owner}/{repo}/rulesets --input .github/rulesets/gates.json ``` -Until it is installed, CI's `rules` check fails on every pull request and every push to `main`, and the production deploy waits on it. +Until it is installed, nothing stops a pull request with failing checks from merging. The ruleset requires the single `check` job. ### 6. Deploy @@ -153,7 +152,46 @@ ALCHEMY_STAGE=pr-12 pnpm run destroy `pnpm run deploy`, not `pnpm deploy`: the bare form is pnpm's own built-in command. -In your copy, with the two secrets set as repository secrets (and `SITE_DOMAIN` as a repository variable), every same-repo pull request gets a preview with its URL in a comment, and `main` deploys production once the release gate passes. The template itself never deploys. +In a copy that has run the [section 7](#7-credentials-for-ci) bootstrap and set the repository variable `ALCHEMY_DEPLOY` to `true` (plus `SITE_DOMAIN` as a repository variable to serve production on a domain), every same-repo pull request gets a preview deploy with its URL in a comment and its stage destroyed on close, and `main` deploys production in one job with no gate in front of it. The template itself never deploys. + +### 7. Credentials for CI + +The operator runs this once per repository that opts in to deploys. It runs on the host, outside every sandbox (not through `bin/cloud` or `sandbox --`), and never on the template. It mints a scoped Cloudflare token and writes it to the repository as secrets, so no one hand-copies a token into repository settings. + +The bootstrap requires `SITE_DOMAIN`: a hostname in a zone on the account, because the CI token's zone grants are scoped to that zone. A copy that serves only on `workers.dev` skips the bootstrap and creates the `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID` repository secrets by hand instead. + +From `apps/site` in the dev shell, with the operator's own secrets (supplied from Doppler, key named by the operator; never print them): + +```bash +cd apps/site +CLOUDFLARE_API_TOKEN=… CLOUDFLARE_ACCOUNT_ID=… GITHUB_ACCESS_TOKEN=… \ + GITHUB_REPOSITORY=/ SITE_DOMAIN= \ + pnpm exec alchemy deploy --config stacks/github.ts --stage ci-credentials +``` + +- `CLOUDFLARE_API_TOKEN`: an admin-scoped Cloudflare token that can create API tokens. A standard Edit Workers token is not enough; use an account API token with `Account > API Tokens > Write`, or the Global API Key. +- `CLOUDFLARE_ACCOUNT_ID`: the target account. +- `GITHUB_ACCESS_TOKEN`: a fine-grained personal access token on that one repository with only Secrets: write, and a short expiry. +- `GITHUB_REPOSITORY`: `/` of the repository that receives the secrets. +- `SITE_DOMAIN`: a hostname in a zone on the account. The CI token's zone grants are limited to that zone. + +These environment credentials win over any alchemy profile, so no `--profile` flag is needed. The fixed `ci-credentials` stage means a rerun updates the same token and secrets instead of minting new ones. A rerun changes the token's grants in place and keeps its value. + +The stack is named `github--` from `GITHUB_REPOSITORY`, so every repository's bootstrap carries its own state: alchemy's state store keys each resource by stack, stage, and resource name (`@alchemy.run/cloudflare` `src/StateStore/Api.ts:75-79`, `:121-135`; the stack name flows from `Alchemy.Stack` into that key, `alchemy/src/Stack.ts:155-157`, `:216`). Two repositories therefore never share a state key, and one repository's `destroy` cannot delete another's token or secrets. + +The stack creates a Cloudflare account API token and two repository secrets, `CLOUDFLARE_API_TOKEN` and `CLOUDFLARE_ACCOUNT_ID`. The token holds: + +- Account: Workers Scripts Write, D1 Write, Workers Tail Read, and Secrets Store Write. Secrets Store Write is needed because every cloud stage keeps its state in a worker that is bound to the account's Secrets Store. +- The `SITE_DOMAIN` zone only: Workers Routes Write, DNS Write, and Zone Read. Zone Read is needed because the custom-domain path looks the zone up by name. + +After it runs: + +1. Confirm the secrets exist with `gh secret list` (names only). +2. Revoke the previous hand-made Cloudflare token by name in the Cloudflare dashboard. +3. Set the repository variable `ALCHEMY_DEPLOY` to `true`, and `SITE_DOMAIN` to the same hostname so production serves on it. Nothing deploys until `ALCHEMY_DEPLOY` is set. +4. To rotate the token's value, at least every 90 days, run `pnpm exec alchemy destroy --config stacks/github.ts --stage ci-credentials` with the same environment, then run the deploy command again. The destroy deletes the token, the deploy mints a new one and rewrites both secrets, and deploys fail in between. + +A new resource type needs its permission group added to `apps/site/stacks/github.ts`. --- @@ -173,7 +211,7 @@ pnpm lint # Run unit and integration tests pnpm test -# Run full CI suite locally +# Run every local gate (a superset of what CI runs) pnpm check:ci ``` @@ -198,7 +236,7 @@ Every configuration toggle provides a route for AI agents to downgrade verificat
How does mutation testing work in this template? -Stryker introduces deliberate syntax and logic mutations into your code and runs your test suite against each mutant. If your tests still pass when code behavior changes, the mutant survives and the gate fails. The release gate mutates only `*.workflow.ts` decision files. Its planner (`scripts/mutation-shards.ts`) lists each package's workflow files and hands exactly that list to Stryker, and it refuses anything that would change that set before Stryker starts. Those files require a 100% kill score. Mutation runs only in the release gate on pushes to `main`, never locally or on pull requests. +Stryker introduces deliberate syntax and logic mutations into your code and runs your test suite against each mutant. If your tests still pass when code behavior changes, the mutant survives. Mutation is an on-demand script, `pnpm --filter @endgame/site mutation` (`stryker run`), never a CI job and never a gate in front of a deploy. The shared config (`stryker.shared.ts`) mutates only `**/*.workflow.ts` files in the package, runs the Vitest tests related to each mutant, and breaks the run below a 100% kill score.
diff --git a/STRATEGY.md b/STRATEGY.md index f21dd17..54dd288 100644 --- a/STRATEGY.md +++ b/STRATEGY.md @@ -39,7 +39,7 @@ their own review attention, and drift can't accumulate behind their back. - No light preset, no opt-out, no `warn` severity — ever. - No second exemplar: the starter is the exemplar, and a demo app would drift from doctrine; systemfsoftware's `examples/` is deleted in its favour. - Cloudflare is the one deploy target. -- Mutation runs only on push to `main`. +- Mutation runs on demand (`pnpm --filter @endgame/site mutation`), never as a CI or deploy gate. - No Effect 3 compatibility surface: Effect 4 is the price of entry. _Resist a change when:_ it buys adoption — or stars — by making the endgame shape optional. diff --git a/apps/site/alchemy.run.ts b/apps/site/alchemy.run.ts index 8580e80..ea9f8ce 100644 --- a/apps/site/alchemy.run.ts +++ b/apps/site/alchemy.run.ts @@ -1,5 +1,7 @@ +import * as Cloudflare from '@alchemy.run/cloudflare' +import * as GitHub from '@alchemy.run/github' import * as Alchemy from 'alchemy' -import * as Cloudflare from 'alchemy/Cloudflare' +import * as Output from 'alchemy/Output' import * as Effect from 'effect/Effect' import * as Layer from 'effect/Layer' @@ -34,9 +36,18 @@ const stateOfStage = Layer.unwrap( export default Alchemy.Stack( 'Endgame', - { providers: Cloudflare.providers(), state: stateOfStage }, + { providers: Layer.mergeAll(GitHub.providers(), Cloudflare.providers()), state: stateOfStage }, Effect.gen(function*() { const site = yield* Site + const github = yield* GitHub.GitHubEnv + if (github?.pr !== undefined) { + yield* GitHub.Comment('preview-comment', { + owner: github.owner, + repository: github.repository, + issueNumber: github.pr, + body: Output.interpolate`### Preview\n\n${site.url}\n\nCommit \`${github.sha.slice(0, 7)}\``, + }) + } return { url: site.url, workerName: site.workerName } }), ) diff --git a/apps/site/package.json b/apps/site/package.json index 45292a4..fd9d4f9 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -11,7 +11,8 @@ "react-dom": "catalog:" }, "devDependencies": { - "@alchemy.run/frontend-frameworks": "catalog:", + "@alchemy.run/cloudflare": "catalog:", + "@alchemy.run/github": "catalog:", "@babel/core": "catalog:", "@cloudflare/vite-plugin": "catalog:", "@cloudflare/workers-types": "catalog:", diff --git a/apps/site/src/cloudflare-env.d.ts b/apps/site/src/cloudflare-env.d.ts index 56ece9c..66873f9 100644 --- a/apps/site/src/cloudflare-env.d.ts +++ b/apps/site/src/cloudflare-env.d.ts @@ -1,4 +1,4 @@ -import type * as Alchemy from 'alchemy/Cloudflare' +import type * as Alchemy from '@alchemy.run/cloudflare' import type { Site } from '../alchemy.run' diff --git a/apps/site/stacks/github.ts b/apps/site/stacks/github.ts new file mode 100644 index 0000000..bf5dda9 --- /dev/null +++ b/apps/site/stacks/github.ts @@ -0,0 +1,60 @@ +// Mints the scoped Cloudflare token CI deploys with and stores it as repository secrets. +// Run once per roll-out repository, from the host, with an admin-scoped Cloudflare token. +// Never run it through bin/cloud or a sandbox. Stage: ci-credentials (README, "Credentials for CI"). +// A new resource type needs its permission group added here. +import * as Cloudflare from '@alchemy.run/cloudflare' +import * as GitHub from '@alchemy.run/github' +import * as Alchemy from 'alchemy' +import * as Config from 'effect/Config' +import * as Effect from 'effect/Effect' +import * as Layer from 'effect/Layer' +import * as Redacted from 'effect/Redacted' + +const slug = process.env['GITHUB_REPOSITORY']?.toLowerCase() +if (slug === undefined || !/^[^/]+\/[^/]+$/.test(slug)) { + throw new Error( + 'GITHUB_REPOSITORY must be set to /: the credentials stack is named after it, so each repository keys its own alchemy state, and its secrets are written to that repository.', + ) +} +const owner = slug.slice(0, slug.indexOf('/')) +const repository = slug.slice(slug.indexOf('/') + 1) + +export default Alchemy.Stack( + `github-${owner}-${repository}`, + { providers: Layer.mergeAll(Cloudflare.providers(), GitHub.providers()), state: Cloudflare.state() }, + Effect.gen(function*() { + const hostname = yield* Config.NonEmptyString('SITE_DOMAIN') + const { accountId } = yield* yield* Cloudflare.CloudflareEnvironment + const zoneId = yield* Cloudflare.Zone.resolveZoneId({ accountId, zone: undefined, hostname }).pipe(Effect.orDie) + const accountKey = `com.cloudflare.api.account.${accountId}` as const + + const token = yield* Cloudflare.ApiToken.AccountApiToken('CIToken', { + accountId, + policies: [ + { + effect: 'allow', + permissionGroups: ['Workers Scripts Write', 'D1 Write', 'Workers Tail Read', 'Secrets Store Write'], + resources: { [accountKey]: '*' }, + }, + { + effect: 'allow', + permissionGroups: ['Workers Routes Write', 'DNS Write', 'Zone Read'], + resources: { [accountKey]: { [`com.cloudflare.api.account.zone.${zoneId}`]: '*' } }, + }, + ], + }) + + yield* GitHub.Secret('CloudflareApiToken', { + owner, + repository, + name: 'CLOUDFLARE_API_TOKEN', + value: token.value, + }) + yield* GitHub.Secret('CloudflareAccountId', { + owner, + repository, + name: 'CLOUDFLARE_ACCOUNT_ID', + value: Redacted.make(accountId), + }) + }), +) diff --git a/bin/cloud b/bin/cloud index 1ae183c..aabe13d 100755 --- a/bin/cloud +++ b/bin/cloud @@ -2,17 +2,28 @@ # Run a Cloudflare-facing command (an alchemy deploy, destroy or state read) # inside the sandbox. This is the one place the Cloudflare credentials enter a # sandbox, and the one list of hosts such a command may reach: Cloudflare's -# API, and the account's workers.dev hosts, where alchemy's state store -# answers. Telemetry stays off, so nothing else needs to be reachable. +# API, the account's workers.dev hosts, where alchemy's state store answers, +# and api.github.com, where the app stack's GitHub.Comment posts the preview +# URL. The Actions token enters only under the CI-only name +# ALCHEMY_GITHUB_TOKEN, mapped here to the provider's GITHUB_ACCESS_TOKEN, so an +# ambient GITHUB_TOKEN or PAT never crosses. Telemetry stays off. set -euo pipefail export DO_NOT_TRACK=1 +export GITHUB_ACCESS_TOKEN="${ALCHEMY_GITHUB_TOKEN-}" exec sandbox \ --allow-host api.cloudflare.com \ --allow-host '*.workers.dev' \ + --allow-host api.github.com \ --pass-env CLOUDFLARE_API_TOKEN \ --pass-env CLOUDFLARE_ACCOUNT_ID \ --pass-env SITE_DOMAIN \ + --pass-env GITHUB_ACCESS_TOKEN \ + --pass-env GITHUB_ACTIONS \ + --pass-env GITHUB_SHA \ + --pass-env GITHUB_REPOSITORY \ + --pass-env GITHUB_REPOSITORY_OWNER \ + --pass-env PULL_REQUEST \ --pass-env DO_NOT_TRACK \ --pass-env CI \ -- "$@" diff --git a/commitlint.config.ts b/commitlint.config.ts index e782640..c2a5bd4 100644 --- a/commitlint.config.ts +++ b/commitlint.config.ts @@ -4,8 +4,8 @@ import type { UserConfig } from '@commitlint/types' * systemfsoftware shared commitlint config. * * Design rule: a rule is `error` (2) ONLY if a wrong value has real downstream - * impact in THIS org. Releases run on changesets (.changeset/*.md), NOT commit - * messages, so scope / punctuation / type-vs-diff have ZERO release impact and + * impact in THIS org. Releases are plain `main` deploys, NOT commit messages, + * so scope / punctuation / type-vs-diff have ZERO release impact and * must never fail a commit. The one message policy that matters is the * AI-coauthor ban. */ @@ -59,7 +59,7 @@ const configuration: UserConfig = { // The one policy that matters. 'no-ai-coauthors': [2, 'always'], - // Type: tidy log/PR grouping only (releases run on changesets). + // Type: tidy log/PR grouping only (releases are plain `main` deploys). 'type-empty': [2, 'never'], 'type-case': [2, 'always', 'lower-case'], 'type-enum': [ diff --git a/package.json b/package.json index 3bcbf8b..659f4bf 100644 --- a/package.json +++ b/package.json @@ -32,6 +32,7 @@ "check:branch-rules": "sandbox --allow-host api.github.com --allow-host jsr.io --pass-env GITHUB_TOKEN --pass-env GITHUB_REPOSITORY -- ./scripts/check-branch-rules.ts", "check:sfs-sources": "sandbox --allow-host jsr.io -- ./scripts/check-sfs-sources.ts", "clean": "sandbox -- turbo clean", + "check-env": "./bin/cloud pnpm --filter @endgame/site exec alchemy provider check-env --provider cloudflare", "deploy": "./bin/cloud pnpm --filter @endgame/site exec alchemy deploy --stage \"${ALCHEMY_STAGE:-prod}\" --no-input --yes", "destroy": "./bin/cloud pnpm --filter @endgame/site exec alchemy destroy --stage \"${ALCHEMY_STAGE:?set ALCHEMY_STAGE, e.g. pr-}\" --no-input --yes", "format": "./bin/dprint fmt", diff --git a/packages/atom/effect-atom-react/vitest.config.ts b/packages/atom/effect-atom-react/vitest.config.ts index b153b34..eafb06b 100644 --- a/packages/atom/effect-atom-react/vitest.config.ts +++ b/packages/atom/effect-atom-react/vitest.config.ts @@ -10,6 +10,7 @@ export default defineConfig({ projects: [ { extends: true, + define: { 'process.platform': JSON.stringify('linux') }, test: { name: 'browser', include: ['./tests/**/*.integration.test.ts', '!./tests/ssr.integration.test.ts'], diff --git a/packages/atom/effect-atom/src/atom.blueprint.ts b/packages/atom/effect-atom/src/atom.blueprint.ts index f86a998..fa25400 100644 --- a/packages/atom/effect-atom/src/atom.blueprint.ts +++ b/packages/atom/effect-atom/src/atom.blueprint.ts @@ -1625,19 +1625,53 @@ function pullAccumulatedItems( return items } +interface PullDelivery { + readonly accumulate: boolean + count: number + result: PullResult | undefined +} + function finishPullCallback( get: AtomContext, cancels: Set<() => void>, cancel: (() => void) | undefined, exit: Exit.Exit<{ readonly done: boolean; readonly items: Arr.NonEmptyReadonlyArray }, E>, + delivery: PullDelivery, ): void { if (cancel !== undefined) { cancels.delete(cancel) } - const result = AsyncResult.fromExitWithPrevious(exit, Option.none()) + const result = newerPullResult(AsyncResult.fromExitWithPrevious(exit, Option.none()), delivery) get.setSelf(pullCallbackResult(result, cancels.size > 0)) } +// Concurrent pulls can finish in a different order than their batches were produced in. An +// accumulating pull keeps the longest batch it has delivered, so a late, shorter one is dropped. +function newerPullResult(fresh: PullResult, delivery: PullDelivery): PullResult { + recordPullDelivery(fresh, delivery) + return delivery.result ?? fresh +} + +function recordPullDelivery(fresh: PullResult, delivery: PullDelivery): void { + if (isOlderPullBatch(fresh, delivery)) { + return + } + delivery.result = fresh + delivery.count = largerPullCount(fresh, delivery.count) +} + +function isOlderPullBatch(fresh: PullResult, delivery: PullDelivery): boolean { + return delivery.accumulate ? delivery.count > pullBatchSize(fresh) : false +} + +function pullBatchSize(result: PullResult): number { + return AsyncResult.isSuccess(result) ? result.value.items.length : Number.POSITIVE_INFINITY +} + +function largerPullCount(fresh: PullResult, count: number): number { + return AsyncResult.isSuccess(fresh) ? Math.max(count, fresh.value.items.length) : count +} + function pullCallbackResult( result: AsyncResult.Result, pending: boolean, @@ -2867,6 +2901,11 @@ const makeStreamPullEffect = ( }) const cancels = new Set<() => void>() + const delivery: PullDelivery = { + accumulate: !pullDisableAccumulation(options), + count: 0, + result: undefined, + } get.addFinalizer(() => { for (const cancel of cancels) cancel() }) @@ -2875,7 +2914,7 @@ const makeStreamPullEffect = ( get.setSelf(AsyncResult.waitingFrom(Option.none())) let cancel: (() => void) | undefined = undefined cancel = runCallbackSync(services, pull, (exit) => { - finishPullCallback(get, cancels, cancel, exit) + finishPullCallback(get, cancels, cancel, exit, delivery) }) addPullCancel(cancels, cancel) }) diff --git a/packages/atom/effect-atom/tests/Atom.integration.test.ts b/packages/atom/effect-atom/tests/Atom.integration.test.ts index 31bcf17..fe711ba 100644 --- a/packages/atom/effect-atom/tests/Atom.integration.test.ts +++ b/packages/atom/effect-atom/tests/Atom.integration.test.ts @@ -1647,6 +1647,7 @@ Feature('Deriving values from other values on a page') }), clear: Effect.sync(() => storage.clear()), size: Effect.sync(() => storage.size), + keys: Effect.sync(() => Array.from(storage.keys())), }), ) const kvsRuntime = Atom.context()(DelayedKVS) @@ -1701,6 +1702,7 @@ Feature('Deriving values from other values on a page') }), clear: Effect.sync(() => storage.clear()), size: Effect.sync(() => storage.size), + keys: Effect.sync(() => Array.from(storage.keys())), }), ) const kvsRuntime = Atom.context()(DelayedKVS) @@ -1746,6 +1748,7 @@ Feature('Deriving values from other values on a page') }), clear: Effect.sync(() => storage.clear()), size: Effect.sync(() => storage.size), + keys: Effect.sync(() => Array.from(storage.keys())), }), ) const kvsRuntime = Atom.context()(DelayedKVS) diff --git a/packages/atom/effect-atom/vitest.config.ts b/packages/atom/effect-atom/vitest.config.ts index cc4f03e..c94382e 100644 --- a/packages/atom/effect-atom/vitest.config.ts +++ b/packages/atom/effect-atom/vitest.config.ts @@ -12,6 +12,7 @@ export default defineConfig({ { extends: true, test: nodeTest }, { extends: true, + define: { 'process.platform': JSON.stringify('linux') }, test: { name: 'browser', include: ['./tests/browser/**/*.test.ts'], diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d33a581..12cdc39 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -164,9 +164,12 @@ settings: catalogs: default: - '@alchemy.run/frontend-frameworks': - specifier: 2.0.0-beta.80 - version: 2.0.0-beta.80 + '@alchemy.run/cloudflare': + specifier: https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz + version: https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz + '@alchemy.run/github': + specifier: https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz + version: https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz '@babel/core': specifier: 8.0.6 version: 8.0.6 @@ -237,8 +240,8 @@ catalogs: specifier: 5.0.5 version: 5.0.5 alchemy: - specifier: 2.0.0-beta.80 - version: 2.0.0-beta.80 + specifier: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz + version: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz babel-plugin-react-compiler: specifier: 1.0.0 version: 1.0.0 @@ -355,14 +358,15 @@ overrides: '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz '@systemfsoftware/vitest-config': file:.sfs-deps/vitest-config-0.1.0.tgz '@systemfsoftware/xstate': file:.sfs-deps/xstate-6.0.0-alpha.64.tgz - '@effect/opentelemetry': 4.0.5 - '@effect/platform-node': 4.0.5 - '@effect/platform-node-shared': 4.0.5 - '@effect/sql-d1': 4.0.5 - '@effect/sql-sqlite-do': 4.0.5 + '@effect/opentelemetry': 4.1.0 + '@effect/platform-node': 4.1.0 + '@effect/platform-node-shared': 4.1.0 + '@effect/sql-d1': 4.1.0 + '@effect/sql-sqlite-do': 4.1.0 '@effect/tsgo': 0.63.0 - effect: 4.0.5 + effect: 4.1.0 esbuild: ^0.28.2 + rolldown: 1.2.13 rolldown-plugin-dts: 0.28.6 workerd: 1.20261005.1 @@ -387,13 +391,13 @@ importers: version: 0.63.0 '@systemfsoftware/oxlint-config-recommended': specifier: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz - version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) + version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) '@systemfsoftware/oxlint-plugin-test-discipline': specifier: file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz - version: file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz(effect@4.0.5)(typescript@7.0.2) + version: file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz(effect@4.1.0)(typescript@7.0.2) '@systemfsoftware/stryker-js': specifier: file:.sfs-deps/stryker-js-17.0.2.tgz - version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/tsconfig': specifier: file:.sfs-deps/tsconfig-2.0.1.tgz version: file:.sfs-deps/tsconfig-2.0.1.tgz @@ -401,8 +405,8 @@ importers: specifier: 'catalog:' version: 24.19.1 effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 lint-staged: specifier: 'catalog:' version: 17.6.0 @@ -429,7 +433,7 @@ importers: dependencies: '@systemfsoftware/effect-cell-types': specifier: file:../../.sfs-deps/effect-cell-types-12.0.0.tgz - version: file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + version: file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) '@systemfsoftware/xstate': specifier: file:../../.sfs-deps/xstate-6.0.0-alpha.64.tgz version: file:.sfs-deps/xstate-6.0.0-alpha.64.tgz @@ -438,10 +442,10 @@ importers: version: 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/react-start': specifier: 'catalog:' - version: 1.168.60(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + version: 1.168.60(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 react: specifier: 'catalog:' version: 19.3.0 @@ -449,9 +453,12 @@ importers: specifier: 'catalog:' version: 19.3.0(react@19.3.0) devDependencies: - '@alchemy.run/frontend-frameworks': + '@alchemy.run/cloudflare': + specifier: 'catalog:' + version: https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@alchemy.run/github': specifier: 'catalog:' - version: 2.0.0-beta.80(@types/node@24.19.1)(@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(effect@4.0.5)(hono@4.11.4)(redis@6.2.1(@opentelemetry/api@1.9.1))(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + version: https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0) '@babel/core': specifier: 'catalog:' version: 8.0.6 @@ -463,28 +470,28 @@ importers: version: 5.20261005.1 '@rolldown/plugin-babel': specifier: 'catalog:' - version: 0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + version: 0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) '@systemfsoftware/oxlint-config-recommended': specifier: file:../../.sfs-deps/oxlint-config-recommended-4.0.0.tgz - version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) + version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) '@systemfsoftware/stryker-ignorer-effect-schema-declarations': specifier: file:../../.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz - version: file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.12) + version: file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.13) '@systemfsoftware/stryker-js': specifier: file:../../.sfs-deps/stryker-js-17.0.2.tgz - version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/stryker-js-typescript-checker': specifier: file:../../.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz - version: file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.12)(supports-color@10.2.2) + version: file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.13)(supports-color@10.2.2) '@systemfsoftware/stryker-js-vitest-runner': specifier: file:../../.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz - version: file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/tsconfig': specifier: file:../../.sfs-deps/tsconfig-2.0.1.tgz version: file:.sfs-deps/tsconfig-2.0.1.tgz '@systemfsoftware/vitest': specifier: file:../../.sfs-deps/vitest-2.0.0.tgz - version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) '@tanstack/router-cli': specifier: 'catalog:' version: 1.167.40(supports-color@10.2.2) @@ -499,10 +506,10 @@ importers: version: 19.3.0(@types/react@19.3.0) '@vitejs/plugin-react': specifier: 'catalog:' - version: 6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + version: 6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) alchemy: specifier: 'catalog:' - version: 2.0.0-beta.80(@alchemy.run/frontend-frameworks@2.0.0-beta.80(@types/node@24.19.1)(@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(effect@4.0.5)(hono@4.11.4)(redis@6.2.1(@opentelemetry/api@1.9.1))(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(@effect/platform-node@4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(@types/react@19.3.0)(effect@4.0.5)(hono@4.11.4)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) + version: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) babel-plugin-react-compiler: specifier: 'catalog:' version: 1.0.0 @@ -526,22 +533,22 @@ importers: devDependencies: '@systemfsoftware/effect-gherkin-spec': specifier: file:../../.sfs-deps/effect-gherkin-spec-7.0.1.tgz - version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/oxlint-config-recommended': specifier: file:../../.sfs-deps/oxlint-config-recommended-4.0.0.tgz - version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) + version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) '@systemfsoftware/tsconfig': specifier: file:../../.sfs-deps/tsconfig-2.0.1.tgz version: file:.sfs-deps/tsconfig-2.0.1.tgz '@systemfsoftware/vitest': specifier: file:../../.sfs-deps/vitest-2.0.0.tgz - version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) '@types/node': specifier: 'catalog:' version: 24.19.1 effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 oxlint: specifier: 'catalog:' version: 1.90.0(oxlint-tsgolint@7.0.2005) @@ -562,7 +569,7 @@ importers: dependencies: '@systemfsoftware/effect-cell-types': specifier: file:../../../.sfs-deps/effect-cell-types-12.0.0.tgz - version: file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + version: file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) devDependencies: '@microsoft/api-extractor': specifier: 'catalog:' @@ -572,40 +579,40 @@ importers: version: file:.sfs-deps/arethetypeswrong-cli-4.2.0.tgz '@systemfsoftware/conformance-spec': specifier: file:../../../.sfs-deps/conformance-spec-1.0.0.tgz - version: file:.sfs-deps/conformance-spec-1.0.0.tgz(effect@4.0.5) + version: file:.sfs-deps/conformance-spec-1.0.0.tgz(effect@4.1.0) '@systemfsoftware/differential-spec': specifier: file:../../../.sfs-deps/differential-spec-1.0.1.tgz version: file:.sfs-deps/differential-spec-1.0.1.tgz(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) '@systemfsoftware/effect-gherkin-spec': specifier: file:../../../.sfs-deps/effect-gherkin-spec-7.0.1.tgz - version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/effect-schema-law': specifier: file:../../../.sfs-deps/effect-schema-law-5.0.1.tgz - version: file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/effect-schema-vite': specifier: file:../../../.sfs-deps/effect-schema-vite-3.0.1.tgz - version: file:.sfs-deps/effect-schema-vite-3.0.1.tgz(@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5))(effect@4.0.5)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) + version: file:.sfs-deps/effect-schema-vite-3.0.1.tgz(@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5))(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) '@systemfsoftware/oxlint-config-frontend': specifier: workspace:^ version: link:../../oxlint-presets/oxlint-config-frontend '@systemfsoftware/stryker-config': specifier: file:../../../.sfs-deps/stryker-config-0.1.0.tgz - version: file:.sfs-deps/stryker-config-0.1.0.tgz(@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5)) + version: file:.sfs-deps/stryker-config-0.1.0.tgz(@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5)) '@systemfsoftware/stryker-ignorer-effect-schema-declarations': specifier: file:../../../.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz - version: file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.12) + version: file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.13) '@systemfsoftware/stryker-ignorer-in-source-vitest-block': specifier: file:../../../.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz - version: file:.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz(rolldown@1.2.12) + version: file:.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz(rolldown@1.2.13) '@systemfsoftware/stryker-js': specifier: file:../../../.sfs-deps/stryker-js-17.0.2.tgz - version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/stryker-js-typescript-checker': specifier: file:../../../.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz - version: file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.12)(supports-color@10.2.2) + version: file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.13)(supports-color@10.2.2) '@systemfsoftware/stryker-js-vitest-runner': specifier: file:../../../.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz - version: file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/tsconfig': specifier: file:../../../.sfs-deps/tsconfig-2.0.1.tgz version: file:.sfs-deps/tsconfig-2.0.1.tgz @@ -614,7 +621,7 @@ importers: version: file:.sfs-deps/tsdown-config-0.1.0.tgz(@microsoft/api-extractor@7.59.4(@types/node@24.19.1))(tsdown@0.23.0(oxc-resolver@11.21.2)(typescript@7.0.2)) '@systemfsoftware/vitest': specifier: file:../../../.sfs-deps/vitest-2.0.0.tgz - version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) '@systemfsoftware/vitest-config': specifier: file:../../../.sfs-deps/vitest-config-0.1.0.tgz version: file:.sfs-deps/vitest-config-0.1.0.tgz(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) @@ -631,8 +638,8 @@ importers: specifier: 'catalog:' version: 5.0.5(vitest@5.0.5) effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 fast-check: specifier: 'catalog:' version: 4.10.2 @@ -668,7 +675,7 @@ importers: version: link:../effect-atom '@systemfsoftware/effect-cell-types': specifier: file:../../../.sfs-deps/effect-cell-types-12.0.0.tgz - version: file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + version: file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) devDependencies: '@microsoft/api-extractor': specifier: 'catalog:' @@ -678,34 +685,34 @@ importers: version: file:.sfs-deps/arethetypeswrong-cli-4.2.0.tgz '@systemfsoftware/effect-gherkin-spec': specifier: file:../../../.sfs-deps/effect-gherkin-spec-7.0.1.tgz - version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/effect-schema-law': specifier: file:../../../.sfs-deps/effect-schema-law-5.0.1.tgz - version: file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/effect-schema-vite': specifier: file:../../../.sfs-deps/effect-schema-vite-3.0.1.tgz - version: file:.sfs-deps/effect-schema-vite-3.0.1.tgz(@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5))(effect@4.0.5)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) + version: file:.sfs-deps/effect-schema-vite-3.0.1.tgz(@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5))(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) '@systemfsoftware/oxlint-config-frontend': specifier: workspace:^ version: link:../../oxlint-presets/oxlint-config-frontend '@systemfsoftware/stryker-config': specifier: file:../../../.sfs-deps/stryker-config-0.1.0.tgz - version: file:.sfs-deps/stryker-config-0.1.0.tgz(@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5)) + version: file:.sfs-deps/stryker-config-0.1.0.tgz(@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5)) '@systemfsoftware/stryker-ignorer-effect-schema-declarations': specifier: file:../../../.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz - version: file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.12) + version: file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.13) '@systemfsoftware/stryker-ignorer-in-source-vitest-block': specifier: file:../../../.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz - version: file:.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz(rolldown@1.2.12) + version: file:.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz(rolldown@1.2.13) '@systemfsoftware/stryker-js': specifier: file:../../../.sfs-deps/stryker-js-17.0.2.tgz - version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/stryker-js-typescript-checker': specifier: file:../../../.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz - version: file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.12)(supports-color@10.2.2) + version: file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.13)(supports-color@10.2.2) '@systemfsoftware/stryker-js-vitest-runner': specifier: file:../../../.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz - version: file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(supports-color@10.2.2)(vitest@5.0.5) + version: file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/tsconfig': specifier: file:../../../.sfs-deps/tsconfig-2.0.1.tgz version: file:.sfs-deps/tsconfig-2.0.1.tgz @@ -714,7 +721,7 @@ importers: version: file:.sfs-deps/tsdown-config-0.1.0.tgz(@microsoft/api-extractor@7.59.4(@types/node@24.19.1))(tsdown@0.23.0(oxc-resolver@11.21.2)(typescript@7.0.2)) '@systemfsoftware/vitest': specifier: file:../../../.sfs-deps/vitest-2.0.0.tgz - version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) '@systemfsoftware/vitest-config': specifier: file:../../../.sfs-deps/vitest-config-0.1.0.tgz version: file:.sfs-deps/vitest-config-0.1.0.tgz(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) @@ -746,8 +753,8 @@ importers: specifier: 'catalog:' version: 5.0.5(vitest@5.0.5) effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 oxlint: specifier: catalog:oxlint version: 1.90.0(oxlint-tsgolint@7.0.2005) @@ -802,16 +809,16 @@ importers: version: file:.sfs-deps/arethetypeswrong-cli-4.2.0.tgz '@systemfsoftware/conformance-spec': specifier: file:../../../.sfs-deps/conformance-spec-1.0.0.tgz - version: file:.sfs-deps/conformance-spec-1.0.0.tgz(effect@4.0.5) + version: file:.sfs-deps/conformance-spec-1.0.0.tgz(effect@4.1.0) '@systemfsoftware/effect-gherkin-spec': specifier: file:../../../.sfs-deps/effect-gherkin-spec-7.0.1.tgz - version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/effect-sim-kernel': specifier: file:../../../.sfs-deps/effect-sim-kernel-1.0.0.tgz - version: file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.0.5) + version: file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.1.0) '@systemfsoftware/effect-spec-runtime': specifier: file:../../../.sfs-deps/effect-spec-runtime-1.0.1.tgz - version: file:.sfs-deps/effect-spec-runtime-1.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) + version: file:.sfs-deps/effect-spec-runtime-1.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) '@systemfsoftware/oxlint-config-frontend': specifier: workspace:^ version: link:../../oxlint-presets/oxlint-config-frontend @@ -823,7 +830,7 @@ importers: version: file:.sfs-deps/tsdown-config-0.1.0.tgz(@microsoft/api-extractor@7.59.4(@types/node@24.19.1))(tsdown@0.23.0(oxc-resolver@11.21.2)(typescript@7.0.2)) '@systemfsoftware/vitest': specifier: file:../../../.sfs-deps/vitest-2.0.0.tgz - version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + version: file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) '@systemfsoftware/vitest-config': specifier: file:../../../.sfs-deps/vitest-config-0.1.0.tgz version: file:.sfs-deps/vitest-config-0.1.0.tgz(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) @@ -843,8 +850,8 @@ importers: specifier: 'catalog:' version: 5.0.5(playwright@1.63.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5) effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 jsdom: specifier: 30.1.2 version: 30.1.2(@noble/hashes@2.4.0) @@ -886,10 +893,10 @@ importers: version: 1.90.0 '@systemfsoftware/oxlint-config-recommended': specifier: file:../../../.sfs-deps/oxlint-config-recommended-4.0.0.tgz - version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) + version: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) '@systemfsoftware/oxlint-plugin-effect-platform': specifier: file:../../../.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz - version: file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2) + version: file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2) oxlint: specifier: catalog:oxlint version: 1.90.0(oxlint-tsgolint@7.0.2005) @@ -916,8 +923,8 @@ importers: specifier: 'catalog:' version: 24.19.1 effect: - specifier: 4.0.5 - version: 4.0.5 + specifier: 4.1.0 + version: 4.1.0 rimraf: specifier: 'catalog:' version: 6.1.3 @@ -936,14 +943,22 @@ packages: '@adobe/css-tools@4.5.0': resolution: {integrity: sha512-6OzddxPio9UiWTCemp4N8cYLV2ZN1ncRnV1cVGtve7dhPOtRkleRyx32GQCYSwDYgaHU3USMm84tNsvKzRCa1Q==} - '@alchemy.run/cloudflare-runtime@2.0.0-beta.80': - resolution: {integrity: sha512-vrMDVAQ+LlzFGkgfIbi/65iwskdSxxWYhJX03sFL72mvkGxvb8RQSKrbxLGHhMz0QSZh796dOff1z9zOwxsIbA==} + '@alchemy.run/acme@https://pkg.alchemy.run/@alchemy.run/acme/-/94b874c8e2e62bbcc2aa01d951bae517132da09ffd298a2bc438c5ce3ee9eb20.tgz': + resolution: {integrity: sha512-2bDA4Ky/YxSf7MD/2L3FjzlDrPR7T3hVT8wVY05bGgqGyiRAuFyMlnhgTpsfWcgMA/lvmrN7XxOpV6vf4baeog==, tarball: https://pkg.alchemy.run/@alchemy.run/acme/-/94b874c8e2e62bbcc2aa01d951bae517132da09ffd298a2bc438c5ce3ee9eb20.tgz} + version: 2.0.0-beta.84 + peerDependencies: + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz + effect: 4.1.0 + + '@alchemy.run/cloudflare-runtime@https://pkg.alchemy.run/@alchemy.run/cloudflare-runtime/-/82efb388b666ffa77775a0841c3cf30abc1d26df96f4ea4c8c97e3bffc06cf1d.tgz': + resolution: {integrity: sha512-C+rjrPlxMq6eHaUbHSBI/rnmArluBYkZ/tY4pYmvrJEyREVRzde/Yx9mdwgaBw+oNI/Bd7T3NLphHpDQ1LcuOQ==, tarball: https://pkg.alchemy.run/@alchemy.run/cloudflare-runtime/-/82efb388b666ffa77775a0841c3cf30abc1d26df96f4ea4c8c97e3bffc06cf1d.tgz} + version: 2.0.0-beta.84 peerDependencies: - '@distilled.cloud/cloudflare': 1.0.0-rc.13 - '@effect/platform-bun': ^4.0.0 - '@effect/platform-node': 4.0.5 - effect: 4.0.5 - rolldown: 1.2.5 + '@distilled.cloud/cloudflare': https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz + '@effect/platform-bun': ^4.1.0 + '@effect/platform-node': 4.1.0 + effect: 4.1.0 + rolldown: 1.2.13 vite: ^7.0.0 || ^8.0.0 peerDependenciesMeta: '@effect/platform-bun': @@ -955,52 +970,50 @@ packages: vite: optional: true - '@alchemy.run/floci@2.0.0-beta.80': - resolution: {integrity: sha512-gtUXFitVY9pSQQYCDtSVyjfd5YOKY3Wleg3WCG5yWno7/l7xBo4kfOMbM63tzWnmka9LewVSITbMfwnC4D/73A==} + '@alchemy.run/cloudflare@https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz': + resolution: {integrity: sha512-rbEBlvF/I/N2kE75xzKd3e8DTd5A8mxADDgTxB1lMHfn/BiFSiAnN7F63M9Sgq1T3jw4jWNDu/3fnmhPy38bvQ==, tarball: https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz} + version: 2.0.0-beta.84 peerDependencies: - effect: 4.0.5 - - '@alchemy.run/frontend-frameworks@2.0.0-beta.80': - resolution: {integrity: sha512-zi3+18wBj561A7bXqcSv7KqRSgu8Q4iHlQjUkBi0TO/I+CNSx9Sslgbb+7rwhjVysUOXRxLzOzqR7QOVP1yFlw==} - peerDependencies: - '@effect/platform-bun': ^4.0.0 - '@octanejs/vite-plugin': '>=0.1.22' - '@opennextjs/cloudflare': 1.20.1 - '@sveltejs/kit': '>=3.0.0-next.27' - '@vitejs/plugin-react': ^6.0.2 - astro: ^7.0.0 - effect: 4.0.5 - hono: ^4.12.14 - nuxt: '>=4.5.0' + '@alchemy.run/domain': https://pkg.alchemy.run/@alchemy.run/domain/-/3463c1a6a9d03f98d3df1439d2dd881baee7d9e6bf37f6aaf58bb84ab191a885.tgz + '@alchemy.run/frontend-frameworks': https://pkg.alchemy.run/@alchemy.run/frontend-frameworks/-/b413a964ee6b0ab093418b91229f3b79d3c15a01add2b9ebf222342a2d091a91.tgz + '@effect/platform-bun': ^4.1.0 + '@effect/platform-node': 4.1.0 + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz + effect: 4.1.0 vite: ^7.0.0 || ^8.0.0 - vocs: 2.8.2 - waku: 1.0.0-beta.7 peerDependenciesMeta: - '@effect/platform-bun': - optional: true - '@octanejs/vite-plugin': + '@alchemy.run/domain': optional: true - '@opennextjs/cloudflare': - optional: true - '@sveltejs/kit': - optional: true - '@vitejs/plugin-react': - optional: true - astro: + '@alchemy.run/frontend-frameworks': optional: true - hono: + '@effect/platform-bun': optional: true - nuxt: + '@effect/platform-node': optional: true vite: optional: true - vocs: - optional: true - waku: + + '@alchemy.run/docker@https://pkg.alchemy.run/@alchemy.run/docker/-/1125f2ebf64b81a81b118848fca1f6902201548f25ff01ef06e92228d7b8aa9d.tgz': + resolution: {integrity: sha512-RiD00XbAxQp8CSOAumYdy6NMNl3n3CFZMEiuPXl76LyljXLDXPXUIDMvfXFk7q1OSovf6PIkwQJQASDThBVn3w==, tarball: https://pkg.alchemy.run/@alchemy.run/docker/-/1125f2ebf64b81a81b118848fca1f6902201548f25ff01ef06e92228d7b8aa9d.tgz} + version: 2.0.0-beta.84 + peerDependencies: + '@effect/platform-bun': ^4.1.0 + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz + effect: 4.1.0 + peerDependenciesMeta: + '@effect/platform-bun': optional: true - '@alchemy.run/node-utils@2.0.0-beta.80': - resolution: {integrity: sha512-uOhVDQZTjwh1AU4mrk0wB5rQaziTwSrVMfqwFP8wALfU//nveu4goOWZimHtqytXiybENh+iEbALH25EFAkc7A==} + '@alchemy.run/github@https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz': + resolution: {integrity: sha512-sZWskxXxl4I1fOm6ik8quIor6wKcu4o/p9ojyImDLn1tbu+kOWNTTpWd9xDTOKnvGdZE9xjDfM7wfubaCSdrlQ==, tarball: https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz} + version: 2.0.0-beta.84 + peerDependencies: + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz + effect: 4.1.0 + + '@alchemy.run/node-utils@https://pkg.alchemy.run/@alchemy.run/node-utils/-/f7ed79ab54e4abbdb7445242a8127338f02468a98f12a5ce681b50f7e1b0ca50.tgz': + resolution: {integrity: sha512-w8g4tRGL/mHodQ7dBA0g1xYU4p4ZQIB0NPVFUxBhyJBOJmsz6+1R8FklmxonNGwYBrdUf4LeO57KYdMU/0FXGA==, tarball: https://pkg.alchemy.run/@alchemy.run/node-utils/-/f7ed79ab54e4abbdb7445242a8127338f02468a98f12a5ce681b50f7e1b0ca50.tgz} + version: 2.0.0-beta.84 '@alchemy.run/sigil@0.1.0-alpha.1': resolution: {integrity: sha512-RtHELG2w+GluVewRsuKm66idtPzC+4STptMr/61X1Vy5uBkDzcCzjzV8G6jUa4iBv6Il0hHV7UL6wvv//9nD/Q==} @@ -1014,6 +1027,29 @@ packages: react-devtools-core: optional: true + '@alchemy.run/sql@https://pkg.alchemy.run/@alchemy.run/sql/-/9d4e1e5294ba3ab78de2e78607cbc5309326f84745b23dbe5f6403984e6e780c.tgz': + resolution: {integrity: sha512-ck/0F2NB8TxrbvcjgUT34JBjWsMFaku2yfCTWu5l+11uMH4EH8gxO99/qELEOFGHZBa35dd/yucSmcfx6bGWpQ==, tarball: https://pkg.alchemy.run/@alchemy.run/sql/-/9d4e1e5294ba3ab78de2e78607cbc5309326f84745b23dbe5f6403984e6e780c.tgz} + version: 2.0.0-beta.84 + peerDependencies: + '@effect/sql-libsql': ^4.1.0 + '@effect/sql-mysql2': ^4.1.0 + '@effect/sql-pg': ^4.1.0 + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz + effect: 4.1.0 + mysql2: ^3.24.2 + pg: ^8.22.0 + peerDependenciesMeta: + '@effect/sql-libsql': + optional: true + '@effect/sql-mysql2': + optional: true + '@effect/sql-pg': + optional: true + mysql2: + optional: true + pg: + optional: true + '@asamuzakjp/css-color@7.1.7': resolution: {integrity: sha512-Q7ioeear07HwixdIitIn9KS1LZi97CEDFCSjPNm9v+y8KNbsu9q4Lrd4zUQW4faED+E7qxvfeVnbNRW46wFKuw==} engines: {node: ^22.22.2 || ^24.15.0 || >=26.0.0} @@ -1157,18 +1193,6 @@ packages: resolution: {integrity: sha512-0GEz8qJWokkUVYQYRukmkSHIFNoBH8QTreeHrAFbvz1XFYc3Y+puhMs8PQ5x8GNugiC2l5jvDBXKLbBIByeSBw==} hasBin: true - '@chevrotain/cst-dts-gen@10.5.0': - resolution: {integrity: sha512-lhmC/FyqQ2o7pGK4Om+hzuDrm9rhFYIJ/AXoQBeongmn870Xeb0L6oGEiuR8nohFNL5sMaQEJWCxr1oIVIVXrw==} - - '@chevrotain/gast@10.5.0': - resolution: {integrity: sha512-pXdMJ9XeDAbgOWKuD1Fldz4ieCs6+nLNmyVhe2gZVqoO7v8HXuHYs5OV2EzUtbuai37TlOAQHrTDvxMnvMJz3A==} - - '@chevrotain/types@10.5.0': - resolution: {integrity: sha512-f1MAia0x/pAVPWH/T73BJVyO2XU5tI4/iE7cnxb7tqdNTNhQI3Uq3XkqcoteTmD4t1aM0LbHCJOhgIDn07kl2A==} - - '@chevrotain/utils@10.5.0': - resolution: {integrity: sha512-hBzuU5+JjB2cqNZyszkDHZgOSrUUT8V3dhgRl8Q9Gp6dAj/H5+KILGjbhDpc3Iy9qmqlm/akuOI2ut9VUtzJxQ==} - '@cloudflare/kv-asset-handler@0.5.0': resolution: {integrity: sha512-jxQYkj8dSIzc0cD6cMMNdOc1UVjqSqu8BZdor5s8cGjW2I8BjODt/kWPVdY+u9zj3ms75Q5qaZgnxUad83+eAg==} engines: {node: '>=22.0.0'} @@ -1350,89 +1374,51 @@ packages: resolution: {integrity: sha512-OoKoR0f76dCY666JlcbhmVTs2drYj1GUXZTYTcbUgJjh9Nv41aFfZ21bPQTERm5+L5cBDo466NltB2lplS5GBw==} engines: {node: '>=20.19.0'} - '@distilled.cloud/acme@1.0.0-rc.13': - resolution: {integrity: sha512-3rmzH125jQxk0zpCvXGNEybSaqpAolyCX+8LWDDrXf+wIKs67GflkJyQLjOOh0lKARe29hdUZGgqEbbvpp0LNA==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/aws@1.0.0-rc.13': - resolution: {integrity: sha512-6ZGcp0LkniB0I2l8Gr7vKRQgTZTch0/07iuvuMZv9Nu+rWwNuZG9VHTUdlIoarWgCHFUNN8yvSYBGOjaeN99tQ==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/axiom@1.0.0-rc.13': - resolution: {integrity: sha512-aRoJtvfXgWi5dtfjuJvDwnArRKvv2MPYHCxYeZcxZbqe62IaQA5yu/khft7TJvxeDyJoSDnVXZu3RyJjNmBA4g==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/cloudflare@1.0.0-rc.13': - resolution: {integrity: sha512-Py5FoA6azyYExDb91VaeC+9x+ravOBSRhXeUmpcQjCtgqmOdiXgc2YZGMMPI68DF+kMuHRVIrR+2uRZNDOhYjw==} + '@distilled.cloud/acme@https://pkg.alchemy.run/@distilled.cloud/acme/-/31b5ed0bd279dafa32adf9452c20cecbc16449a278dc709f73f70f3a821a497c.tgz': + resolution: {integrity: sha512-l8V1TF5Fhsf8+qFaYqSI+e7zwsH126yCZ1IdYdVj9+3GWjq6YfqxJrYREBDc5H6cViM/V8Gop2QChnxy+U2zsQ==, tarball: https://pkg.alchemy.run/@distilled.cloud/acme/-/31b5ed0bd279dafa32adf9452c20cecbc16449a278dc709f73f70f3a821a497c.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/core@1.0.0-rc.13': - resolution: {integrity: sha512-RYyrxW+F5zrTuu1UWV/JoycholBCIkXIusYJdDniDwCdmbjdKGl07KlkkeeY774uBawNGf+pt1ESNGeLVnNHsg==} + '@distilled.cloud/aws4signer@https://pkg.alchemy.run/@distilled.cloud/aws4signer/-/d5d12f0fa0f9b5f9693b1d49d7634fd4e88a5b90cc972e8859eaf45e2385c3b1.tgz': + resolution: {integrity: sha512-tveFBfg+/MnbL8CxrVKfIWUOzoLqjrTwZwEOuGJNOLuFXHFWiantfwhYYMupqii6jRfzt3Gpt7s6ZcjBbD/tEw==, tarball: https://pkg.alchemy.run/@distilled.cloud/aws4signer/-/d5d12f0fa0f9b5f9693b1d49d7634fd4e88a5b90cc972e8859eaf45e2385c3b1.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/doppler@1.0.0-rc.13': - resolution: {integrity: sha512-GgOEUCc4Bx0C+lYNfZ4OqaA3ULvqDUQTJC8gobSh1L0jfrWclv/kRcSr43v4IXyStld+saUvDfDZgeGzlE74OA==} + '@distilled.cloud/aws@https://pkg.alchemy.run/@distilled.cloud/aws/-/854428e08c3015bbb423377a045c676b38749d042da8de12cb65cdd25e965951.tgz': + resolution: {integrity: sha512-8bGa3RbVfcFkLde7eceT4KCv7n2CELMckRBNgdrL4owyN49ZBOonmZ+Js+Vkr8V6r7Auds2U/Yd8PiONYIDUiQ==, tarball: https://pkg.alchemy.run/@distilled.cloud/aws/-/854428e08c3015bbb423377a045c676b38749d042da8de12cb65cdd25e965951.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/fly-io@1.0.0-rc.13': - resolution: {integrity: sha512-Ipp+9nvs+PzqwDPhZq2/BEHNUeWzXKhrvjfT/eBLFHo/QpH0HgdMH8MSQe6/LGszZoormwA6ZrTv2wxaFO7ZiQ==} + '@distilled.cloud/cloudflare@https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz': + resolution: {integrity: sha512-CPp6YWYrQm/xN6sos7mbB0dWyo298yc/pOhkSYAUJF/I8vzjw8ldYJgF07KNMjta04c7i2HQLJoQI3fnUdXHmw==, tarball: https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/gcp@1.0.0-rc.13': - resolution: {integrity: sha512-un8jqil9ejt96oN+OfEDUsbrEOpC6Ut4B/73DqKDttvt0Btal1OeBNTTQsftVCpeEzXAvkYKGRIT2AeEu1J5jA==} + '@distilled.cloud/core@https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz': + resolution: {integrity: sha512-gRtG71ly/mZrna8epY9p9xFk5h58/30kOhLAalfEQNqUdjcYfECaMjU8Z7AKj3yUOv81BfF3/KiSwRiuP+Jwvw==, tarball: https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/hetzner@1.0.0-rc.13': - resolution: {integrity: sha512-FvqofgMypNkeZbnjGjWMZqvqGd9GxcMzdbi/6JrbcPaHMJG+CCBGt/mAa7mLlEovzwVaGCsBnOXJ6rP5pZjB4Q==} + '@distilled.cloud/github@https://pkg.alchemy.run/@distilled.cloud/github/-/b656793cc3031e7e63f3255902a1e751d28d9bf8c13ab70cfca6b00a5a831cb4.tgz': + resolution: {integrity: sha512-mOVSHbEfnj4APId37RY1DBnRjtZrus/vrtmkPZoBb3tdZdSSTgE4DszExqA50yKfEGugmudUpnN02ZJLrJUKjw==, tarball: https://pkg.alchemy.run/@distilled.cloud/github/-/b656793cc3031e7e63f3255902a1e751d28d9bf8c13ab70cfca6b00a5a831cb4.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/infisical@1.0.0-rc.13': - resolution: {integrity: sha512-Zz8ksA/Y8UUUnWag2UBxB5WYA6wLqOS78ugWJ3cOr9Ot+4bC0NJYWanq35uFInozLXWhun84USU2wOI+mdwQUQ==} + '@distilled.cloud/iceberg@https://pkg.alchemy.run/@distilled.cloud/iceberg/-/01378c8b70513ccbc2e49ba1f00984a2851bf7a9160e1ee31c61511c16ab4bb7.tgz': + resolution: {integrity: sha512-899gpcDCo/eb/mNQxFvwtfjncZFJI9NSZKtoOpYzPu13fsRJLnDuuYUEbJpkWjFr0bW2YepqzDs5RnU9Uj8rnQ==, tarball: https://pkg.alchemy.run/@distilled.cloud/iceberg/-/01378c8b70513ccbc2e49ba1f00984a2851bf7a9160e1ee31c61511c16ab4bb7.tgz} + version: 1.0.0-rc.17 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/neon@1.0.0-rc.13': - resolution: {integrity: sha512-2JvbBFj1kBfkDVPnWcJZ7TJ1cJwWBtScAY7SNJ2qNBUuAK1Wf2kjJXU0/j16eCJ48BQigPArQFWL51wVu/EUQQ==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/planetscale@1.0.0-rc.13': - resolution: {integrity: sha512-AM97YGRnDfZdqsxFgQMQ83p7ZlRqxS6/foTTJA5P590UMbbOyrQyFyd33BD0agul8a3ngZde3Oej6v7BN55aWw==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/prisma@1.0.0-rc.13': - resolution: {integrity: sha512-+UmHSp9JV8XQl5t5tTdQBY+dWZ9abrEoc7leYEctA0Ar1TrKZEl2EaeQDoumrg4RyGaacRlirEbxaDFI4SOPtQ==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/railway@1.0.0-rc.13': - resolution: {integrity: sha512-yXalRS3GFLo3hWM0HXptqudi23NVCM4FRD20db2/Ob9FFcNrMJik1fopv+74HOiV+BuxfkCP609KsEK6LVdB/g==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/stripe@1.0.0-rc.13': - resolution: {integrity: sha512-jLTJ1mg4U39lHZb9EGYBJLR91yB3LSG6fVxix+r1BbqaTovWzE+NuJ7fu9fRSeax9jRAqsGLLxe9IxJbOtwQnQ==} - peerDependencies: - effect: 4.0.5 - - '@distilled.cloud/zerossl@1.0.0-rc.13': - resolution: {integrity: sha512-dnxhg39lZjpTdZbHCVYPoUC9E2r8eSHbqiYDhSq2EurVPJcc9YRXlxZR1bP1nniSp078XV8GA+aUECt/Z56aQg==} - peerDependencies: - effect: 4.0.5 - - '@effect/opentelemetry@4.0.5': - resolution: {integrity: sha512-/Ms5DCZyHZzAbQQtXP4QRCSvHnKXaw3vLnDUegFmO3K3qIRqRdqfVtIqbGa1pbjMKdTShggiitDjRAYOHyWo1A==} - engines: {node: '>=18.0.0'} + '@effect/opentelemetry@4.1.0': + resolution: {integrity: sha512-j9bNzQaoQvcnimBFMG0i3piEW20E8HjkXAQHTJN/XqG2e4uJ9zCv53/HCNzD7+ooFn5S4nwQy/BOXeNReMIe+A==} + engines: {node: '>=22.19.0'} peerDependencies: '@opentelemetry/api': '>=1.9.0 <2.0.0' '@opentelemetry/api-logs': '>=0.203.0 <0.300.0' @@ -1443,7 +1429,7 @@ packages: '@opentelemetry/sdk-trace-node': '>=2.0.0 <3.0.0' '@opentelemetry/sdk-trace-web': '>=2.0.0 <3.0.0' '@opentelemetry/semantic-conventions': '>=1.33.0 <2.0.0' - effect: 4.0.5 + effect: 4.1.0 peerDependenciesMeta: '@opentelemetry/api': optional: true @@ -1462,28 +1448,23 @@ packages: '@opentelemetry/sdk-trace-web': optional: true - '@effect/platform-node-shared@4.0.5': - resolution: {integrity: sha512-a8rCdEkfZBGe9C6bsIjxVZuRp73svIyK5IHwHdDAVsvZXjrbkxusfI+rZ8WlX31RP1mKizwI/E72GQTNfdMWHw==} - engines: {node: '>=18.0.0'} + '@effect/platform-node-shared@4.1.0': + resolution: {integrity: sha512-uYQfFRoxWLo8fIhiSeBcmz/R1ooOfE3HF3cWHFgxz82tZMk2Wn02BGABcdLmaAch9VpDLbtWnuhSxNyBsGMUFg==} + engines: {node: '>=22.19.0'} peerDependencies: - effect: 4.0.5 + effect: 4.1.0 - '@effect/platform-node@4.0.5': - resolution: {integrity: sha512-v4KD5fWvEUa4QmWFpZFbBsRhmfnTP6ETCME2r9ifyXVDPjhfpxpTZl41prjgQFMqZBHdWWCl7YC5ImbXv5ui5g==} - engines: {node: '>=18.0.0'} + '@effect/platform-node@4.1.0': + resolution: {integrity: sha512-v+X7moGVF9k5oMVvz0slA+NgtEod+W+oygeI285MDJgSlUCW3JcqElj+cD3rlijFZtpKhC7RLkU1GuCxjGHTpA==} + engines: {node: '>=22.19.0'} peerDependencies: - effect: 4.0.5 + effect: 4.1.0 redis: '>=5.0.0 <7.0.0' - '@effect/sql-d1@4.0.5': - resolution: {integrity: sha512-ERArvCS/qOHx52yKFePc8v5qs0y18Ld+Ha6Xkkm/I1R+zTf+flfWpsuxlxkPKlwQCqB9K+yfU6Kw1gshKGRCPQ==} - peerDependencies: - effect: 4.0.5 - - '@effect/sql-sqlite-do@4.0.5': - resolution: {integrity: sha512-TGlU65ZJJMa81I7EoicQXxhRsJDxDPz6A/PNOPzMYRgmCdLs6EsTTXIkKZ+8apb7pl2o0OKVcrT6i6mGlluyLg==} + '@effect/sql-d1@4.1.0': + resolution: {integrity: sha512-Sg3UxQGc5yPc9LZ4WmiwHzVv+Wpqntue+4QRYx/XdLLyrZH4w+BkshPzifC7p7uQg9OaiaeQJPlsKZs6Bm9plw==} peerDependencies: - effect: 4.0.5 + effect: 4.1.0 '@effect/tsgo-darwin-arm64@0.63.0': resolution: {integrity: sha512-KBvYatuEol71+i+BERWuDRU9XE+4sTK78N83Ko6VNF5gy6yXiujj/bgtWs2P3cDGXsevAV6L+HtpuAWjAQKC6Q==} @@ -1524,20 +1505,6 @@ packages: resolution: {integrity: sha512-bRbvVj+YLE/nBmcBWGAwsul3mjEYlqqOmWMxvwSVKq/oNnJEuZYgi2OFDeUf7q49E2g3w+oMHMWyN2QayZ77RQ==} hasBin: true - '@electric-sql/pglite-socket@0.0.20': - resolution: {integrity: sha512-J5nLGsicnD9wJHnno9r+DGxfcZWh+YJMCe0q/aCgtG6XOm9Z7fKeite8IZSNXgZeGltSigM9U/vAWZQWdgcSFg==} - hasBin: true - peerDependencies: - '@electric-sql/pglite': 0.3.15 - - '@electric-sql/pglite-tools@0.2.20': - resolution: {integrity: sha512-BK50ZnYa3IG7ztXhtgYf0Q7zijV32Iw1cYS8C+ThdQlwx12V5VZ9KRJ42y82Hyb4PkTxZQklVQA9JHyUlex33A==} - peerDependencies: - '@electric-sql/pglite': 0.3.15 - - '@electric-sql/pglite@0.3.15': - resolution: {integrity: sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==} - '@emnapi/core@1.11.0': resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==} @@ -1737,12 +1704,6 @@ packages: engines: {node: '>=6'} hasBin: true - '@hono/node-server@1.19.9': - resolution: {integrity: sha512-vHL6w3ecZsky+8P5MD+eFfaGTyCeOHUIFYMGpQGbrBTSmNNoxv0if69rEZ5giu36weC5saFuznL411gRX7bJDw==} - engines: {node: '>=18.14.1'} - peerDependencies: - hono: ^4 - '@img/colour@1.1.0': resolution: {integrity: sha512-Td76q7j57o/tLVdgS746cYARfSyxk8iEfRxewL9h4OMzYhbW4TAcppl0mT4eyqXddh6L/jwoM75mo7ixa/pCeQ==} engines: {node: '>=18'} @@ -2101,63 +2062,6 @@ packages: '@js-sdsl/ordered-map@4.4.2': resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} - '@libsql/client@0.17.4': - resolution: {integrity: sha512-lYayFWasDV78A+TjlEhr6ubb3odBV6OHjb+wdp8VQcyWWAEIjuwbCHaraEUS4m4yWoo0BvZo96It4VdzZRmRWw==} - - '@libsql/core@0.17.4': - resolution: {integrity: sha512-LqF9gIvnJ38nmAH1y/ChizHqDO/MO1wLgA96XrraulEEbqXxLjleSH92YWTolbuJKgPUmGu4aJk9W3UnAcxLOQ==} - - '@libsql/darwin-arm64@0.5.29': - resolution: {integrity: sha512-K+2RIB1OGFPYQbfay48GakLhqf3ArcbHqPFu7EZiaUcRgFcdw8RoltsMyvbj5ix2fY0HV3Q3Ioa/ByvQdaSM0A==} - cpu: [arm64] - os: [darwin] - - '@libsql/darwin-x64@0.5.29': - resolution: {integrity: sha512-OtT+KFHsKFy1R5FVadr8FJ2Bb1mghtXTyJkxv0trocq7NuHntSki1eUbxpO5ezJesDvBlqFjnWaYYY516QNLhQ==} - cpu: [x64] - os: [darwin] - - '@libsql/hrana-client@0.10.0': - resolution: {integrity: sha512-OoA4EMqRAC7kn7V2P6EQqRcpZf2W+AjsNIyCizBg339Tq/aMC7sRnzs3SklderhmQWAqEzvv8A2vhxVmWpkVvw==} - - '@libsql/isomorphic-ws@0.1.5': - resolution: {integrity: sha512-DtLWIH29onUYR00i0GlQ3UdcTRC6EP4u9w/h9LxpUZJWRMARk6dQwZ6Jkd+QdwVpuAOrdxt18v0K2uIYR3fwFg==} - - '@libsql/linux-arm-gnueabihf@0.5.29': - resolution: {integrity: sha512-CD4n4zj7SJTHso4nf5cuMoWoMSS7asn5hHygsDuhRl8jjjCTT3yE+xdUvI4J7zsyb53VO5ISh4cwwOtf6k2UhQ==} - cpu: [arm] - os: [linux] - - '@libsql/linux-arm-musleabihf@0.5.29': - resolution: {integrity: sha512-2Z9qBVpEJV7OeflzIR3+l5yAd4uTOLxklScYTwpZnkm2vDSGlC1PRlueLaufc4EFITkLKXK2MWBpexuNJfMVcg==} - cpu: [arm] - os: [linux] - - '@libsql/linux-arm64-gnu@0.5.29': - resolution: {integrity: sha512-gURBqaiXIGGwFNEaUj8Ldk7Hps4STtG+31aEidCk5evMMdtsdfL3HPCpvys+ZF/tkOs2MWlRWoSq7SOuCE9k3w==} - cpu: [arm64] - os: [linux] - - '@libsql/linux-arm64-musl@0.5.29': - resolution: {integrity: sha512-fwgYZ0H8mUkyVqXZHF3mT/92iIh1N94Owi/f66cPVNsk9BdGKq5gVpoKO+7UxaNzuEH1roJp2QEwsCZMvBLpqg==} - cpu: [arm64] - os: [linux] - - '@libsql/linux-x64-gnu@0.5.29': - resolution: {integrity: sha512-y14V0vY0nmMC6G0pHeJcEarcnGU2H6cm21ZceRkacWHvQAEhAG0latQkCtoS2njFOXiYIg+JYPfAoWKbi82rkg==} - cpu: [x64] - os: [linux] - - '@libsql/linux-x64-musl@0.5.29': - resolution: {integrity: sha512-gquqwA/39tH4pFl+J9n3SOMSymjX+6kZ3kWgY3b94nXFTwac9bnFNMffIomgvlFaC4ArVqMnOZD3nuJ3H3VO1w==} - cpu: [x64] - os: [linux] - - '@libsql/win32-x64-msvc@0.5.29': - resolution: {integrity: sha512-4/0CvEdhi6+KjMxMaVbFM2n2Z44escBRoEYpR+gZg64DdetzGnYm8mcNLcoySaDJZNaBd6wz5DNdgRmcI4hXcg==} - cpu: [x64] - os: [win32] - '@microsoft/api-extractor-model@7.33.15': resolution: {integrity: sha512-UpCnItIJwu03iNTWtJVKv8Qbf0MXN7WLQZUail9cpAQmnZiIX36YPRRoRxz0pocwytzUpmJhstsLkyW5tsaHBA==} engines: {node: '>=20.9.0'} @@ -2173,10 +2077,6 @@ packages: '@microsoft/tsdoc@0.17.1': resolution: {integrity: sha512-VHyYyyoH63jFoO3shpw9Zfijk5v/9p/VrClW35z0/q6ooK7sSmxpzOkS4iZPxs3vO4XtBW4H38HRAKkAMIK7DA==} - '@mrleebo/prisma-ast@0.13.1': - resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==} - engines: {node: '>=16'} - '@napi-rs/wasm-runtime@1.2.5': resolution: {integrity: sha512-HshSvXzmBxNzqejd3k/KemgQ3hdREUYFRRrgxOZ+gPljDIsO2SDZrVZMd4Z/HsxudQbE62OVyVFE8z9BCurfjA==} engines: {node: ^20.19.0 || ^22.13.0 || >=23.5.0} @@ -2184,91 +2084,10 @@ packages: '@emnapi/core': ^1.7.1 || ^2.0.0-alpha.4 '@emnapi/runtime': ^1.7.1 || ^2.0.0-alpha.4 - '@neon-rs/load@0.0.4': - resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==} - - '@neon/functions@0.11.0': - resolution: {integrity: sha512-xyIEk9aULR2nBTzyTgxljkM8aS+Ppe9oVw/t5mdqYOlY/mLFppHSZHq8hiWVDWy6Ca8oLd3loTtfVz+cZQQjsA==} - engines: {node: '>=20.19.0'} - peerDependencies: - hono: ^4.7.8 - peerDependenciesMeta: - hono: - optional: true - '@noble/hashes@2.4.0': resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} engines: {node: '>= 20.19.0'} - '@octokit/auth-token@6.0.0': - resolution: {integrity: sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==} - engines: {node: '>= 20'} - - '@octokit/core@7.0.8': - resolution: {integrity: sha512-L7y8eYc+AwxGr2PWI4WFt1VG4TiJ66c26BD16mXpYIlXxG0SMigM1+m4aTSlYyBr5BlQsGAlz8uDCoZN4SEMcg==} - engines: {node: '>= 20'} - - '@octokit/endpoint@11.0.5': - resolution: {integrity: sha512-iXa654H3yFafF/ieHkukfbgWo2rmXD2ceD0ZOtrPhw1bc3FDch1d9N/TNs0FQ1/cIbwb7kspUX8jzIs8nzb9DQ==} - engines: {node: '>= 20'} - - '@octokit/graphql@9.0.5': - resolution: {integrity: sha512-bt/hm03LeU6Vy7FwTrkkC9p3XGT/lBwClglMqxBSe5/q0E5CdJTXeAqEI0vlw89/LF/G6tryTIH8HirZ3prMVg==} - engines: {node: '>= 20'} - - '@octokit/openapi-types@27.0.0': - resolution: {integrity: sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==} - - '@octokit/openapi-types@29.0.1': - resolution: {integrity: sha512-9qWOMFNxxLokERcms42rU0PTLqQmVs7g5E41TI4mCOxmpFayD1rfC7XxOL55cG9MBZLFlC31BrR37myMKardwg==} - - '@octokit/openapi-webhooks-types@12.1.0': - resolution: {integrity: sha512-WiuzhOsiOvb7W3Pvmhf8d2C6qaLHXrWiLBP4nJ/4kydu+wpagV5Fkz9RfQwV2afYzv3PB+3xYgp4mAdNGjDprA==} - - '@octokit/plugin-paginate-rest@14.0.0': - resolution: {integrity: sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==} - engines: {node: '>= 20'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-request-log@6.0.0': - resolution: {integrity: sha512-UkOzeEN3W91/eBq9sPZNQ7sUBvYCqYbrrD8gTbBuGtHEuycE4/awMXcYvx6sVYo7LypPhmQwwpUe4Yyu4QZN5Q==} - engines: {node: '>= 20'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/plugin-rest-endpoint-methods@17.0.0': - resolution: {integrity: sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==} - engines: {node: '>= 20'} - peerDependencies: - '@octokit/core': '>=6' - - '@octokit/request-error@7.1.2': - resolution: {integrity: sha512-XZRuT3xZ84D3gYErI1DZvhJ33dCWVV6uzBtWkaBB4TvA/L6eOeTZodxLFVB44bBEEo3vEx7y00UfX1tBLrtLRg==} - engines: {node: '>= 20'} - - '@octokit/request@10.0.16': - resolution: {integrity: sha512-A0zWGjHzISIb+9ccG8s0dq7LKO5zVpJLRICjgUb+sJxEWqn8RUHB1rD3AE51+PECvXHIxqZ1VVvs4fHTSD9nUQ==} - engines: {node: '>= 20'} - - '@octokit/rest@22.0.1': - resolution: {integrity: sha512-Jzbhzl3CEexhnivb1iQ0KJ7s5vvjMWcmRtq5aUsKmKDrRW6z3r84ngmiFKFvpZjpiU/9/S6ITPFRpn5s/3uQJw==} - engines: {node: '>= 20'} - - '@octokit/types@16.0.0': - resolution: {integrity: sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==} - - '@octokit/types@18.0.0': - resolution: {integrity: sha512-l6bAF43PNxkJp6g+W4PjoUSSkxHomXw2nOum5CTftJz1NlV3vu93NImgOYtLf6CbBUb5j+fiuzW0PPQ5JTSvZA==} - - '@octokit/webhooks-methods@6.0.0': - resolution: {integrity: sha512-MFlzzoDJVw/GcbfzVC1RLR36QqkTLUf79vLVO3D+xn7r0QgxnFoLZgtrzxiQErAjFUOdH6fas2KeQJ1yr/qaXQ==} - engines: {node: '>= 20'} - - '@octokit/webhooks@14.2.0': - resolution: {integrity: sha512-da6KbdNCV5sr1/txD896V+6W0iamFWrvVl8cHkBSPT+YlvmT3DwXa4jxZnQc+gnuTEqSWbBeoSZYTayXH9wXcw==} - engines: {node: '>= 20'} - '@oozcitak/dom@2.0.2': resolution: {integrity: sha512-GjpKhkSYC3Mj4+lfwEyI1dqnsKTgwGy48ytZEhm4A/xnH/8z9M3ZVXKr/YGQi3uCLs1AEBS+x5T2JPiueEDW8w==} engines: {node: '>=20.0'} @@ -2836,15 +2655,9 @@ packages: '@oxc-project/types@0.127.0': resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==} - '@oxc-project/types@0.146.0': - resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} - '@oxc-project/types@0.150.0': resolution: {integrity: sha512-rDS5/31E9HfPl/CIzGrn0DOlvBbXFseQ5URJ9sYMfstbKLD/c6Gm9vmRzRGDdAXyOIL4zmO37lc9RIwYqVruZw==} - '@oxc-project/types@0.152.0': - resolution: {integrity: sha512-oM/5rLBm2tPkg0iBgkH/FOeR3PCDpY19GTgAZjMFM8h9WI9VW7cLgzp6nwtarYKmovavIQZ+Fe/RKX/8C8O/Rw==} - '@oxc-project/types@0.153.0': resolution: {integrity: sha512-jSNrRIyvPVLL5E1z/tS5zLAprosGz/FuI1PWwEOz59j3E4TTTzSpqKb/RDGqJhhW0QHYISGXxq582wGx6T11Tw==} @@ -3341,18 +3154,6 @@ packages: '@poppinss/exception@1.2.3': resolution: {integrity: sha512-dCED+QRChTVatE9ibtoaxc+WkdzOSjYTKi/+uacHWIsfodVfpsueo3+DKpgU5Px8qXjgmXkSvhXvSCz3fnP9lw==} - '@prisma/debug@7.2.0': - resolution: {integrity: sha512-YSGTiSlBAVJPzX4ONZmMotL+ozJwQjRmZweQNIq/ER0tQJKJynNkRB3kyvt37eOfsbMCXk3gnLF6J9OJ4QWftw==} - - '@prisma/dev@0.20.0': - resolution: {integrity: sha512-ovlBYwWor0OzG+yH4J3Ot+AneD818BttLA+Ii7wjbcLHUrnC4tbUPVGyNd3c/+71KETPKZfjhkTSpdS15dmXNQ==} - - '@prisma/get-platform@7.2.0': - resolution: {integrity: sha512-k1V0l0Td1732EHpAfi2eySTezyllok9dXb6UQanajkJQzPUGi3vO2z7jdkz67SypFTdmbnyGYxvEvYZdZsMAVA==} - - '@prisma/query-plan-executor@7.2.0': - resolution: {integrity: sha512-EOZmNzcV8uJ0mae3DhTsiHgoNCuu1J9mULQpGCh62zN3PxPTd+qI9tJvk5jOst8WHKQNwJWR3b39t0XvfBB0WQ==} - '@protobufjs/aspromise@1.1.2': resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} @@ -3380,8 +3181,8 @@ packages: '@protobufjs/utf8@1.1.2': resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} - '@puppeteer/browsers@3.2.3': - resolution: {integrity: sha512-2Bt3m6dDAJqmZehn0wiXSYyQmuhyiHHZ7FjvrVaS1W2RoFGV6eCK71UvKYkNJjkwC1Q9nobjhvTMhLQztFVINA==} + '@puppeteer/browsers@3.2.6': + resolution: {integrity: sha512-MJP29gVoHznmqmwhH1tlZqzfeQ3aylTpSSa6WKZXtkwYUH02i9imBmWGTyZrbnAou5paX78SE4jMAUqnEPf8ug==} engines: {node: '>=22.12.0'} hasBin: true peerDependencies: @@ -3432,194 +3233,98 @@ packages: peerDependencies: '@redis/client': ^6.2.1 - '@rolldown/binding-android-arm-eabi@1.2.12': - resolution: {integrity: sha512-dB/a1214qKfHMXCpgqR4OZT+jS4kTyEXbQGJPqzobt5EwH5rX080pxE37alt3RzvR1bf1Yz/yGqRfrYAxuPw0A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [android] - - '@rolldown/binding-android-arm-eabi@1.2.5': - resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==} + '@rolldown/binding-android-arm-eabi@1.2.13': + resolution: {integrity: sha512-Vu/NICrgdRvUOeaJZIyB2FP63s6fO/4ud5l8dXmxDx9yDyn+mN0y+gsvsVviSli+T361Aqo0h46EuMoobrwawA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.12': - resolution: {integrity: sha512-7KHFgQ5VJxIHcLlrwrc3Xbds7oTNQT7Pgi9gQCJKrd2VGab/UksIOYp6VD8MzCstGxOKMgNamPwUCfxPdP1OHg==} + '@rolldown/binding-android-arm64@1.2.13': + resolution: {integrity: sha512-6LEoIrGy5vvCd2boNnv2soPSUZj/PRvhp8R/t9KlX+mIZxThIE/ZqxrGXxmuNX0FuvQFvLdZr7S4HrYpYBVhEQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-android-arm64@1.2.5': - resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - - '@rolldown/binding-darwin-arm64@1.2.12': - resolution: {integrity: sha512-3YIhqHD96nA5SaYNRBR16HnGv4oavZvXfD/ayHM+oYZ0WD/8lBAtf6zQua4kEyAvpqrluKXl0lnOBoiNby7x9w==} + '@rolldown/binding-darwin-arm64@1.2.13': + resolution: {integrity: sha512-CaJSRzlQ6Q+zkDMVA9OkVxBjVoPRCDEE3v0FSJ9kIQBgRjFApA3Si4ijhbNVUji7ZJt+PfO0e46qy4nPInHUPA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-arm64@1.2.5': - resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - - '@rolldown/binding-darwin-x64@1.2.12': - resolution: {integrity: sha512-UuuJ35MFw4gmFOrE9pEqIV+K3syIKveph+Qc1/ljHZVdoDW4pz/JHR/eMVom+TZGl/5OOvGJOWaOCVt3ZfqhxA==} + '@rolldown/binding-darwin-x64@1.2.13': + resolution: {integrity: sha512-e4r340I5hxSzJkD3YJBxgzq/rJ3wwxwdLLb2FPt1Zpyem20nrQPT11DDEEkazwxaHumH8wpglsp/Ozgj/wT6mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.5': - resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - - '@rolldown/binding-freebsd-x64@1.2.12': - resolution: {integrity: sha512-uMvssit0a4W+/7D8CbHUvG719mH3R2jwXAlh/XcPvuHTE0g++LymF88DCGNX0HM2rBOn0xrzgXktIB6fLSJBTQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - - '@rolldown/binding-freebsd-x64@1.2.5': - resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==} + '@rolldown/binding-freebsd-x64@1.2.13': + resolution: {integrity: sha512-hoBWDZ4/K/mJKVMbsgUd1jfpA2DiOrJ54mpegObU9TBHBBrtX4FLIXJJQRDPZ/2Dn91GvPob+Z2hwKJzf4E5SQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.12': - resolution: {integrity: sha512-XcFu0R0xWnwzSf4IQgFH1rJIckPN1pLy2R+4r9IDB7Yfu/ys9cVqfa4pBrMHj7a3gl8mIR4nRNPg0e5IvEVs6g==} + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': + resolution: {integrity: sha512-oF9fZu3vTWnTiVAkDFxU9PJLt1nh20K9RRpuHsR7ZnE2L7XookBbDBVLojCVSLGbvtSlxeUNnjAj6DbNsKyzbg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': - resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - - '@rolldown/binding-linux-arm64-gnu@1.2.12': - resolution: {integrity: sha512-260UrKgn8tz39ak+SMDOirKzr7V04M9dWPw5llW00SwBivCZoWcRBKV1d8cXnRkUmSZA3BdiUmBHWk7734Ulpw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-arm64-gnu@1.2.5': - resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==} + '@rolldown/binding-linux-arm64-gnu@1.2.13': + resolution: {integrity: sha512-DTpb/+jMiqWMPgphn4ksW1zW+XLJ6dJJ9FMvnIk9I291LhCctMPhMYJrP5t9p6C9qa3KXadDdUEZHBaPh3kNxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.12': - resolution: {integrity: sha512-5YK1I9SqDkbPgc1IA8BgDl34suqUS2q0KWnBrirm0E51YjOs6eo6dV6jbQfNE/argHRSvd0QUGgtpIoYx+WWpw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rolldown/binding-linux-arm64-musl@1.2.5': - resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==} + '@rolldown/binding-linux-arm64-musl@1.2.13': + resolution: {integrity: sha512-xU+Kvv9N2A3SY35zFh1FWWNjxbadE/BKeqnkXe7vScU4GZsw757BlVmDLITZEq8DPpk6m7uoDYkK7P+x/uU5Ow==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.12': - resolution: {integrity: sha512-Rkcrmp7eFRg74yL5fXEU91JEWbdEPLevWwGtXpmhbjlD1StScbWTmO94Bhly+Mo+ketKYkdmM1vNUKeWSlx8cQ==} + '@rolldown/binding-linux-ppc64-gnu@1.2.13': + resolution: {integrity: sha512-XMk/hnhh25oQ756Lclb1Q11h4ll0xC0Esa5w4Vzp+mAE2S3AGJgeM0SonrIgY8fHhjarb6hcoTuwoFG0VVP2ig==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.2.5': - resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-s390x-gnu@1.2.12': - resolution: {integrity: sha512-qvK4DuAsQc2BSjlx+Xr+IzOIvvxbGZqxFwdWfG6F518Erj0GGISyQbJ6pIappnOxlNPzNHvo/L0BwB30GZ+zVw==} + '@rolldown/binding-linux-s390x-gnu@1.2.13': + resolution: {integrity: sha512-U1BoTHYmlywE2n3HUWjzZ+8EQsKr+OwpxYuDWaubx42tUL8QSL7nOqRz/NVHanibbFP3M1Rxuprz/wNcbMKjqw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.5': - resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-gnu@1.2.12': - resolution: {integrity: sha512-Q9uLBO53Xd4QIq1WOycVQyPP1O4HhraEV2qqb3uTrnVw6QZih9duY4vNXOivL1xoUS1/z+W8eF4NMfl2a8Sdjw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rolldown/binding-linux-x64-gnu@1.2.5': - resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==} + '@rolldown/binding-linux-x64-gnu@1.2.13': + resolution: {integrity: sha512-J4cm80Pc6wEwV5AZ42o62sIQgDk+Y7R2s646jIwuvO+4V46QB58N4vVuMPWCBaNgursXLpmUWJV//WQAkPvHBQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.12': - resolution: {integrity: sha512-3IBxWFMjbOZskDPKv8Lf9BCnahlKuHthWkYnyIxOH/QcJrFcS4EmcenthApkwr/5+nEqZlLzeYbxeMaX7A5u4g==} + '@rolldown/binding-linux-x64-musl@1.2.13': + resolution: {integrity: sha512-W0euZS40U4V6JkmEnVCIX9mcsL6cbXQ4X8c2w+MMOIjFg68TXUW+u3RT+2e1t1pv9mg/EP3pDtK3POXdQ7Rxyw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@rolldown/binding-linux-x64-musl@1.2.5': - resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rolldown/binding-openharmony-arm64@1.2.12': - resolution: {integrity: sha512-xtX61xg4LKPkPWilZU1ynKClz5Gj4bf74LML4r3eVLWumKnGjoEr1OSHQhMdbBDoYTi+yjrujvpZe2pUnqCrrA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - - '@rolldown/binding-openharmony-arm64@1.2.5': - resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==} + '@rolldown/binding-openharmony-arm64@1.2.13': + resolution: {integrity: sha512-do/AF/4n9MRshia3a5aXoy8xM2c6mgfT6D7H/dY6my5z+hfCIR4ab7mk4IRj++nsEQpKy39kd0DQnDq+r692tw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.12': - resolution: {integrity: sha512-At7fPB6PCaIjzgIhEZFxuT+BBFqiQibJDT4d3PhiR3f4E7bbMZF4aKblbFfEM3sETRDd1YiQx/+U/g/B/ou5Ew==} + '@rolldown/binding-win32-arm64-msvc@1.2.13': + resolution: {integrity: sha512-6FtUf2cJZobutJdxnGYX8z0vtbgqU0b2v8vfBhkXb9wp2MppMFtkunE+IaOntyi01rkIQoPW2GHABtfzsC0BRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.2.5': - resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.2.12': - resolution: {integrity: sha512-WIw2haVKwjuYdXkHaoC0mF8Le71TuCBxjrdKqLbJGctbBABj+ClfmNvtbOnzpq3RokNo5+V1qhtSzJyXorsklQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - - '@rolldown/binding-win32-x64-msvc@1.2.5': - resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==} + '@rolldown/binding-win32-x64-msvc@1.2.13': + resolution: {integrity: sha512-UKhFaZTeTcbKrb3iU82m17jVcPEAoqDkCN5MBqgPyZSwp/cQmib21crTS0DdH7T1B7wZRWEI89YQAOJMet5yhg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -3631,7 +3336,7 @@ packages: '@babel/core': ^7.29.0 || ^8.0.0-rc.1 '@babel/plugin-transform-runtime': ^7.29.0 || ^8.0.0-rc.1 '@babel/runtime': ^7.27.0 || ^8.0.0-rc.1 - rolldown: ^1.0.0-rc.5 + rolldown: 1.2.13 vite: ^8.0.0 peerDependenciesMeta: '@babel/plugin-transform-runtime': @@ -3706,10 +3411,6 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@smithy/types@4.19.0': - resolution: {integrity: sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q==} - engines: {node: '>=18.0.0'} - '@speed-highlight/core@1.2.24': resolution: {integrity: sha512-qeW2e1l78afw8VhRPfPQ1Gjj+KU5XFQ/OFV5ti6eTa9bruO7mJyZtA4vw0ofqmA3tKCkROE9xLk3VZoeRc98nw==} @@ -3798,7 +3499,7 @@ packages: resolution: {integrity: sha512-f1vjP48xEgH7Jvt7BDs4RPnnp9NOQJbUoVrcH/XTShxubAVs676rHYQ0/b0E/x6vfHqAyRwwR8DTxOlrlRwmAg==, tarball: file:.sfs-deps/conformance-spec-1.0.0.tgz} version: 1.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 '@systemfsoftware/differential-spec@file:.sfs-deps/differential-spec-1.0.1.tgz': resolution: {integrity: sha512-oyUqpJYt6WKrmnZznwNr1PaPgkYnUW0PXaMi4gAAGcBsuy1D9IRYdGhCjjRnrjkUO+UHizQ6fsVlfvLhoDmOGQ==, tarball: file:.sfs-deps/differential-spec-1.0.1.tgz} @@ -3808,14 +3509,14 @@ packages: resolution: {integrity: sha512-MewiGEO5DMlC0zGOcGJo05ATNKvakCHHtmoRHGXiB4wfAIvSBYx12B+wyxtWN+y3KEkqOcSlFG+exPMo1+Iq8w==, tarball: file:.sfs-deps/effect-cell-types-12.0.0.tgz} version: 12.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 '@systemfsoftware/effect-gherkin-spec@file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz': resolution: {integrity: sha512-ATePKdi79QYKz1O0IIGdFJ2gqw4X3MR4wrZrIc6CRSzP0ZqV8kZq/ThQ8K3Sz5q7L8CqG9uCC0K2yAYydRmpSA==, tarball: file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz} version: 7.0.1 peerDependencies: '@systemfsoftware/vitest': ^2.0.0 - effect: 4.0.5 + effect: 4.1.0 vitest: ^5.0.5 '@systemfsoftware/effect-schema-discovery@file:.sfs-deps/effect-schema-discovery-2.0.0.tgz': @@ -3827,21 +3528,21 @@ packages: version: 5.0.1 peerDependencies: '@systemfsoftware/vitest': ^2.0.0 - effect: 4.0.5 + effect: 4.1.0 vitest: ^5.0.5 '@systemfsoftware/effect-schema-recursion-budget@file:.sfs-deps/effect-schema-recursion-budget-2.0.0.tgz': resolution: {integrity: sha512-LzK3wNBDEjdgL3Clc7upvDvSZMK28pdYGWXfLfF6f4b3WzDljt7nt1422C4Sx1X0qL9lSDGtFpI5BZ+ku+S36g==, tarball: file:.sfs-deps/effect-schema-recursion-budget-2.0.0.tgz} version: 2.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 '@systemfsoftware/effect-schema-vite@file:.sfs-deps/effect-schema-vite-3.0.1.tgz': resolution: {integrity: sha512-spx7L+vtvFAKQYy3ko76Lr/8u1OkOWinc6oNe+84rxctPe2nhzPJ6WjB0mojkYtF2cfXIxYDAqBoax/8mGrLjw==, tarball: file:.sfs-deps/effect-schema-vite-3.0.1.tgz} version: 3.0.1 peerDependencies: '@systemfsoftware/effect-schema-law': 5.0.1 - effect: 4.0.5 + effect: 4.1.0 vite: '>5.0.0' vitest: ^5.0.5 @@ -3849,21 +3550,21 @@ packages: resolution: {integrity: sha512-4YBesLhEcrYOVvM88COGnP211BqkRqv/R9D5s+ZnHZP7jVVxqiqqNGyTp4Pcg9Yx1hTg50A0oK38jKKmP+bR+w==, tarball: file:.sfs-deps/effect-sim-kernel-1.0.0.tgz} version: 1.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 '@systemfsoftware/effect-spec-runtime@file:.sfs-deps/effect-spec-runtime-1.0.1.tgz': resolution: {integrity: sha512-8RhZPPNmMaObZMaburvmzLYrWQASfu7/xZrf8vUs8bDEtGdAQulhyFpZo40XYdILajvN/oMzkt1fyZsqIWIwdg==, tarball: file:.sfs-deps/effect-spec-runtime-1.0.1.tgz} version: 1.0.1 peerDependencies: '@systemfsoftware/vitest': ^2.0.0 - effect: 4.0.5 + effect: 4.1.0 vitest: ^5.0.5 '@systemfsoftware/oxlint-config-cell-architecture@file:.sfs-deps/oxlint-config-cell-architecture-4.0.0.tgz': resolution: {integrity: sha512-CUhWMNrMxcdk7d0H76UzPYrd82Wtu/UYfoGpO6cFvGbhdGvZTYfHZMXDMmDIe7fuNjU0S9Vs6lpUaTfAmXxn0Q==, tarball: file:.sfs-deps/oxlint-config-cell-architecture-4.0.0.tgz} version: 4.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 oxlint: ~1.87.0 typescript: '>=5.0.0' @@ -3871,7 +3572,7 @@ packages: resolution: {integrity: sha512-w2EGm3P+aWFh6Wt9KVUWe5sxW8XMaaiWBUKf0euEtNz03AIjKJowgSBiG9H71WNOwgz2OjeN6ebjj9cyie+bbQ==, tarball: file:.sfs-deps/oxlint-config-dmmf-2.0.0.tgz} version: 2.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 oxlint: ~1.87.0 oxlint-tsgolint: 7.0.2003 typescript: '>=5.0.0' @@ -3880,7 +3581,7 @@ packages: resolution: {integrity: sha512-MRpNEezWWUA8O4tKMvf/ETYDK5D/Gx2Mf6FLxUgXkiWfDhJ20Q9bMMzXBrNp6sYmpmno05JLqz3LpMrYBf24ow==, tarball: file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz} version: 4.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 oxlint: ~1.87.0 oxlint-tsgolint: 7.0.2003 typescript: '>=5.0.0' @@ -3896,28 +3597,28 @@ packages: resolution: {integrity: sha512-Rqq9ntfhIMAwXzGTHb7b9b9aOjPK2ClehaTThNUz49/VyAmUznlKFkSLXvcuYO74ekfbdEQ6Pv96VsIQ3P6Tbw==, tarball: file:.sfs-deps/oxlint-plugin-cell-architecture-5.0.0.tgz} version: 5.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 typescript: '>=5.0.0' '@systemfsoftware/oxlint-plugin-dmmf-workflow@file:.sfs-deps/oxlint-plugin-dmmf-workflow-7.0.0.tgz': resolution: {integrity: sha512-5a/w2r5oXEBRdZq6du2ITb+gyTyAJLYFGtaODj8ukJWiGaikSvb03U1g573g3QfRlOzn4ZwgzcqMI0MkcrmtIw==, tarball: file:.sfs-deps/oxlint-plugin-dmmf-workflow-7.0.0.tgz} version: 7.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 typescript: '>=5.0.0' '@systemfsoftware/oxlint-plugin-effect-platform@file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz': resolution: {integrity: sha512-27EThTmZMsatbpjYZegrU7atSMnyuXELfyZTqCefTTJ7ObOw23n2WhP+8xRkNIhM1gR+XPVed31C9Nz0VGrylA==, tarball: file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz} version: 2.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 typescript: '>=5.0.0' '@systemfsoftware/oxlint-plugin-effect-schema@file:.sfs-deps/oxlint-plugin-effect-schema-6.0.0.tgz': resolution: {integrity: sha512-20abuSP5rvBCH1SF4tIJNvzEH242k6S7hhlVhn7LgRt7StKJ6lDfJlGfG74dt1lX1JudkiPrJ45TGxO1rk5Weg==, tarball: file:.sfs-deps/oxlint-plugin-effect-schema-6.0.0.tgz} version: 6.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 typescript: '>=5.0.0' '@systemfsoftware/oxlint-plugin-test-discipline@file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz': @@ -3925,7 +3626,7 @@ packages: version: 5.0.0 hasBin: true peerDependencies: - effect: 4.0.5 + effect: 4.1.0 typescript: '>=5.0.0' '@systemfsoftware/stryker-config@file:.sfs-deps/stryker-config-0.1.0.tgz': @@ -3994,7 +3695,7 @@ packages: engines: {node: '>=24.13.1'} hasBin: true peerDependencies: - effect: 4.0.5 + effect: 4.1.0 '@systemfsoftware/tsconfig@file:.sfs-deps/tsconfig-2.0.1.tgz': resolution: {integrity: sha512-DOBlgfypDiU1IdMAkWTio/xV42eoZj5v+4vTMpRzQu0GvLqK1RdeEtsTE7PrtF3YqbPYyaoTlx8GdgOiMeoXsg==, tarball: file:.sfs-deps/tsconfig-2.0.1.tgz} @@ -4024,7 +3725,7 @@ packages: resolution: {integrity: sha512-Qop/XEvBCmTdJJCRU/CVQ8lrOM04DWJbvU/spyIxL7S63RRdf66FuFI1OKaxSJmGJTq7F+Cj2frV1Jw3gL4SDg==, tarball: file:.sfs-deps/vitest-2.0.0.tgz} version: 2.0.0 peerDependencies: - effect: 4.0.5 + effect: 4.1.0 vitest: ^5.0.5 '@systemfsoftware/xstate@file:.sfs-deps/xstate-6.0.0-alpha.64.tgz': @@ -4237,9 +3938,6 @@ packages: '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} - '@types/aws-lambda@8.10.164': - resolution: {integrity: sha512-XOnrazWcOd6yWPnR7DxqCBPPYciDjHq+NN8LPwwqBCJNXLyPJgKo47fZpJ113+oyAn9Zti0Cf6H4k6yPcE3WFg==} - '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -4287,9 +3985,6 @@ packages: '@types/scheduler@0.28.0': resolution: {integrity: sha512-WuK7EQ0YBvNbYwanHo+x3kixrg10+7Ak4rmYmy1dYo3l4FCh0XWeoq/SdqQamKA5wShXse8WRhh0Tt1czTAuTQ==} - '@types/ws@8.18.1': - resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@types/ws@8.18.2': resolution: {integrity: sha512-67MQl+fpWKVTT1NYdnmo3U4sc/xPo/zQBncVnI74qmQa0z/b+1g6iYqNmGCPbxO+zz2aklb08a0oHfegiVd0/w==} @@ -4682,59 +4377,24 @@ packages: ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} - alchemy@2.0.0-beta.80: - resolution: {integrity: sha512-2y7mswypPiApxuEdp8NGMfzCGB5+9W6OmQAuePyZ2xBkgoCpEqtKAnASuvKGUZPSYNESENbamXDuI5428ewu9w==} + alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz: + resolution: {integrity: sha512-VxAkmhS+aDFb7NPkkv3YZ/oki43s10WvQkPN0vKnogvG0VaqFQIZDdtknJZi9T2HdAJkIfXAn8itHarusu9QuQ==, tarball: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz} + version: 2.0.0-beta.84 hasBin: true peerDependencies: - '@alchemy.run/frontend-frameworks': 2.0.0-beta.80 - '@aws/durable-execution-sdk-js': ^2.1.0 - '@effect/platform-bun': ^4.0.0 - '@effect/platform-node': 4.0.5 - '@effect/sql-mysql2': ^4.0.0 - '@effect/sql-pg': ^4.0.0 - '@effect/vitest': ^4.0.0 - '@prisma/orm-postgres': 8.0.0-rc.11 - '@vercel/nft': ^1.10.2 - drizzle-kit: 1.0.0-rc.5-ab785fc - drizzle-orm: 1.0.0-rc.5-ab785fc - effect: 4.0.5 - mongodb: ^6.10.0 - mysql2: ^3.24.2 - pg: ^8.22.0 - prisma: 8.0.0-rc.15 - vite: ^8.0.7 + '@alchemy.run/frontend-frameworks': https://pkg.alchemy.run/@alchemy.run/frontend-frameworks/-/b413a964ee6b0ab093418b91229f3b79d3c15a01add2b9ebf222342a2d091a91.tgz + '@effect/platform-bun': ^4.1.0 + '@effect/platform-node': 4.1.0 + effect: 4.1.0 + vite: ^7.0.0 || ^8.0.0 ws: ^8.21.0 peerDependenciesMeta: '@alchemy.run/frontend-frameworks': optional: true - '@aws/durable-execution-sdk-js': - optional: true '@effect/platform-bun': optional: true '@effect/platform-node': optional: true - '@effect/sql-mysql2': - optional: true - '@effect/sql-pg': - optional: true - '@effect/vitest': - optional: true - '@prisma/orm-postgres': - optional: true - '@vercel/nft': - optional: true - drizzle-kit: - optional: true - drizzle-orm: - optional: true - mongodb: - optional: true - mysql2: - optional: true - pg: - optional: true - prisma: - optional: true vite: optional: true ws: @@ -4804,9 +4464,6 @@ packages: engines: {node: '>=6.0.0'} hasBin: true - before-after-hook@4.0.0: - resolution: {integrity: sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==} - bidi-js@1.1.0: resolution: {integrity: sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==} @@ -4872,9 +4529,6 @@ packages: resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} engines: {node: '>= 16'} - chevrotain@10.5.0: - resolution: {integrity: sha512-Pkv5rBY3+CsHOYfV5g/Vs5JY9WTHHDEKOlohI2XeygaZhUeqhAlldZ8Hz9cRmxu709bvS08YzxHdTPHhffc13A==} - chokidar@5.0.0: resolution: {integrity: sha512-TQMmc3w+5AxjpL8iIiwebF73dRDF4fBIieAqGn9RGCWaEVwQ6Fb2cGe31Yns0RRIzii5goJ1Y7xbMwo1TxMplw==} engines: {node: '>= 20.19.0'} @@ -4901,10 +4555,6 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - content-type@3.1.1: - resolution: {integrity: sha512-GW4qUsfFo59d0HbUibDlWv5wPz+vAAcaTWbKIuKCf0JkC7wWkSyf8f13IpXn5JkeMlB2P8iTSSIjwXljorg2vA==} - engines: {node: '>=22'} - conventional-changelog-angular@9.4.0: resolution: {integrity: sha512-HdxRxuS8bBXVIuo4V82gvSwAXT0vYQUizrjs/izmPg5JdDstr8v8I5hduGL3iQbG+o310dUDxC4+LetuS5hu9w==} engines: {node: '>=22'} @@ -5002,10 +4652,6 @@ packages: resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} engines: {node: '>=12.20'} - detect-libc@2.0.2: - resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==} - engines: {node: '>=8'} - detect-libc@2.1.2: resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} engines: {node: '>=8'} @@ -5033,8 +4679,8 @@ packages: oxc-resolver: optional: true - effect@4.0.5: - resolution: {integrity: sha512-BY4/28NlpOd99yzmV741xbVGmp+1U7tks4oB7F/Png64bTa5tm5eCA6W0RiXsnuLDDoJpjfVSo4Dnq4BZb/89Q==} + effect@4.1.0: + resolution: {integrity: sha512-lGx2MJJyrXA8RZb2UpQ/0Nkb5Utaimby7oD92+18noBxLPE85IFOvptdzau8dvcxAOwfwHo9iqapbKeFzqQM/Q==} electron-to-chromium@1.5.444: resolution: {integrity: sha512-5ss/uJfoDYDHT0lfJzT6FbcskIzROIOPf0BbbFkGcvDzoJU7i//9GDrwwIHQVmIsrAGiF3ihpADBRIsrEFt1rQ==} @@ -5158,10 +4804,6 @@ packages: resolution: {integrity: sha512-kWyh8ADvHBFz6ua5xYOPnUroZTT/bwWfrCeL0Wj1dzG4/YOmOcfJ99W8dOVyyynJN35rZ9aCOtHChqQovV7yog==} engines: {node: '>=6'} - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - fs-extra@11.3.6: resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} engines: {node: '>=14.14'} @@ -5186,9 +4828,6 @@ packages: resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} engines: {node: '>=18'} - get-port-please@3.2.0: - resolution: {integrity: sha512-I9QVvBw5U/hw3RmWpYKRumUeaDgxTPd401x364rLmWBJcOQ753eov1eTgzDqRG9bqFIfDc7gfzcQEWrUri3o1A==} - get-stream@9.0.1: resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} engines: {node: '>=18'} @@ -5208,16 +4847,6 @@ packages: graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - grammex@3.1.13: - resolution: {integrity: sha512-LnPnhOBLEJEVKS8WFDVaA397L9Kq55Q9oSITJiVLHVdhAclfUkWzQv74KhvZHKL2Q09Pb1XdsrOsZ4LfTFFTEg==} - - graphmatch@1.1.1: - resolution: {integrity: sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==} - - graphql@16.11.0: - resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==} - engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} - h3@2.0.1-rc.20: resolution: {integrity: sha512-28ljodXuUp0fZovdiSRq4G9OgrxCztrJe5VdYzXAB7ueRvI7pIUqLU14Xi3XqdYJ/khXjfpUOOD2EQa6CmBgsg==} engines: {node: '>=20.11.1'} @@ -5236,10 +4865,6 @@ packages: resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} - hono@4.11.4: - resolution: {integrity: sha512-U7tt8JsyrxSRKspfhtLET79pU8K+tInj5QZXs1jSugO1Vq5dFj3kmZsRldo29mTBfcjDRVRXrEZ6LS63Cog9ZA==} - engines: {node: '>=16.9.0'} - hookable@6.1.2: resolution: {integrity: sha512-+abwxtiEA52GCVIsQqut3S/uKTbUwYIp4Pe/vv+6py5XiXBCqMZHg6pA6Y5qhgLSEys0/cYuPbO0z1QFj5ZCmg==} @@ -5247,9 +4872,6 @@ packages: resolution: {integrity: sha512-UikN5yr7xsCDAq87Or5or0PAlD3HJJOKVzM05az588WnpDJ4Ux7a2A53Qi6gofGg2/EtvF/H4hCi/TXfCW4Y6w==} engines: {node: ^22.13.0 || >=24.0.0} - http-status-codes@2.3.0: - resolution: {integrity: sha512-RJ8XvFvpPM/Dmc5SV+dC4y5PCeOhT3x1Hq0NU3rjGeg5a/CqlhZ7uudknPwZFz4aeAXDcbAyaeP7GAo9lvngtA==} - human-signals@8.0.1: resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} engines: {node: '>=18.18.0'} @@ -5354,9 +4976,6 @@ packages: jju@1.4.0: resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - js-base64@3.9.4: - resolution: {integrity: sha512-PtOMXpEGuP0RRiRXsjzHzl44dMHxSu2CPvAhinupR1tBa88me+1DPqsobl7eupn5UukjLkln1ZnAOAOXOrYG0Q==} - js-tokens@10.0.0: resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} @@ -5387,9 +5006,6 @@ packages: json-schema-traverse@1.0.0: resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} - json-with-bigint@3.5.12: - resolution: {integrity: sha512-uwbF/wSSuOgC7qqlq27Xp5B6a2MHVug3t0idZdTqu0JnlFvgJuH7ju+KAk/J06C7GfhoYy2gnb9wz2INqcne7w==} - json5@2.2.3: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} @@ -5411,11 +5027,6 @@ packages: libsodium@0.8.4: resolution: {integrity: sha512-lMcYaRi0zcs7tarATsQUYC7rstliIXZuoq0c6zXSgNtSNtdvBgkSegjWhpMJAXzKX3SUSwIp7+zEsob+j3LuRw==} - libsql@0.5.29: - resolution: {integrity: sha512-8lMP8iMgiBzzoNbAPQ59qdVcj6UaE/Vnm+fiwX4doX4Narook0a4GPKWBEv+CR8a1OwbfkgL18uBfBjWdF0Fzg==} - cpu: [x64, arm64, wasm32, arm] - os: [darwin, linux, win32] - lightningcss-android-arm64@1.33.0: resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} engines: {node: '>= 12.0.0'} @@ -5490,10 +5101,6 @@ packages: resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} engines: {node: '>= 12.0.0'} - lilconfig@2.1.0: - resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} - engines: {node: '>=10'} - lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} @@ -5509,9 +5116,6 @@ packages: lodash.camelcase@4.3.0: resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} - lodash@4.17.21: - resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} - long@5.3.2: resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} @@ -5552,8 +5156,8 @@ packages: resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} engines: {node: '>=8.6'} - mime@4.1.0: - resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==} + mime@4.1.2: + resolution: {integrity: sha512-ikRzZ2RwbUVDyL9SsU0f2Phcmav4yq5r8faH5ZZKHtOZrMBLnrQOrj0uvqZ5R1uQnj+RO7Wcklw/lAf81mP9LQ==} engines: {node: '>=16'} hasBin: true @@ -5584,8 +5188,8 @@ packages: resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} engines: {node: '>=16 || 14 >=14.17'} - modern-tar@0.8.5: - resolution: {integrity: sha512-snEhs+6G5Tjd4I7tLCDOaoln2RgE0bD19RzEKgvgK2hZ5VKy3MpLhLTZ2fWpXSTg4K2cyPwp+VHATFJhxfnOeA==} + modern-tar@0.8.6: + resolution: {integrity: sha512-LYSks0tNVqbtez/9OB0YFP6qLRSqkdAxJWOQpVaR67lNTbj2zNLyYpowkRMia5lXLCZKzxwoxkxH2MbbBR2aEg==} engines: {node: '>=18.0.0'} module-details-from-path@1.0.4: @@ -5643,7 +5247,7 @@ packages: peerDependencies: '@oxc-project/types': '>=0.98.0' oxc-parser: '>=0.98.0' - rolldown: '>=1.0.0' + rolldown: 1.2.13 peerDependenciesMeta: '@oxc-project/types': optional: true @@ -5789,12 +5393,6 @@ packages: resolution: {integrity: sha512-HzMy3Geq23nVALD/M2LliU+F+M+gVNsvkQWWqeBZ8HDiCgzo6YPJ/Omrmtq24EFrIsk0a3EkQGEd7bDOo+IhGA==} engines: {node: '>=18'} - promise-limit@2.7.0: - resolution: {integrity: sha512-7nJ6v5lnJsXwGprnGXga4wx6d1POjvi5Qmf1ivTRxTjH4Z/9Czja/UCMLVmB9N93GeWOU93XaFaEt6jbuoagNw==} - - proper-lockfile@4.1.2: - resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} - protobufjs@7.6.6: resolution: {integrity: sha512-dYDWdjSl5RNb7SgPxGQcRU+GtvP7s2fpkrY0r432PcOIaZ0/rBcxEZnQN67iJhFuQiVw754JDoPruPCNdGsbjg==} engines: {node: '>=12.0.0'} @@ -5859,12 +5457,6 @@ packages: resolution: {integrity: sha512-Z9VHtgYs48PiQC77X9O2Er8Hj4T+5BtFjT91/vi5Is1D04N72cA946ZslM1ImJw8ZctFBZWAVjM7S5wJNeHMpg==} engines: {node: '>= 20.0.0'} - regexp-to-ast@0.5.0: - resolution: {integrity: sha512-tlbJqcMHnPKI9zSrystikWKwHkBqu2a/Sgw01h3zFjvYrMxEDYHzzoMZnUrbIfpTFEsoRnnviOXNCzFiSc54Qw==} - - remeda@2.33.4: - resolution: {integrity: sha512-ygHswjlc/opg2VrtiYvUOPLjxjtdKvjGz1/plDhkG66hjNjFr1xmfrs2ClNFo/E6TyUFiwYNh53bKV26oBoMGQ==} - require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} @@ -5893,10 +5485,6 @@ packages: engines: {node: '>= 0.4'} hasBin: true - retry@0.12.0: - resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} - engines: {node: '>= 4'} - rimraf@6.1.3: resolution: {integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==} engines: {node: 20 || >=22} @@ -5909,7 +5497,7 @@ packages: '@typescript/native-preview': '*' '@volar/typescript': ~2.4.0 '@vue/language-core': ~3.2.0 || ~3.3.0 - rolldown: ^1.2.0 + rolldown: 1.2.13 typescript: ^5.0.0 || ^6.0.0 || ~7.0.0 vue-tsc: ~3.2.0 || ~3.3.0 peerDependenciesMeta: @@ -5924,13 +5512,8 @@ packages: vue-tsc: optional: true - rolldown@1.2.12: - resolution: {integrity: sha512-8wafseiaG80xmXSfqidUNqZcylTlhmPZZt+za2m+js2sFZ8dTNlhIOV2WcbIPx2hgwPBJpEUGFAMZ9bgBBLTSQ==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - - rolldown@1.2.5: - resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} + rolldown@1.2.13: + resolution: {integrity: sha512-/5apOkwWxtACcQtZ5WlrAsKS4JwXVThQPJZ3RqIruRY9UG9M8e0VlXN068xum/JRKA4aIUoJ13ghe/kGCvidiQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true @@ -6005,9 +5588,6 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} - signal-exit@3.0.7: - resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} - signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -6044,14 +5624,6 @@ packages: engines: {node: '>=20.16.0'} hasBin: true - srvx@1.0.5: - resolution: {integrity: sha512-KvSKRpgPG/oaq3cyT614OQ2bAa7DynuGamivCZeoZzIUULOdbQz6wUtnnVuC4+DCx2Zglzo8v5gBYmWIWYhDxA==} - engines: {node: '>=20.16.0'} - hasBin: true - - std-env@3.10.0: - resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} - std-env@4.3.0: resolution: {integrity: sha512-OtU/EgQ1kIm5KwqQpBC6ZEMXrZRui11w8zgfTWp8cdO9B8OaPsbA8bTHO2P+HNo1VlUTGMVBwPhydu6poeXiag==} @@ -6297,9 +5869,6 @@ packages: resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} engines: {node: '>=18'} - universal-user-agent@7.0.3: - resolution: {integrity: sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==} - universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} @@ -6313,7 +5882,7 @@ packages: '@rspack/core': '*' bun-types-no-globals: '*' esbuild: ^0.28.2 - rolldown: '*' + rolldown: 1.2.13 rollup: '*' unloader: '*' vite: '*' @@ -6351,14 +5920,6 @@ packages: peerDependencies: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - valibot@1.2.0: - resolution: {integrity: sha512-mm1rxUsmOxzrwnX5arGS+U4T25RdvpPjPN4yR0u9pUBov9+zGVtO84tif1eY4r6zWxVxu3KzIyknJy3rxfRZZg==} - peerDependencies: - typescript: '>=5' - peerDependenciesMeta: - typescript: - optional: true - verkit@0.3.2: resolution: {integrity: sha512-zj/ob3UsvJGN0whEAKFp53REA5X66hvffVqoCtVQAakJKnKlH+/PcOfMoFwIG/o4rElqLv/ycAFlx8ZlXUorCg==} engines: {node: '>=18.12.0'} @@ -6609,9 +6170,6 @@ packages: yuku-parser@0.10.2: resolution: {integrity: sha512-CgaU0/PPjCAIEZ3WQroosOxTY3eeKldAN3h+vk8pMNz4+jl1CZzBR4pW+K/rRPF112VooCL5FdjJoiMNjDrL2A==} - zeptomatch@2.1.0: - resolution: {integrity: sha512-KiGErG2J0G82LSpniV0CtIzjlJ10E04j02VOudJsPyPwNZgGnRKQy7I1R7GMyg/QswnE4l7ohSGrQbQbjXPPDA==} - zod@4.6.5: resolution: {integrity: sha512-v5l/aFXZQeai4awLbOpSoHecE9UiMrnfx75tEXLjNonXVARxQ5mOeipTjROUchszUNCqnE+hqAMujRsRHsut2Q==} @@ -6619,65 +6177,93 @@ snapshots: '@adobe/css-tools@4.5.0': {} - '@alchemy.run/cloudflare-runtime@2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.5))(@effect/platform-node@4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(effect@4.0.5)(rolldown@1.2.5)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@alchemy.run/acme@https://pkg.alchemy.run/@alchemy.run/acme/-/94b874c8e2e62bbcc2aa01d951bae517132da09ffd298a2bc438c5ce3ee9eb20.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0)': dependencies: - '@alchemy.run/node-utils': 2.0.0-beta.80 + '@distilled.cloud/acme': https://pkg.alchemy.run/@distilled.cloud/acme/-/31b5ed0bd279dafa32adf9452c20cecbc16449a278dc709f73f70f3a821a497c.tgz(effect@4.1.0) + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) + effect: 4.1.0 + + '@alchemy.run/cloudflare-runtime@https://pkg.alchemy.run/@alchemy.run/cloudflare-runtime/-/82efb388b666ffa77775a0841c3cf30abc1d26df96f4ea4c8c97e3bffc06cf1d.tgz(@distilled.cloud/cloudflare@https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz(effect@4.1.0))(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(effect@4.1.0)(rolldown@1.2.13)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + dependencies: + '@alchemy.run/node-utils': https://pkg.alchemy.run/@alchemy.run/node-utils/-/f7ed79ab54e4abbdb7445242a8127338f02468a98f12a5ce681b50f7e1b0ca50.tgz '@cloudflare/unenv-preset': 2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261005.1) - '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.5) - '@puppeteer/browsers': 3.2.3(yauzl@3.4.0) + '@distilled.cloud/cloudflare': https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz(effect@4.1.0) + '@puppeteer/browsers': 3.2.6(yauzl@3.4.0) capnp-es: 0.0.16(typescript@7.0.2) - effect: 4.0.5 + effect: 4.1.0 magic-string: 0.30.21 - mime: 4.1.0 + mime: 4.1.2 sharp: 0.35.5(@types/node@24.19.1) unenv: 2.0.0-rc.24 workerd: 1.20261005.1 yauzl: 3.4.0 optionalDependencies: - '@effect/platform-node': 4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)) - rolldown: 1.2.5 + '@effect/platform-node': 4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)) + rolldown: 1.2.13 vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) transitivePeerDependencies: - '@types/node' - proxy-agent - typescript - '@alchemy.run/floci@2.0.0-beta.80(effect@4.0.5)': - dependencies: - effect: 4.0.5 - - '@alchemy.run/frontend-frameworks@2.0.0-beta.80(@types/node@24.19.1)(@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(effect@4.0.5)(hono@4.11.4)(redis@6.2.1(@opentelemetry/api@1.9.1))(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': - dependencies: - '@alchemy.run/cloudflare-runtime': 2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.5))(@effect/platform-node@4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(effect@4.0.5)(rolldown@1.2.5)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@distilled.cloud/aws': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.5) - '@effect/platform-node': 4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)) - effect: 4.0.5 - esbuild: 0.28.2 - rolldown: 1.2.5 - srvx: 1.0.5 + '@alchemy.run/cloudflare@https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + dependencies: + '@alchemy.run/acme': https://pkg.alchemy.run/@alchemy.run/acme/-/94b874c8e2e62bbcc2aa01d951bae517132da09ffd298a2bc438c5ce3ee9eb20.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0) + '@alchemy.run/cloudflare-runtime': https://pkg.alchemy.run/@alchemy.run/cloudflare-runtime/-/82efb388b666ffa77775a0841c3cf30abc1d26df96f4ea4c8c97e3bffc06cf1d.tgz(@distilled.cloud/cloudflare@https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz(effect@4.1.0))(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(effect@4.1.0)(rolldown@1.2.13)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@alchemy.run/docker': https://pkg.alchemy.run/@alchemy.run/docker/-/1125f2ebf64b81a81b118848fca1f6902201548f25ff01ef06e92228d7b8aa9d.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0) + '@alchemy.run/sql': https://pkg.alchemy.run/@alchemy.run/sql/-/9d4e1e5294ba3ab78de2e78607cbc5309326f84745b23dbe5f6403984e6e780c.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0) + '@distilled.cloud/aws': https://pkg.alchemy.run/@distilled.cloud/aws/-/854428e08c3015bbb423377a045c676b38749d042da8de12cb65cdd25e965951.tgz(effect@4.1.0) + '@distilled.cloud/aws4signer': https://pkg.alchemy.run/@distilled.cloud/aws4signer/-/d5d12f0fa0f9b5f9693b1d49d7634fd4e88a5b90cc972e8859eaf45e2385c3b1.tgz(effect@4.1.0) + '@distilled.cloud/cloudflare': https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz(effect@4.1.0) + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + '@distilled.cloud/iceberg': https://pkg.alchemy.run/@distilled.cloud/iceberg/-/01378c8b70513ccbc2e49ba1f00984a2851bf7a9160e1ee31c61511c16ab4bb7.tgz(effect@4.1.0) + '@effect/sql-d1': 4.1.0(effect@4.1.0) + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) + effect: 4.1.0 + pathe: 2.0.3 + rolldown: 1.2.13 tinyglobby: 0.2.17 optionalDependencies: - '@vitejs/plugin-react': 6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - hono: 4.11.4 + '@effect/platform-node': 4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)) vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) transitivePeerDependencies: + - '@effect/sql-libsql' + - '@effect/sql-mysql2' + - '@effect/sql-pg' - '@types/node' - - bufferutil + - mysql2 + - pg - proxy-agent - - redis - typescript - - utf-8-validate - '@alchemy.run/node-utils@2.0.0-beta.80': + '@alchemy.run/docker@https://pkg.alchemy.run/@alchemy.run/docker/-/1125f2ebf64b81a81b118848fca1f6902201548f25ff01ef06e92228d7b8aa9d.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0)': + dependencies: + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) + effect: 4.1.0 + rolldown: 1.2.13 + + '@alchemy.run/github@https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0)': + dependencies: + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + '@distilled.cloud/github': https://pkg.alchemy.run/@distilled.cloud/github/-/b656793cc3031e7e63f3255902a1e751d28d9bf8c13ab70cfca6b00a5a831cb4.tgz(effect@4.1.0) + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) + effect: 4.1.0 + libsodium-wrappers: 0.8.4 + + '@alchemy.run/node-utils@https://pkg.alchemy.run/@alchemy.run/node-utils/-/f7ed79ab54e4abbdb7445242a8127338f02468a98f12a5ce681b50f7e1b0ca50.tgz': dependencies: chokidar: 5.0.0 - rolldown: 1.2.5 + rolldown: 1.2.13 '@alchemy.run/sigil@0.1.0-alpha.1(@types/react@19.3.0)': optionalDependencies: '@types/react': 19.3.0 + '@alchemy.run/sql@https://pkg.alchemy.run/@alchemy.run/sql/-/9d4e1e5294ba3ab78de2e78607cbc5309326f84745b23dbe5f6403984e6e780c.tgz(alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0))(effect@4.1.0)': + dependencies: + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0) + effect: 4.1.0 + '@asamuzakjp/css-color@7.1.7': dependencies: '@csstools/css-calc': 3.4.3(@csstools/css-parser-algorithms@4.0.2(@csstools/css-tokenizer@4.0.2))(@csstools/css-tokenizer@4.0.2) @@ -6882,21 +6468,6 @@ snapshots: dependencies: css-tree: 3.2.1 - '@chevrotain/cst-dts-gen@10.5.0': - dependencies: - '@chevrotain/gast': 10.5.0 - '@chevrotain/types': 10.5.0 - lodash: 4.17.21 - - '@chevrotain/gast@10.5.0': - dependencies: - '@chevrotain/types': 10.5.0 - lodash: 4.17.21 - - '@chevrotain/types@10.5.0': {} - - '@chevrotain/utils@10.5.0': {} - '@cloudflare/kv-asset-handler@0.5.0': {} '@cloudflare/unenv-preset@2.16.2(unenv@2.0.0-rc.24)(workerd@1.20261005.1)': @@ -7085,91 +6656,45 @@ snapshots: '@csstools/css-tokenizer@4.0.2': {} - '@distilled.cloud/acme@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@distilled.cloud/aws@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - '@smithy/types': 4.19.0 - effect: 4.0.5 - - '@distilled.cloud/axiom@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@distilled.cloud/core@1.0.0-rc.13(effect@4.0.5)': - dependencies: - effect: 4.0.5 - graphql: 16.11.0 - - '@distilled.cloud/doppler@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/acme@https://pkg.alchemy.run/@distilled.cloud/acme/-/31b5ed0bd279dafa32adf9452c20cecbc16449a278dc709f73f70f3a821a497c.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + effect: 4.1.0 - '@distilled.cloud/fly-io@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/aws4signer@https://pkg.alchemy.run/@distilled.cloud/aws4signer/-/d5d12f0fa0f9b5f9693b1d49d7634fd4e88a5b90cc972e8859eaf45e2385c3b1.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + effect: 4.1.0 - '@distilled.cloud/gcp@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/aws@https://pkg.alchemy.run/@distilled.cloud/aws/-/854428e08c3015bbb423377a045c676b38749d042da8de12cb65cdd25e965951.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + '@distilled.cloud/aws4signer': https://pkg.alchemy.run/@distilled.cloud/aws4signer/-/d5d12f0fa0f9b5f9693b1d49d7634fd4e88a5b90cc972e8859eaf45e2385c3b1.tgz(effect@4.1.0) + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + effect: 4.1.0 - '@distilled.cloud/hetzner@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/cloudflare@https://pkg.alchemy.run/@distilled.cloud/cloudflare/-/56e485b8ac5c256515f34acbe3fac34bce061a5b8911c0583fd2b25b4a6fd8bf.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + effect: 4.1.0 - '@distilled.cloud/infisical@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/core@https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + effect: 4.1.0 - '@distilled.cloud/neon@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/github@https://pkg.alchemy.run/@distilled.cloud/github/-/b656793cc3031e7e63f3255902a1e751d28d9bf8c13ab70cfca6b00a5a831cb4.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + effect: 4.1.0 - '@distilled.cloud/planetscale@1.0.0-rc.13(effect@4.0.5)': + '@distilled.cloud/iceberg@https://pkg.alchemy.run/@distilled.cloud/iceberg/-/01378c8b70513ccbc2e49ba1f00984a2851bf7a9160e1ee31c61511c16ab4bb7.tgz(effect@4.1.0)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 + '@distilled.cloud/core': https://pkg.alchemy.run/@distilled.cloud/core/-/e9c00fbcf63b89460387f62c60b7319f682a4fbd1c438f41175bf4fffa1da9df.tgz(effect@4.1.0) + effect: 4.1.0 - '@distilled.cloud/prisma@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@distilled.cloud/railway@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@distilled.cloud/stripe@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@distilled.cloud/zerossl@1.0.0-rc.13(effect@4.0.5)': - dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - effect: 4.0.5 - - '@effect/opentelemetry@4.0.5(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)': + '@effect/opentelemetry@4.1.0(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)': dependencies: '@opentelemetry/semantic-conventions': 1.43.0 - effect: 4.0.5 + effect: 4.1.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/api-logs': 0.222.0 @@ -7179,33 +6704,29 @@ snapshots: '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-node': 2.11.0(@opentelemetry/api@1.9.1) - '@effect/platform-node-shared@4.0.5(effect@4.0.5)': + '@effect/platform-node-shared@4.1.0(effect@4.1.0)': dependencies: '@types/ws': 8.18.2 - effect: 4.0.5 + effect: 4.1.0 ws: 8.22.0 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))': + '@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))': dependencies: - '@effect/platform-node-shared': 4.0.5(effect@4.0.5) - effect: 4.0.5 + '@effect/platform-node-shared': 4.1.0(effect@4.1.0) + effect: 4.1.0 redis: 6.2.1(@opentelemetry/api@1.9.1) undici: 8.12.3 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/sql-d1@4.0.5(effect@4.0.5)': + '@effect/sql-d1@4.1.0(effect@4.1.0)': dependencies: '@cloudflare/workers-types': 5.20261028.1 - effect: 4.0.5 - - '@effect/sql-sqlite-do@4.0.5(effect@4.0.5)': - dependencies: - effect: 4.0.5 + effect: 4.1.0 '@effect/tsgo-darwin-arm64@0.63.0': optional: true @@ -7238,16 +6759,6 @@ snapshots: '@effect/tsgo-win32-arm64': 0.63.0 '@effect/tsgo-win32-x64': 0.63.0 - '@electric-sql/pglite-socket@0.0.20(@electric-sql/pglite@0.3.15)': - dependencies: - '@electric-sql/pglite': 0.3.15 - - '@electric-sql/pglite-tools@0.2.20(@electric-sql/pglite@0.3.15)': - dependencies: - '@electric-sql/pglite': 0.3.15 - - '@electric-sql/pglite@0.3.15': {} - '@emnapi/core@1.11.0': dependencies: '@emnapi/wasi-threads': 1.2.2 @@ -7381,10 +6892,6 @@ snapshots: protobufjs: 7.6.6 yargs: 17.7.3 - '@hono/node-server@1.19.9(hono@4.11.4)': - dependencies: - hono: 4.11.4 - '@img/colour@1.1.0': {} '@img/sharp-darwin-arm64@0.35.4': @@ -7636,64 +7143,6 @@ snapshots: '@js-sdsl/ordered-map@4.4.2': {} - '@libsql/client@0.17.4': - dependencies: - '@libsql/core': 0.17.4 - '@libsql/hrana-client': 0.10.0 - js-base64: 3.9.4 - libsql: 0.5.29 - promise-limit: 2.7.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@libsql/core@0.17.4': - dependencies: - js-base64: 3.9.4 - - '@libsql/darwin-arm64@0.5.29': - optional: true - - '@libsql/darwin-x64@0.5.29': - optional: true - - '@libsql/hrana-client@0.10.0': - dependencies: - '@libsql/isomorphic-ws': 0.1.5 - js-base64: 3.9.4 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@libsql/isomorphic-ws@0.1.5': - dependencies: - '@types/ws': 8.18.1 - ws: 8.22.0 - transitivePeerDependencies: - - bufferutil - - utf-8-validate - - '@libsql/linux-arm-gnueabihf@0.5.29': - optional: true - - '@libsql/linux-arm-musleabihf@0.5.29': - optional: true - - '@libsql/linux-arm64-gnu@0.5.29': - optional: true - - '@libsql/linux-arm64-musl@0.5.29': - optional: true - - '@libsql/linux-x64-gnu@0.5.29': - optional: true - - '@libsql/linux-x64-musl@0.5.29': - optional: true - - '@libsql/win32-x64-msvc@0.5.29': - optional: true - '@microsoft/api-extractor-model@7.33.15(@types/node@24.19.1)': dependencies: '@microsoft/tsdoc': 0.17.1 @@ -7729,11 +7178,6 @@ snapshots: '@microsoft/tsdoc@0.17.1': {} - '@mrleebo/prisma-ast@0.13.1': - dependencies: - chevrotain: 10.5.0 - lilconfig: 2.1.0 - '@napi-rs/wasm-runtime@1.2.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)': dependencies: '@emnapi/core': 1.11.0 @@ -7748,93 +7192,8 @@ snapshots: '@tybys/wasm-util': 0.10.4 optional: true - '@neon-rs/load@0.0.4': {} - - '@neon/functions@0.11.0(hono@4.11.4)': - optionalDependencies: - hono: 4.11.4 - '@noble/hashes@2.4.0': {} - '@octokit/auth-token@6.0.0': {} - - '@octokit/core@7.0.8': - dependencies: - '@octokit/auth-token': 6.0.0 - '@octokit/graphql': 9.0.5 - '@octokit/request': 10.0.16 - '@octokit/request-error': 7.1.2 - '@octokit/types': 18.0.0 - before-after-hook: 4.0.0 - universal-user-agent: 7.0.3 - - '@octokit/endpoint@11.0.5': - dependencies: - '@octokit/types': 18.0.0 - universal-user-agent: 7.0.3 - - '@octokit/graphql@9.0.5': - dependencies: - '@octokit/request': 10.0.16 - '@octokit/types': 18.0.0 - universal-user-agent: 7.0.3 - - '@octokit/openapi-types@27.0.0': {} - - '@octokit/openapi-types@29.0.1': {} - - '@octokit/openapi-webhooks-types@12.1.0': {} - - '@octokit/plugin-paginate-rest@14.0.0(@octokit/core@7.0.8)': - dependencies: - '@octokit/core': 7.0.8 - '@octokit/types': 16.0.0 - - '@octokit/plugin-request-log@6.0.0(@octokit/core@7.0.8)': - dependencies: - '@octokit/core': 7.0.8 - - '@octokit/plugin-rest-endpoint-methods@17.0.0(@octokit/core@7.0.8)': - dependencies: - '@octokit/core': 7.0.8 - '@octokit/types': 16.0.0 - - '@octokit/request-error@7.1.2': - dependencies: - '@octokit/types': 18.0.0 - - '@octokit/request@10.0.16': - dependencies: - '@octokit/endpoint': 11.0.5 - '@octokit/request-error': 7.1.2 - '@octokit/types': 18.0.0 - content-type: 3.1.1 - json-with-bigint: 3.5.12 - universal-user-agent: 7.0.3 - - '@octokit/rest@22.0.1': - dependencies: - '@octokit/core': 7.0.8 - '@octokit/plugin-paginate-rest': 14.0.0(@octokit/core@7.0.8) - '@octokit/plugin-request-log': 6.0.0(@octokit/core@7.0.8) - '@octokit/plugin-rest-endpoint-methods': 17.0.0(@octokit/core@7.0.8) - - '@octokit/types@16.0.0': - dependencies: - '@octokit/openapi-types': 27.0.0 - - '@octokit/types@18.0.0': - dependencies: - '@octokit/openapi-types': 29.0.1 - - '@octokit/webhooks-methods@6.0.0': {} - - '@octokit/webhooks@14.2.0': - dependencies: - '@octokit/openapi-webhooks-types': 12.1.0 - '@octokit/request-error': 7.1.2 - '@octokit/webhooks-methods': 6.0.0 - '@oozcitak/dom@2.0.2': dependencies: '@oozcitak/infra': 2.0.2 @@ -8256,12 +7615,8 @@ snapshots: '@oxc-project/types@0.127.0': {} - '@oxc-project/types@0.146.0': {} - '@oxc-project/types@0.150.0': {} - '@oxc-project/types@0.152.0': {} - '@oxc-project/types@0.153.0': {} '@oxc-resolver/binding-android-arm-eabi@11.21.2': @@ -8620,36 +7975,6 @@ snapshots: '@poppinss/exception@1.2.3': {} - '@prisma/debug@7.2.0': {} - - '@prisma/dev@0.20.0(typescript@7.0.2)': - dependencies: - '@electric-sql/pglite': 0.3.15 - '@electric-sql/pglite-socket': 0.0.20(@electric-sql/pglite@0.3.15) - '@electric-sql/pglite-tools': 0.2.20(@electric-sql/pglite@0.3.15) - '@hono/node-server': 1.19.9(hono@4.11.4) - '@mrleebo/prisma-ast': 0.13.1 - '@prisma/get-platform': 7.2.0 - '@prisma/query-plan-executor': 7.2.0 - foreground-child: 3.3.1 - get-port-please: 3.2.0 - hono: 4.11.4 - http-status-codes: 2.3.0 - pathe: 2.0.3 - proper-lockfile: 4.1.2 - remeda: 2.33.4 - std-env: 3.10.0 - valibot: 1.2.0(typescript@7.0.2) - zeptomatch: 2.1.0 - transitivePeerDependencies: - - typescript - - '@prisma/get-platform@7.2.0': - dependencies: - '@prisma/debug': 7.2.0 - - '@prisma/query-plan-executor@7.2.0': {} - '@protobufjs/aspromise@1.1.2': {} '@protobufjs/base64@1.1.2': {} @@ -8670,9 +7995,9 @@ snapshots: '@protobufjs/utf8@1.1.2': {} - '@puppeteer/browsers@3.2.3(yauzl@3.4.0)': + '@puppeteer/browsers@3.2.6(yauzl@3.4.0)': dependencies: - modern-tar: 0.8.5 + modern-tar: 0.8.6 yargs: 18.1.0 optionalDependencies: yauzl: 3.4.0 @@ -8703,101 +8028,56 @@ snapshots: dependencies: '@redis/client': 6.2.1(@opentelemetry/api@1.9.1) - '@rolldown/binding-android-arm-eabi@1.2.12': - optional: true - - '@rolldown/binding-android-arm-eabi@1.2.5': - optional: true - - '@rolldown/binding-android-arm64@1.2.12': - optional: true - - '@rolldown/binding-android-arm64@1.2.5': - optional: true - - '@rolldown/binding-darwin-arm64@1.2.12': - optional: true - - '@rolldown/binding-darwin-arm64@1.2.5': - optional: true - - '@rolldown/binding-darwin-x64@1.2.12': - optional: true - - '@rolldown/binding-darwin-x64@1.2.5': - optional: true - - '@rolldown/binding-freebsd-x64@1.2.12': - optional: true - - '@rolldown/binding-freebsd-x64@1.2.5': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.2.12': - optional: true - - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': - optional: true - - '@rolldown/binding-linux-arm64-gnu@1.2.12': + '@rolldown/binding-android-arm-eabi@1.2.13': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.5': + '@rolldown/binding-android-arm64@1.2.13': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.12': + '@rolldown/binding-darwin-arm64@1.2.13': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.5': + '@rolldown/binding-darwin-x64@1.2.13': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.12': + '@rolldown/binding-freebsd-x64@1.2.13': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.5': + '@rolldown/binding-linux-arm-gnueabihf@1.2.13': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.12': + '@rolldown/binding-linux-arm64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.5': + '@rolldown/binding-linux-arm64-musl@1.2.13': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.12': + '@rolldown/binding-linux-ppc64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.5': + '@rolldown/binding-linux-s390x-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-musl@1.2.12': + '@rolldown/binding-linux-x64-gnu@1.2.13': optional: true - '@rolldown/binding-linux-x64-musl@1.2.5': + '@rolldown/binding-linux-x64-musl@1.2.13': optional: true - '@rolldown/binding-openharmony-arm64@1.2.12': + '@rolldown/binding-openharmony-arm64@1.2.13': optional: true - '@rolldown/binding-openharmony-arm64@1.2.5': + '@rolldown/binding-win32-arm64-msvc@1.2.13': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.12': + '@rolldown/binding-win32-x64-msvc@1.2.13': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.5': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.2.12': - optional: true - - '@rolldown/binding-win32-x64-msvc@1.2.5': - optional: true - - '@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': dependencies: '@babel/core': 8.0.6 picomatch: 4.0.7 - rolldown: 1.2.12 + rolldown: 1.2.13 optionalDependencies: '@babel/runtime': 7.29.10 vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) @@ -8861,10 +8141,6 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@smithy/types@4.19.0': - dependencies: - tslib: 2.8.1 - '@speed-highlight/core@1.2.24': {} '@storybook/addon-vitest@10.6.2(@vitest/browser-playwright@5.0.5)(@vitest/browser@5.0.5(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5))(react@19.3.0)(storybook@10.6.2(@types/react@19.3.0)(prettier@3.9.9)(react@19.3.0))(vitest@5.0.5)': @@ -8941,17 +8217,17 @@ snapshots: '@systemfsoftware/arethetypeswrong-cli@file:.sfs-deps/arethetypeswrong-cli-4.2.0.tgz': {} - '@systemfsoftware/conformance-spec@file:.sfs-deps/conformance-spec-1.0.0.tgz(effect@4.0.5)': + '@systemfsoftware/conformance-spec@file:.sfs-deps/conformance-spec-1.0.0.tgz(effect@4.1.0)': dependencies: - '@systemfsoftware/effect-sim-kernel': file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.0.5) - effect: 4.0.5 + '@systemfsoftware/effect-sim-kernel': file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.1.0) + effect: 4.1.0 '@systemfsoftware/differential-spec@file:.sfs-deps/differential-spec-1.0.1.tgz(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5)': dependencies: - '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) - '@systemfsoftware/effect-sim-kernel': file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.0.5) - '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) - effect: 4.0.5 + '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) + '@systemfsoftware/effect-sim-kernel': file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.1.0) + '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + effect: 4.1.0 fast-check: 4.10.2 transitivePeerDependencies: - bufferutil @@ -8959,15 +8235,15 @@ snapshots: - utf-8-validate - vitest - '@systemfsoftware/effect-cell-types@file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5)': + '@systemfsoftware/effect-cell-types@file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0)': dependencies: - effect: 4.0.5 + effect: 4.1.0 - '@systemfsoftware/effect-gherkin-spec@file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5)': + '@systemfsoftware/effect-gherkin-spec@file:.sfs-deps/effect-gherkin-spec-7.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5)': dependencies: - '@systemfsoftware/effect-spec-runtime': file:.sfs-deps/effect-spec-runtime-1.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) - '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) - effect: 4.0.5 + '@systemfsoftware/effect-spec-runtime': file:.sfs-deps/effect-spec-runtime-1.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) + '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + effect: 4.1.0 vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) '@systemfsoftware/effect-schema-discovery@file:.sfs-deps/effect-schema-discovery-2.0.0.tgz': @@ -8975,69 +8251,69 @@ snapshots: '@oxc-project/types': 0.153.0 oxc-parser: 0.153.0 - '@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5)': + '@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5)': dependencies: - '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) - effect: 4.0.5 + '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + effect: 4.1.0 vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@systemfsoftware/effect-schema-recursion-budget@file:.sfs-deps/effect-schema-recursion-budget-2.0.0.tgz(effect@4.0.5)': + '@systemfsoftware/effect-schema-recursion-budget@file:.sfs-deps/effect-schema-recursion-budget-2.0.0.tgz(effect@4.1.0)': dependencies: '@oxc-project/types': 0.153.0 - effect: 4.0.5 + effect: 4.1.0 oxc-parser: 0.153.0 - '@systemfsoftware/effect-schema-vite@file:.sfs-deps/effect-schema-vite-3.0.1.tgz(@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5))(effect@4.0.5)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5)': + '@systemfsoftware/effect-schema-vite@file:.sfs-deps/effect-schema-vite-3.0.1.tgz(@systemfsoftware/effect-schema-law@file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5))(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5)': dependencies: '@oxc-project/types': 0.153.0 '@systemfsoftware/effect-schema-discovery': file:.sfs-deps/effect-schema-discovery-2.0.0.tgz - '@systemfsoftware/effect-schema-law': file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5) - '@systemfsoftware/effect-schema-recursion-budget': file:.sfs-deps/effect-schema-recursion-budget-2.0.0.tgz(effect@4.0.5) - effect: 4.0.5 + '@systemfsoftware/effect-schema-law': file:.sfs-deps/effect-schema-law-5.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5) + '@systemfsoftware/effect-schema-recursion-budget': file:.sfs-deps/effect-schema-recursion-budget-2.0.0.tgz(effect@4.1.0) + effect: 4.1.0 oxc-parser: 0.153.0 vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@systemfsoftware/effect-sim-kernel@file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.0.5)': + '@systemfsoftware/effect-sim-kernel@file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.1.0)': dependencies: - effect: 4.0.5 + effect: 4.1.0 - '@systemfsoftware/effect-spec-runtime@file:.sfs-deps/effect-spec-runtime-1.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.0.5)(vitest@5.0.5)': + '@systemfsoftware/effect-spec-runtime@file:.sfs-deps/effect-spec-runtime-1.0.1.tgz(@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5))(effect@4.1.0)(vitest@5.0.5)': dependencies: - '@systemfsoftware/effect-sim-kernel': file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.0.5) - '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) - effect: 4.0.5 + '@systemfsoftware/effect-sim-kernel': file:.sfs-deps/effect-sim-kernel-1.0.0.tgz(effect@4.1.0) + '@systemfsoftware/vitest': file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5) + effect: 4.1.0 vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@systemfsoftware/oxlint-config-cell-architecture@file:.sfs-deps/oxlint-config-cell-architecture-4.0.0.tgz(effect@4.0.5)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2)': + '@systemfsoftware/oxlint-config-cell-architecture@file:.sfs-deps/oxlint-config-cell-architecture-4.0.0.tgz(effect@4.1.0)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2)': dependencies: '@systemfsoftware/oxlint-config-rule-authoring': file:.sfs-deps/oxlint-config-rule-authoring-1.1.0.tgz(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) - '@systemfsoftware/oxlint-plugin-cell-architecture': file:.sfs-deps/oxlint-plugin-cell-architecture-5.0.0.tgz(effect@4.0.5)(typescript@7.0.2) - effect: 4.0.5 + '@systemfsoftware/oxlint-plugin-cell-architecture': file:.sfs-deps/oxlint-plugin-cell-architecture-5.0.0.tgz(effect@4.1.0)(typescript@7.0.2) + effect: 4.1.0 oxlint: 1.90.0(oxlint-tsgolint@7.0.2005) typescript: 7.0.2 - '@systemfsoftware/oxlint-config-dmmf@file:.sfs-deps/oxlint-config-dmmf-2.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2)': + '@systemfsoftware/oxlint-config-dmmf@file:.sfs-deps/oxlint-config-dmmf-2.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2)': dependencies: '@systemfsoftware/oxlint-config-rule-authoring': file:.sfs-deps/oxlint-config-rule-authoring-1.1.0.tgz(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) - '@systemfsoftware/oxlint-plugin-dmmf-workflow': file:.sfs-deps/oxlint-plugin-dmmf-workflow-7.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2) - '@systemfsoftware/oxlint-plugin-effect-schema': file:.sfs-deps/oxlint-plugin-effect-schema-6.0.0.tgz(effect@4.0.5)(typescript@7.0.2) - effect: 4.0.5 + '@systemfsoftware/oxlint-plugin-dmmf-workflow': file:.sfs-deps/oxlint-plugin-dmmf-workflow-7.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2) + '@systemfsoftware/oxlint-plugin-effect-schema': file:.sfs-deps/oxlint-plugin-effect-schema-6.0.0.tgz(effect@4.1.0)(typescript@7.0.2) + effect: 4.1.0 oxlint: 1.90.0(oxlint-tsgolint@7.0.2005) oxlint-tsgolint: 7.0.2005 typescript: 7.0.2 transitivePeerDependencies: - vite-plus - '@systemfsoftware/oxlint-config-recommended@file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2)': + '@systemfsoftware/oxlint-config-recommended@file:.sfs-deps/oxlint-config-recommended-4.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2)': dependencies: '@effect/tsgo': 0.63.0 - '@systemfsoftware/oxlint-config-cell-architecture': file:.sfs-deps/oxlint-config-cell-architecture-4.0.0.tgz(effect@4.0.5)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) - '@systemfsoftware/oxlint-config-dmmf': file:.sfs-deps/oxlint-config-dmmf-2.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) + '@systemfsoftware/oxlint-config-cell-architecture': file:.sfs-deps/oxlint-config-cell-architecture-4.0.0.tgz(effect@4.1.0)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) + '@systemfsoftware/oxlint-config-dmmf': file:.sfs-deps/oxlint-config-dmmf-2.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) '@systemfsoftware/oxlint-config-rule-authoring': file:.sfs-deps/oxlint-config-rule-authoring-1.1.0.tgz(oxlint@1.90.0(oxlint-tsgolint@7.0.2005))(typescript@7.0.2) - '@systemfsoftware/oxlint-plugin-effect-platform': file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2) - '@systemfsoftware/oxlint-plugin-test-discipline': file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz(effect@4.0.5)(typescript@7.0.2) - effect: 4.0.5 + '@systemfsoftware/oxlint-plugin-effect-platform': file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2) + '@systemfsoftware/oxlint-plugin-test-discipline': file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz(effect@4.1.0)(typescript@7.0.2) + effect: 4.1.0 oxlint: 1.90.0(oxlint-tsgolint@7.0.2005) oxlint-tsgolint: 7.0.2005 typescript: 7.0.2 @@ -9049,36 +8325,36 @@ snapshots: oxlint: 1.90.0(oxlint-tsgolint@7.0.2005) typescript: 7.0.2 - '@systemfsoftware/oxlint-plugin-cell-architecture@file:.sfs-deps/oxlint-plugin-cell-architecture-5.0.0.tgz(effect@4.0.5)(typescript@7.0.2)': + '@systemfsoftware/oxlint-plugin-cell-architecture@file:.sfs-deps/oxlint-plugin-cell-architecture-5.0.0.tgz(effect@4.1.0)(typescript@7.0.2)': dependencies: '@oxc-project/types': 0.153.0 '@oxlint/plugins': 1.87.0 - effect: 4.0.5 + effect: 4.1.0 typescript: 7.0.2 - '@systemfsoftware/oxlint-plugin-dmmf-workflow@file:.sfs-deps/oxlint-plugin-dmmf-workflow-7.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2)': + '@systemfsoftware/oxlint-plugin-dmmf-workflow@file:.sfs-deps/oxlint-plugin-dmmf-workflow-7.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2)': dependencies: '@oxc-project/types': 0.153.0 '@oxlint/plugins': 1.87.0 - effect: 4.0.5 + effect: 4.1.0 oxlint: 1.87.0(oxlint-tsgolint@7.0.2005) typescript: 7.0.2 transitivePeerDependencies: - oxlint-tsgolint - vite-plus - '@systemfsoftware/oxlint-plugin-effect-platform@file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz(effect@4.0.5)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2)': + '@systemfsoftware/oxlint-plugin-effect-platform@file:.sfs-deps/oxlint-plugin-effect-platform-2.0.0.tgz(effect@4.1.0)(oxlint-tsgolint@7.0.2005)(typescript@7.0.2)': dependencies: '@oxc-project/types': 0.153.0 '@oxlint/plugins': 1.87.0 - effect: 4.0.5 + effect: 4.1.0 oxlint: 1.87.0(oxlint-tsgolint@7.0.2005) typescript: 7.0.2 transitivePeerDependencies: - oxlint-tsgolint - vite-plus - '@systemfsoftware/oxlint-plugin-effect-schema@file:.sfs-deps/oxlint-plugin-effect-schema-6.0.0.tgz(effect@4.0.5)(typescript@7.0.2)': + '@systemfsoftware/oxlint-plugin-effect-schema@file:.sfs-deps/oxlint-plugin-effect-schema-6.0.0.tgz(effect@4.1.0)(typescript@7.0.2)': dependencies: '@oxc-project/types': 0.153.0 '@oxlint/plugins': 1.87.0 @@ -9086,96 +8362,96 @@ snapshots: '@pnpm/workspace.projects-reader': 1101.1.4(@pnpm/logger@1100.0.0) '@pnpm/workspace.root-finder': 1100.1.3 '@pnpm/workspace.workspace-manifest-reader': 1100.2.2 - effect: 4.0.5 + effect: 4.1.0 typescript: 7.0.2 - '@systemfsoftware/oxlint-plugin-test-discipline@file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz(effect@4.0.5)(typescript@7.0.2)': + '@systemfsoftware/oxlint-plugin-test-discipline@file:.sfs-deps/oxlint-plugin-test-discipline-5.0.0.tgz(effect@4.1.0)(typescript@7.0.2)': dependencies: '@oxc-project/types': 0.153.0 '@oxlint/plugins': 1.87.0 - effect: 4.0.5 + effect: 4.1.0 oxc-parser: 0.153.0 typescript: 7.0.2 - '@systemfsoftware/stryker-config@file:.sfs-deps/stryker-config-0.1.0.tgz(@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5))': + '@systemfsoftware/stryker-config@file:.sfs-deps/stryker-config-0.1.0.tgz(@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5))': optionalDependencies: - '@systemfsoftware/stryker-js': file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) + '@systemfsoftware/stryker-js': file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5) '@systemfsoftware/stryker-framework-interface@file:.sfs-deps/stryker-framework-interface-0.0.0.tgz': dependencies: '@systemfsoftware/stryker-ignorer-interface': file:.sfs-deps/stryker-ignorer-interface-0.1.1.tgz - '@systemfsoftware/stryker-ignorer-effect-schema-declarations@file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.12)': + '@systemfsoftware/stryker-ignorer-effect-schema-declarations@file:.sfs-deps/stryker-ignorer-effect-schema-declarations-0.2.0.tgz(rolldown@1.2.13)': dependencies: '@systemfsoftware/stryker-ignorer-interface': file:.sfs-deps/stryker-ignorer-interface-0.1.1.tgz - '@systemfsoftware/stryker-ignorer-kit': file:.sfs-deps/stryker-ignorer-kit-0.1.1.tgz(rolldown@1.2.12) + '@systemfsoftware/stryker-ignorer-kit': file:.sfs-deps/stryker-ignorer-kit-0.1.1.tgz(rolldown@1.2.13) transitivePeerDependencies: - rolldown - '@systemfsoftware/stryker-ignorer-in-source-vitest-block@file:.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz(rolldown@1.2.12)': + '@systemfsoftware/stryker-ignorer-in-source-vitest-block@file:.sfs-deps/stryker-ignorer-in-source-vitest-block-0.1.1.tgz(rolldown@1.2.13)': dependencies: '@systemfsoftware/stryker-ignorer-interface': file:.sfs-deps/stryker-ignorer-interface-0.1.1.tgz - '@systemfsoftware/stryker-ignorer-kit': file:.sfs-deps/stryker-ignorer-kit-0.1.1.tgz(rolldown@1.2.12) + '@systemfsoftware/stryker-ignorer-kit': file:.sfs-deps/stryker-ignorer-kit-0.1.1.tgz(rolldown@1.2.13) transitivePeerDependencies: - rolldown '@systemfsoftware/stryker-ignorer-interface@file:.sfs-deps/stryker-ignorer-interface-0.1.1.tgz': {} - '@systemfsoftware/stryker-ignorer-kit@file:.sfs-deps/stryker-ignorer-kit-0.1.1.tgz(rolldown@1.2.12)': + '@systemfsoftware/stryker-ignorer-kit@file:.sfs-deps/stryker-ignorer-kit-0.1.1.tgz(rolldown@1.2.13)': dependencies: '@oxc-project/types': 0.150.0 '@systemfsoftware/stryker-ignorer-interface': file:.sfs-deps/stryker-ignorer-interface-0.1.1.tgz oxc-parser: 0.150.0 - oxc-walker: 1.1.1(@oxc-project/types@0.150.0)(oxc-parser@0.150.0)(rolldown@1.2.12) + oxc-walker: 1.1.1(@oxc-project/types@0.150.0)(oxc-parser@0.150.0)(rolldown@1.2.13) transitivePeerDependencies: - rolldown '@systemfsoftware/stryker-js-cli-contract@file:.sfs-deps/stryker-js-cli-contract-0.3.1.tgz': dependencies: '@systemfsoftware/stryker-js-plugin-interface': file:.sfs-deps/stryker-js-plugin-interface-14.0.0.tgz - effect: 4.0.5 + effect: 4.1.0 - '@systemfsoftware/stryker-js-instrumenter@file:.sfs-deps/stryker-js-instrumenter-12.1.1.tgz(rolldown@1.2.12)': + '@systemfsoftware/stryker-js-instrumenter@file:.sfs-deps/stryker-js-instrumenter-12.1.1.tgz(rolldown@1.2.13)': dependencies: '@eslint-community/regexpp': 4.12.2 '@noble/hashes': 2.4.0 '@oxc-project/types': 0.150.0 - '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) '@systemfsoftware/stryker-framework-interface': file:.sfs-deps/stryker-framework-interface-0.0.0.tgz '@systemfsoftware/stryker-js-cli-contract': file:.sfs-deps/stryker-js-cli-contract-0.3.1.tgz '@systemfsoftware/stryker-js-plugin-interface': file:.sfs-deps/stryker-js-plugin-interface-14.0.0.tgz - effect: 4.0.5 + effect: 4.1.0 oxc-parser: 0.150.0 - oxc-walker: 1.1.1(@oxc-project/types@0.150.0)(oxc-parser@0.150.0)(rolldown@1.2.12) + oxc-walker: 1.1.1(@oxc-project/types@0.150.0)(oxc-parser@0.150.0)(rolldown@1.2.13) transitivePeerDependencies: - rolldown '@systemfsoftware/stryker-js-plugin-interface@file:.sfs-deps/stryker-js-plugin-interface-14.0.0.tgz': dependencies: '@systemfsoftware/stryker-ignorer-interface': file:.sfs-deps/stryker-ignorer-interface-0.1.1.tgz - effect: 4.0.5 + effect: 4.1.0 '@systemfsoftware/stryker-js-plugin-runtime@file:.sfs-deps/stryker-js-plugin-runtime-7.0.2.tgz': dependencies: '@opentelemetry/api': 1.9.1 - '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) '@systemfsoftware/stryker-js-cli-contract': file:.sfs-deps/stryker-js-cli-contract-0.3.1.tgz '@systemfsoftware/stryker-js-plugin-interface': file:.sfs-deps/stryker-js-plugin-interface-14.0.0.tgz - effect: 4.0.5 + effect: 4.1.0 - '@systemfsoftware/stryker-js-typescript-checker@file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.12)(supports-color@10.2.2)': + '@systemfsoftware/stryker-js-typescript-checker@file:.sfs-deps/stryker-js-typescript-checker-8.2.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(rolldown@1.2.13)(supports-color@10.2.2)': dependencies: - '@effect/opentelemetry': 4.0.5(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5) + '@effect/opentelemetry': 4.1.0(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0) '@noble/hashes': 2.4.0 '@opentelemetry/exporter-trace-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-node': 0.222.0(@opentelemetry/api@1.9.1)(supports-color@10.2.2) '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) - '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) '@systemfsoftware/stryker-js-cli-contract': file:.sfs-deps/stryker-js-cli-contract-0.3.1.tgz - '@systemfsoftware/stryker-js-instrumenter': file:.sfs-deps/stryker-js-instrumenter-12.1.1.tgz(rolldown@1.2.12) + '@systemfsoftware/stryker-js-instrumenter': file:.sfs-deps/stryker-js-instrumenter-12.1.1.tgz(rolldown@1.2.13) '@systemfsoftware/stryker-js-plugin-interface': file:.sfs-deps/stryker-js-plugin-interface-14.0.0.tgz '@systemfsoftware/stryker-js-plugin-runtime': file:.sfs-deps/stryker-js-plugin-runtime-7.0.2.tgz - effect: 4.0.5 + effect: 4.1.0 typescript: 7.0.2 transitivePeerDependencies: - '@opentelemetry/api' @@ -9189,13 +8465,13 @@ snapshots: - rolldown - supports-color - '@systemfsoftware/stryker-js-vitest-runner@file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(supports-color@10.2.2)(vitest@5.0.5)': + '@systemfsoftware/stryker-js-vitest-runner@file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(supports-color@10.2.2)(vitest@5.0.5)': dependencies: - '@effect/opentelemetry': 4.0.5(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5) + '@effect/opentelemetry': 4.1.0(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0) '@opentelemetry/exporter-trace-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-node': 0.222.0(@opentelemetry/api@1.9.1)(supports-color@10.2.2) '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) - '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) + '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) transitivePeerDependencies: - '@opentelemetry/api' @@ -9209,20 +8485,20 @@ snapshots: - effect - supports-color - '@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5)': + '@systemfsoftware/stryker-js@file:.sfs-deps/stryker-js-17.0.2.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(supports-color@10.2.2)(vitest@5.0.5)': dependencies: - '@effect/opentelemetry': 4.0.5(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5) - '@effect/platform-node': 4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)) - '@effect/platform-node-shared': 4.0.5(effect@4.0.5) + '@effect/opentelemetry': 4.1.0(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0) + '@effect/platform-node': 4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)) + '@effect/platform-node-shared': 4.1.0(effect@4.1.0) '@noble/hashes': 2.4.0 '@opentelemetry/api': 1.9.1 '@opentelemetry/exporter-metrics-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) '@opentelemetry/exporter-trace-otlp-http': 0.222.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-metrics': 2.11.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) - '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.0.5) - '@systemfsoftware/stryker-js-vm-runner': '@systemfsoftware/stryker-js-vitest-runner@file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.0.5)(supports-color@10.2.2)(vitest@5.0.5)' - effect: 4.0.5 + '@systemfsoftware/effect-cell-types': file:.sfs-deps/effect-cell-types-12.0.0.tgz(effect@4.1.0) + '@systemfsoftware/stryker-js-vm-runner': '@systemfsoftware/stryker-js-vitest-runner@file:.sfs-deps/stryker-js-vitest-runner-8.1.1.tgz(@opentelemetry/api-logs@0.222.0)(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-logs@0.222.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-metrics@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-node@2.11.0(@opentelemetry/api@1.9.1))(@opentelemetry/semantic-conventions@1.43.0)(effect@4.1.0)(supports-color@10.2.2)(vitest@5.0.5)' + effect: 4.1.0 transitivePeerDependencies: - '@opentelemetry/api-logs' - '@opentelemetry/resources' @@ -9248,10 +8524,10 @@ snapshots: vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5)': + '@systemfsoftware/vitest@file:.sfs-deps/vitest-2.0.0.tgz(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1))(vitest@5.0.5)': dependencies: - '@effect/platform-node': 4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)) - effect: 4.0.5 + '@effect/platform-node': 4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)) + effect: 4.1.0 vitest: 5.0.5(@opentelemetry/api@1.9.1)(@types/node@24.19.1)(@vitest/browser-playwright@5.0.5)(@vitest/coverage-istanbul@5.0.5)(@vitest/ui@5.0.5)(jsdom@30.1.2(@noble/hashes@2.4.0))(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) transitivePeerDependencies: - bufferutil @@ -9279,14 +8555,14 @@ snapshots: react: 19.3.0 react-dom: 19.3.0(react@19.3.0) - '@tanstack/react-start-rsc@0.1.59(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@tanstack/react-start-rsc@0.1.59(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': dependencies: '@tanstack/react-router': 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/router-core': 1.171.34 '@tanstack/router-utils': 1.162.3(supports-color@10.2.2) '@tanstack/start-client-core': 1.170.34 '@tanstack/start-fn-stubs': 1.162.0 - '@tanstack/start-plugin-core': 1.171.49(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@tanstack/start-plugin-core': 1.171.49(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) '@tanstack/start-storage-context': 1.167.36 pathe: 2.0.3 react: 19.3.0 @@ -9315,15 +8591,15 @@ snapshots: transitivePeerDependencies: - crossws - '@tanstack/react-start@1.168.60(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@tanstack/react-start@1.168.60(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': dependencies: '@tanstack/react-router': 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/react-start-client': 1.168.39(react-dom@19.3.0(react@19.3.0))(react@19.3.0) - '@tanstack/react-start-rsc': 0.1.59(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@tanstack/react-start-rsc': 0.1.59(esbuild@0.28.2)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) '@tanstack/react-start-server': 1.167.46(react-dom@19.3.0(react@19.3.0))(react@19.3.0) '@tanstack/router-utils': 1.162.3(supports-color@10.2.2) '@tanstack/start-client-core': 1.170.34 - '@tanstack/start-plugin-core': 1.171.49(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@tanstack/start-plugin-core': 1.171.49(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) '@tanstack/start-server-core': 1.169.39 pathe: 2.0.3 react: 19.3.0 @@ -9379,7 +8655,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.168.42(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@tanstack/router-plugin@1.168.42(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': dependencies: '@babel/core': 7.29.7(supports-color@10.2.2) '@babel/template': 7.29.7 @@ -9388,7 +8664,7 @@ snapshots: '@tanstack/router-generator': 1.167.40(supports-color@10.2.2) '@tanstack/router-utils': 1.162.3(supports-color@10.2.2) chokidar: 5.0.0 - unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + unplugin: 3.4.0(esbuild@0.28.2)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) zod: 4.6.5 optionalDependencies: '@tanstack/react-router': 1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0) @@ -9425,7 +8701,7 @@ snapshots: '@tanstack/start-fn-stubs@1.162.0': {} - '@tanstack/start-plugin-core@1.171.49(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@tanstack/start-plugin-core@1.171.49(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': dependencies: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7(supports-color@10.2.2) @@ -9433,7 +8709,7 @@ snapshots: '@jridgewell/remapping': 2.3.5 '@tanstack/router-core': 1.171.34 '@tanstack/router-generator': 1.167.40(supports-color@10.2.2) - '@tanstack/router-plugin': 1.168.42(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.12)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@tanstack/router-plugin': 1.168.42(@tanstack/react-router@1.170.41(react-dom@19.3.0(react@19.3.0))(react@19.3.0))(esbuild@0.28.2)(rolldown@1.2.13)(supports-color@10.2.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) '@tanstack/router-utils': 1.162.3(supports-color@10.2.2) '@tanstack/start-server-core': 1.169.39 exsolve: 1.1.3 @@ -9545,8 +8821,6 @@ snapshots: '@types/aria-query@5.0.4': {} - '@types/aws-lambda@8.10.164': {} - '@types/babel__core@7.20.5': dependencies: '@babel/parser': 7.29.9 @@ -9599,10 +8873,6 @@ snapshots: '@types/scheduler@0.28.0': {} - '@types/ws@8.18.1': - dependencies: - '@types/node': 24.19.1 - '@types/ws@8.18.2': dependencies: '@types/node': 24.19.1 @@ -9667,12 +8937,12 @@ snapshots: '@typescript/typescript-win32-x64@7.0.2': optional: true - '@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': + '@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))': dependencies: '@rolldown/pluginutils': 1.0.1 vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) optionalDependencies: - '@rolldown/plugin-babel': 0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) + '@rolldown/plugin-babel': 0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) babel-plugin-react-compiler: 1.0.0 '@vitest/browser-playwright@5.0.5(playwright@1.63.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(vitest@5.0.5)': @@ -9894,59 +9164,25 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@2.0.0-beta.80(@alchemy.run/frontend-frameworks@2.0.0-beta.80(@types/node@24.19.1)(@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(effect@4.0.5)(hono@4.11.4)(redis@6.2.1(@opentelemetry/api@1.9.1))(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(@effect/platform-node@4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(@types/react@19.3.0)(effect@4.0.5)(hono@4.11.4)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0): + alchemy@https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz(@effect/platform-node@4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/react@19.3.0)(effect@4.1.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1))(ws@8.22.0): dependencies: - '@alchemy.run/cloudflare-runtime': 2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.5))(@effect/platform-node@4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)))(@types/node@24.19.1)(effect@4.0.5)(rolldown@1.2.5)(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@alchemy.run/floci': 2.0.0-beta.80(effect@4.0.5) - '@alchemy.run/node-utils': 2.0.0-beta.80 + '@alchemy.run/node-utils': https://pkg.alchemy.run/@alchemy.run/node-utils/-/f7ed79ab54e4abbdb7445242a8127338f02468a98f12a5ce681b50f7e1b0ca50.tgz '@alchemy.run/sigil': 0.1.0-alpha.1(@types/react@19.3.0) - '@distilled.cloud/acme': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/aws': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/axiom': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/doppler': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/fly-io': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/gcp': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/hetzner': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/infisical': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/neon': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/planetscale': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/prisma': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/railway': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/stripe': 1.0.0-rc.13(effect@4.0.5) - '@distilled.cloud/zerossl': 1.0.0-rc.13(effect@4.0.5) - '@effect/sql-d1': 4.0.5(effect@4.0.5) - '@effect/sql-sqlite-do': 4.0.5(effect@4.0.5) - '@libsql/client': 0.17.4 - '@neon/functions': 0.11.0(hono@4.11.4) - '@octokit/rest': 22.0.1 - '@octokit/webhooks': 14.2.0 - '@prisma/dev': 0.20.0(typescript@7.0.2) - '@types/aws-lambda': 8.10.164 capnweb: 0.12.0 - effect: 4.0.5 + effect: 4.1.0 fflate: 0.8.3 - libsodium-wrappers: 0.8.4 pathe: 2.0.3 picomatch: 4.0.7 - rolldown: 1.2.5 + rolldown: 1.2.13 tinyglobby: 0.2.17 yaml: 2.9.1 optionalDependencies: - '@alchemy.run/frontend-frameworks': 2.0.0-beta.80(@types/node@24.19.1)(@vitejs/plugin-react@6.1.2(@rolldown/plugin-babel@0.2.4(@babel/core@8.0.6)(@babel/runtime@7.29.10)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(babel-plugin-react-compiler@1.0.0)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)))(effect@4.0.5)(hono@4.11.4)(redis@6.2.1(@opentelemetry/api@1.9.1))(typescript@7.0.2)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)) - '@effect/platform-node': 4.0.5(effect@4.0.5)(redis@6.2.1(@opentelemetry/api@1.9.1)) + '@effect/platform-node': 4.1.0(effect@4.1.0)(redis@6.2.1(@opentelemetry/api@1.9.1)) vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) ws: 8.22.0 transitivePeerDependencies: - - '@types/node' - '@types/react' - - bufferutil - - hono - - proxy-agent - react-devtools-core - - typescript - - utf-8-validate ansi-regex@5.0.1: {} @@ -9999,8 +9235,6 @@ snapshots: baseline-browser-mapping@2.11.27: {} - before-after-hook@4.0.0: {} - bidi-js@1.1.0: dependencies: require-from-string: 2.0.2 @@ -10058,15 +9292,6 @@ snapshots: check-error@2.1.3: {} - chevrotain@10.5.0: - dependencies: - '@chevrotain/cst-dts-gen': 10.5.0 - '@chevrotain/gast': 10.5.0 - '@chevrotain/types': 10.5.0 - '@chevrotain/utils': 10.5.0 - lodash: 4.17.21 - regexp-to-ast: 0.5.0 - chokidar@5.0.0: dependencies: readdirp: 5.1.1 @@ -10093,8 +9318,6 @@ snapshots: color-name@1.1.4: {} - content-type@3.1.1: {} - conventional-changelog-angular@9.4.0: dependencies: '@conventional-changelog/template': 1.4.0 @@ -10177,8 +9400,6 @@ snapshots: detect-indent@7.0.2: {} - detect-libc@2.0.2: {} - detect-libc@2.1.2: {} diff@8.0.4: {} @@ -10195,7 +9416,7 @@ snapshots: optionalDependencies: oxc-resolver: 11.21.2 - effect@4.0.5: {} + effect@4.1.0: {} electron-to-chromium@1.5.444: {} @@ -10315,11 +9536,6 @@ snapshots: flru@1.0.2: {} - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - fs-extra@11.3.6: dependencies: graceful-fs: 4.2.11 @@ -10337,8 +9553,6 @@ snapshots: get-east-asian-width@1.6.0: {} - get-port-please@3.2.0: {} - get-stream@9.0.1: dependencies: '@sec-ant/readable-stream': 0.4.1 @@ -10360,12 +9574,6 @@ snapshots: graceful-fs@4.2.11: {} - grammex@3.1.13: {} - - graphmatch@1.1.1: {} - - graphql@16.11.0: {} - h3@2.0.1-rc.20: dependencies: rou3: 0.8.1 @@ -10377,8 +9585,6 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.11.4: {} - hookable@6.1.2: {} html-encoding-sniffer@7.0.0(@noble/hashes@2.4.0): @@ -10387,8 +9593,6 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' - http-status-codes@2.3.0: {} - human-signals@8.0.1: {} import-fresh@3.3.1: @@ -10456,8 +9660,6 @@ snapshots: jju@1.4.0: {} - js-base64@3.9.4: {} - js-tokens@10.0.0: {} js-tokens@4.0.0: {} @@ -10497,8 +9699,6 @@ snapshots: json-schema-traverse@1.0.0: {} - json-with-bigint@3.5.12: {} - json5@2.2.3: {} jsonc-parser@3.3.1: {} @@ -10517,21 +9717,6 @@ snapshots: libsodium@0.8.4: {} - libsql@0.5.29: - dependencies: - '@neon-rs/load': 0.0.4 - detect-libc: 2.0.2 - optionalDependencies: - '@libsql/darwin-arm64': 0.5.29 - '@libsql/darwin-x64': 0.5.29 - '@libsql/linux-arm-gnueabihf': 0.5.29 - '@libsql/linux-arm-musleabihf': 0.5.29 - '@libsql/linux-arm64-gnu': 0.5.29 - '@libsql/linux-arm64-musl': 0.5.29 - '@libsql/linux-x64-gnu': 0.5.29 - '@libsql/linux-x64-musl': 0.5.29 - '@libsql/win32-x64-msvc': 0.5.29 - lightningcss-android-arm64@1.33.0: optional: true @@ -10581,8 +9766,6 @@ snapshots: lightningcss-win32-arm64-msvc: 1.33.0 lightningcss-win32-x64-msvc: 1.33.0 - lilconfig@2.1.0: {} - lines-and-columns@1.2.4: {} lint-staged@17.6.0: @@ -10597,8 +9780,6 @@ snapshots: lodash.camelcase@4.3.0: {} - lodash@4.17.21: {} - long@5.3.2: {} loupe@3.2.1: {} @@ -10640,7 +9821,7 @@ snapshots: braces: 3.0.3 picomatch: 2.3.2 - mime@4.1.0: {} + mime@4.1.2: {} mimic-function@5.0.1: {} @@ -10671,7 +9852,7 @@ snapshots: minipass@7.1.3: {} - modern-tar@0.8.5: {} + modern-tar@0.8.6: {} module-details-from-path@1.0.4: {} @@ -10794,11 +9975,11 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.21.2 '@oxc-resolver/binding-win32-x64-msvc': 11.21.2 - oxc-walker@1.1.1(@oxc-project/types@0.150.0)(oxc-parser@0.150.0)(rolldown@1.2.12): + oxc-walker@1.1.1(@oxc-project/types@0.150.0)(oxc-parser@0.150.0)(rolldown@1.2.13): optionalDependencies: '@oxc-project/types': 0.150.0 oxc-parser: 0.150.0 - rolldown: 1.2.12 + rolldown: 1.2.13 oxlint-tsgolint@7.0.2005: optionalDependencies: @@ -10943,14 +10124,6 @@ snapshots: dependencies: parse-ms: 4.0.0 - promise-limit@2.7.0: {} - - proper-lockfile@4.1.2: - dependencies: - graceful-fs: 4.2.11 - retry: 0.12.0 - signal-exit: 3.0.7 - protobufjs@7.6.6: dependencies: '@protobufjs/aspromise': 1.1.2 @@ -11036,10 +10209,6 @@ snapshots: - '@node-rs/xxhash' - '@opentelemetry/api' - regexp-to-ast@0.5.0: {} - - remeda@2.33.4: {} - require-directory@2.1.1: {} require-from-string@2.0.2: {} @@ -11064,19 +10233,17 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - retry@0.12.0: {} - rimraf@6.1.3: dependencies: glob: 13.0.6 package-json-from-dist: 1.0.1 - rolldown-plugin-dts@0.28.6(patch_hash=c4d02f422daffea3f211c29c3c2b926625c17774e763cc9a3643bf730fe57eba)(oxc-resolver@11.21.2)(rolldown@1.2.12)(typescript@7.0.2): + rolldown-plugin-dts@0.28.6(patch_hash=c4d02f422daffea3f211c29c3c2b926625c17774e763cc9a3643bf730fe57eba)(oxc-resolver@11.21.2)(rolldown@1.2.13)(typescript@7.0.2): dependencies: dts-resolver: 3.0.0(oxc-resolver@11.21.2) get-tsconfig: 5.0.0-beta.6 obug: 3.0.0 - rolldown: 1.2.12 + rolldown: 1.2.13 yuku-ast: 0.10.2 yuku-codegen: 0.10.2 yuku-parser: 0.10.2 @@ -11085,47 +10252,26 @@ snapshots: transitivePeerDependencies: - oxc-resolver - rolldown@1.2.12: + rolldown@1.2.13: dependencies: - '@oxc-project/types': 0.152.0 - '@rolldown/pluginutils': 1.0.1 - optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.12 - '@rolldown/binding-android-arm64': 1.2.12 - '@rolldown/binding-darwin-arm64': 1.2.12 - '@rolldown/binding-darwin-x64': 1.2.12 - '@rolldown/binding-freebsd-x64': 1.2.12 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.12 - '@rolldown/binding-linux-arm64-gnu': 1.2.12 - '@rolldown/binding-linux-arm64-musl': 1.2.12 - '@rolldown/binding-linux-ppc64-gnu': 1.2.12 - '@rolldown/binding-linux-s390x-gnu': 1.2.12 - '@rolldown/binding-linux-x64-gnu': 1.2.12 - '@rolldown/binding-linux-x64-musl': 1.2.12 - '@rolldown/binding-openharmony-arm64': 1.2.12 - '@rolldown/binding-win32-arm64-msvc': 1.2.12 - '@rolldown/binding-win32-x64-msvc': 1.2.12 - - rolldown@1.2.5: - dependencies: - '@oxc-project/types': 0.146.0 + '@oxc-project/types': 0.153.0 '@rolldown/pluginutils': 1.0.1 optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.5 - '@rolldown/binding-android-arm64': 1.2.5 - '@rolldown/binding-darwin-arm64': 1.2.5 - '@rolldown/binding-darwin-x64': 1.2.5 - '@rolldown/binding-freebsd-x64': 1.2.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.5 - '@rolldown/binding-linux-arm64-gnu': 1.2.5 - '@rolldown/binding-linux-arm64-musl': 1.2.5 - '@rolldown/binding-linux-ppc64-gnu': 1.2.5 - '@rolldown/binding-linux-s390x-gnu': 1.2.5 - '@rolldown/binding-linux-x64-gnu': 1.2.5 - '@rolldown/binding-linux-x64-musl': 1.2.5 - '@rolldown/binding-openharmony-arm64': 1.2.5 - '@rolldown/binding-win32-arm64-msvc': 1.2.5 - '@rolldown/binding-win32-x64-msvc': 1.2.5 + '@rolldown/binding-android-arm-eabi': 1.2.13 + '@rolldown/binding-android-arm64': 1.2.13 + '@rolldown/binding-darwin-arm64': 1.2.13 + '@rolldown/binding-darwin-x64': 1.2.13 + '@rolldown/binding-freebsd-x64': 1.2.13 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.13 + '@rolldown/binding-linux-arm64-gnu': 1.2.13 + '@rolldown/binding-linux-arm64-musl': 1.2.13 + '@rolldown/binding-linux-ppc64-gnu': 1.2.13 + '@rolldown/binding-linux-s390x-gnu': 1.2.13 + '@rolldown/binding-linux-x64-gnu': 1.2.13 + '@rolldown/binding-linux-x64-musl': 1.2.13 + '@rolldown/binding-openharmony-arm64': 1.2.13 + '@rolldown/binding-win32-arm64-msvc': 1.2.13 + '@rolldown/binding-win32-x64-msvc': 1.2.13 rou3@0.8.1: {} @@ -11229,8 +10375,6 @@ snapshots: shebang-regex@3.0.0: {} - signal-exit@3.0.7: {} - signal-exit@4.1.0: {} sirv@3.0.2: @@ -11253,10 +10397,6 @@ snapshots: srvx@0.11.22: {} - srvx@1.0.5: {} - - std-env@3.10.0: {} - std-env@4.3.0: {} storybook@10.6.2(@types/react@19.3.0)(prettier@3.9.9)(react@19.3.0): @@ -11393,8 +10533,8 @@ snapshots: import-without-cache: 0.4.1 obug: 2.2.1 picomatch: 4.0.7 - rolldown: 1.2.12 - rolldown-plugin-dts: 0.28.6(patch_hash=c4d02f422daffea3f211c29c3c2b926625c17774e763cc9a3643bf730fe57eba)(oxc-resolver@11.21.2)(rolldown@1.2.12)(typescript@7.0.2) + rolldown: 1.2.13 + rolldown-plugin-dts: 0.28.6(patch_hash=c4d02f422daffea3f211c29c3c2b926625c17774e763cc9a3643bf730fe57eba)(oxc-resolver@11.21.2)(rolldown@1.2.13)(typescript@7.0.2) tinyexec: 1.3.1 tinyglobby: 0.2.17 tree-kill: 1.2.2 @@ -11478,18 +10618,16 @@ snapshots: unicorn-magic@0.3.0: {} - universal-user-agent@7.0.3: {} - universalify@2.0.1: {} - unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.12)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)): + unplugin@3.4.0(esbuild@0.28.2)(rolldown@1.2.13)(vite@8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1)): dependencies: '@jridgewell/remapping': 2.3.5 picomatch: 4.0.7 webpack-virtual-modules: 0.6.2 optionalDependencies: esbuild: 0.28.2 - rolldown: 1.2.12 + rolldown: 1.2.13 vite: 8.3.4(@types/node@24.19.1)(esbuild@0.28.2)(jiti@2.6.1)(yaml@2.9.1) update-browserslist-db@1.3.3(browserslist@4.29.3): @@ -11502,10 +10640,6 @@ snapshots: dependencies: react: 19.3.0 - valibot@1.2.0(typescript@7.0.2): - optionalDependencies: - typescript: 7.0.2 - verkit@0.3.2: {} verkit@0.4.1: {} @@ -11515,7 +10649,7 @@ snapshots: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.31 - rolldown: 1.2.12 + rolldown: 1.2.13 tinyglobby: 0.2.17 optionalDependencies: '@types/node': 24.19.1 @@ -11728,9 +10862,4 @@ snapshots: '@yuku-parser/binding-win32-arm64': 0.10.2 '@yuku-parser/binding-win32-x64': 0.10.2 - zeptomatch@2.1.0: - dependencies: - grammex: 3.1.13 - graphmatch: 1.1.1 - zod@4.6.5: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 527cf9f..31e0500 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,18 +6,19 @@ allowBuilds: sharp: false workerd: true catalog: - "@alchemy.run/frontend-frameworks": 2.0.0-beta.80 + "@alchemy.run/cloudflare": https://pkg.alchemy.run/@alchemy.run/cloudflare/-/d48c0fa92f25f97b8ab3d76fd38d810c2583c34a11e5898ffd46c544abf21630.tgz + "@alchemy.run/github": https://pkg.alchemy.run/@alchemy.run/github/-/a5e3e91478a3df06b3ec7a3d9b5bfb7f162c5dceab108c35c0a9d164d0213092.tgz "@babel/core": 8.0.6 "@cloudflare/vite-plugin": 1.62.5 "@cloudflare/workers-types": 5.20261005.1 "@commitlint/cli": 21.2.3 "@commitlint/config-conventional": 21.2.3 "@commitlint/types": 21.2.3 - "@effect/opentelemetry": 4.0.5 - "@effect/platform-node": 4.0.5 - "@effect/platform-node-shared": 4.0.5 - "@effect/sql-d1": 4.0.5 - "@effect/sql-sqlite-do": 4.0.5 + "@effect/opentelemetry": 4.1.0 + "@effect/platform-node": 4.1.0 + "@effect/platform-node-shared": 4.1.0 + "@effect/sql-d1": 4.1.0 + "@effect/sql-sqlite-do": 4.1.0 "@effect/tsgo": 0.63.0 "@microsoft/api-extractor": 7.59.4 "@rolldown/plugin-babel": 0.2.4 @@ -80,9 +81,9 @@ catalog: "@vitest/browser-playwright": 5.0.5 "@vitest/coverage-istanbul": 5.0.5 "@vitejs/plugin-react": 6.1.2 - alchemy: 2.0.0-beta.80 + alchemy: https://pkg.alchemy.run/alchemy/-/91ebdb8e04073116e85fff74fae5e337f96a3733000b01dcf7354f6fd969995a.tgz babel-plugin-react-compiler: 1.0.0 - effect: 4.0.5 + effect: 4.1.0 fast-check: 4.10.2 lint-staged: 17.6.0 oxlint: ~1.90.0 @@ -118,7 +119,10 @@ catalogs: catalogMode: prefer ignoreScripts: true minimumReleaseAge: 1440 +blockExoticSubdeps: false minimumReleaseAgeExclude: + - alchemy + - "@alchemy.run/*" - effect - "@effect/*" verifyDepsBeforeRun: warn @@ -175,6 +179,7 @@ overrides: "@effect/tsgo": "catalog:" effect: "catalog:" esbuild: ^0.28.2 + rolldown: 1.2.13 rolldown-plugin-dts: 0.28.6 workerd: 1.20261005.1 packages: diff --git a/release.jsonc b/release.jsonc deleted file mode 100644 index 301ea8c..0000000 --- a/release.jsonc +++ /dev/null @@ -1,20 +0,0 @@ -{ - // Consumed by the shared release tooling (systemfsoftware/pnpm-release-management), - // which this repository calls as a reusable workflow instead of carrying its - // own copy. This template models that unified pattern for the repositories - // adopters fork from it. - "base": "main", - "branch": "changeset-release/main", - "versioning": { - // Each workspace package owns its version in its own package.json; the - // changesets libraries bump each package from the pending intents. - "strategy": "changesets", - }, - // Turbo's task graph decides which packages a change touches, so an intent is - // required for exactly the publishable packages a PR actually affects. - "gate": { "strategy": "turbo", "task": "build" }, - "pr": { - "title": "chore(release): version packages", - "body": "Consumes pending `.changeset/` intents.\n\nMerging tags the released versions and creates GitHub Releases.", - }, -} diff --git a/scripts/check-branch-rules.test.ts b/scripts/check-branch-rules.test.ts index 6034699..c65c53b 100644 --- a/scripts/check-branch-rules.test.ts +++ b/scripts/check-branch-rules.test.ts @@ -3,18 +3,7 @@ import { Result } from 'effect' import { branchRulesVerdict, decodeBranchRules, REQUIRED_CHECKS } from './check-branch-rules.ts' -const R22_CHECKS = [ - 'check (format)', - 'check (lint)', - 'check (typecheck)', - 'check (test)', - 'check (dist)', - 'check (sfs-sources)', - 'journeys', - 'lint PR commits', - 'changeset · shared tooling / a publishable-package change needs an intent', - 'rules', -] +const R22_CHECKS = ['check'] const RULESET_SOURCE = { ruleset_source_type: 'Repository', diff --git a/scripts/check-branch-rules.ts b/scripts/check-branch-rules.ts index 5837135..2786457 100755 --- a/scripts/check-branch-rules.ts +++ b/scripts/check-branch-rules.ts @@ -1,18 +1,7 @@ #!/usr/bin/env -S deno run --config=scripts/deno.json --allow-net=api.github.com --allow-env=GITHUB_TOKEN,GITHUB_REPOSITORY import { Result, Schema as S } from 'effect' -export const REQUIRED_CHECKS = [ - 'check (format)', - 'check (lint)', - 'check (typecheck)', - 'check (test)', - 'check (dist)', - 'check (sfs-sources)', - 'journeys', - 'lint PR commits', - 'changeset · shared tooling / a publishable-package change needs an intent', - 'rules', -] as const +export const REQUIRED_CHECKS = ['check'] as const const StatusChecksRule = S.Struct({ type: S.Literal('required_status_checks'), diff --git a/scripts/mutation-shards.test.ts b/scripts/mutation-shards.test.ts deleted file mode 100644 index 8a9167f..0000000 --- a/scripts/mutation-shards.test.ts +++ /dev/null @@ -1,155 +0,0 @@ -import { assertEquals } from '@std/assert' -import { dirname, join } from '@std/path' - -import { planMutationShards } from './mutation-shards.ts' - -type PackageFixture = { - readonly name: string - readonly mutation?: string | false - readonly mutate?: string[] - readonly files: string[] -} - -const workspaceOf = async (packages: PackageFixture[]): Promise => { - const root = await Deno.makeTempDir({ prefix: 'mutation-shards-' }) - await Deno.writeTextFile(join(root, 'pnpm-workspace.yaml'), 'packages:\n - packages/*\n') - for (const fixture of packages) { - const dir = join(root, 'packages', fixture.name) - await Deno.mkdir(dir, { recursive: true }) - const stryker = fixture.mutate === undefined ? {} : { stryker: { mutate: fixture.mutate } } - const scripts = fixture.mutation === false ? {} : { scripts: { mutation: fixture.mutation ?? 'stryker run' } } - await Deno.writeTextFile( - join(dir, 'package.json'), - JSON.stringify({ name: `@fixture/${fixture.name}`, ...scripts, ...stryker }), - ) - for (const file of fixture.files) { - await Deno.mkdir(dirname(join(dir, file)), { recursive: true }) - await Deno.writeTextFile(join(dir, file), 'export {}\n') - } - } - return root -} - -Deno.test('a shard mutates exactly the package workflow files, never tests, other source or dependencies', async () => { - const root = await workspaceOf([{ - name: 'core', - files: [ - 'src/order.workflow.ts', - 'src/billing/invoice.workflow.ts', - 'src/order.test.ts', - 'src/__tests__/order.workflow.property.test.ts', - 'src/page.tsx', - 'src/order.schema.ts', - 'node_modules/dep/x.workflow.ts', - '.stryker-tmp/sandbox-1/src/order.workflow.ts', - ], - }]) - assertEquals(await planMutationShards(root), { - shards: [{ package: '@fixture/core', mutate: ['src/billing/invoice.workflow.ts', 'src/order.workflow.ts'] }], - refusals: [], - }) -}) - -Deno.test('a package that widens its own mutated set is refused', async () => { - const root = await workspaceOf([{ name: 'core', mutate: ['src/**/*.ts'], files: ['src/order.workflow.ts'] }]) - assertEquals((await planMutationShards(root)).refusals, [ - { _tag: 'OwnMutate', dir: 'packages/core', mutate: ['src/**/*.ts'] }, - ]) -}) - -Deno.test('a package that points its mutated set at test files is refused', async () => { - const root = await workspaceOf([{ - name: 'core', - mutate: ['src/**/*.test.ts'], - files: ['src/order.workflow.ts', 'src/order.test.ts'], - }]) - assertEquals((await planMutationShards(root)).refusals, [ - { _tag: 'OwnMutate', dir: 'packages/core', mutate: ['src/**/*.test.ts'] }, - ]) -}) - -Deno.test('a package that sets its own mutated set without a mutation script is still refused', async () => { - const root = await workspaceOf([ - { name: 'core', files: ['src/order.workflow.ts'] }, - { name: 'tools', mutation: false, mutate: ['src/**/*.ts'], files: ['src/cli.ts'] }, - ]) - assertEquals((await planMutationShards(root)).refusals, [ - { _tag: 'OwnMutate', dir: 'packages/tools', mutate: ['src/**/*.ts'] }, - ]) -}) - -Deno.test('a mutation script that passes its own files to stryker is refused', async () => { - const root = await workspaceOf([{ - name: 'core', - mutation: 'stryker run -m src/**/*.ts', - files: ['src/order.workflow.ts'], - }]) - assertEquals(await planMutationShards(root), { - shards: [], - refusals: [{ - _tag: 'MutationScriptNotStrykerRun', - dir: 'packages/core', - script: 'stryker run -m src/**/*.ts', - }], - }) -}) - -Deno.test('a mutating package without a workflow file is refused by name', async () => { - const root = await workspaceOf([ - { name: 'core', files: ['src/order.workflow.ts'] }, - { name: 'site', files: ['src/page.tsx'] }, - ]) - assertEquals(await planMutationShards(root), { - shards: [{ package: '@fixture/core', mutate: ['src/order.workflow.ts'] }], - refusals: [{ _tag: 'NoWorkflowFiles', dir: 'packages/site' }], - }) -}) - -Deno.test('a workspace without a single *.workflow.ts file is refused as an empty set', async () => { - const root = await workspaceOf([ - { name: 'site', files: ['src/page.tsx'] }, - { name: 'tools', mutation: false, files: ['src/cli.ts'] }, - ]) - assertEquals(await planMutationShards(root), { shards: [], refusals: [{ _tag: 'NoWorkflowFilesInWorkspace' }] }) -}) - -Deno.test('workflow files in a package without a mutation script are refused by package', async () => { - const root = await workspaceOf([ - { name: 'core', files: ['src/order.workflow.ts'] }, - { name: 'billing', mutation: false, files: ['src/invoice.workflow.ts', 'src/refund.workflow.ts'] }, - ]) - assertEquals(await planMutationShards(root), { - shards: [{ package: '@fixture/core', mutate: ['src/order.workflow.ts'] }], - refusals: [{ _tag: 'WorkflowFilesNotMutated', dir: 'packages/billing', workflows: 2 }], - }) -}) - -Deno.test('decisions that no package mutates are refused', async () => { - const root = await workspaceOf([{ name: 'core', mutation: false, files: ['src/order.workflow.ts'] }]) - assertEquals(await planMutationShards(root), { - shards: [], - refusals: [{ _tag: 'WorkflowFilesNotMutated', dir: 'packages/core', workflows: 1 }], - }) -}) - -Deno.test('a workflow copy in a directory Stryker ignores is not planned', async () => { - const root = await workspaceOf([{ name: 'core', files: ['src/order.workflow.ts', 'dist/order.workflow.ts'] }]) - assertEquals(await planMutationShards(root), { - shards: [{ package: '@fixture/core', mutate: ['src/order.workflow.ts'] }], - refusals: [], - }) -}) - -Deno.test('a workflow path the comma-joined --mutate list would split or expand is refused by name', async () => { - const root = await workspaceOf([{ - name: 'core', - files: ['src/order.workflow.ts', 'src/a,b.workflow.ts', 'src/page[1].workflow.ts'], - }]) - assertEquals(await planMutationShards(root), { - shards: [], - refusals: [ - { _tag: 'UnsafeWorkflowPath', dir: 'packages/core', path: 'src/a,b.workflow.ts' }, - { _tag: 'UnsafeWorkflowPath', dir: 'packages/core', path: 'src/page[1].workflow.ts' }, - ], - }) -}) diff --git a/scripts/mutation-shards.ts b/scripts/mutation-shards.ts deleted file mode 100755 index c14daf9..0000000 --- a/scripts/mutation-shards.ts +++ /dev/null @@ -1,110 +0,0 @@ -#!/usr/bin/env -S deno run --config=scripts/deno.json --allow-read --allow-write --allow-import=jsr.io - -import { parseArgs } from '@std/cli/parse-args' -import { expandGlob } from '@std/fs/expand-glob' -import { dirname, join, relative } from '@std/path' -import { parse } from '@std/yaml' - -import { packageStrykerConfig, WORKFLOW_FILES } from '../stryker.shared.ts' - -type Manifest = { name?: string; scripts?: Record; stryker?: { mutate?: unknown } } - -export type Shard = { readonly package: string; readonly mutate: string[] } - -export type Refusal = - | { readonly _tag: 'OwnMutate'; readonly dir: string; readonly mutate: unknown } - | { readonly _tag: 'MutationScriptNotStrykerRun'; readonly dir: string; readonly script: string } - | { readonly _tag: 'NoWorkflowFiles'; readonly dir: string } - | { readonly _tag: 'WorkflowFilesNotMutated'; readonly dir: string; readonly workflows: number } - | { readonly _tag: 'UnsafeWorkflowPath'; readonly dir: string; readonly path: string } - | { readonly _tag: 'NoWorkflowFilesInWorkspace' } - -export type ShardPlan = { readonly shards: Shard[]; readonly refusals: Refusal[] } - -const STRYKER_RUN = 'stryker run' - -const UNSAFE_PATH = /[,*?[\]{}()!\\]/ - -const IGNORED_DIRS = [...(packageStrykerConfig.ignorePatterns ?? []), 'node_modules', '.stryker-tmp'] - -export const describeRefusal = (refusal: Refusal): string => { - switch (refusal._tag) { - case 'OwnMutate': - return `${refusal.dir}: sets its own stryker.mutate ${ - JSON.stringify(refusal.mutate) - }; the release gate mutates exactly the package's ${WORKFLOW_FILES} files` - case 'MutationScriptNotStrykerRun': - return `${refusal.dir}: the mutation script is ${ - JSON.stringify(refusal.script) - }, not exactly "${STRYKER_RUN}"; the release gate passes the mutated files itself` - case 'NoWorkflowFiles': - return `${refusal.dir}: declares a mutation script but has no ${WORKFLOW_FILES} file` - case 'WorkflowFilesNotMutated': - return `${refusal.dir}: has ${refusal.workflows} ${WORKFLOW_FILES} file(s) but no package name or \`mutation\` script to mutate them` - case 'UnsafeWorkflowPath': - return `${refusal.dir}: ${ - JSON.stringify(refusal.path) - } holds a comma or glob metacharacter, so the --mutate list would split or expand it; rename the file` - case 'NoWorkflowFilesInWorkspace': - return `no workspace package has a ${WORKFLOW_FILES} file; the release gate refuses an empty set` - } -} - -const workflowFilesOf = async (dir: string): Promise => { - const files: string[] = [] - const walk = expandGlob(WORKFLOW_FILES, { - root: dir, - exclude: IGNORED_DIRS.map((ignored) => `**/${ignored}/**`), - includeDirs: false, - }) - for await (const entry of walk) files.push(relative(dir, entry.path)) - return files.sort() -} - -export const planMutationShards = async (root: string): Promise => { - const workspace = parse(await Deno.readTextFile(join(root, 'pnpm-workspace.yaml'))) as { packages?: string[] } - const shards: Shard[] = [] - const refusals: Refusal[] = [] - let workflows = 0 - for (const glob of workspace.packages ?? []) { - for await (const entry of expandGlob(join(glob, 'package.json'), { root, exclude: ['**/node_modules/**'] })) { - const packageDir = dirname(entry.path) - const dir = relative(root, packageDir) - const files = await workflowFilesOf(packageDir) - workflows += files.length - const manifest = JSON.parse(await Deno.readTextFile(entry.path)) as Manifest - if (manifest.stryker?.mutate !== undefined) { - refusals.push({ _tag: 'OwnMutate', dir, mutate: manifest.stryker.mutate }) - } - const script = manifest.scripts?.mutation - if (manifest.name === undefined || script === undefined) { - if (files.length > 0) refusals.push({ _tag: 'WorkflowFilesNotMutated', dir, workflows: files.length }) - } else if (script !== STRYKER_RUN) { - refusals.push({ _tag: 'MutationScriptNotStrykerRun', dir, script }) - } else if (files.length === 0) { - refusals.push({ _tag: 'NoWorkflowFiles', dir }) - } else if (files.some((path) => UNSAFE_PATH.test(path))) { - for (const path of files.filter((path) => UNSAFE_PATH.test(path))) { - refusals.push({ _tag: 'UnsafeWorkflowPath', dir, path }) - } - } else { - shards.push({ package: manifest.name, mutate: files }) - } - } - } - if (workflows === 0) return { shards: [], refusals: [{ _tag: 'NoWorkflowFilesInWorkspace' }] } - return { shards: shards.sort((a, b) => a.package.localeCompare(b.package)), refusals } -} - -if (import.meta.main) { - const { output, root = '.' } = parseArgs(Deno.args, { string: ['output', 'root'] }) - const plan = await planMutationShards(root) - if (plan.refusals.length > 0) { - for (const refusal of plan.refusals) console.error(`mutation-shards: ${describeRefusal(refusal)}`) - Deno.exit(1) - } - const line = `shards=${JSON.stringify(plan.shards)}` - console.error(`mutation-shards: ${line}`) - if (output) await Deno.writeTextFile(output, `${line}\n`, { append: true }) - else console.log(line) -} diff --git a/turbo.json b/turbo.json index 1c70a3d..a21a528 100644 --- a/turbo.json +++ b/turbo.json @@ -1,6 +1,17 @@ { "$schema": "https://v2-11-7.turborepo.dev/schema.json", "agentGuidance": false, + "globalDependencies": [ + "oxlint.shared.ts", + "stryker.shared.ts", + "tsconfig.base.json", + "tsconfig.node.json", + "commitlint.config.ts", + ".lintstagedrc.js", + "flake.nix", + "flake.lock", + "scripts/**" + ], "globalPassThroughEnv": [ "XDG_CACHE_HOME", "SANDBOX", @@ -55,7 +66,8 @@ "dependsOn": [ "^build", "build", - "generate" + "generate", + "//#typecheck:node" ], "cache": true }, @@ -82,6 +94,21 @@ "outputs": [], "cache": true }, + "//#format:check": { + "outputLogs": "errors-only", + "inputs": [ + "$TURBO_DEFAULT$", + "$TURBO_ROOT$/dprint.json", + "$TURBO_ROOT$/**/*.{ts,tsx,js,jsx,mjs,cjs,json,jsonc,md,toml,yaml,yml}", + "!$TURBO_ROOT$/**/node_modules/**", + "!$TURBO_ROOT$/**/dist/**", + "!$TURBO_ROOT$/coverage/**", + "!$TURBO_ROOT$/reports/**", + "!$TURBO_ROOT$/repos/**" + ], + "outputs": [], + "cache": true + }, "//#lint:suppressions": { "outputLogs": "errors-only", "cache": false @@ -100,7 +127,8 @@ "outputLogs": "new-only", "dependsOn": [ "^build", - "build" + "build", + "//#test:scripts" ], "outputs": [ "coverage/**" @@ -205,7 +233,9 @@ "dependsOn": [ "^build", "build", - "generate" + "generate", + "//#lint:suppressions", + "//#format:check" ], "env": [ "NODE_ENV", From 7515131b3e0d25a891bab319c19880b268ec7ea3 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 12:13:42 +0000 Subject: [PATCH 2/7] fix(ci): require only the check context in the Mergify queue (SYS-900) The queue conditions still named the ten contexts the old workflows reported (check (format), journeys, rules, lint PR commits, changeset ...). After the two-workflow cutover none of them reports, so Mergify would never queue a PR. Both queue_conditions and merge_conditions now require check-success = check, the one context the ruleset requires; the other conditions are unchanged. --- .mergify.yml | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/.mergify.yml b/.mergify.yml index 563ee81..177cb93 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -10,27 +10,9 @@ queue_rules: - -label = hold - "approved-reviews-by = kiro-systemf[bot]" - "#changes-requested-reviews-by = 0" - - check-success = check (format) - - check-success = check (lint) - - check-success = check (typecheck) - - check-success = check (test) - - check-success = check (dist) - - check-success = check (sfs-sources) - - check-success = journeys - - check-success = rules - - check-success = lint PR commits - - check-success = changeset · shared tooling + - check-success = check merge_conditions: - - check-success = check (format) - - check-success = check (lint) - - check-success = check (typecheck) - - check-success = check (test) - - check-success = check (dist) - - check-success = check (sfs-sources) - - check-success = journeys - - check-success = rules - - check-success = lint PR commits - - check-success = changeset · shared tooling + - check-success = check pull_request_rules: - name: queue when ready From 43ffd89447c245aaea3222c3da0a0387c9ee2f05 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 12:15:53 +0000 Subject: [PATCH 3/7] fix(ci): keep the release wiring for the four published packages (SYS-900) frontend publishes @systemfsoftware/effect-atom, effect-atom-react, storybook-gherkin and oxlint-config-frontend, so the release flow stays. - restore .changeset/ (README, ledger and the seven pending intents), release.jsonc and commitlint.config.ts exactly as on main - restore release.yml with one line changed: ci-workflow is now check.yml, because ci.yml is gone and the release flow dispatches that workflow on the release PR branch (check.yml has workflow_dispatch) - fold the change-intent gate into check.yml as a PR step that runs the devShell's changeset-management; a reusable workflow cannot be a step, and the release flow only needs the gate on pull requests. It skips the release PR branch, as the reusable workflow did, so changeset-check.yml stays deleted and the required context stays `check` alone - restore the Changesets row in the README toolchain table - AGENTS.md CI line now names three workflows --- .changeset/README.md | 27 ++++++++++++++++++++ .changeset/effect-4-0-1-floor.md | 7 +++++ .changeset/effect-4-0-5-peer-floor.md | 11 ++++++++ .changeset/full-version-dependency-ranges.md | 7 +++++ .changeset/funny-goats-repeat.md | 7 +++++ .changeset/hungry-doors-stare.md | 5 ++++ .changeset/ledger.yaml | 1 + .changeset/loose-moons-assert.md | 9 +++++++ .changeset/quiet-hooks-subscribe.md | 12 +++++++++ .changeset/tsgo-0-63-brands.md | 8 ++++++ .github/workflows/check.yml | 5 ++++ .github/workflows/release.yml | 25 ++++++++++++++++++ AGENTS.md | 2 +- README.md | 1 + commitlint.config.ts | 6 ++--- release.jsonc | 20 +++++++++++++++ 16 files changed, 149 insertions(+), 4 deletions(-) create mode 100644 .changeset/README.md create mode 100644 .changeset/effect-4-0-1-floor.md create mode 100644 .changeset/effect-4-0-5-peer-floor.md create mode 100644 .changeset/full-version-dependency-ranges.md create mode 100644 .changeset/funny-goats-repeat.md create mode 100644 .changeset/hungry-doors-stare.md create mode 100644 .changeset/ledger.yaml create mode 100644 .changeset/loose-moons-assert.md create mode 100644 .changeset/quiet-hooks-subscribe.md create mode 100644 .changeset/tsgo-0-63-brands.md create mode 100644 .github/workflows/release.yml create mode 100644 release.jsonc diff --git a/.changeset/README.md b/.changeset/README.md new file mode 100644 index 0000000..df1fbb0 --- /dev/null +++ b/.changeset/README.md @@ -0,0 +1,27 @@ +# Changesets + +This directory holds change-intent files consumed by pnpm-native workspace +versioning (`pnpm version -r`). One file per change, authored with: + +``` +pnpm change --bump --summary "" [...] +``` + +- A PR that changes anything under an application or package path MUST ship with + an intent here. Root tooling is outside the verdict. +- `--bump none` records a change that needs no release. A `none` on a + behavior-visible change is the same silent non-release the gate exists to + catch. +- Intents are consumed by `pnpm version -r` when the Release PR + lands: consumption is recorded in `ledger.yaml` and the intent files + are retained, so a present intent alone never implies a pending release. +- This README is NOT a changeset: the gate requires a file whose frontmatter + parses as `"": `. + +Releasing is handled by the shared release tooling in +`systemfsoftware/pnpm-release-management`, which this repository calls as a +reusable workflow (`.github/workflows/release.yml`) rather than carrying its own +copy; `release.jsonc` configures it. There is no registry publish: when the +Release PR lands, each released version is tagged `@vX.Y.Z` and its GitHub +Release is cut from the authored changelog. Consumers depend on packages as Nix +flake outputs pinned from git refs, so the tag is the release record. diff --git a/.changeset/effect-4-0-1-floor.md b/.changeset/effect-4-0-1-floor.md new file mode 100644 index 0000000..bbb3687 --- /dev/null +++ b/.changeset/effect-4-0-1-floor.md @@ -0,0 +1,7 @@ +--- +"@systemfsoftware/effect-atom": patch +"@systemfsoftware/effect-atom-react": patch +"@systemfsoftware/storybook-gherkin": patch +--- + +The published `effect` and `@effect/*` dependency ranges now start at 4.0.1 (`^4.0.1`, was `^4`), so a consumer resolves at least Effect 4.0.1. `@systemfsoftware/discern` also bundles `@effect/platform-node` and `@effect/platform-node-shared` 4.0.1 instead of 4.0.0. diff --git a/.changeset/effect-4-0-5-peer-floor.md b/.changeset/effect-4-0-5-peer-floor.md new file mode 100644 index 0000000..327503d --- /dev/null +++ b/.changeset/effect-4-0-5-peer-floor.md @@ -0,0 +1,11 @@ +--- +"@systemfsoftware/effect-atom-react": patch +"@systemfsoftware/effect-atom": patch +"@systemfsoftware/storybook-gherkin": patch +--- + +The Effect dependency now resolves to 4.0.5, and so does every `@effect/*` package installed with it. + +- Effect 4.0.5 requires `effect@^4.0.5` as a peer, so a tree mixing 4.0.5 with an earlier 4.0.x fails at import, not at install. Install the versions your tree's `@effect/*` packages name. +- `FileSystem.File.Info` reports `dev`, `ino`, `rdev`, `nlink` and `blocks` as `bigint` where it reported `number`. Convert at your own boundary with `BigInt` or `Number`. +- A decision's `instructions` and its classify and probability `criteria` accept a JSON object or array as well as a string, and a rating's `criteria` are `{ label, description }` entries rather than bare labels. Read a level's `label`, not the entry. diff --git a/.changeset/full-version-dependency-ranges.md b/.changeset/full-version-dependency-ranges.md new file mode 100644 index 0000000..252d60c --- /dev/null +++ b/.changeset/full-version-dependency-ranges.md @@ -0,0 +1,7 @@ +--- +"@systemfsoftware/effect-atom": patch +"@systemfsoftware/effect-atom-react": patch +"@systemfsoftware/storybook-gherkin": patch +--- + +Published dependency ranges now name a full version: `vitest`, `@vitest/*` and `@types/node` ranges start at 5.0.1 and 26.6.2 (were `^5` and `^26`), `typescript` at 7.0.2 (was `^7`) and `playwright` at 1.63.0 (was `^1`). The `vitest` peer dependency of `@systemfsoftware/effect-gherkin-spec`, `@systemfsoftware/effect-schema-law`, `@systemfsoftware/effect-schema-vite`, `@systemfsoftware/effect-spec-runtime`, `@systemfsoftware/storybook-gherkin`, `@systemfsoftware/trace-spec`, `@systemfsoftware/vitest` and `@systemfsoftware/vitest-config` is now `^5.0.1`, so a consumer needs at least Vitest 5.0.1. `@systemfsoftware/trace-spec` depends on `@opentelemetry/semantic-conventions` `^1.43.0` (was `^1.33`). diff --git a/.changeset/funny-goats-repeat.md b/.changeset/funny-goats-repeat.md new file mode 100644 index 0000000..ffb8a76 --- /dev/null +++ b/.changeset/funny-goats-repeat.md @@ -0,0 +1,7 @@ +--- +"@systemfsoftware/effect-atom": patch +"@systemfsoftware/effect-atom-react": patch +"@systemfsoftware/storybook-gherkin": patch +--- + +The packed `devDependencies` range on `@systemfsoftware/oxlint-config-recommended` moves to its new major. diff --git a/.changeset/hungry-doors-stare.md b/.changeset/hungry-doors-stare.md new file mode 100644 index 0000000..3037bde --- /dev/null +++ b/.changeset/hungry-doors-stare.md @@ -0,0 +1,5 @@ +--- +"@systemfsoftware/oxlint-config-frontend": patch +--- + +The frontend oxlint preset moved into the frontend repository with its rules unchanged. diff --git a/.changeset/ledger.yaml b/.changeset/ledger.yaml new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/.changeset/ledger.yaml @@ -0,0 +1 @@ +{} diff --git a/.changeset/loose-moons-assert.md b/.changeset/loose-moons-assert.md new file mode 100644 index 0000000..a6c4da3 --- /dev/null +++ b/.changeset/loose-moons-assert.md @@ -0,0 +1,9 @@ +--- +"@systemfsoftware/storybook-gherkin": minor +--- + +Step contexts now carry `expect`: the assertions of whichever runner the play runs in. + +Under Storybook it stays `storybook/test`'s `expect`. In vitest browser mode (through `@storybook/addon-vitest`) it is vitest's own `expect`, so a step handler can reach the matchers only vitest has — `toMatchScreenshot`, `toMatchAriaInlineSnapshot`, `toMatchTextContent` — as `await ctx.expect(locator).toMatchAriaInlineSnapshot(…)`, without importing `vitest` where a project bans that import. + +The assertions are promise-shaped: `await` them. `vitest` is an optional peer dependency. diff --git a/.changeset/quiet-hooks-subscribe.md b/.changeset/quiet-hooks-subscribe.md new file mode 100644 index 0000000..b5c6635 --- /dev/null +++ b/.changeset/quiet-hooks-subscribe.md @@ -0,0 +1,12 @@ +--- +"@systemfsoftware/effect-atom-react": major +--- + +The code that mounts the app owns the registry; the binding never creates one or writes registry state during render. Call `Atom.Hydration.hydrate(registry, state)` before the first render, while the atoms the state names have not been read yet: hydration assigns each named atom its saved value and replaces a value the registry already holds. + +- `RegistryProvider` requires a `registry`. Make it with `Atom.Registry.make({ initialValues, scheduleTask: AtomReact.scheduleTask })` before the first render and dispose it at teardown. +- `HydrationBoundary` is removed: call `Atom.Hydration.hydrate(registry, state)` before `hydrateRoot`. +- `useAtomInitialValues` and `AnyInitialValue` are removed: pass `initialValues` to `Atom.Registry.make`. +- `useAtomSubscribe` is removed: use `Atom.Registry.subscribe` in a scoped Effect. + +An island makes its registry at module scope; a Storybook story makes it in its loader and disposes it in `beforeEach`'s cleanup. diff --git a/.changeset/tsgo-0-63-brands.md b/.changeset/tsgo-0-63-brands.md new file mode 100644 index 0000000..1d189d7 --- /dev/null +++ b/.changeset/tsgo-0-63-brands.md @@ -0,0 +1,8 @@ +--- +"@systemfsoftware/effect-atom-react": patch +"@systemfsoftware/effect-atom": patch +"@systemfsoftware/storybook-gherkin": minor +--- + +- `DuplicateCapture` carries its capture name in `capture` and `OutlineDuplicateRowName` carries its row name in `rowName`, where both carried it in `name`. A `name` payload field shadows the error's own `name`, so logs showed the field value instead of the error type. Read `capture` or `rowName`. +- Every `Schema.Class`, `TaggedClass` and `TaggedError` the packages export is branded, so two classes with the same shape are no longer assignable to each other. diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index b522e63..526240a 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -50,3 +50,8 @@ jobs: BASE_SHA: ${{ github.event.pull_request.base.sha }} HEAD_SHA: ${{ github.event.pull_request.head.sha }} run: nix develop --command sandbox -- pnpm exec commitlint --from "$BASE_SHA" --to "$HEAD_SHA" --verbose + - name: Require a change intent for every publishable-package change + if: github.event_name == 'pull_request' && github.head_ref != 'changeset-release/main' + env: + BASE_SHA: ${{ github.event.pull_request.base.sha }} + run: nix develop --command changeset-management check "$BASE_SHA" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..05f9e7c --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,25 @@ +name: Release + +on: + push: + branches: [main] + +concurrency: + group: release-${{ github.ref }} + cancel-in-progress: false + +permissions: + contents: write + pull-requests: write + actions: write + +jobs: + release: + name: release · shared tooling + uses: systemfsoftware/pnpm-release-management/.github/workflows/release.yml@main + with: + ci-workflow: check.yml + permissions: + contents: write + pull-requests: write + actions: write diff --git a/AGENTS.md b/AGENTS.md index 9cd7ed9..dca7d81 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -31,7 +31,7 @@ applications — both are workspace globs in `pnpm-workspace.yaml`. Turbo declar - This repo is a template and holds no credentials; CI proves everything locally. Gate: review of the workflow diff; a job that needs a secret carries `if: ${{ !github.event.repository.is_template }}`. - Every job runs on GitHub-hosted `ubuntu-latest` runners. This repository is public, and the org's self-hosted fleet runner group admits only private repositories (fork safety), so a `[self-hosted, systemfsoftware-runner, *]` job here queues forever. Gate: review of the workflow diff. - Cloudflare credentials enter a sandbox only through `bin/cloud` (deploy, destroy, state reads). Gate: review of the workflow diff — wrong: `sandbox --pass-env CLOUDFLARE_API_TOKEN -- pnpm --filter @endgame/site exec alchemy deploy`; right: `./bin/cloud pnpm --filter @endgame/site exec alchemy deploy`. -- CI is two workflows: `check.yml` (one `check` job: `turbo run format:check lint typecheck test --affected` plus commitlint over the PR range) and `deploy.yml` (a `deploy` and a `cleanup` job, dormant until the repository variable `ALCHEMY_DEPLOY` is `true`); mutation is an on-demand package script and never gates a deploy. Gate: review of the workflow diff. +- CI is three workflows: `check.yml` (one `check` job: `turbo run format:check lint typecheck test --affected`, commitlint over the PR range, and the change-intent gate on PRs), `deploy.yml` (a `deploy` and a `cleanup` job, dormant until the repository variable `ALCHEMY_DEPLOY` is `true`) and `release.yml` (the shared release tooling that versions and tags the four published packages, dispatching `check.yml` on the release PR); mutation is an on-demand package script and never gates a deploy. Gate: review of the workflow diff. ## End of Session diff --git a/README.md b/README.md index 58efeff..3f474b6 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,7 @@ read (impure) ──► decode (pure) ──► decide (pure) ──► shape (p | 🎨 **dprint** | Fast, deterministic code and markdown formatting (`dprint.json`) | | 🧪 **Vitest** | Fast unit and integration test runner with TypeScript support | | 🔬 **Stryker** | Mutation testing ensuring tests fail when bugs are introduced | +| 📝 **Changesets** | Automated versioning and changelogs, released as git tags via shared tooling | | 🪝 **Husky & Commitlint** | Git hooks enforcing conventional commit standards | | 🌳 **Worktrunk Scripts** | Deno-powered git worktree lifecycle hooks for isolated agent work | diff --git a/commitlint.config.ts b/commitlint.config.ts index c2a5bd4..e782640 100644 --- a/commitlint.config.ts +++ b/commitlint.config.ts @@ -4,8 +4,8 @@ import type { UserConfig } from '@commitlint/types' * systemfsoftware shared commitlint config. * * Design rule: a rule is `error` (2) ONLY if a wrong value has real downstream - * impact in THIS org. Releases are plain `main` deploys, NOT commit messages, - * so scope / punctuation / type-vs-diff have ZERO release impact and + * impact in THIS org. Releases run on changesets (.changeset/*.md), NOT commit + * messages, so scope / punctuation / type-vs-diff have ZERO release impact and * must never fail a commit. The one message policy that matters is the * AI-coauthor ban. */ @@ -59,7 +59,7 @@ const configuration: UserConfig = { // The one policy that matters. 'no-ai-coauthors': [2, 'always'], - // Type: tidy log/PR grouping only (releases are plain `main` deploys). + // Type: tidy log/PR grouping only (releases run on changesets). 'type-empty': [2, 'never'], 'type-case': [2, 'always', 'lower-case'], 'type-enum': [ diff --git a/release.jsonc b/release.jsonc new file mode 100644 index 0000000..301ea8c --- /dev/null +++ b/release.jsonc @@ -0,0 +1,20 @@ +{ + // Consumed by the shared release tooling (systemfsoftware/pnpm-release-management), + // which this repository calls as a reusable workflow instead of carrying its + // own copy. This template models that unified pattern for the repositories + // adopters fork from it. + "base": "main", + "branch": "changeset-release/main", + "versioning": { + // Each workspace package owns its version in its own package.json; the + // changesets libraries bump each package from the pending intents. + "strategy": "changesets", + }, + // Turbo's task graph decides which packages a change touches, so an intent is + // required for exactly the publishable packages a PR actually affects. + "gate": { "strategy": "turbo", "task": "build" }, + "pr": { + "title": "chore(release): version packages", + "body": "Consumes pending `.changeset/` intents.\n\nMerging tags the released versions and creates GitHub Releases.", + }, +} From 21de9f68051666168c8b653f0f28d1cd4961d9a3 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 13:38:43 +0000 Subject: [PATCH 4/7] fix(release): add the effect 4.1.0 intent and unstate the 4.0.5 floor (SYS-900) The 4.1.0 bump changes what the four published packages resolve against, so they get one change intent at patch, the bump the policy gives a dependency floor raise. The published peer range on effect stays ^4, and the intent says so; effect-atom's entry names the pull-atoms-keep-the-longest-batch fix. effect-4-0-5-peer-floor.md's opening line claimed Effect now resolves to 4.0.5, which this bump makes false; it now states it in the past tense. Its intent is untouched. --- .changeset/effect-4-0-5-peer-floor.md | 2 +- .changeset/effect-4-1-0-resolved.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 .changeset/effect-4-1-0-resolved.md diff --git a/.changeset/effect-4-0-5-peer-floor.md b/.changeset/effect-4-0-5-peer-floor.md index 327503d..0c4806a 100644 --- a/.changeset/effect-4-0-5-peer-floor.md +++ b/.changeset/effect-4-0-5-peer-floor.md @@ -4,7 +4,7 @@ "@systemfsoftware/storybook-gherkin": patch --- -The Effect dependency now resolves to 4.0.5, and so does every `@effect/*` package installed with it. +The Effect dependency resolved to 4.0.5, and so did every `@effect/*` package installed with it. - Effect 4.0.5 requires `effect@^4.0.5` as a peer, so a tree mixing 4.0.5 with an earlier 4.0.x fails at import, not at install. Install the versions your tree's `@effect/*` packages name. - `FileSystem.File.Info` reports `dev`, `ino`, `rdev`, `nlink` and `blocks` as `bigint` where it reported `number`. Convert at your own boundary with `BigInt` or `Number`. diff --git a/.changeset/effect-4-1-0-resolved.md b/.changeset/effect-4-1-0-resolved.md new file mode 100644 index 0000000..214322e --- /dev/null +++ b/.changeset/effect-4-1-0-resolved.md @@ -0,0 +1,10 @@ +--- +"@systemfsoftware/effect-atom": patch +"@systemfsoftware/effect-atom-react": patch +"@systemfsoftware/storybook-gherkin": patch +"@systemfsoftware/oxlint-config-frontend": patch +--- + +These packages are now verified against effect 4.1.0. The published peer range on `effect` stays `^4`, so no install requirement changes. + +A pull atom in `@systemfsoftware/effect-atom` now keeps the longest batch it has delivered: when two concurrent pulls finish out of order, the atom no longer drops back to the shorter batch. From 5608b7746c4b9d4784022ce4278236187d52de91 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 15:00:42 +0000 Subject: [PATCH 5/7] fix(ci): declare the gate replacement and keep the publishing checks (SYS-900) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CONST-W3 declaration. This PR replaces the grading instrument it is graded by: the gates ruleset's required status checks go from the ten contexts of the old six-workflow tree (check (format), check (lint), check (typecheck), check (test), check (dist), check (sfs-sources), journeys, rules, lint PR commits, changeset · shared tooling) to the single context `check` of the new two-workflow tree. The authority is the owner's SYS-900 order, relayed by the lead on 2026-10-30 03:41Z, which orders the starter's shape onto this repo; the owner's review rules re-affirm it. The ruleset change on GitHub is applied by the lead, not by this branch: PUT .github/rulesets/gates.json to the installed `gates` ruleset (id 25612455) so it requires only `check`, before merging. - turbo typecheck now depends on test:types, so the owner's single command keeps running the type-level tests; lint already ran lint:tsgo and that wiring is unchanged - release.yml gains a types job running pnpm attw (the published type shape of all four packages) before the shared release job, which now needs it; attw guards the publish, not the pull request, so it is not in check - README section 5 documents updating an installed ruleset by PUT to its id and pnpm check:branch-rules, instead of only creating one --- .github/workflows/release.yml | 19 +++++++++++++++++++ README.md | 2 ++ turbo.json | 3 ++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 05f9e7c..65251bc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,8 +14,27 @@ permissions: actions: write jobs: + types: + name: types · attw + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - uses: actions/checkout@v7 + with: + persist-credentials: false + - uses: cachix/install-nix-action@v31 + - name: Lift the ubuntu-24.04 AppArmor block on user namespaces + run: sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 + - name: Create the sandbox's output directory + run: mkdir -p .cache + - name: Install through the sandbox, offline from the Nix pnpm store + run: nix develop --command pnpm bootstrap + - name: Check the published type shape of every publishable package + run: nix develop --command pnpm attw + release: name: release · shared tooling + needs: types uses: systemfsoftware/pnpm-release-management/.github/workflows/release.yml@main with: ci-workflow: check.yml diff --git a/README.md b/README.md index 3f474b6..82bc4f3 100644 --- a/README.md +++ b/README.md @@ -139,6 +139,8 @@ A copy gets the template's files, not its repository settings, so nothing stops gh api -X POST repos/{owner}/{repo}/rulesets --input .github/rulesets/gates.json ``` +When the checks a ruleset requires change, update the installed ruleset instead of creating a second one: PUT the file to the ruleset's id (`gh api repos/{owner}/{repo}/rulesets/ -X PUT --input .github/rulesets/gates.json`, id from `gh api repos/{owner}/{repo}/rulesets`), then run `pnpm check:branch-rules` to confirm the live ruleset and [`scripts/check-branch-rules.ts`](scripts/check-branch-rules.ts) agree. A pull request whose checks were renamed hangs on the old contexts until it is applied. + Until it is installed, nothing stops a pull request with failing checks from merging. The ruleset requires the single `check` job. ### 6. Deploy diff --git a/turbo.json b/turbo.json index a21a528..eccdc11 100644 --- a/turbo.json +++ b/turbo.json @@ -67,7 +67,8 @@ "^build", "build", "generate", - "//#typecheck:node" + "//#typecheck:node", + "test:types" ], "cache": true }, From 77bfd52be312366f46824ede2c3932cd57be4b20 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 16:21:23 +0000 Subject: [PATCH 6/7] fix(ci): major the branding break, harden the intent gate, run lint:tsgo (SYS-900) - tsgo-0-63-brands.md: the field renames are breaking, so the intent is now major for the three packages it names - check.yml intent gate: a fork branch named changeset-release/main no longer skips the gate (the skip also requires the PR to come from this repository); the step still runs changeset-management check , which enforces the same rule the deleted changeset-check.yml did on main - turbo lint now depends on lint:tsgo, so the owner's single command runs it; the PR body previously claimed it was already wired, which was wrong --- .changeset/tsgo-0-63-brands.md | 6 +++--- .github/workflows/check.yml | 2 +- turbo.json | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.changeset/tsgo-0-63-brands.md b/.changeset/tsgo-0-63-brands.md index 1d189d7..e0c2142 100644 --- a/.changeset/tsgo-0-63-brands.md +++ b/.changeset/tsgo-0-63-brands.md @@ -1,7 +1,7 @@ --- -"@systemfsoftware/effect-atom-react": patch -"@systemfsoftware/effect-atom": patch -"@systemfsoftware/storybook-gherkin": minor +"@systemfsoftware/effect-atom-react": major +"@systemfsoftware/effect-atom": major +"@systemfsoftware/storybook-gherkin": major --- - `DuplicateCapture` carries its capture name in `capture` and `OutlineDuplicateRowName` carries its row name in `rowName`, where both carried it in `name`. A `name` payload field shadows the error's own `name`, so logs showed the field value instead of the error type. Read `capture` or `rowName`. diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 526240a..47ce45e 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -51,7 +51,7 @@ jobs: HEAD_SHA: ${{ github.event.pull_request.head.sha }} run: nix develop --command sandbox -- pnpm exec commitlint --from "$BASE_SHA" --to "$HEAD_SHA" --verbose - name: Require a change intent for every publishable-package change - if: github.event_name == 'pull_request' && github.head_ref != 'changeset-release/main' + if: github.event_name == 'pull_request' && github.head_ref != 'changeset-release/main' && github.event.pull_request.head.repo.full_name == github.repository env: BASE_SHA: ${{ github.event.pull_request.base.sha }} run: nix develop --command changeset-management check "$BASE_SHA" diff --git a/turbo.json b/turbo.json index eccdc11..ed4ef69 100644 --- a/turbo.json +++ b/turbo.json @@ -236,7 +236,8 @@ "build", "generate", "//#lint:suppressions", - "//#format:check" + "//#format:check", + "lint:tsgo" ], "env": [ "NODE_ENV", From f354a83acb278ee28d712ca48b0bd6e03ae958d0 Mon Sep 17 00:00:00 2001 From: systemfsoftware-maker <248545757+systemfsoftware-maker@users.noreply.github.com> Date: Fri, 30 Oct 2026 16:25:42 +0000 Subject: [PATCH 7/7] fix(ci): the intent-gate skip is a same-repo release PR only (SYS-900) The gate's skip ANDed the repository guard onto the whole condition, so every fork PR skipped the intent gate. The skip is now the negation of the pair: a branch named changeset-release/main from this repository skips, and a fork PR - even from a branch with that name - runs the gate. --- .github/workflows/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 47ce45e..2b5818e 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -51,7 +51,7 @@ jobs: HEAD_SHA: ${{ github.event.pull_request.head.sha }} run: nix develop --command sandbox -- pnpm exec commitlint --from "$BASE_SHA" --to "$HEAD_SHA" --verbose - name: Require a change intent for every publishable-package change - if: github.event_name == 'pull_request' && github.head_ref != 'changeset-release/main' && github.event.pull_request.head.repo.full_name == github.repository + if: github.event_name == 'pull_request' && !(github.head_ref == 'changeset-release/main' && github.event.pull_request.head.repo.full_name == github.repository) env: BASE_SHA: ${{ github.event.pull_request.base.sha }} run: nix develop --command changeset-management check "$BASE_SHA"