Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
1c41feb
chore(deps): bump effect and @effect/* to 4.0.1
kanadgupta Oct 5, 2026
1c6385f
refactor(repo): move effect/unstable/* imports to their stable 4.0 paths
kanadgupta Oct 5, 2026
2864ed9
refactor(repo): rename Effect CLI and Config constructors to their Pa…
kanadgupta Oct 5, 2026
2b0db9b
chore(stack): reformat imports shortened by the effect path move
kanadgupta Oct 5, 2026
8450e10
refactor(config): adopt effect 4.0 Union options and JSON schema exce…
kanadgupta Oct 5, 2026
2f9d85c
refactor(stack): adopt effect 4.0 socket address, file, encoding, and…
kanadgupta Oct 5, 2026
894fb9a
refactor(stack): keep command payload strictness and the 10 second po…
kanadgupta Oct 5, 2026
b93710a
refactor(cli): bridge the node-postgres pool to the effect 4.0 SQL cl…
kanadgupta Oct 5, 2026
776b16e
refactor(cli): adopt effect 4.0 encoding, primitive tags, and parse o…
kanadgupta Oct 5, 2026
89dfb88
docs(repo): use effect 4.0 import paths and constructor names
kanadgupta Oct 5, 2026
5d2c348
chore(stack): regenerate the functions bootstrap bundle for effect 4.…
kanadgupta Oct 5, 2026
f36fdc0
refactor(config): keep regex patterns in the generated JSON schema un…
kanadgupta Oct 5, 2026
89370ec
refactor(config): keep CLI config JSON schema objects closed under ef…
kanadgupta Oct 5, 2026
17573c3
test(stack): restore the vitest runner patch on top of effect 4.0.1
kanadgupta Oct 5, 2026
750f89f
refactor(stack): report excess command payload keys with the original…
kanadgupta Oct 5, 2026
5562a5a
fix(stack): send one statement per query to the native Postgres client
kanadgupta Oct 5, 2026
58699cf
refactor(config): keep the published JSON Schema byte-identical under…
kanadgupta Oct 5, 2026
3d7ec7b
Merge branch 'develop' into kanad-claude/effect-v4-upgrade-e27f7d
kanadgupta Oct 6, 2026
7335389
Merge branch 'develop' into kanad-claude/effect-v4-upgrade-e27f7d
kanadgupta Oct 8, 2026
1458e75
chore(deps): bump effect and @effect/* to 4.0.2
kanadgupta Oct 8, 2026
231c811
test(stack): run the CA bundle fixtures one statement at a time
kanadgupta Oct 8, 2026
44cebda
Merge branch 'develop' into kanad-claude/effect-v4-upgrade-e27f7d
jgoux Oct 9, 2026
a02c6eb
fix(deps): restore the platform-node-shared stdin EPIPE listener on 4…
jgoux Oct 9, 2026
5a2d573
chore(api): regenerate Management API contracts with effect 4.0.2
jgoux Oct 9, 2026
527c71d
fix(stack): accept undefined optional fields in strict command payloads
jgoux Oct 9, 2026
2056926
test(cli): adapt fixtures and span names to effect 4.0.2
jgoux Oct 9, 2026
4e63cff
test(stack): assert traced owner requests without header capture
jgoux Oct 9, 2026
49cdc2c
fix(stack): drain the client request body before ending proxied respo…
jgoux Oct 9, 2026
7fd5813
test(stack): drop the wall-clock guard from the interrupted lock hold…
jgoux Oct 9, 2026
58d7618
Merge branch 'develop' into kanad-claude/effect-v4-upgrade-e27f7d
jgoux Oct 9, 2026
78ef511
fix(stack): flush early proxy responses and reject inherited payload …
jgoux Oct 9, 2026
6908b56
fix(stack): bound the request drain behind early proxy responses
jgoux Oct 9, 2026
4cd5373
Merge remote-tracking branch 'origin/develop' into effect-4-upgrade
jgoux Oct 9, 2026
2e498c8
Merge remote-tracking branch 'origin/develop' into effect-4-upgrade
jgoux Oct 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .agents/skills/effect/references/CONFIG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ export const dataDirectoryConfig = Config.schema(AbsolutePath, "APP_DATA_DIR");
export const layerFromEnvironment = Layer.effect(
Configuration.Service,
Effect.gen(function* () {
const apiKey = yield* Config.redacted("API_KEY");
const optionalModel = yield* Config.option(Config.string("MODEL"));
const enabled = yield* Config.boolean("FEATURE_ENABLED").pipe(Config.withDefault(false));
const apiKey = yield* Config.Redacted("API_KEY");
const optionalModel = yield* Config.option(Config.String("MODEL"));
const enabled = yield* Config.Boolean("FEATURE_ENABLED").pipe(Config.withDefault(false));

return Configuration.Service.of({ apiKey, optionalModel, enabled });
}),
Expand All @@ -23,7 +23,7 @@ export const layerFromEnvironment = Layer.effect(

- `Config<T>` is yieldable and reads the current `ConfigProvider` reference.
- The default provider is `ConfigProvider.fromEnv()`.
- Use `Config.redacted(...)` for credentials.
- Use `Config.Redacted(...)` for credentials.
- Use `Config.schema(...)` or `Config.mapOrFail(...)` for refined values.
- Use `Config.option(...)` for semantic absence.
- Use `Config.withDefault(...)` for missing-data defaults only; malformed values still fail.
Expand Down
8 changes: 4 additions & 4 deletions .agents/skills/effect/references/HTTP_CLIENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ Use this when writing outgoing HTTP calls, Effect HttpClient adapters, status cl

Use Effect HTTP client modules for outgoing HTTP in app/provider code:

- `effect/unstable/http/HttpClient`
- `effect/unstable/http/HttpClientRequest`
- `effect/unstable/http/HttpClientResponse`
- `effect/unstable/http/HttpClientError`
- `effect/http/HttpClient`
- `effect/http/HttpClientRequest`
- `effect/http/HttpClientResponse`
- `effect/http/HttpClientError`

Prefer Effect HttpClient in Effect application and provider code when its typed errors, layers, and transforms are useful. Raw `fetch` remains reasonable for browser or edge constraints, small adapters, platform transports, and libraries that intentionally avoid unstable Effect HTTP APIs.

Expand Down
2 changes: 1 addition & 1 deletion apps/cli/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ See [`docs/binary-distribution.md`](./docs/binary-distribution.md) for a full ex

## Architecture

The CLI is built on `effect/unstable/cli`.
The CLI is built on `effect/cli`.

Important areas:

Expand Down
2 changes: 1 addition & 1 deletion apps/cli/scripts/bench-cli.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import process from "node:process";
import { parseArgs } from "node:util";
import { BunRuntime, BunServices } from "@effect/platform-bun";
import { Clock, Console, Effect, FileSystem, Path, Ref, Stdio } from "effect";
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
import { ChildProcess, ChildProcessSpawner } from "effect/process";
import { readSpans, type ReportSpan } from "./trace-report.ts";

const USAGE =
Expand Down
4 changes: 2 additions & 2 deletions apps/cli/src/auth/command-credentials.layer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -402,7 +402,7 @@ export const accessTokenForProfile = Effect.fn("CommandCredentials.accessTokenFo
return Option.some(cliSettings.accessToken.value);
}

const noKeyring = yield* Config.option(Config.string("SUPABASE_NO_KEYRING")).parse(
const noKeyring = yield* Config.option(Config.String("SUPABASE_NO_KEYRING")).parse(
configProvider,
);
const keyringModule = yield* loadKeyringModule(fs, noKeyring);
Expand Down Expand Up @@ -435,7 +435,7 @@ const makeCommandCredentials = Effect.gen(function* () {
const runtimeInfo = yield* RuntimeInfo;
const cliSettings = yield* CommandSettings;
const configProvider = yield* ConfigProvider.ConfigProvider;
const noKeyring = yield* Config.option(Config.string("SUPABASE_NO_KEYRING")).parse(
const noKeyring = yield* Config.option(Config.String("SUPABASE_NO_KEYRING")).parse(
configProvider,
);
const debugLogger = yield* DebugLogger;
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/auth/command-platform-api-factory.layer.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { FetchHttpClient } from "effect/unstable/http";
import { FetchHttpClient } from "effect/http";
import { Effect, Layer } from "effect";

import { dohFetchLayer } from "../command-internal/http-dns.ts";
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/auth/command-platform-api.layer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { makeApiClient } from "@supabase/api/effect";
import { Effect, Layer, Option, Redacted } from "effect";
import * as HttpClient from "effect/unstable/http/HttpClient";
import * as HttpClient from "effect/http/HttpClient";

import { CLI_VERSION } from "../shared/cli/version.ts";
import { CommandSettings } from "../config/command-settings.service.ts";
Expand Down
6 changes: 3 additions & 3 deletions apps/cli/src/auth/command-platform-api.layer.unit.test.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { describe, expect, it } from "@effect/vitest";
import { Effect, Exit, FileSystem, Layer, Option, Path, Redacted } from "effect";
import * as HttpClient from "effect/unstable/http/HttpClient";
import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
import type * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
import * as HttpClient from "effect/http/HttpClient";
import * as HttpClientResponse from "effect/http/HttpClientResponse";
import type * as HttpClientRequest from "effect/http/HttpClientRequest";
import { existsSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs";
import { access, mkdir, readFile, writeFile } from "node:fs/promises";
import { tmpdir } from "node:os";
Expand Down
4 changes: 2 additions & 2 deletions apps/cli/src/auth/http-debug.layer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Effect, Layer } from "effect";
import { FetchHttpClient } from "effect/unstable/http";
import * as HttpClient from "effect/unstable/http/HttpClient";
import { FetchHttpClient } from "effect/http";
import * as HttpClient from "effect/http/HttpClient";

import { dohFetchLayer } from "../command-internal/http-dns.ts";
import { DebugLogger } from "../command-internal/debug-logger.service.ts";
Expand Down
8 changes: 4 additions & 4 deletions apps/cli/src/cli/boolean-flag-defaults.unit.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describe, expect, it } from "vitest";
import { Primitive, type Command } from "effect/unstable/cli";
import { Primitive, type Command } from "effect/cli";
import {
commandInternals,
flattenSubcommands,
Expand All @@ -9,19 +9,19 @@ import { unwrapParam } from "../command-internal/param-introspection.ts";
import { rootCommandForFeatures } from "./root.ts";

/**
* `Flag.boolean(name)` alone builds a required param, so omitting it fails the whole command
* `Flag.Boolean(name)` alone builds a required param, so omitting it fails the whole command
* with a missing-flag error before the handler runs — every boolean flag must pair with
* `Flag.withDefault(false)` or `Flag.optional`. No other test catches this: handler integration
* tests build their flags record directly, bypassing the parser, and the type checker can't see
* the required-ness since it still infers as `boolean`.
*/

/**
* Uses `Primitive.getTypeName(Primitive.boolean)` rather than the literal `"boolean"`, so a
* Uses `Primitive.getTypeName(Primitive.Boolean)` rather than the literal `"boolean"`, so a
* rename upstream breaks loudly instead of silently matching nothing and passing every command.
* Avoids `primitiveType._tag` to keep this guard off effect's runtime representation.
*/
const BOOLEAN_TYPE_NAME = Primitive.getTypeName(Primitive.boolean);
const BOOLEAN_TYPE_NAME = Primitive.getTypeName(Primitive.Boolean);

function booleanFlagsRequiringAValue(command: Command.Command.Any): ReadonlyArray<string> {
const internals = commandInternals(command);
Expand Down
18 changes: 9 additions & 9 deletions apps/cli/src/cli/complete.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { BunServices } from "@effect/platform-bun";
import { Cause, Effect, Layer, Option } from "effect";
import { FetchHttpClient } from "effect/unstable/http";
import { GlobalFlag } from "effect/unstable/cli";
import type { Command, Param, Primitive } from "effect/unstable/cli";
import { FetchHttpClient } from "effect/http";
import { GlobalFlag } from "effect/cli";
import type { Command, Param, Primitive } from "effect/cli";
import process from "node:process";
import {
QUERY_OUTPUT_FORMATS,
Expand Down Expand Up @@ -59,7 +59,7 @@ export interface FlagDescriptor {
readonly description: string | undefined;
readonly isVariadic: boolean;
readonly isBoolean: boolean;
/** `Param.Single`'s underlying `Primitive<A>._tag` (`"Boolean"`, `"Choice"`, `"Integer"`, ...). */
/** `Param.Single`'s underlying `Primitive<A>._tag` (`"Boolean"`, `"Choice"`, `"Int"`, ...). */
readonly primitiveTag: string;
/** The valid value set for a `primitiveTag === "Choice"` flag; `undefined` for every other tag. */
readonly choiceKeys: ReadonlyArray<string> | undefined;
Expand Down Expand Up @@ -461,8 +461,8 @@ function hasUnconsumedFlagTerminator(

/**
* Flags whose real validation rejects a leading `-`/`+`, unlike this tree's plain signed
* `Flag.integer`/`Flag.string` declarations — checked before `primitiveTag` dispatch since
* `storage cp --jobs` is declared as `Flag.string`. Key = `<matched command path>:<flag name>`.
* `Flag.Int`/`Flag.String` declarations — checked before `primitiveTag` dispatch since
* `storage cp --jobs` is declared as `Flag.String`. Key = `<matched command path>:<flag name>`.
*/
const COMPLETION_UINT_FLAGS: ReadonlySet<string> = new Set([
"functions deploy:jobs",
Expand All @@ -473,7 +473,7 @@ const COMPLETION_UINT_FLAGS: ReadonlySet<string> = new Set([

/**
* Flags validated against Go duration syntax (see `isValidGoDuration`) rather than this
* tree's plain `Flag.string` declarations.
* tree's plain `Flag.String` declarations.
*/
const COMPLETION_DURATION_FLAGS: ReadonlySet<string> = new Set([
"gen types:query-timeout",
Expand Down Expand Up @@ -690,9 +690,9 @@ function isValidFlagValue(
return outputFlagChoiceKeys(matchedPath).includes(value);
}
return flag.choiceKeys !== undefined && flag.choiceKeys.includes(value);
case "Integer":
case "Int":
return isValidBase0Int64(value);
case "Float":
case "Finite":
return value.trim().length > 0 && !Number.isNaN(Number(value));
default:
return true;
Expand Down
4 changes: 2 additions & 2 deletions apps/cli/src/cli/complete.unit.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -511,7 +511,7 @@ describe("respondToComplete", () => {
{ path: ["db", "reset"], flag: "last" },
])("rejects a negative value for $path --$flag", ({ path, flag }) => {
// These flags are validated as unsigned integers, which reject a leading sign,
// unlike this tree's plain signed Flag.integer regex.
// unlike this tree's plain signed Flag.Int regex.
const result = respondToComplete(rootCommand, ["__complete", ...path, `--${flag}`, "-1", ""]);
expect(result).toEqual({ candidates: [], directive: CompletionDirective.Default });
});
Expand Down Expand Up @@ -593,7 +593,7 @@ describe("respondToComplete", () => {

it("rejects a value one past int64 max for a plain (non-uint) integer flag", () => {
// Validated against the signed int64 range, which is narrower than the uint64
// bound `Flag.integer` alone would suggest.
// bound `Flag.Int` alone would suggest.
const overflow = respondToComplete(rootCommand, [
"__complete",
"backups",
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/cli/main.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#!/usr/bin/env bun
import { BunServices } from "@effect/platform-bun";
import { Effect, Exit, Layer, Stdio } from "effect";
import { FetchHttpClient } from "effect/unstable/http";
import { FetchHttpClient } from "effect/http";
import { runCli } from "../shared/cli/run.ts";
import { upgradeNoticeHook } from "../command-internal/upgrade-notice.ts";
import { analyticsLayer } from "../telemetry/analytics.layer.ts";
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/cli/root-stack-aliases.integration.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describe, expect, test } from "@effect/vitest";
import { Console, Effect, Layer, Option } from "effect";
import { CliOutput, Command } from "effect/unstable/cli";
import { CliOutput, Command } from "effect/cli";
import { emptyEnv, fakeConsole, mockOutput } from "../../tests/helpers/mocks.ts";
import { CliArgs } from "../shared/cli/cli-args.service.ts";
import { textCliOutputFormatter } from "../shared/output/text-formatter.ts";
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/cli/root.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Effect, Layer, Option } from "effect";
import { Command } from "effect/unstable/cli";
import { Command } from "effect/cli";
import { backupsCommand } from "../commands/backups/backups.command.ts";
import { bootstrapCommand } from "../commands/bootstrap/bootstrap.command.ts";
import { branchesCommand } from "../commands/branches/branches.command.ts";
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/command-internal/bitbucket-pipeline.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export const bitbucketCloneDir = Effect.fnUntraced(function* (
const projectValue = Option.fromNullishOr(projectEnvValues[BITBUCKET_CLONE_DIR_ENV_KEY]);
if (Option.isSome(projectValue)) return projectValue;
}
return yield* Config.option(Config.string(BITBUCKET_CLONE_DIR_ENV_KEY));
return yield* Config.option(Config.String(BITBUCKET_CLONE_DIR_ENV_KEY));
});

/** Returns whether a non-empty Bitbucket marker disables restricted Docker options. */
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/command-internal/branch-target.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import type { ApiClient, V1ListAllBranchesOutput } from "@supabase/api/effect";
import { Duration, Effect, Option } from "effect";
import * as HttpClientError from "effect/unstable/http/HttpClientError";
import * as HttpClientError from "effect/http/HttpClientError";

import { CommandPlatformApiFactory } from "../auth/command-platform-api-factory.service.ts";
import { CommandPlatformApi } from "../auth/command-platform-api.service.ts";
Expand Down
6 changes: 3 additions & 3 deletions apps/cli/src/command-internal/bundled-postgres-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import {
PlatformError,
Stream,
} from "effect";
import { FetchHttpClient } from "effect/unstable/http";
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
import { FetchHttpClient } from "effect/http";
import { ChildProcess, ChildProcessSpawner } from "effect/process";
import {
ArtifactError,
postgresVersion,
Expand Down Expand Up @@ -135,7 +135,7 @@ const nativeRun = Effect.fn("BundledPostgresClient.nativeRun")(function* <E>(
const tool = ["pg_dump", "pg_dumpall", "pg_prove", "psql"].includes(command)
? path.join(artifactRoot, "bin", command)
: command;
const inheritedPath = yield* Config.option(Config.string("PATH")).pipe(
const inheritedPath = yield* Config.option(Config.String("PATH")).pipe(
Effect.mapError(mapSpawnError),
);
const env = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { ConnectionError, SqlError } from "effect/unstable/sql/SqlError";
import { ConnectionError, SqlError } from "effect/sql/SqlError";
import * as Pg from "pg";
import { describe, expect, it } from "vitest";

Expand Down
4 changes: 2 additions & 2 deletions apps/cli/src/command-internal/container-cli.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { Data, Effect, Stream } from "effect";
import * as ChildProcess from "effect/unstable/process/ChildProcess";
import { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
import * as ChildProcess from "effect/process/ChildProcess";
import { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";

import {
withChildTraceEnv,
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/command-internal/container-cli.unit.test.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { describe, expect, it } from "@effect/vitest";
import { Deferred, Effect, Exit, PlatformError, Sink, Stream, Tracer } from "effect";
import { ChildProcessSpawner } from "effect/unstable/process";
import { ChildProcessSpawner } from "effect/process";

import {
containerCliExitCode,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@
*/

import { Effect, Result } from "effect";
import type * as HttpClient from "effect/unstable/http/HttpClient";
import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
import type * as HttpClient from "effect/http/HttpClient";
import type { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";

import { inspectContainerState } from "../docker-lifecycle.ts";
import { serviceContainerName } from "../docker-ids.ts";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { describe, expect, it } from "@effect/vitest";
import { Cause, Deferred, Effect, Exit, Fiber, Layer, Sink, Stream } from "effect";
import { ChildProcessSpawner } from "effect/unstable/process";
import * as HttpClient from "effect/unstable/http/HttpClient";
import { ChildProcessSpawner } from "effect/process";
import * as HttpClient from "effect/http/HttpClient";
import * as TestClock from "effect/testing/TestClock";

import { HealthCheckTimeoutError } from "./health-check.ts";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
*/

import { Data, Effect, Stream } from "effect";
import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
import type { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";

import {
actionability,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { join } from "node:path";

import { describe, expect, it } from "@effect/vitest";
import { Deferred, Effect, PlatformError, Sink, Stream } from "effect";
import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
import { ChildProcess, ChildProcessSpawner } from "effect/process";
import { afterEach, beforeEach } from "vitest";

import {
Expand Down
2 changes: 1 addition & 1 deletion apps/cli/src/command-internal/db-bootstrap/db-setup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

import type { CliConfig } from "@supabase/config";
import { Data, Effect, type FileSystem, Option, type Path, Schedule } from "effect";
import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
import type { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";

import type { LocalServiceVersionOverrides } from "../../shared/services/services.shared.ts";
import { slimImagesEnabled } from "../../shared/services/slim-images.ts";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import {
Stream,
Tracer,
} from "effect";
import { ChildProcessSpawner } from "effect/unstable/process";
import { ChildProcessSpawner } from "effect/process";

import { mockOutput, mockRuntimeInfo } from "../../../tests/helpers/mocks.ts";
import { DbExecError } from "../db-connection.errors.ts";
Expand Down
6 changes: 3 additions & 3 deletions apps/cli/src/command-internal/db-bootstrap/health-check.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
*/

import { Context, Data, Duration, Effect, Schedule, Stream } from "effect";
import * as HttpClient from "effect/unstable/http/HttpClient";
import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";
import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
import * as HttpClient from "effect/http/HttpClient";
import * as HttpClientRequest from "effect/http/HttpClientRequest";
import type { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";

import {
actionability,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { describe, expect, it } from "@effect/vitest";
import { Deferred, Effect, Exit, Fiber, Layer, Sink, Stream, Tracer } from "effect";
import * as PlatformError from "effect/PlatformError";
import { ChildProcessSpawner } from "effect/unstable/process";
import * as HttpClient from "effect/unstable/http/HttpClient";
import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";
import { ChildProcessSpawner } from "effect/process";
import * as HttpClient from "effect/http/HttpClient";
import * as HttpClientResponse from "effect/http/HttpClientResponse";
import * as TestClock from "effect/testing/TestClock";

import { DbConnectError } from "../db-connection.errors.ts";
Expand Down Expand Up @@ -682,7 +682,7 @@ describe("waitForHealthyServices", () => {
yield* Fiber.await(fiber);

const wait = spans.find((span) => span.name === "HealthCheck.waitHealthyServices");
expect(spans.map((span) => span.name)).not.toContain("http.client HEAD");
expect(spans.map((span) => span.name)).not.toContain("HEAD");
expect(wait?.attributes.get("retry.attempt_count")).toBe(2);
}),
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
*/

import { Data, Effect, Result } from "effect";
import type { ChildProcessSpawner } from "effect/unstable/process/ChildProcessSpawner";
import type { ChildProcessSpawner } from "effect/process/ChildProcessSpawner";

import {
actionability,
Expand Down
Loading
Loading