From 332ee3072dfec14587ae8996679759ce0434ec56 Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Fri, 11 Sep 2026 17:35:08 -0700 Subject: [PATCH 1/3] chore(deps): upgrade Effect to rc.115 and Alchemy to beta.77 Effect rc.113 renamed the typed constructors in Config, Flag, Argument and Prompt to PascalCase, renamed SchemaTransformation/SchemaGetter transformOrFail to transformEffect and Config.mapOrFail to mapEffect, moved Mime into effect/unstable/http, replaced Socket.run* with reader/writer, exposed HTTP server addresses as NetAddress.SocketAddress, typed file sizes as ByteSize, and dropped its msgpackr dependency. The server only uses JSON and NDJSON RPC serialization, so msgpackr-extract no longer has a consumer: remove it from the server dependencies, the pnpm allowBuilds list, the CLI bundle externals, the desktop artifact packaging and the knip ignore list. Co-Authored-By: Claude Fable 5 --- apps/desktop/src/app/DesktopConfig.ts | 12 +- .../NetworkTransferMeasurement.integration.ts | 3 +- ...ProviderSessionStartup.integration.test.ts | 3 +- apps/server/package.json | 1 - apps/server/scripts/cli.ts | 14 +- apps/server/scripts/migrate-dev-db.ts | 8 +- apps/server/scripts/t3-sqlite-state.ts | 8 +- apps/server/src/bin.ts | 2 +- apps/server/src/cli/app.ts | 8 +- apps/server/src/cli/auth.ts | 16 +- apps/server/src/cli/config.ts | 70 +- apps/server/src/cli/connect.ts | 16 +- apps/server/src/cli/pair.ts | 10 +- apps/server/src/cli/project.ts | 12 +- apps/server/src/cli/service.ts | 4 +- apps/server/src/cli/servicePreflight.ts | 4 +- apps/server/src/cli/theme.ts | 6 +- apps/server/src/cli/triage.ts | 6 +- apps/server/src/cloud/bootService.ts | 4 +- apps/server/src/cloud/publicConfig.ts | 10 +- apps/server/src/device/DeviceHubProxy.ts | 18 +- apps/server/src/git/GitManager.ts | 3 +- apps/server/src/http.ts | 11 +- apps/server/src/imageMime.ts | 10 +- apps/server/src/keybindings.ts | 2 +- apps/server/src/mcp/McpHttpServer.test.ts | 2 +- .../server/src/mcp/McpSessionRegistry.test.ts | 6 +- apps/server/src/mcp/McpSessionRegistry.ts | 24 +- .../src/mcp/toolkits/preview/tools.test.ts | 4 +- apps/server/src/process/externalLauncher.ts | 26 +- .../src/project/AgentSessionScanner.test.ts | 11 +- .../src/provider/Drivers/CursorSkills.ts | 5 +- .../src/provider/providerMaintenance.ts | 8 +- apps/server/src/server.test.ts | 14 +- apps/server/src/sourceControl/BitbucketApi.ts | 8 +- apps/server/src/telemetry/AnalyticsService.ts | 12 +- .../src/textGeneration/TextGenerationUtils.ts | 4 +- apps/server/vite.config.ts | 4 +- docs/operations/release.md | 2 +- infra/relay/package.json | 2 +- infra/relay/scripts/android-push-watch.ts | 3 +- infra/relay/scripts/deploy.ts | 38 +- infra/relay/src/worker.ts | 18 +- infra/relay/src/zone.ts | 6 +- knip.jsonc | 4 +- packages/contracts/src/baseSchemas.ts | 2 +- packages/contracts/src/model.ts | 2 +- packages/contracts/src/orchestration.ts | 2 +- packages/contracts/src/settings.ts | 2 +- packages/effect-acp/scripts/generate.ts | 2 +- packages/shared/src/relayClient.ts | 2 +- packages/shared/src/schemaYaml.ts | 4 +- packages/shared/src/t3ProjectFile.ts | 4 +- packages/ssh/src/auth.ts | 2 +- packages/ssh/src/config.ts | 4 +- ...tch => @effect__vitest@4.0.0-rc.115.patch} | 22 +- ...rc.112.patch => effect@4.0.0-rc.115.patch} | 82 +- pnpm-lock.yaml | 1717 +++++++++-------- pnpm-workspace.yaml | 43 +- scripts/apply-web-brand-assets.ts | 6 +- scripts/build-desktop-artifact.test.ts | 10 - scripts/build-desktop-artifact.ts | 90 +- scripts/dev-runner.ts | 30 +- scripts/export-brand-icons.ts | 2 +- scripts/lib/build-target-arch.ts | 4 +- scripts/lib/cli-external-packages.test.ts | 37 +- scripts/lib/cli-external-packages.ts | 18 +- scripts/merge-update-manifests.ts | 8 +- scripts/mock-update-server.ts | 4 +- scripts/notify-discord-release.ts | 14 +- scripts/resolve-nightly-release.ts | 12 +- scripts/resolve-previous-release-tag.ts | 8 +- scripts/sync-reference-repos.ts | 8 +- scripts/update-release-package-versions.ts | 8 +- 74 files changed, 1337 insertions(+), 1274 deletions(-) rename patches/{@effect__vitest@4.0.0-rc.112.patch => @effect__vitest@4.0.0-rc.115.patch} (84%) rename patches/{effect@4.0.0-rc.112.patch => effect@4.0.0-rc.115.patch} (87%) diff --git a/apps/desktop/src/app/DesktopConfig.ts b/apps/desktop/src/app/DesktopConfig.ts index d157a4c6ba44..3adfb1cbbd74 100644 --- a/apps/desktop/src/app/DesktopConfig.ts +++ b/apps/desktop/src/app/DesktopConfig.ts @@ -8,10 +8,10 @@ const trimNonEmptyOption = (value: string): Option.Option => { }; const trimmedString = (name: string) => - Config.string(name).pipe(Config.option, Config.map(Option.flatMap(trimNonEmptyOption))); + Config.String(name).pipe(Config.option, Config.map(Option.flatMap(trimNonEmptyOption))); const optionalBoolean = (name: string) => - Config.boolean(name).pipe(Config.option, Config.map(Option.getOrElse(() => false))); + Config.Boolean(name).pipe(Config.option, Config.map(Option.getOrElse(() => false))); const commaSeparatedStrings = (name: string) => trimmedString(name).pipe( @@ -37,21 +37,21 @@ export const DesktopConfig = Config.all({ xdgConfigHome: trimmedString("XDG_CONFIG_HOME"), xdgDataHome: trimmedString("XDG_DATA_HOME"), t3Home: trimmedString("T3CODE_HOME"), - devServerUrl: Config.url("VITE_DEV_SERVER_URL").pipe(Config.option), + devServerUrl: Config.URL("VITE_DEV_SERVER_URL").pipe(Config.option), appUserModelIdOverride: trimmedString("T3CODE_DESKTOP_APP_USER_MODEL_ID"), devRemoteT3ServerEntryPath: trimmedString("T3CODE_DEV_REMOTE_T3_SERVER_ENTRY_PATH"), - configuredBackendPort: Config.port("T3CODE_PORT").pipe(Config.option), + configuredBackendPort: Config.Port("T3CODE_PORT").pipe(Config.option), commitHashOverride: trimmedString("T3CODE_COMMIT_HASH"), desktopLanHostOverride: trimmedString("T3CODE_DESKTOP_LAN_HOST"), desktopHttpsEndpointUrls: commaSeparatedStrings("T3CODE_DESKTOP_HTTPS_ENDPOINTS"), otlpTracesUrl: trimmedString("T3CODE_OTLP_TRACES_URL"), - otlpExportIntervalMs: Config.int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe( + otlpExportIntervalMs: Config.Int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe( Config.withDefault(10_000), ), appImagePath: trimmedString("APPIMAGE"), disableAutoUpdate: optionalBoolean("T3CODE_DISABLE_AUTO_UPDATE"), mockUpdates: optionalBoolean("T3CODE_DESKTOP_MOCK_UPDATES"), - mockUpdateServerPort: Config.port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe( + mockUpdateServerPort: Config.Port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe( Config.withDefault(3000), ), }); diff --git a/apps/server/integration/NetworkTransferMeasurement.integration.ts b/apps/server/integration/NetworkTransferMeasurement.integration.ts index fbbdd8fb156b..c70e50b6852b 100644 --- a/apps/server/integration/NetworkTransferMeasurement.integration.ts +++ b/apps/server/integration/NetworkTransferMeasurement.integration.ts @@ -181,8 +181,9 @@ function countingWsRpcProtocolLayer(input: { readonly cookie: string; readonly recorder: WebSocketTransferRecorder; }) { + // Socket.makeWebSocket only ever passes its `protocols` option here. const webSocketConstructorLayer = Layer.succeed(Socket.WebSocketConstructor, (url, protocols) => - input.recorder.connect(url, protocols, input.cookie), + input.recorder.connect(url, protocols as string | string[] | undefined, input.cookie), ); return RpcClient.layerProtocolSocket().pipe( Layer.provide( diff --git a/apps/server/integration/orphanedProviderSessionStartup.integration.test.ts b/apps/server/integration/orphanedProviderSessionStartup.integration.test.ts index e07681ae153b..77173af1b377 100644 --- a/apps/server/integration/orphanedProviderSessionStartup.integration.test.ts +++ b/apps/server/integration/orphanedProviderSessionStartup.integration.test.ts @@ -21,6 +21,7 @@ import * as Option from "effect/Option"; import * as Stream from "effect/Stream"; import * as SqlClient from "effect/unstable/sql/SqlClient"; import { HttpServer } from "effect/unstable/http"; +import * as NetAddress from "effect/unstable/net/NetAddress"; import * as EnvironmentAuth from "../src/auth/EnvironmentAuth.ts"; import * as ServiceLauncherClient from "../src/cloud/serviceLauncherClient.ts"; @@ -104,7 +105,7 @@ const startupDependencies = Layer.mergeAll( Layer.succeed( HttpServer.HttpServer, HttpServer.HttpServer.of({ - address: { _tag: "TcpAddress", hostname: "127.0.0.1", port: 3773 }, + address: NetAddress.inetAddressFromIpStringUnsafe("127.0.0.1", 3773), serve: (() => Effect.void) as HttpServer.HttpServer["Service"]["serve"], }), ), diff --git a/apps/server/package.json b/apps/server/package.json index 9b5f2fb2d7d7..dc3f93a66417 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -30,7 +30,6 @@ "@ff-labs/fff-node": "0.9.4", "@opencode-ai/sdk": "^1.3.15", "effect": "catalog:", - "msgpackr-extract": "3.0.4", "node-pty": "^1.1.0", "stream-chain": "^4.2.5", "stream-json": "3.6.0", diff --git a/apps/server/scripts/cli.ts b/apps/server/scripts/cli.ts index 2de5b702a286..35380aa9b133 100644 --- a/apps/server/scripts/cli.ts +++ b/apps/server/scripts/cli.ts @@ -143,7 +143,7 @@ const applyDevelopmentIconOverrides = Effect.fn("applyDevelopmentIconOverrides") const buildCmd = Command.make( "build", { - verbose: Flag.boolean("verbose").pipe(Flag.withDefault(false)), + verbose: Flag.Boolean("verbose").pipe(Flag.withDefault(false)), }, (config) => Effect.gen(function* () { @@ -207,12 +207,12 @@ const createVpPmPublishArgs = (config: PublishCommandConfig): ReadonlyArray Effect.gen(function* () { diff --git a/apps/server/scripts/migrate-dev-db.ts b/apps/server/scripts/migrate-dev-db.ts index fca5e4ac6db1..50d1b4e37909 100644 --- a/apps/server/scripts/migrate-dev-db.ts +++ b/apps/server/scripts/migrate-dev-db.ts @@ -506,19 +506,19 @@ const formatSize = (bytes: number): string => export const migrateDevDbCommand = Command.make( "migrate-dev-db", { - projects: Flag.integer("projects").pipe( + projects: Flag.Int("projects").pipe( Flag.withDefault(5), Flag.withDescription("How many recently updated projects to keep."), ), - threadsPerProject: Flag.integer("threads-per-project").pipe( + threadsPerProject: Flag.Int("threads-per-project").pipe( Flag.withDefault(10), Flag.withDescription("How many recent stopped threads to keep per project."), ), - baseDir: Flag.string("base-dir").pipe( + baseDir: Flag.String("base-dir").pipe( Flag.optional, Flag.withDescription("Isolated .t3 directory. Defaults to the current worktree's .t3."), ), - source: Flag.string("source").pipe( + source: Flag.String("source").pipe( Flag.optional, Flag.withDescription("Source database. Defaults to ~/.t3/userdata/state.sqlite."), ), diff --git a/apps/server/scripts/t3-sqlite-state.ts b/apps/server/scripts/t3-sqlite-state.ts index aae040470f50..5e274588671f 100644 --- a/apps/server/scripts/t3-sqlite-state.ts +++ b/apps/server/scripts/t3-sqlite-state.ts @@ -248,17 +248,17 @@ export const runSqliteState = Effect.fn("runSqliteState")(function* ( const t3SqliteStateCommand = Command.make( "t3-sqlite-state", { - operation: Argument.choice("operation", SqliteStateOperation.literals).pipe( + operation: Argument.Literals("operation", SqliteStateOperation.literals).pipe( Argument.withDescription("Run a read-only query or a backed-up fixture mutation."), ), - baseDir: Flag.string("base-dir").pipe( + baseDir: Flag.String("base-dir").pipe( Flag.withDescription("Explicit T3 base directory containing userdata/state.sqlite."), ), - sql: Flag.string("sql").pipe( + sql: Flag.String("sql").pipe( Flag.optional, Flag.withDescription("SQL source supplied directly on the command line."), ), - file: Flag.string("file").pipe( + file: Flag.String("file").pipe( Flag.optional, Flag.withDescription("Path to a SQL source file."), ), diff --git a/apps/server/src/bin.ts b/apps/server/src/bin.ts index 52cc363ed04f..a45ec9447568 100644 --- a/apps/server/src/bin.ts +++ b/apps/server/src/bin.ts @@ -33,7 +33,7 @@ class ConnectPublicConfigMissingError extends CliError.UserError { } const connectUnavailableCommand = Command.make("connect", { - command: Argument.string("command").pipe(Argument.variadic), + command: Argument.String("command").pipe(Argument.variadic), }).pipe( Command.withDescription("T3 Connect is unavailable in builds without public configuration."), Command.unlisted, diff --git a/apps/server/src/cli/app.ts b/apps/server/src/cli/app.ts index 3fc6deedb0ce..83696e0c9e21 100644 --- a/apps/server/src/cli/app.ts +++ b/apps/server/src/cli/app.ts @@ -178,9 +178,9 @@ function sendDesktopAppActivationRequest(input: { } const appEnvironment = Config.all({ - t3Home: Config.string("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)), - sshConnection: Config.string("SSH_CONNECTION").pipe(Config.option), - sshTty: Config.string("SSH_TTY").pipe(Config.option), + t3Home: Config.String("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)), + sshConnection: Config.String("SSH_CONNECTION").pipe(Config.option), + sshTty: Config.String("SSH_TTY").pipe(Config.option), }); const runAppCommand = Effect.fn("cli.app")(function* (flags: { @@ -251,7 +251,7 @@ const runAppCommand = Effect.fn("cli.app")(function* (flags: { export const appCommand = Command.make("app", { baseDir: baseDirFlag, - workspaceRoot: Argument.string("path").pipe( + workspaceRoot: Argument.String("path").pipe( Argument.withDescription("Project directory. Default: current directory."), Argument.optional, ), diff --git a/apps/server/src/cli/auth.ts b/apps/server/src/cli/auth.ts index 1b349111811c..f37c65eac9ed 100644 --- a/apps/server/src/cli/auth.ts +++ b/apps/server/src/cli/auth.ts @@ -50,33 +50,33 @@ const runWithEnvironmentAuth = ( ); }); -const ttlFlag = Flag.string("ttl").pipe( +const ttlFlag = Flag.String("ttl").pipe( Flag.withSchema(DurationFromString), Flag.withDescription("TTL, for example `5m`, `1h`, `30d`, or `15 minutes`."), Flag.optional, ); -const jsonFlag = Flag.boolean("json").pipe( +const jsonFlag = Flag.Boolean("json").pipe( Flag.withDescription("Emit JSON instead of human-readable output."), Flag.withDefault(false), ); -const labelFlag = Flag.string("label").pipe( +const labelFlag = Flag.String("label").pipe( Flag.withDescription("Optional human-readable label."), Flag.optional, ); -const subjectFlag = Flag.string("subject").pipe( +const subjectFlag = Flag.String("subject").pipe( Flag.withDescription("Optional session subject."), Flag.optional, ); -const baseUrlFlag = Flag.string("base-url").pipe( +const baseUrlFlag = Flag.String("base-url").pipe( Flag.withDescription("Optional public base URL used to print a ready `/pair#token=...` link."), Flag.optional, ); -const tokenOnlyFlag = Flag.boolean("token-only").pipe( +const tokenOnlyFlag = Flag.Boolean("token-only").pipe( Flag.withDescription("Print only the issued bearer token."), Flag.withDefault(false), ); @@ -137,7 +137,7 @@ const pairingListCommand = Command.make("list", { const pairingRevokeCommand = Command.make("revoke", { ...authLocationFlags, - id: Argument.string("id").pipe(Argument.withDescription("Pairing credential id to revoke.")), + id: Argument.String("id").pipe(Argument.withDescription("Pairing credential id to revoke.")), }).pipe( Command.withDescription("Revoke an active client pairing token."), Command.withHandler((flags) => @@ -215,7 +215,7 @@ const sessionListCommand = Command.make("list", { const sessionRevokeCommand = Command.make("revoke", { ...authLocationFlags, - sessionId: Argument.string("session-id").pipe( + sessionId: Argument.String("session-id").pipe( Argument.withDescription("Session id to revoke."), Argument.withSchema(AuthSessionId), ), diff --git a/apps/server/src/cli/config.ts b/apps/server/src/cli/config.ts index 847edbbc4fe0..f7f269b181d4 100644 --- a/apps/server/src/cli/config.ts +++ b/apps/server/src/cli/config.ts @@ -17,96 +17,96 @@ import { readBootstrapEnvelope } from "../bootstrap.ts"; import * as ServerConfig from "../config.ts"; import { expandHomePath, resolveBaseDir } from "../os-jank.ts"; -const modeFlag = Flag.choice("mode", ServerConfig.RuntimeMode.literals).pipe( +const modeFlag = Flag.Literals("mode", ServerConfig.RuntimeMode.literals).pipe( Flag.withDescription("Runtime mode. `desktop` keeps loopback defaults unless overridden."), Flag.optional, ); -const portFlag = Flag.integer("port").pipe( +const portFlag = Flag.Int("port").pipe( Flag.withSchema(PortSchema), Flag.withDescription("Port for the HTTP/WebSocket server."), Flag.optional, ); -const hostFlag = Flag.string("host").pipe( +const hostFlag = Flag.String("host").pipe( Flag.withDescription("Host/interface to bind (for example 127.0.0.1, 0.0.0.0, or a Tailnet IP)."), Flag.optional, ); -export const baseDirFlag = Flag.string("base-dir").pipe( +export const baseDirFlag = Flag.String("base-dir").pipe( Flag.withDescription( "Explicit T3 Code data directory; runtime state is stored under userdata (equivalent to T3CODE_HOME).", ), Flag.optional, ); -const devUrlFlag = Flag.string("dev-url").pipe( +const devUrlFlag = Flag.String("dev-url").pipe( Flag.withSchema(Schema.URLFromString), Flag.withDescription("Dev web URL to proxy/redirect to (equivalent to VITE_DEV_SERVER_URL)."), Flag.optional, ); -const noBrowserFlag = Flag.boolean("no-browser").pipe( +const noBrowserFlag = Flag.Boolean("no-browser").pipe( Flag.withDescription("Disable automatic browser opening."), Flag.optional, ); -const bootstrapFdFlag = Flag.integer("bootstrap-fd").pipe( +const bootstrapFdFlag = Flag.Int("bootstrap-fd").pipe( Flag.withSchema(Schema.Int), Flag.withDescription("Read one-time bootstrap secrets from the given file descriptor."), Flag.optional, ); -const autoBootstrapProjectFromCwdFlag = Flag.boolean("auto-bootstrap-project-from-cwd").pipe( +const autoBootstrapProjectFromCwdFlag = Flag.Boolean("auto-bootstrap-project-from-cwd").pipe( Flag.withDescription( "Create a project for the current working directory on startup when missing.", ), Flag.optional, ); -const logWebSocketEventsFlag = Flag.boolean("log-websocket-events").pipe( +const logWebSocketEventsFlag = Flag.Boolean("log-websocket-events").pipe( Flag.withDescription( "Emit server-side logs for outbound WebSocket push traffic (equivalent to T3CODE_LOG_WS_EVENTS).", ), Flag.withAlias("log-ws-events"), Flag.optional, ); -const tailscaleServeFlag = Flag.boolean("tailscale-serve").pipe( +const tailscaleServeFlag = Flag.Boolean("tailscale-serve").pipe( Flag.withDescription( "Configure Tailscale Serve to expose this backend over HTTPS on the Tailnet.", ), Flag.optional, ); -const tailscaleServePortFlag = Flag.integer("tailscale-serve-port").pipe( +const tailscaleServePortFlag = Flag.Int("tailscale-serve-port").pipe( Flag.withSchema(PortSchema), Flag.withDescription("HTTPS port for Tailscale Serve when --tailscale-serve is enabled."), Flag.optional, ); const EnvServerConfig = Config.all({ - logLevel: Config.logLevel("T3CODE_LOG_LEVEL").pipe(Config.withDefault("Info")), - traceMinLevel: Config.logLevel("T3CODE_TRACE_MIN_LEVEL").pipe(Config.withDefault("Info")), - traceTimingEnabled: Config.boolean("T3CODE_TRACE_TIMING_ENABLED").pipe(Config.withDefault(true)), - traceFile: Config.string("T3CODE_TRACE_FILE").pipe( + logLevel: Config.LogLevel("T3CODE_LOG_LEVEL").pipe(Config.withDefault("Info")), + traceMinLevel: Config.LogLevel("T3CODE_TRACE_MIN_LEVEL").pipe(Config.withDefault("Info")), + traceTimingEnabled: Config.Boolean("T3CODE_TRACE_TIMING_ENABLED").pipe(Config.withDefault(true)), + traceFile: Config.String("T3CODE_TRACE_FILE").pipe( Config.option, Config.map(Option.getOrUndefined), ), - traceMaxBytes: Config.int("T3CODE_TRACE_MAX_BYTES").pipe(Config.withDefault(10 * 1024 * 1024)), - traceMaxFiles: Config.int("T3CODE_TRACE_MAX_FILES").pipe(Config.withDefault(10)), - traceBatchWindowMs: Config.int("T3CODE_TRACE_BATCH_WINDOW_MS").pipe(Config.withDefault(1_000)), - otlpTracesUrl: Config.string("T3CODE_OTLP_TRACES_URL").pipe( + traceMaxBytes: Config.Int("T3CODE_TRACE_MAX_BYTES").pipe(Config.withDefault(10 * 1024 * 1024)), + traceMaxFiles: Config.Int("T3CODE_TRACE_MAX_FILES").pipe(Config.withDefault(10)), + traceBatchWindowMs: Config.Int("T3CODE_TRACE_BATCH_WINDOW_MS").pipe(Config.withDefault(1_000)), + otlpTracesUrl: Config.String("T3CODE_OTLP_TRACES_URL").pipe( Config.option, Config.map(Option.getOrUndefined), ), - otlpMetricsUrl: Config.string("T3CODE_OTLP_METRICS_URL").pipe( + otlpMetricsUrl: Config.String("T3CODE_OTLP_METRICS_URL").pipe( Config.option, Config.map(Option.getOrUndefined), ), - otlpExportIntervalMs: Config.int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe( + otlpExportIntervalMs: Config.Int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe( Config.withDefault(10_000), ), - otlpServiceName: Config.string("T3CODE_OTLP_SERVICE_NAME").pipe(Config.withDefault("t3-server")), + otlpServiceName: Config.String("T3CODE_OTLP_SERVICE_NAME").pipe(Config.withDefault("t3-server")), mode: Config.schema(ServerConfig.RuntimeMode, "T3CODE_MODE").pipe( Config.option, Config.map(Option.getOrUndefined), ), - port: Config.port("T3CODE_PORT").pipe(Config.option, Config.map(Option.getOrUndefined)), - host: Config.string("T3CODE_HOST").pipe(Config.option, Config.map(Option.getOrUndefined)), - t3Home: Config.string("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)), - devUrl: Config.url("VITE_DEV_SERVER_URL").pipe(Config.option, Config.map(Option.getOrUndefined)), - devAllowedOrigins: Config.string("T3CODE_DEV_ALLOWED_ORIGINS").pipe( + port: Config.Port("T3CODE_PORT").pipe(Config.option, Config.map(Option.getOrUndefined)), + host: Config.String("T3CODE_HOST").pipe(Config.option, Config.map(Option.getOrUndefined)), + t3Home: Config.String("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)), + devUrl: Config.URL("VITE_DEV_SERVER_URL").pipe(Config.option, Config.map(Option.getOrUndefined)), + devAllowedOrigins: Config.String("T3CODE_DEV_ALLOWED_ORIGINS").pipe( Config.withDefault(""), Config.map((value) => value @@ -115,27 +115,27 @@ const EnvServerConfig = Config.all({ .filter((entry) => entry.length > 0), ), ), - noBrowser: Config.boolean("T3CODE_NO_BROWSER").pipe( + noBrowser: Config.Boolean("T3CODE_NO_BROWSER").pipe( Config.option, Config.map(Option.getOrUndefined), ), - bootstrapFd: Config.int("T3CODE_BOOTSTRAP_FD").pipe( + bootstrapFd: Config.Int("T3CODE_BOOTSTRAP_FD").pipe( Config.option, Config.map(Option.getOrUndefined), ), - autoBootstrapProjectFromCwd: Config.boolean("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD").pipe( + autoBootstrapProjectFromCwd: Config.Boolean("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD").pipe( Config.option, Config.map(Option.getOrUndefined), ), - logWebSocketEvents: Config.boolean("T3CODE_LOG_WS_EVENTS").pipe( + logWebSocketEvents: Config.Boolean("T3CODE_LOG_WS_EVENTS").pipe( Config.option, Config.map(Option.getOrUndefined), ), - tailscaleServeEnabled: Config.boolean("T3CODE_TAILSCALE_SERVE").pipe( + tailscaleServeEnabled: Config.Boolean("T3CODE_TAILSCALE_SERVE").pipe( Config.option, Config.map(Option.getOrUndefined), ), - tailscaleServePort: Config.port("T3CODE_TAILSCALE_SERVE_PORT").pipe( + tailscaleServePort: Config.Port("T3CODE_TAILSCALE_SERVE_PORT").pipe( Config.option, Config.map(Option.getOrUndefined), ), @@ -175,7 +175,7 @@ export const sharedServerCommandFlags = { port: portFlag, host: hostFlag, baseDir: baseDirFlag, - cwd: Argument.string("cwd").pipe( + cwd: Argument.String("cwd").pipe( Argument.withDescription( "Working directory for provider sessions (defaults to the current directory).", ), @@ -457,7 +457,7 @@ const parseDurationInput = (value: string): Duration.Duration | null => { export const DurationFromString = Schema.String.pipe( Schema.decodeTo( Schema.Duration, - SchemaTransformation.transformOrFail({ + SchemaTransformation.transformEffect({ decode: (value) => { const duration = parseDurationInput(value); if (duration !== null) { diff --git a/apps/server/src/cli/connect.ts b/apps/server/src/cli/connect.ts index b7c78e5ea68b..96024a89dfa8 100644 --- a/apps/server/src/cli/connect.ts +++ b/apps/server/src/cli/connect.ts @@ -56,14 +56,14 @@ import { recoverServiceOnboardingOffer, } from "./service.ts"; -const jsonFlag = Flag.boolean("json").pipe( +const jsonFlag = Flag.Boolean("json").pipe( Flag.withDescription("Emit JSON instead of human-readable output."), Flag.withDefault(false), ); const isCloudCliTokenManagerError = Schema.is(CliTokenManager.CloudCliTokenManagerError); -const headlessFlag = Flag.boolean("headless").pipe( +const headlessFlag = Flag.Boolean("headless").pipe( Flag.withDescription("Authorize without a local browser using out-of-band OAuth."), Flag.withDefault(false), ); @@ -73,8 +73,8 @@ const headlessFlag = Flag.boolean("headless").pipe( * OAuth callback, so out-of-band OAuth is the only flow that can work. */ export const headlessSessionConfig = Config.all({ - sshConnection: Config.string("SSH_CONNECTION").pipe(Config.option), - sshTty: Config.string("SSH_TTY").pipe(Config.option), + sshConnection: Config.String("SSH_CONNECTION").pipe(Config.option), + sshTty: Config.String("SSH_TTY").pipe(Config.option), }).pipe( Config.map(({ sshConnection, sshTty }) => Option.isSome(sshConnection) || Option.isSome(sshTty)), ); @@ -82,7 +82,7 @@ export const headlessSessionConfig = Config.all({ const promptForOutOfBandOAuthCode = Effect.fn("cloud.cli.prompt_for_out_of_band_oauth_code")( function* ({ authorizeUrl, validate }: CliTokenManager.OutOfBandOAuthPromptInput) { yield* Console.log(formatHeadlessAuthorizationPrompt(authorizeUrl)); - return yield* Prompt.run(Prompt.text({ message: "Authorization code", validate })); + return yield* Prompt.run(Prompt.String({ message: "Authorization code", validate })); }, ); @@ -215,7 +215,7 @@ const CLOUD_CLI_LIVE_SERVER_TIMEOUT = Duration.seconds(5); const confirmRelayClientInstall = (version: string) => Prompt.run( - Prompt.confirm({ + Prompt.Confirm({ message: `The T3 relay client is required for T3 Connect. Download and install version ${version}?`, initial: false, }), @@ -512,7 +512,7 @@ const connectLoginCommand = Command.make("login", { const connectLinkCommand = Command.make("link", { ...projectLocationFlags, headless: headlessFlag, - publishOnly: Flag.boolean("publish-only").pipe( + publishOnly: Flag.Boolean("publish-only").pipe( Flag.withDescription( "Link to publish agent activity only — no managed tunnel. Reach this environment out of band (e.g. Tailscale).", ), @@ -585,7 +585,7 @@ const connectStatusCommand = Command.make("status", { const connectPublishCommand = Command.make("publish", { ...projectLocationFlags, - disable: Flag.boolean("disable").pipe( + disable: Flag.Boolean("disable").pipe( Flag.withDescription("Stop publishing agent activity to your mobile clients."), Flag.withDefault(false), ), diff --git a/apps/server/src/cli/pair.ts b/apps/server/src/cli/pair.ts index 7fd376c6f881..4cad4600d6b3 100644 --- a/apps/server/src/cli/pair.ts +++ b/apps/server/src/cli/pair.ts @@ -251,7 +251,7 @@ const discoverPairTarget = Effect.fn("pair.discoverPairTarget")(function* ( if (worktreeHome !== undefined) { bases.push(worktreeHome); } - const envHome = yield* Config.string("T3CODE_HOME").pipe(Config.option); + const envHome = yield* Config.String("T3CODE_HOME").pipe(Config.option); bases.push(yield* resolveBaseDir(Option.getOrUndefined(envHome))); } @@ -445,7 +445,7 @@ const mintPairingLink = Effect.fn("pair.mintPairingLink")(function* (input: { ); }); -const ttlFlag = Flag.string("ttl").pipe( +const ttlFlag = Flag.String("ttl").pipe( Flag.withSchema(DurationFromString), Flag.withDescription( "Token TTL, for example `5m`, `1h`, or `15 minutes`. Defaults to 5 minutes.", @@ -453,19 +453,19 @@ const ttlFlag = Flag.string("ttl").pipe( Flag.optional, ); -const labelFlag = Flag.string("label").pipe( +const labelFlag = Flag.String("label").pipe( Flag.withDescription("Optional label shown in the server's connections list."), Flag.optional, ); -const tailscaleFlag = Flag.boolean("tailscale").pipe( +const tailscaleFlag = Flag.Boolean("tailscale").pipe( Flag.withDescription( "Publish the server over Tailscale Serve HTTPS and pair through the tailnet URL.", ), Flag.withDefault(false), ); -const tailscaleServePortFlag = Flag.integer("tailscale-serve-port").pipe( +const tailscaleServePortFlag = Flag.Int("tailscale-serve-port").pipe( Flag.withSchema(PortSchema), Flag.withDescription("HTTPS port for Tailscale Serve when --tailscale is enabled."), Flag.withDefault(DEFAULT_TAILSCALE_SERVE_PORT), diff --git a/apps/server/src/cli/project.ts b/apps/server/src/cli/project.ts index 86f8a15418d1..cef4dc879073 100644 --- a/apps/server/src/cli/project.ts +++ b/apps/server/src/cli/project.ts @@ -442,10 +442,10 @@ const runProjectMutation = Effect.fn("runProjectMutation")(function* ( const projectAddCommand = Command.make("add", { ...projectLocationFlags, - workspaceRoot: Argument.string("path").pipe( + workspaceRoot: Argument.String("path").pipe( Argument.withDescription("Workspace root to add as a project."), ), - title: Flag.string("title").pipe(Flag.withDescription("Optional project title."), Flag.optional), + title: Flag.String("title").pipe(Flag.withDescription("Optional project title."), Flag.optional), }).pipe( Command.withDescription("Add a project."), Command.withHandler((flags) => @@ -490,10 +490,10 @@ const projectAddCommand = Command.make("add", { const projectRemoveCommand = Command.make("remove", { ...projectLocationFlags, - project: Argument.string("project").pipe( + project: Argument.String("project").pipe( Argument.withDescription("Project id or workspace root to remove."), ), - force: Flag.boolean("force").pipe( + force: Flag.Boolean("force").pipe( Flag.withDescription("Delete the project and all of its threads."), Flag.withDefault(false), ), @@ -529,10 +529,10 @@ const projectRemoveCommand = Command.make("remove", { const projectRenameCommand = Command.make("rename", { ...projectLocationFlags, - project: Argument.string("project").pipe( + project: Argument.String("project").pipe( Argument.withDescription("Project id or workspace root to rename."), ), - title: Argument.string("title").pipe(Argument.withDescription("New project title.")), + title: Argument.String("title").pipe(Argument.withDescription("New project title.")), }).pipe( Command.withDescription("Rename a project."), Command.withHandler((flags) => diff --git a/apps/server/src/cli/service.ts b/apps/server/src/cli/service.ts index 0cea18ff4977..a494e8f570bb 100644 --- a/apps/server/src/cli/service.ts +++ b/apps/server/src/cli/service.ts @@ -106,7 +106,7 @@ const runServiceCommand = Effect.fn("cli.service.run")(function* ( const serviceReconcileFlags = { ...projectLocationFlags, - allowDowngrade: Flag.boolean("allow-downgrade").pipe( + allowDowngrade: Flag.Boolean("allow-downgrade").pipe( Flag.withDescription("Allow replacing a newer installed service with this older CLI version."), Flag.withDefault(false), ), @@ -212,7 +212,7 @@ export const offerServiceDuringOnboarding = Effect.gen(function* () { // enable-linger equivalent on macOS. Do not promise more than that. const platform = yield* HostProcessPlatform; const wanted = yield* Prompt.run( - Prompt.confirm({ + Prompt.Confirm({ message: installed ? "The installed T3 Code service needs an update or repair. Update it now?" : platform === "darwin" diff --git a/apps/server/src/cli/servicePreflight.ts b/apps/server/src/cli/servicePreflight.ts index c31d84ecf816..94aea99091e0 100644 --- a/apps/server/src/cli/servicePreflight.ts +++ b/apps/server/src/cli/servicePreflight.ts @@ -5,8 +5,8 @@ import { Command, Flag } from "effect/unstable/cli"; import { runServicePreflight } from "../cloud/servicePreflight.ts"; export const servicePreflightCommand = Command.make("__service-preflight", { - databasePath: Flag.string("database-path"), - launcherProtocol: Flag.integer("launcher-protocol"), + databasePath: Flag.String("database-path"), + launcherProtocol: Flag.Int("launcher-protocol"), }).pipe( Command.unlisted, Command.withHandler(({ databasePath, launcherProtocol }) => diff --git a/apps/server/src/cli/theme.ts b/apps/server/src/cli/theme.ts index ca1181d85bba..26a0c337fb27 100644 --- a/apps/server/src/cli/theme.ts +++ b/apps/server/src/cli/theme.ts @@ -178,7 +178,7 @@ export class ThemeTargetMissingError extends Schema.TaggedError) { // Same precedence as the rest of the CLI: --base-dir, then T3CODE_HOME, @@ -463,11 +463,11 @@ const resolvableThemeIds = Effect.fn(function* (themesDir: string) { const themeSetCommand = Command.make("set", { baseDir: baseDirFlag, - id: Flag.string("id").pipe( + id: Flag.String("id").pipe( Flag.withDescription("Theme id to publish a file under, instead of its filename."), Flag.optional, ), - theme: Argument.string("theme").pipe( + theme: Argument.String("theme").pipe( Argument.withDescription( 'A theme id (a built-in, or one this machine publishes — themes/nightfall.json is "nightfall"), or a path to a theme JSON file to publish and set in one step.', ), diff --git a/apps/server/src/cli/triage.ts b/apps/server/src/cli/triage.ts index deb7823f2dab..726bd67bb886 100644 --- a/apps/server/src/cli/triage.ts +++ b/apps/server/src/cli/triage.ts @@ -142,12 +142,12 @@ const runInteractiveSession = (input: { child.once("exit", (code, signal) => resume(Effect.succeed(code ?? (signal === null ? 0 : 1)))); }); -const agentFlag = Flag.choice("agent", ["claude", "codex"]).pipe( +const agentFlag = Flag.Literals("agent", ["claude", "codex"]).pipe( Flag.withDescription("Agent CLI to use. Default: ask when both are installed."), Flag.optional, ); -const modelFlag = Flag.string("model").pipe( +const modelFlag = Flag.String("model").pipe( Flag.withDescription("Model passed through to the agent CLI. Default: the agent's default."), Flag.optional, ); @@ -169,7 +169,7 @@ export const triageCommand = Command.make("triage", { // --base-dir wins; T3CODE_HOME is its documented env equivalent (same // precedence as `t3 pair`). const explicitBaseDir = Option.getOrUndefined(flags.baseDir); - const envHome = yield* Config.string("T3CODE_HOME").pipe(Config.option); + const envHome = yield* Config.String("T3CODE_HOME").pipe(Config.option); const baseDir = yield* resolveBaseDir(explicitBaseDir ?? Option.getOrUndefined(envHome)); const paths = yield* ServerConfig.deriveServerPaths(baseDir, undefined, {}); diff --git a/apps/server/src/cloud/bootService.ts b/apps/server/src/cloud/bootService.ts index 22f383701e8e..0a4b1dc4b30d 100644 --- a/apps/server/src/cloud/bootService.ts +++ b/apps/server/src/cloud/bootService.ts @@ -506,8 +506,8 @@ export const make = Effect.fn("cloud.boot_service.make")(function* (input: { const hostExecPath = yield* HostProcessExecutablePath; const platform = yield* HostProcessPlatform; const uid = yield* HostProcessUserId; - const homeDir = yield* Config.string("HOME").pipe(Config.withDefault("")); - const installerPath = yield* Config.string("PATH").pipe(Config.withDefault("")); + const homeDir = yield* Config.String("HOME").pipe(Config.withDefault("")); + const installerPath = yield* Config.String("PATH").pipe(Config.withDefault("")); const fs = yield* FileSystem.FileSystem; const path = yield* Path.Path; const runner = yield* ProcessRunner.ProcessRunner; diff --git a/apps/server/src/cloud/publicConfig.ts b/apps/server/src/cloud/publicConfig.ts index d60a09b6decb..878b33cd8fdb 100644 --- a/apps/server/src/cloud/publicConfig.ts +++ b/apps/server/src/cloud/publicConfig.ts @@ -96,9 +96,9 @@ export function resolveRelayClientTracingConfig( } export function makeRelayUrlConfig(fallback = buildTimeRelayUrl) { - const runtimeConfig = Config.nonEmptyString("T3CODE_RELAY_URL"); + const runtimeConfig = Config.NonEmptyString("T3CODE_RELAY_URL"); return (fallback ? runtimeConfig.pipe(Config.withDefault(fallback)) : runtimeConfig).pipe( - Config.mapOrFail(validateRelayUrl), + Config.mapEffect(validateRelayUrl), ); } @@ -112,7 +112,7 @@ export const relayUrlConfig = makeRelayUrlConfig(); export const hostedAppUrlConfig = makePublicValueConfig( "T3CODE_HOSTED_APP_URL", DEFAULT_HOSTED_APP_URL, -).pipe(Config.mapOrFail(validateHostedAppUrl)); +).pipe(Config.mapEffect(validateHostedAppUrl)); function validateHostedAppUrl(value: string) { try { @@ -143,7 +143,7 @@ function validateHostedAppUrl(value: string) { } function makePublicValueConfig(name: string, fallback: string) { - const runtimeConfig = Config.nonEmptyString(name); + const runtimeConfig = Config.NonEmptyString(name); return (fallback ? runtimeConfig.pipe(Config.withDefault(fallback)) : runtimeConfig).pipe( Config.map((value) => value.trim()), ); @@ -180,7 +180,7 @@ export function makeCloudCliOAuthConfig({ clerkCliOAuthClientIdFallback, ), }).pipe( - Config.mapOrFail(({ clerkPublishableKey, clientId }) => + Config.mapEffect(({ clerkPublishableKey, clientId }) => Effect.try({ try: () => clerkFrontendApiUrlFromPublishableKey(clerkPublishableKey), catch: (cause) => diff --git a/apps/server/src/device/DeviceHubProxy.ts b/apps/server/src/device/DeviceHubProxy.ts index d2cb618fc488..dd048480b3dd 100644 --- a/apps/server/src/device/DeviceHubProxy.ts +++ b/apps/server/src/device/DeviceHubProxy.ts @@ -134,15 +134,25 @@ const proxyWebSocket = Effect.fn("DeviceHubProxy.proxyWebSocket")(function* ( Effect.gen(function* () { const writeToClient = yield* client.writer; const writeToUpstream = yield* upstream.writer; - const downstream = upstream.runRaw((data) => writeToClient(data)); - const upstreamPump = client.runRaw((data) => writeToUpstream(data)); - // Whichever side closes first ends the other via scope teardown. - yield* Effect.raceFirst(downstream, upstreamPump); + // Whichever side closes first ends the other via scope teardown: a close + // fails the pull with a SocketError, which loses the race. + return yield* Effect.raceFirst( + pumpFrames(upstream, writeToClient), + pumpFrames(client, writeToUpstream), + ); }), ).pipe(Effect.catchCause(() => Effect.void)); return HttpServerResponse.empty(); }); +const pumpFrames = (source: Socket.Socket, sink: Socket.Writer) => + Effect.gen(function* () { + const { pull } = yield* source.reader; + while (true) { + yield* sink.writeAll(yield* pull); + } + }); + const proxyHttp = Effect.fn("DeviceHubProxy.proxyHttp")(function* ( request: HttpServerRequest.HttpServerRequest, upstreamUrl: string, diff --git a/apps/server/src/git/GitManager.ts b/apps/server/src/git/GitManager.ts index 1a14fb5be5bc..457ce7b25558 100644 --- a/apps/server/src/git/GitManager.ts +++ b/apps/server/src/git/GitManager.ts @@ -2,6 +2,7 @@ import * as Arr from "effect/Array"; import * as Cache from "effect/Cache"; import * as Context from "effect/Context"; import * as Crypto from "effect/Crypto"; +import * as ByteSize from "effect/ByteSize"; import * as DateTime from "effect/DateTime"; import * as Duration from "effect/Duration"; import * as Effect from "effect/Effect"; @@ -698,7 +699,7 @@ export const make = Effect.gen(function* () { return ""; } const info = yield* fileSystem.stat(instructionPath); - if (info.type !== "File" || info.size > FileSystem.Size(20_000)) { + if (info.type !== "File" || info.size > ByteSize.bytes(20_000)) { return ""; } return (yield* fileSystem.readFileString(instructionPath)).trim(); diff --git a/apps/server/src/http.ts b/apps/server/src/http.ts index 290b73b48514..e0b2975e93a6 100644 --- a/apps/server/src/http.ts +++ b/apps/server/src/http.ts @@ -1,4 +1,4 @@ -import Mime from "@effect/platform-node/Mime"; +import * as Mime from "effect/unstable/http/Mime"; import { AuthOrchestrationOperateScope, AuthOrchestrationReadScope, @@ -202,7 +202,10 @@ export const assetFileResponse = Effect.fn("assetFileResponse")(function* ( } if (mediaFile && mediaInfo) { const size = bytesToRead ?? mediaInfo.size; - headers["Content-Type"] ??= Mime.getType(asset.path) ?? "application/octet-stream"; + headers["Content-Type"] ??= Option.getOrElse( + Mime.getType(asset.path), + () => "application/octet-stream", + ); headers["Content-Length"] = String(size); if (!isVideo) { headers["Last-Modified"] = mediaInfo.mtime.toUTCString(); @@ -490,7 +493,7 @@ const streamStaticFile = (file: FileSystem.File, size: bigint) => Effect.fnUntraced(function* (offset: bigint) { if (offset >= size) return; const remaining = size - offset; - const bytes = yield* file.readAlloc(remaining < 65_536n ? remaining : 65_536n); + const bytes = yield* file.readAlloc(Number(remaining < 65_536n ? remaining : 65_536n)); if (Option.isNone(bytes)) return; return [bytes.value, offset + BigInt(bytes.value.byteLength)] as const; }), @@ -566,7 +569,7 @@ const handleStaticAndDevRequest = Effect.fn("handleStaticAndDevRequest")( } } const fileInfo = opened.info; - const mimeType = Mime.getType(filePath) ?? "application/octet-stream"; + const mimeType = Option.getOrElse(Mime.getType(filePath), () => "application/octet-stream"); const isHtml = mimeType === "text/html"; // A hash-like name is not enough: custom static files can use the same naming pattern. diff --git a/apps/server/src/imageMime.ts b/apps/server/src/imageMime.ts index 1129edfd3ef1..958f004d4ac5 100644 --- a/apps/server/src/imageMime.ts +++ b/apps/server/src/imageMime.ts @@ -1,4 +1,5 @@ -import Mime from "@effect/platform-node/Mime"; +import * as Option from "effect/Option"; +import * as Mime from "effect/unstable/http/Mime"; const IMAGE_EXTENSION_BY_MIME_TYPE: Record = { "image/avif": ".avif", @@ -121,9 +122,10 @@ export function inferImageExtension(input: { mimeType: string; fileName?: string return fromMime; } - const fromMimeExtension = Mime.getExtension(input.mimeType); - if (fromMimeExtension && SAFE_IMAGE_FILE_EXTENSIONS.has(fromMimeExtension)) { - return fromMimeExtension; + // The registry returns bare extensions ("png"); the safe list is dotted. + const fromMimeExtension = Option.map(Mime.getExtension(input.mimeType), (ext) => `.${ext}`); + if (Option.isSome(fromMimeExtension) && SAFE_IMAGE_FILE_EXTENSIONS.has(fromMimeExtension.value)) { + return fromMimeExtension.value; } const fileName = input.fileName?.trim() ?? ""; diff --git a/apps/server/src/keybindings.ts b/apps/server/src/keybindings.ts index 1795808bc179..bbd37c1b3aa9 100644 --- a/apps/server/src/keybindings.ts +++ b/apps/server/src/keybindings.ts @@ -61,7 +61,7 @@ export { export const ResolvedKeybindingFromConfig = KeybindingRule.pipe( Schema.decodeTo( Schema.toType(ResolvedKeybindingRule), - SchemaTransformation.transformOrFail({ + SchemaTransformation.transformEffect({ decode: (rule) => Effect.succeed(compileResolvedKeybindingRule(rule)).pipe( Effect.filterOrFail( diff --git a/apps/server/src/mcp/McpHttpServer.test.ts b/apps/server/src/mcp/McpHttpServer.test.ts index 9cbc3fde2977..15518e47a497 100644 --- a/apps/server/src/mcp/McpHttpServer.test.ts +++ b/apps/server/src/mcp/McpHttpServer.test.ts @@ -681,7 +681,7 @@ it.effect("registers annotated tools and preserves authenticated request context expect(clickTool?.tool.annotations?.openWorldHint).toBe(true); expect(clickTool?.tool.outputSchema).toMatchObject({ type: "object", - additionalProperties: false, + additionalProperties: true, description: "The preview action completed successfully.", }); diff --git a/apps/server/src/mcp/McpSessionRegistry.test.ts b/apps/server/src/mcp/McpSessionRegistry.test.ts index a1e333bd07b0..9fc482d366d3 100644 --- a/apps/server/src/mcp/McpSessionRegistry.test.ts +++ b/apps/server/src/mcp/McpSessionRegistry.test.ts @@ -3,6 +3,7 @@ import { expect, it } from "@effect/vitest"; import { EnvironmentId, ProviderInstanceId, ThreadId } from "@t3tools/contracts"; import * as Effect from "effect/Effect"; import { HttpServer } from "effect/unstable/http"; +import * as NetAddress from "effect/unstable/net/NetAddress"; import * as ServerEnvironment from "../environment/ServerEnvironment.ts"; import * as McpSessionRegistry from "./McpSessionRegistry.ts"; @@ -10,7 +11,7 @@ import * as McpSessionRegistry from "./McpSessionRegistry.ts"; const environmentId = EnvironmentId.make("environment-1"); const makeFakeHttpServer = (hostname: string, port = 43123) => HttpServer.HttpServer.of({ - address: { _tag: "TcpAddress", hostname, port }, + address: NetAddress.inetAddressFromIpStringUnsafe(hostname, port), serve: (() => Effect.void) as HttpServer.HttpServer["Service"]["serve"], }); const fakeHttpServer = makeFakeHttpServer("127.0.0.1"); @@ -89,7 +90,8 @@ it.effect("builds MCP endpoints from the bound server host", () => const cases = [ ["100.64.0.40", "http://100.64.0.40:43123/mcp"], ["0.0.0.0", "http://127.0.0.1:43123/mcp"], - ["localhost", "http://localhost:43123/mcp"], + ["::", "http://127.0.0.1:43123/mcp"], + ["::1", "http://[::1]:43123/mcp"], ["127.0.0.1", "http://127.0.0.1:43123/mcp"], ] as const; diff --git a/apps/server/src/mcp/McpSessionRegistry.ts b/apps/server/src/mcp/McpSessionRegistry.ts index 383bfbfec390..fa0a17d826f9 100644 --- a/apps/server/src/mcp/McpSessionRegistry.ts +++ b/apps/server/src/mcp/McpSessionRegistry.ts @@ -6,6 +6,7 @@ import * as Effect from "effect/Effect"; import * as Layer from "effect/Layer"; import * as SynchronizedRef from "effect/SynchronizedRef"; import { HttpServer } from "effect/unstable/http"; +import * as NetAddress from "effect/unstable/net/NetAddress"; import * as ServerEnvironment from "../environment/ServerEnvironment.ts"; import * as McpInvocationContext from "./McpInvocationContext.ts"; @@ -78,16 +79,12 @@ const bytesToHex = (bytes: Uint8Array): string => const tokenFromBytes = (bytes: Uint8Array): string => Buffer.from(bytes).toString("base64url"); -const getHttpMcpEndpointHost = (hostname: string): string => { - const normalized = hostname.toLowerCase(); - const endpointHostname = - normalized === "0.0.0.0" || normalized === "::" || normalized === "[::]" - ? "127.0.0.1" - : hostname; - return endpointHostname.includes(":") && !endpointHostname.startsWith("[") - ? `[${endpointHostname}]` - : endpointHostname; -}; +// A wildcard bind is reachable on loopback, which is where the provider +// subprocesses run; anything else is announced as the address it bound. +const getHttpMcpEndpointHost = (address: NetAddress.IpAddress): string => + NetAddress.isUnspecified(address) + ? "127.0.0.1" + : NetAddress.formatUrlHostString(NetAddress.formatIp(address)); const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* ( options: McpSessionRegistryOptions = {}, @@ -99,10 +96,9 @@ const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* ( const state = yield* SynchronizedRef.make({ records: new Map() }); const currentTimeMillis = options.now ? Effect.sync(options.now) : Clock.currentTimeMillis; const livenessWindowMs = options.livenessWindowMs ?? DEFAULT_LIVENESS_WINDOW_MS; - const endpoint = - httpServer.address._tag === "TcpAddress" - ? `http://${getHttpMcpEndpointHost(httpServer.address.hostname)}:${httpServer.address.port}/mcp` - : "http://127.0.0.1/mcp"; + const endpoint = NetAddress.isInetAddress(httpServer.address) + ? `http://${getHttpMcpEndpointHost(httpServer.address.address)}:${httpServer.address.port}/mcp` + : "http://127.0.0.1/mcp"; const hashToken = (token: string) => crypto diff --git a/apps/server/src/mcp/toolkits/preview/tools.test.ts b/apps/server/src/mcp/toolkits/preview/tools.test.ts index 3deef11f671e..0937fba72c60 100644 --- a/apps/server/src/mcp/toolkits/preview/tools.test.ts +++ b/apps/server/src/mcp/toolkits/preview/tools.test.ts @@ -65,10 +65,12 @@ it("exports exact object result schemas for preview actions", () => { "preview_wait_for", ] as const; for (const name of actionNames) { + // Effect's tool schemas follow the decoder default since rc.113 and leave + // unmodeled result keys open. expect(Tool.getJsonSchemaFromSchema(PreviewToolkit.tools[name].successSchema)).toEqual({ type: "object", properties: { toolIcon: expect.any(Object) }, - additionalProperties: false, + additionalProperties: true, description: "The preview action completed successfully.", }); } diff --git a/apps/server/src/process/externalLauncher.ts b/apps/server/src/process/externalLauncher.ts index 2b7310051b89..56d729b52fbb 100644 --- a/apps/server/src/process/externalLauncher.ts +++ b/apps/server/src/process/externalLauncher.ts @@ -93,22 +93,22 @@ const compactEnv = (input: Record>): NodeJS.Proces ); const BrowserLaunchEnvConfig = Config.all({ - SYSTEMROOT: Config.string("SYSTEMROOT").pipe(Config.option), - windir: Config.string("windir").pipe(Config.option), - WSL_DISTRO_NAME: Config.string("WSL_DISTRO_NAME").pipe(Config.option), - WSL_INTEROP: Config.string("WSL_INTEROP").pipe(Config.option), - SSH_CONNECTION: Config.string("SSH_CONNECTION").pipe(Config.option), - SSH_TTY: Config.string("SSH_TTY").pipe(Config.option), - container: Config.string("container").pipe(Config.option), - DISPLAY: Config.string("DISPLAY").pipe(Config.option), - WAYLAND_DISPLAY: Config.string("WAYLAND_DISPLAY").pipe(Config.option), + SYSTEMROOT: Config.String("SYSTEMROOT").pipe(Config.option), + windir: Config.String("windir").pipe(Config.option), + WSL_DISTRO_NAME: Config.String("WSL_DISTRO_NAME").pipe(Config.option), + WSL_INTEROP: Config.String("WSL_INTEROP").pipe(Config.option), + SSH_CONNECTION: Config.String("SSH_CONNECTION").pipe(Config.option), + SSH_TTY: Config.String("SSH_TTY").pipe(Config.option), + container: Config.String("container").pipe(Config.option), + DISPLAY: Config.String("DISPLAY").pipe(Config.option), + WAYLAND_DISPLAY: Config.String("WAYLAND_DISPLAY").pipe(Config.option), }).pipe(Config.map(compactEnv)); const CommandLookupEnvConfig = Config.all({ - PATH: Config.string("PATH").pipe(Config.option), - Path: Config.string("Path").pipe(Config.option), - path: Config.string("path").pipe(Config.option), - PATHEXT: Config.string("PATHEXT").pipe(Config.option), + PATH: Config.String("PATH").pipe(Config.option), + Path: Config.String("Path").pipe(Config.option), + path: Config.String("path").pipe(Config.option), + PATHEXT: Config.String("PATHEXT").pipe(Config.option), }).pipe(Config.map(compactEnv)); const readBrowserLaunchEnv = BrowserLaunchEnvConfig.pipe(Effect.orElseSucceed(() => ({}))); diff --git a/apps/server/src/project/AgentSessionScanner.test.ts b/apps/server/src/project/AgentSessionScanner.test.ts index c797eab6f550..5e3b5c6279f4 100644 --- a/apps/server/src/project/AgentSessionScanner.test.ts +++ b/apps/server/src/project/AgentSessionScanner.test.ts @@ -1141,7 +1141,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => { Effect.map((file) => ({ ...file, stat: file.stat, - readAlloc: (size: FileSystem.SizeInput) => { + readAlloc: (size: number) => { reservedBytes += Number(size); requests.push(Number(size)); return file.readAlloc(size); @@ -1709,7 +1709,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => { : { ...file, stat: file.stat, - readAlloc: (size: FileSystem.SizeInput) => + readAlloc: (size: number) => file.readAlloc(size).pipe( Effect.tap((chunk) => Effect.sync(() => { @@ -2157,7 +2157,10 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => { payload: { type: "user_message", message: "Future work" }, }), ].join("\n"), - mtimeMs: nowMs + 1, + // Node's BigInt stat (which the Effect file system now uses) floors + // sub-millisecond precision, so a one-millisecond offset can round + // back to `nowMs`; use a full second to stay clear of the clock. + mtimeMs: nowMs + 1_000, }); const outcomes = yield* runRecentThreadOutcomes({ @@ -2211,7 +2214,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => { Effect.map((file) => ({ ...file, stat: file.stat, - readAlloc: (size: FileSystem.SizeInput) => + readAlloc: (size: number) => file.readAlloc(size).pipe( Effect.tap((chunk) => Effect.gen(function* () { diff --git a/apps/server/src/provider/Drivers/CursorSkills.ts b/apps/server/src/provider/Drivers/CursorSkills.ts index 7f8d96d98811..54d07d636fa7 100644 --- a/apps/server/src/provider/Drivers/CursorSkills.ts +++ b/apps/server/src/provider/Drivers/CursorSkills.ts @@ -11,6 +11,7 @@ import * as NodeOS from "node:os"; import type { ServerProviderSkill } from "@t3tools/contracts"; +import * as ByteSize from "effect/ByteSize"; import * as Effect from "effect/Effect"; import * as FileSystem from "effect/FileSystem"; import * as Path from "effect/Path"; @@ -23,9 +24,9 @@ const SKILL_MENTION_PATTERN = /(^|\s)\$(?![0-9][0-9_]*(?:[kKmMbBtT]|[eE][0-9]+)?(?:\s|$))(?=[a-zA-Z0-9:_-]*[a-zA-Z])([a-zA-Z0-9][a-zA-Z0-9:_-]*)(?=\s|$)/g; const HAS_SKILL_MENTION_PATTERN = new RegExp(SKILL_MENTION_PATTERN.source); const MAX_SKILL_DEPTH = 10; -const MAX_SKILL_BYTES = FileSystem.Size(1_000_000); +const MAX_SKILL_BYTES = ByteSize.bytes(1_000_000); const MAX_SKILL_SCAN_ENTRIES = 10_000; -const MAX_SKILL_SCAN_BYTES = FileSystem.Size(8_000_000); +const MAX_SKILL_SCAN_BYTES = ByteSize.bytes(8_000_000); interface CursorSkillFrontmatter { readonly description?: string; diff --git a/apps/server/src/provider/providerMaintenance.ts b/apps/server/src/provider/providerMaintenance.ts index 74167a808840..6a11b22462ee 100644 --- a/apps/server/src/provider/providerMaintenance.ts +++ b/apps/server/src/provider/providerMaintenance.ts @@ -46,10 +46,10 @@ const compactEnv = (input: Record>): NodeJS.Proces ); const CommandLookupEnvConfig = Config.all({ - PATH: Config.string("PATH").pipe(Config.option), - Path: Config.string("Path").pipe(Config.option), - path: Config.string("path").pipe(Config.option), - PATHEXT: Config.string("PATHEXT").pipe(Config.option), + PATH: Config.String("PATH").pipe(Config.option), + Path: Config.String("Path").pipe(Config.option), + path: Config.String("path").pipe(Config.option), + PATHEXT: Config.String("PATHEXT").pipe(Config.option), }).pipe(Config.map(compactEnv)); const readCommandLookupEnv = CommandLookupEnvConfig.pipe(Effect.orElseSucceed(() => ({}))); diff --git a/apps/server/src/server.test.ts b/apps/server/src/server.test.ts index afb4adfef79c..38d68a23e909 100644 --- a/apps/server/src/server.test.ts +++ b/apps/server/src/server.test.ts @@ -84,6 +84,7 @@ import { } from "effect/unstable/http"; import { OtlpSerialization, OtlpTracer } from "effect/unstable/observability"; import { RpcClient, RpcSerialization } from "effect/unstable/rpc"; +import * as NetAddress from "effect/unstable/net/NetAddress"; import * as Socket from "effect/unstable/socket/Socket"; import { vi } from "vite-plus/test"; @@ -1212,9 +1213,10 @@ const wsRpcProtocolLayer = (wsUrl: string, onMessage?: (message: string) => void const webSocketConstructorLayer = Layer.succeed( Socket.WebSocketConstructor, (socketUrl, protocols) => { + // Socket.makeWebSocket only ever passes its `protocols` option here. const socket = new NodeSocket.NodeWS.WebSocket( socketUrl, - protocols, + protocols as string | string[] | undefined, cookie ? { headers: { cookie } } : undefined, ); if (onMessage) socket.on("message", (data) => onMessage(data.toString())); @@ -1274,7 +1276,7 @@ const appendSessionCookieToWsUrl = (url: string, sessionCookieHeader: string) => const getHttpServerUrl = (pathname = "") => Effect.gen(function* () { const server = yield* HttpServer.HttpServer; - const address = server.address as HttpServer.TcpAddress; + const address = server.address as NetAddress.InetAddress; return `http://127.0.0.1:${address.port}${pathname}`; }); @@ -1634,7 +1636,7 @@ const getWsServerUrl = ( ) => Effect.gen(function* () { const server = yield* HttpServer.HttpServer; - const address = server.address as HttpServer.TcpAddress; + const address = server.address as NetAddress.InetAddress; const baseUrl = `ws://127.0.0.1:${address.port}${pathname}`; if (options?.authenticated === false) { return baseUrl; @@ -2035,7 +2037,7 @@ it.layer(NodeServices.layer)("server router seam", (it) => { return new Proxy(file, { get(target, key) { if (key === "readAlloc") { - return (size: FileSystem.SizeInput) => { + return (size: number) => { bodyReads += 1; return target.readAlloc(size); }; @@ -11700,14 +11702,14 @@ it.live( const report = formatTransferBudgetReport(runs); yield* Effect.logInfo(`\n${report}`); - const reportPath = yield* Config.string("T3CODE_TRANSFER_BUDGET_REPORT_PATH").pipe( + const reportPath = yield* Config.String("T3CODE_TRANSFER_BUDGET_REPORT_PATH").pipe( Config.option, ); if (Option.isSome(reportPath)) { const fileSystem = yield* FileSystem.FileSystem; yield* fileSystem.writeFileString(reportPath.value, report); } - const resultPath = yield* Config.string("T3CODE_TRANSFER_BUDGET_RESULT_PATH").pipe( + const resultPath = yield* Config.String("T3CODE_TRANSFER_BUDGET_RESULT_PATH").pipe( Config.option, ); if (Option.isSome(resultPath)) { diff --git a/apps/server/src/sourceControl/BitbucketApi.ts b/apps/server/src/sourceControl/BitbucketApi.ts index 1223f95f68fd..7bac33a30be1 100644 --- a/apps/server/src/sourceControl/BitbucketApi.ts +++ b/apps/server/src/sourceControl/BitbucketApi.ts @@ -39,12 +39,12 @@ const DEFAULT_MAX_RESPONSE_BYTES = 8 * 1024 * 1024; const MAX_REDIRECTS = 3; const BitbucketApiEnvConfig = Config.all({ - baseUrl: Config.string("T3CODE_BITBUCKET_API_BASE_URL").pipe( + baseUrl: Config.String("T3CODE_BITBUCKET_API_BASE_URL").pipe( Config.withDefault(DEFAULT_API_BASE_URL), ), - accessToken: Config.string("T3CODE_BITBUCKET_ACCESS_TOKEN").pipe(Config.option), - email: Config.string("T3CODE_BITBUCKET_EMAIL").pipe(Config.option), - apiToken: Config.string("T3CODE_BITBUCKET_API_TOKEN").pipe(Config.option), + accessToken: Config.String("T3CODE_BITBUCKET_ACCESS_TOKEN").pipe(Config.option), + email: Config.String("T3CODE_BITBUCKET_EMAIL").pipe(Config.option), + apiToken: Config.String("T3CODE_BITBUCKET_API_TOKEN").pipe(Config.option), }); const BitbucketApiOperation = Schema.Literals([ diff --git a/apps/server/src/telemetry/AnalyticsService.ts b/apps/server/src/telemetry/AnalyticsService.ts index b2e737fe95a4..c02c168a8afc 100644 --- a/apps/server/src/telemetry/AnalyticsService.ts +++ b/apps/server/src/telemetry/AnalyticsService.ts @@ -30,18 +30,18 @@ interface BufferedAnalyticsEvent { } const TelemetryEnvConfig = Config.all({ - posthogKey: Config.string("T3CODE_POSTHOG_KEY").pipe( + posthogKey: Config.String("T3CODE_POSTHOG_KEY").pipe( Config.withDefault("phc_XOWci4oZP4VvLiEyrFqkFjP4CZn55mjYYBMREK5Wd6m"), ), - posthogHost: Config.string("T3CODE_POSTHOG_HOST").pipe( + posthogHost: Config.String("T3CODE_POSTHOG_HOST").pipe( Config.withDefault("https://us.i.posthog.com"), ), - enabled: Config.boolean("T3CODE_TELEMETRY_ENABLED").pipe(Config.withDefault(true)), - flushBatchSize: Config.number("T3CODE_TELEMETRY_FLUSH_BATCH_SIZE").pipe(Config.withDefault(20)), - maxBufferedEvents: Config.number("T3CODE_TELEMETRY_MAX_BUFFERED_EVENTS").pipe( + enabled: Config.Boolean("T3CODE_TELEMETRY_ENABLED").pipe(Config.withDefault(true)), + flushBatchSize: Config.Number("T3CODE_TELEMETRY_FLUSH_BATCH_SIZE").pipe(Config.withDefault(20)), + maxBufferedEvents: Config.Number("T3CODE_TELEMETRY_MAX_BUFFERED_EVENTS").pipe( Config.withDefault(1_000), ), - wslDistroName: Config.string("WSL_DISTRO_NAME").pipe(Config.option), + wslDistroName: Config.String("WSL_DISTRO_NAME").pipe(Config.option), }); export class AnalyticsService extends Context.Service< diff --git a/apps/server/src/textGeneration/TextGenerationUtils.ts b/apps/server/src/textGeneration/TextGenerationUtils.ts index 7c2f0f284140..b4a9b605e5fb 100644 --- a/apps/server/src/textGeneration/TextGenerationUtils.ts +++ b/apps/server/src/textGeneration/TextGenerationUtils.ts @@ -9,7 +9,9 @@ const decodeJsonThreadTitle = Schema.decodeOption( /** Convert an Effect Schema to a flat JSON Schema object, inlining `$defs` when present. */ export function toJsonSchemaObject(schema: Schema.Top): unknown { - const document = Schema.toJsonSchemaDocument(schema); + // Closed objects (`additionalProperties: false`): structured-output modes + // require it, and it was the generator default before effect rc.113. + const document = Schema.toJsonSchemaDocument(schema, { onExcessProperty: "error" }); if (document.definitions && Object.keys(document.definitions).length > 0) { return { ...document.schema, $defs: document.definitions }; } diff --git a/apps/server/vite.config.ts b/apps/server/vite.config.ts index 88c8c2f4d37f..431fceec0d9b 100644 --- a/apps/server/vite.config.ts +++ b/apps/server/vite.config.ts @@ -45,8 +45,8 @@ export default mergeConfig( // (declared deps are external by default, which is what this change is // undoing). `neverBundle` forces the native packages out: returning // false from `alwaysBundle` only means "no opinion", so a transitive - // dependency would still be bundled — which silently inlined - // msgpackr-extract and its loader, losing native acceleration. + // dependency would still be bundled — which silently inlined native + // loaders such as node-gyp-build, losing native acceleration. alwaysBundle: shouldBundleCliDependency, neverBundle: (id: string) => isExternalCliDependency(id), onlyBundle: false, diff --git a/docs/operations/release.md b/docs/operations/release.md index cb4ea155386a..f9b5ef0c79d6 100644 --- a/docs/operations/release.md +++ b/docs/operations/release.md @@ -269,7 +269,7 @@ break: sidecar, the sidecar digest does not match the emitted archive, or required Linux runtime members are absent. - The emitted WSL archive contains Windows/Darwin node-pty payloads, ConPTY, - pnpm install metadata, or Windows-only FFF, ffi-rs, or msgpackr bindings. + pnpm install metadata, or Windows-only FFF or ffi-rs bindings. - The external Windows resource monitor is absent. - The unpacked Windows application contains more than 80 files. diff --git a/infra/relay/package.json b/infra/relay/package.json index 94d1d5036a4a..37a66c99236f 100644 --- a/infra/relay/package.json +++ b/infra/relay/package.json @@ -18,7 +18,7 @@ "@t3tools/client-runtime": "workspace:*", "@t3tools/contracts": "workspace:*", "@t3tools/shared": "workspace:*", - "alchemy": "2.0.0-beta.76", + "alchemy": "2.0.0-beta.77", "drizzle-orm": "1.0.0-rc.5-ab785fc", "effect": "catalog:" }, diff --git a/infra/relay/scripts/android-push-watch.ts b/infra/relay/scripts/android-push-watch.ts index 2b902b33f946..7eedea64edac 100644 --- a/infra/relay/scripts/android-push-watch.ts +++ b/infra/relay/scripts/android-push-watch.ts @@ -88,8 +88,9 @@ const main = Effect.gen(function* () { ); const socketConstructor = Layer.succeed( Socket.WebSocketConstructor, + // Socket.makeWebSocket only ever passes its `protocols` option here. (url, protocols) => - new NodeSocket.NodeWS.WebSocket(url, protocols, { + new NodeSocket.NodeWS.WebSocket(url, protocols as string | string[] | undefined, { headers: { authorization: `Bearer ${connection.bearerToken}` }, }) as unknown as globalThis.WebSocket, ); diff --git a/infra/relay/scripts/deploy.ts b/infra/relay/scripts/deploy.ts index c828db1f2350..df0a89afa801 100644 --- a/infra/relay/scripts/deploy.ts +++ b/infra/relay/scripts/deploy.ts @@ -7,11 +7,12 @@ import * as Apply from "alchemy/Apply"; import { ArtifactStore, createArtifactStore, provideFreshArtifactStore } from "alchemy/Artifacts"; import { AuthProviders } from "alchemy/Auth/AuthProvider"; import { CredentialsStoreLive } from "alchemy/Auth/Credentials"; -import { ProfileLive } from "alchemy/Auth/Profile"; +import { ProfileStoreLive } from "alchemy/Auth/Profile"; import * as Cloudflare from "alchemy/Cloudflare"; -import { Cli } from "alchemy/Cli/Cli"; +import { layerNonInteractive } from "alchemy/Interaction"; import { LoggingCli } from "alchemy/Cli/LoggingCli"; import * as Plan from "alchemy/Plan"; +import { Cli } from "alchemy/Report"; import * as Stage from "alchemy/Stage"; import * as State from "alchemy/State/State"; import { TelemetryLive } from "alchemy/Telemetry/Layer"; @@ -195,7 +196,7 @@ const loadDeployConfigProvider = Effect.fn("relay.deploy.loadConfigProvider")(fu ); }); -const relayDeployStage = Config.nonEmptyString("stage").pipe( +const relayDeployStage = Config.NonEmptyString("stage").pipe( Config.option, Config.map( Option.getOrElse(() => `dev_${process.env.USER ?? process.env.USERNAME ?? "unknown"}`), @@ -219,7 +220,7 @@ const writeGithubOutput = Effect.fn("relay.deploy.writeGithubOutput")(function* outcome: RelayDeployOutcome, ) { const fs = yield* FileSystem.FileSystem; - const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT"); + const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT"); yield* fs.writeFileString( githubOutputPath, serializeGithubOutput({ @@ -259,11 +260,16 @@ const deployBaseServices = Layer.mergeAll( Layer.succeed(AuthProviders, {}), Layer.succeed(ArtifactStore, createArtifactStore()), Layer.provideMerge(AlchemyContextLive, PlatformServices), - Layer.provide(ProfileLive, PlatformServices), + Layer.provide(ProfileStoreLive, PlatformServices), Layer.provide(CredentialsStoreLive, PlatformServices), FetchHttpClient.layer, TelemetryLive, - LoggingCli, + // LoggingCli captures the prompt environment when it is built. + Layer.provide(LoggingCli, PlatformServices), + // Alchemy's auth providers prompt through this service. None are configured + // here and the apply confirmation is this script's own prompt, so a prompt + // reaching it is a typed failure rather than a hang in CI. + layerNonInteractive(), ); const deployServices = deployBaseServices; @@ -376,7 +382,7 @@ const runRelayDeploy = Effect.fn("relay.deploy.run")( if (!options.yes && changed) { yield* cli.displayPlan(plan); const approved = yield* Prompt.run( - Prompt.confirm({ + Prompt.Confirm({ message: "Apply this relay deployment?", }), ); @@ -445,43 +451,43 @@ export const deploy = Effect.fn("relay.deploy")(function* (options: RelayDeployO export const relayDeployCommand = Command.make( "relay-deploy", { - dryRun: Flag.boolean("dry-run").pipe( + dryRun: Flag.Boolean("dry-run").pipe( Flag.withDescription("Dry run the deployment without applying changes."), Flag.withDefault(false), ), - force: Flag.boolean("force").pipe( + force: Flag.Boolean("force").pipe( Flag.withDescription("Force updates for resources that would otherwise no-op."), Flag.withDefault(false), ), - envFile: Flag.string("env-file").pipe( + envFile: Flag.String("env-file").pipe( Flag.withDescription( "Environment file to load. Defaults to infra/relay/.env with process env fallback.", ), Flag.optional, ), - stage: Flag.string("stage").pipe( + stage: Flag.String("stage").pipe( Flag.withDescription("Stage to deploy. Defaults to dev_${USER}."), Flag.optional, ), - yes: Flag.boolean("yes").pipe( + yes: Flag.Boolean("yes").pipe( Flag.withDescription("Skip the deployment confirmation prompt."), Flag.withDefault(false), ), - adopt: Flag.boolean("adopt").pipe( + adopt: Flag.Boolean("adopt").pipe( Flag.withDescription("Adopt pre-existing cloud resources that conflict with this stack."), Flag.withDefault(false), ), - githubOutput: Flag.boolean("github-output").pipe( + githubOutput: Flag.Boolean("github-output").pipe( Flag.withDescription("Append relay deployment metadata to GITHUB_OUTPUT."), Flag.withDefault(false), ), - githubEnvFile: Flag.string("github-env-file").pipe( + githubEnvFile: Flag.String("github-env-file").pipe( Flag.withDescription( "Write relay client tracing variables to a file suitable for GITHUB_ENV.", ), Flag.optional, ), - readState: Flag.boolean("read-state").pipe( + readState: Flag.Boolean("read-state").pipe( Flag.withDescription("Read the deployed stack output without planning or applying changes."), Flag.withDefault(false), ), diff --git a/infra/relay/src/worker.ts b/infra/relay/src/worker.ts index caa5425b083f..61020c40f45d 100644 --- a/infra/relay/src/worker.ts +++ b/infra/relay/src/worker.ts @@ -141,19 +141,19 @@ export const ApiLive = Api.make( // // 2. Create bindings // - const apnsEnabled = yield* Config.boolean("APNS_ENABLED").pipe(Config.withDefault(true)); + const apnsEnabled = yield* Config.Boolean("APNS_ENABLED").pipe(Config.withDefault(true)); const apnsCredentials = apnsEnabled ? { environment: yield* Config.schema(RelayConfiguration.ApnsEnvironment, "APNS_ENVIRONMENT"), - teamId: yield* Config.string("APNS_TEAM_ID"), - keyId: yield* Config.string("APNS_KEY_ID"), - bundleId: yield* Config.string("APNS_BUNDLE_ID"), - privateKey: yield* Config.redacted("APNS_PRIVATE_KEY"), + teamId: yield* Config.String("APNS_TEAM_ID"), + keyId: yield* Config.String("APNS_KEY_ID"), + bundleId: yield* Config.String("APNS_BUNDLE_ID"), + privateKey: yield* Config.Redacted("APNS_PRIVATE_KEY"), } : null; const fcmServiceAccount = Option.getOrUndefined( Option.filter( - yield* Config.option(Config.redacted("FCM_SERVICE_ACCOUNT")), + yield* Config.option(Config.Redacted("FCM_SERVICE_ACCOUNT")), (value) => Redacted.value(value).trim().length > 0, ), ); @@ -165,9 +165,9 @@ export const ApiLive = Api.make( const axiomIngestToken = yield* observability.workerIngestToken.token; const axiomTracesEndpoint = yield* observability.traces.otelTracesEndpoint; - const clerkSecretKey = yield* Config.redacted("CLERK_SECRET_KEY"); - const clerkPublishableKey = yield* Config.string("CLERK_PUBLISHABLE_KEY"); - const clerkJwtAudience = yield* Config.string("CLERK_JWT_AUDIENCE"); + const clerkSecretKey = yield* Config.Redacted("CLERK_SECRET_KEY"); + const clerkPublishableKey = yield* Config.String("CLERK_PUBLISHABLE_KEY"); + const clerkJwtAudience = yield* Config.String("CLERK_JWT_AUDIENCE"); const cloudMintPrivateKey = yield* cloudMintKeyPair.privateKey; const cloudMintPublicKey = yield* cloudMintKeyPair.publicKey; diff --git a/infra/relay/src/zone.ts b/infra/relay/src/zone.ts index 5d1b60db2c7e..93a2cd965c97 100644 --- a/infra/relay/src/zone.ts +++ b/infra/relay/src/zone.ts @@ -21,9 +21,9 @@ function withLogicalId(resource: Resource, logicalId: s export const RelayDeploymentConfig = Effect.gen(function* () { const { stage } = yield* Alchemy.Stack; - const relayApiZoneName = yield* Config.nonEmptyString("RELAY_API_ZONE_NAME"); - const managedEndpointZoneName = yield* Config.nonEmptyString("RELAY_TUNNEL_ZONE_NAME"); - const relayPublicDomainOverride = yield* Config.string("RELAY_DOMAIN").pipe( + const relayApiZoneName = yield* Config.NonEmptyString("RELAY_API_ZONE_NAME"); + const managedEndpointZoneName = yield* Config.NonEmptyString("RELAY_TUNNEL_ZONE_NAME"); + const relayPublicDomainOverride = yield* Config.String("RELAY_DOMAIN").pipe( Config.option, Config.map( Option.flatMap((value) => { diff --git a/knip.jsonc b/knip.jsonc index 859c309ab7c6..05da5a319023 100644 --- a/knip.jsonc +++ b/knip.jsonc @@ -25,8 +25,8 @@ "src/provider/testFixtures/*.mjs", ], // Keep the transitive Effect runtime pinned for standalone npm installs. - // Native msgpack acceleration and the Vite+ web build prerequisite. - "ignoreDependencies": ["@effect/platform-node-shared", "msgpackr-extract", "@t3tools/web"], + // The Vite+ web build prerequisite. + "ignoreDependencies": ["@effect/platform-node-shared", "@t3tools/web"], }, "apps/desktop": { // Electron loads these bundles by filename rather than importing them. diff --git a/packages/contracts/src/baseSchemas.ts b/packages/contracts/src/baseSchemas.ts index e55e0af7ca02..602515843651 100644 --- a/packages/contracts/src/baseSchemas.ts +++ b/packages/contracts/src/baseSchemas.ts @@ -6,7 +6,7 @@ import * as SchemaTransformation from "effect/SchemaTransformation"; export const TrimmedString = Schema.String.pipe( Schema.decodeTo( Schema.String, - SchemaTransformation.transformOrFail({ + SchemaTransformation.transformEffect({ decode: (value) => Effect.succeed(value.trim()), encode: (value) => Effect.succeed(value.trim()), }), diff --git a/packages/contracts/src/model.ts b/packages/contracts/src/model.ts index bce1a766bc9b..c2def86bca75 100644 --- a/packages/contracts/src/model.ts +++ b/packages/contracts/src/model.ts @@ -68,7 +68,7 @@ const LegacyProviderOptionSelectionsObject = Schema.Record(Schema.String, Schema const ProviderOptionSelectionsFromLegacyObject = LegacyProviderOptionSelectionsObject.pipe( Schema.decodeTo( Schema.Array(ProviderOptionSelection), - SchemaTransformation.transformOrFail({ + SchemaTransformation.transformEffect({ decode: (record) => Effect.succeed(coerceLegacyOptionsObjectToArray(record)), encode: (selections) => Effect.succeed(canonicalSelectionsToLegacyObject(selections)), }), diff --git a/packages/contracts/src/orchestration.ts b/packages/contracts/src/orchestration.ts index 56a29b8f65f0..f51fd41c1df3 100644 --- a/packages/contracts/src/orchestration.ts +++ b/packages/contracts/src/orchestration.ts @@ -91,7 +91,7 @@ const ModelSelectionSource = Schema.Struct({ export const ModelSelection = ModelSelectionSource.pipe( Schema.decodeTo( ModelSelectionWire, - SchemaTransformation.transformOrFail({ + SchemaTransformation.transformEffect({ decode: (raw) => { // Resolve the routing key: prefer an explicit `instanceId`; fall // back to promoting the legacy `provider` slug (the canonical diff --git a/packages/contracts/src/settings.ts b/packages/contracts/src/settings.ts index 90b176c3095a..1e2af0867e5d 100644 --- a/packages/contracts/src/settings.ts +++ b/packages/contracts/src/settings.ts @@ -477,7 +477,7 @@ const makeBinaryPathSetting = (fallback: string) => TrimmedString.pipe( Schema.decodeTo( Schema.String, - SchemaTransformation.transformOrFail({ + SchemaTransformation.transformEffect({ decode: (value) => Effect.succeed(value || fallback), encode: (value) => Effect.succeed(value), }), diff --git a/packages/effect-acp/scripts/generate.ts b/packages/effect-acp/scripts/generate.ts index 1fe8e2edf8ab..daa40d7ae878 100644 --- a/packages/effect-acp/scripts/generate.ts +++ b/packages/effect-acp/scripts/generate.ts @@ -281,7 +281,7 @@ const generateSchemas = Effect.fn("generateSchemas")(function* (skipDownload: bo const generateCommand = Command.make( "generate", { - skipDownload: Flag.boolean("skip-download").pipe(Flag.withDefault(false)), + skipDownload: Flag.Boolean("skip-download").pipe(Flag.withDefault(false)), }, ({ skipDownload }) => generateSchemas(skipDownload), ).pipe(Command.withDescription("Generate Effect ACP schemas from the pinned ACP release assets.")); diff --git a/packages/shared/src/relayClient.ts b/packages/shared/src/relayClient.ts index 4743f12b19d5..b33078fc5548 100644 --- a/packages/shared/src/relayClient.ts +++ b/packages/shared/src/relayClient.ts @@ -103,7 +103,7 @@ const INSTALL_LOCK_RETRY_DELAY = "100 millis"; const INSTALL_LOCK_STALE_MS = 5 * 60 * 1_000; const trimmedString = (name: string) => - Config.string(name).pipe( + Config.String(name).pipe( Config.option, Config.map( Option.flatMap((value) => { diff --git a/packages/shared/src/schemaYaml.ts b/packages/shared/src/schemaYaml.ts index 55b5b97122ae..867efdacbe2e 100644 --- a/packages/shared/src/schemaYaml.ts +++ b/packages/shared/src/schemaYaml.ts @@ -34,7 +34,7 @@ function formatYamlParseError(error: unknown): string { /** Parses YAML during decoding, reporting parse failures as InvalidValue issues. */ function parseYaml(options?: YamlParseOptions): SchemaGetter.Getter { - return SchemaGetter.transformOrFail((input: E) => + return SchemaGetter.transformEffect((input: E) => Effect.try({ try: () => parseYamlString(input, options) as unknown, catch: (error) => new SchemaIssue.InvalidValue({ message: formatYamlParseError(error) }), @@ -44,7 +44,7 @@ function parseYaml(options?: YamlParseOptions): SchemaGetter.G /** Serializes YAML during encoding, reporting stringify failures as InvalidValue issues. */ function stringifyYaml(options?: YamlStringifyOptions): SchemaGetter.Getter { - return SchemaGetter.transformOrFail((input: unknown) => + return SchemaGetter.transformEffect((input: unknown) => Effect.try({ try: () => stringifyYamlValue(input, options), catch: () => new SchemaIssue.InvalidValue({ message: "Failed to stringify YAML." }), diff --git a/packages/shared/src/t3ProjectFile.ts b/packages/shared/src/t3ProjectFile.ts index b585c125ae7e..8f93dbe6ee6a 100644 --- a/packages/shared/src/t3ProjectFile.ts +++ b/packages/shared/src/t3ProjectFile.ts @@ -30,7 +30,9 @@ export function parseT3ProjectFile(contents: string): T3ProjectFile | null { * editors get LSP support via a `$schema` reference. */ export function buildT3ProjectFileJsonSchema(): Record { - const document = Schema.toJsonSchemaDocument(T3ProjectFile); + // Closed objects, as before effect rc.113 changed the generator default; + // editors then flag unknown keys in t3.json. + const document = Schema.toJsonSchemaDocument(T3ProjectFile, { onExcessProperty: "error" }); const jsonSchema: Record = { $schema: "https://json-schema.org/draft/2020-12/schema", $id: T3_PROJECT_FILE_SCHEMA_URL, diff --git a/packages/ssh/src/auth.ts b/packages/ssh/src/auth.ts index fca086de3186..fd4ec9dbc01e 100644 --- a/packages/ssh/src/auth.ts +++ b/packages/ssh/src/auth.ts @@ -185,7 +185,7 @@ export const buildSshChildEnvironment = Effect.fn("ssh/auth.buildSshChildEnviron const platform = yield* HostProcessPlatform; const hostDisplay = input.baseEnv ? input.baseEnv.DISPLAY - : yield* Config.string("DISPLAY").pipe( + : yield* Config.String("DISPLAY").pipe( Config.option, Effect.orElseSucceed(() => Option.none()), Effect.map(Option.getOrUndefined), diff --git a/packages/ssh/src/config.ts b/packages/ssh/src/config.ts index 840f16170267..77a876d184c0 100644 --- a/packages/ssh/src/config.ts +++ b/packages/ssh/src/config.ts @@ -211,8 +211,8 @@ export const discoverSshHosts = Effect.fnUntraced( function* (input: { readonly homeDir?: string }) { const path = yield* Path.Path; const env = yield* Config.all({ - home: Config.string("HOME").pipe(Config.option), - userProfile: Config.string("USERPROFILE").pipe(Config.option), + home: Config.String("HOME").pipe(Config.option), + userProfile: Config.String("USERPROFILE").pipe(Config.option), }); const homeDir = input?.homeDir ?? diff --git a/patches/@effect__vitest@4.0.0-rc.112.patch b/patches/@effect__vitest@4.0.0-rc.115.patch similarity index 84% rename from patches/@effect__vitest@4.0.0-rc.112.patch rename to patches/@effect__vitest@4.0.0-rc.115.patch index f3578570837a..7b005596c360 100644 --- a/patches/@effect__vitest@4.0.0-rc.112.patch +++ b/patches/@effect__vitest@4.0.0-rc.115.patch @@ -1,11 +1,11 @@ diff --git a/dist/index.d.ts b/dist/index.d.ts -index a364638..4ee44c2 100644 +index f0b2bcc..1b9bc38 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -7,11 +7,11 @@ import type * as Layer from "effect/Layer"; import type * as Schema from "effect/Schema"; import type * as Scope from "effect/Scope"; - import type * as FC from "effect/testing/FastCheck"; + import type * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"; -import * as V from "vitest"; +import * as V from "vite-plus/test"; /** @@ -17,7 +17,7 @@ index a364638..4ee44c2 100644 * @since 4.0.0 */ diff --git a/dist/index.js b/dist/index.js -index a1a89bd..687df5a 100644 +index d941a25..90e4618 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,9 +1,9 @@ @@ -33,13 +33,13 @@ index a1a89bd..687df5a 100644 * @since 4.0.0 */ diff --git a/dist/internal/internal.js b/dist/internal/internal.js -index fe41479..8ae751c 100644 +index 25ab056..d5cce3a 100644 --- a/dist/internal/internal.js +++ b/dist/internal/internal.js -@@ -15,7 +15,7 @@ import * as Scope from "effect/Scope"; - import * as fc from "effect/testing/FastCheck"; +@@ -12,7 +12,7 @@ import * as Scope from "effect/Scope"; import * as TestClock from "effect/testing/TestClock"; import * as TestConsole from "effect/testing/TestConsole"; + import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"; -import * as V from "vitest"; +import * as V from "vite-plus/test"; const getCurrentSuite = V.TestRunner.getCurrentSuite; @@ -59,13 +59,13 @@ index 4871215..2c46e2b 100644 // Primitives // ---------------------------- diff --git a/src/index.ts b/src/index.ts -index b524786..8d4025d 100644 +index 7726aac..7375f10 100644 --- a/src/index.ts +++ b/src/index.ts @@ -7,13 +7,13 @@ import type * as Layer from "effect/Layer" import type * as Schema from "effect/Schema" import type * as Scope from "effect/Scope" - import type * as FC from "effect/testing/FastCheck" + import type * as Arbitrary from "effect/unstable/arbitrary/Arbitrary" -import * as V from "vitest" +import * as V from "vite-plus/test" import * as internal from "./internal/internal.ts" @@ -79,13 +79,13 @@ index b524786..8d4025d 100644 /** * @since 4.0.0 diff --git a/src/internal/internal.ts b/src/internal/internal.ts -index d4040a0..f02fc9d 100644 +index 3e001b1..5b7aa2a 100644 --- a/src/internal/internal.ts +++ b/src/internal/internal.ts -@@ -16,7 +16,7 @@ import * as Scope from "effect/Scope" - import * as fc from "effect/testing/FastCheck" +@@ -14,7 +14,7 @@ import * as Scope from "effect/Scope" import * as TestClock from "effect/testing/TestClock" import * as TestConsole from "effect/testing/TestConsole" + import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary" -import * as V from "vitest" +import * as V from "vite-plus/test" import type * as Vitest from "../index.ts" diff --git a/patches/effect@4.0.0-rc.112.patch b/patches/effect@4.0.0-rc.115.patch similarity index 87% rename from patches/effect@4.0.0-rc.112.patch rename to patches/effect@4.0.0-rc.115.patch index 0b7b7b79326e..6257688206a8 100644 --- a/patches/effect@4.0.0-rc.112.patch +++ b/patches/effect@4.0.0-rc.115.patch @@ -1,8 +1,8 @@ diff --git a/dist/unstable/ai/McpServer.js b/dist/unstable/ai/McpServer.js -index ce9dda4..95c38f2 100644 +index e8b9be4..9cffc5c 100644 --- a/dist/unstable/ai/McpServer.js +++ b/dist/unstable/ai/McpServer.js -@@ -444,6 +444,26 @@ const runWithProtocolState = /*#__PURE__*/Effect.fnUntraced(function* (options, +@@ -450,6 +450,26 @@ const runWithProtocolState = /*#__PURE__*/Effect.fnUntraced(function* (options, const defaultLogLevel = yield* CurrentLogLevel; const isHttp = Option.isSome(yield* Effect.serviceOption(HttpRouter.HttpRouter)); const sessions = protocolState.sessions; @@ -29,7 +29,7 @@ index ce9dda4..95c38f2 100644 const clientProtocols = new Map(); const activeRequests = new Map(); const clientProfiles = new Map(); -@@ -942,7 +962,7 @@ export const layerHttp = options => { +@@ -948,7 +968,7 @@ export const layerHttp = options => { const methodNotAllowed = request => isAllowedMcpOrigin(request, options.allowedOrigins) ? Effect.succeed(methodNotAllowedResponse) : Effect.succeed(HttpServerResponse.empty({ status: 403 })); @@ -38,6 +38,19 @@ index ce9dda4..95c38f2 100644 return Layer.merge(layerWithProtocolState(options), routes).pipe(Layer.provide(layerMcpProtocolHttp(options)), Layer.provide(protocolState), Layer.provide(RpcSerialization.layerJsonRpc())); }; const layerMcpProtocolHttp = options => Layer.effect(RpcServer.Protocol)(Effect.gen(function* () { +diff --git a/dist/unstable/http/HttpClientResponse.js b/dist/unstable/http/HttpClientResponse.js +index 59a2b12..ef54250 100644 +--- a/dist/unstable/http/HttpClientResponse.js ++++ b/dist/unstable/http/HttpClientResponse.js +@@ -180,7 +180,7 @@ class WebHttpClientResponse extends Inspectable.Class { + if (this.cachedCookies) { + return this.cachedCookies; + } +- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie()); ++ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []); + } + get remoteAddress() { + return Option.none(); diff --git a/dist/unstable/rpc/RpcClient.d.ts b/dist/unstable/rpc/RpcClient.d.ts index 1a471aa..7233784 100644 --- a/dist/unstable/rpc/RpcClient.d.ts @@ -92,7 +105,7 @@ index 1a471aa..7233784 100644 /** * Represents optional client protocol hooks that run when a transport connects diff --git a/dist/unstable/rpc/RpcClient.js b/dist/unstable/rpc/RpcClient.js -index ec78917..342f9d7 100644 +index c586c60..49886d8 100644 --- a/dist/unstable/rpc/RpcClient.js +++ b/dist/unstable/rpc/RpcClient.js @@ -49,6 +49,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro @@ -244,40 +257,40 @@ index ec78917..342f9d7 100644 } case "Defect": { -@@ -603,7 +633,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun +@@ -598,7 +628,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun // `parser` is replaced on every connect, and a stateful serialization // encodes against the connection it is writing to, so the ping is encoded // when it is sent rather than once up front. -- const pinger = yield* makePinger(Effect.suspend(() => write(parser.encode(constPing)))); -+ const pinger = yield* makePinger(Effect.suspend(() => write(parser.encode(constPing))), Option.isSome(hooks) ? hooks.value : undefined); +- const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing)))); ++ const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing))), Option.isSome(hooks) ? hooks.value : undefined); let currentError; - const onOpen = Effect.suspend(() => { - currentError = undefined; -@@ -630,8 +660,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun - body: () => { - const response = responses[i++]; - if (response._tag === "Pong") { -- pinger.onPong(); -- return Effect.void; -+ return pinger.onPong; - } - if (Object.hasOwn(response, "requestId")) { - const requestId = response.requestId; -@@ -660,12 +689,12 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun + const broadcast = response => Effect.forEach(clientIds, clientId => writeResponse(clientId, response)); + const broadcastError = error => { +@@ -618,8 +648,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun + body: () => { + const response = responses[i++]; + if (response._tag === "Pong") { +- pinger.onPong(); +- return Effect.void; ++ return pinger.onPong; + } + if (Object.hasOwn(response, "requestId")) { + const requestId = response.requestId; +@@ -664,12 +693,12 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun + yield* processData(frames[i]); + } } - }, { - onOpen -- }).pipe(Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({ -+ }).pipe(Effect.raceFirst(Effect.flatMap(pinger.timeout, () => (Option.isSome(hooks) && hooks.value.onPingTimeout ? hooks.value.onPingTimeout : Effect.void).pipe(Effect.andThen(Effect.fail(new Socket.SocketError({ +- }).pipe(Effect.scoped, Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({ ++ }).pipe(Effect.scoped, Effect.raceFirst(Effect.flatMap(pinger.timeout, () => (Option.isSome(hooks) && hooks.value.onPingTimeout ? hooks.value.onPingTimeout : Effect.void).pipe(Effect.andThen(Effect.fail(new Socket.SocketError({ reason: new Socket.SocketOpenError({ kind: "Timeout", cause: new Error("ping timeout") }) - }))))); + }))))))); - }).pipe(Effect.flatMap(() => Effect.fail(new Socket.SocketError({ - reason: new Socket.SocketCloseError({ - code: 1000 + }).pipe(Option.isSome(hooks) ? Effect.ensuring(hooks.value.onDisconnect) : identity, Effect.tapCause(cause => { + const error = Cause.findError(cause); + const hasError = Result.isSuccess(error); @@ -710,20 +739,28 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun }; })); @@ -324,19 +337,16 @@ index ec78917..342f9d7 100644 /** * Represents optional client protocol hooks that run when a transport connects * and disconnects. -diff --git a/dist/unstable/http/HttpClientResponse.js b/dist/unstable/http/HttpClientResponse.js ---- a/dist/unstable/http/HttpClientResponse.js -+++ b/dist/unstable/http/HttpClientResponse.js -@@ -177,3 +177,3 @@ - } -- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie()); -+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []); - } diff --git a/src/unstable/http/HttpClientResponse.ts b/src/unstable/http/HttpClientResponse.ts +index cbf047f..c7d5cc2 100644 --- a/src/unstable/http/HttpClientResponse.ts +++ b/src/unstable/http/HttpClientResponse.ts -@@ -309,3 +309,3 @@ +@@ -321,7 +321,7 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo + if (this.cachedCookies) { + return this.cachedCookies } - return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie()) + return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []) } + + get remoteAddress(): Option.Option { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f175605d8bf..1e9589a10423 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,8 +7,8 @@ settings: catalogs: default: '@effect/openapi-generator': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112 + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115 '@effect/tsgo': specifier: 0.41.0 version: 0.41.0 @@ -58,13 +58,13 @@ overrides: '@clerk/expo': 4.2.0 '@clerk/react': 6.14.7 '@clerk/shared': 4.30.1 - '@effect/atom-react': 4.0.0-rc.112 - '@effect/platform-bun': 4.0.0-rc.112 - '@effect/platform-node': 4.0.0-rc.112 - '@effect/platform-node-shared': 4.0.0-rc.112 - '@effect/sql-pg': 4.0.0-rc.112 - '@effect/sql-sqlite-bun': 4.0.0-rc.112 - '@effect/vitest': 4.0.0-rc.112 + '@effect/atom-react': 4.0.0-rc.115 + '@effect/platform-bun': 4.0.0-rc.115 + '@effect/platform-node': 4.0.0-rc.115 + '@effect/platform-node-shared': 4.0.0-rc.115 + '@effect/sql-pg': 4.0.0-rc.115 + '@effect/sql-sqlite-bun': 4.0.0-rc.115 + '@effect/vitest': 4.0.0-rc.115 '@effect/vitest>vitest': '-' '@expo/dom-webview': 57.0.1 '@expo/metro-config': 57.0.12 @@ -74,7 +74,7 @@ overrides: '@tailwindcss/oxide': 4.3.3 '@tailwindcss/vite': 4.3.3 '@types/node': 24.12.4 - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 expo-router: 57.0.17 expo-sharing>@expo/config-plugins: 57.0.9 expo-sharing>@expo/config-types: 57.0.2 @@ -88,7 +88,7 @@ packageExtensionsChecksum: sha256-k/dT9NFDl5hihRPaoFKeY11hzyutMFs5psfZLFiKJic= patchedDependencies: '@clerk/expo@4.2.0': 72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1 - '@effect/vitest@4.0.0-rc.112': a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b + '@effect/vitest@4.0.0-rc.115': 172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902 '@expo/metro-config@57.0.12': 96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2 '@ff-labs/fff-node@0.9.4': ab9ff544009e1891cfe3930105862d3699007f38922a79f3c98d90018deca368 '@legendapp/list@3.3.5': a05e968651a1352d2f374324016d1034b763b9fb2c5bf5f95111540d6899a52b @@ -97,7 +97,7 @@ patchedDependencies: '@react-native-menu/menu@2.0.0': f63d256bf6a97a873b5e628eb595bd6ef0075ddd5bdd890fc920f7a6024290dd '@react-navigation/native-stack@7.17.6': e667c3cef8c78bb9ff4882ee5bd23a432247b843060a9499eb5f07e9e2295552 dbus-next@0.10.2: cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4 - effect@4.0.0-rc.112: 8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2 + effect@4.0.0-rc.115: 0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5 expo-audio@57.0.4: fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a expo-sharing@57.0.17: 8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45 react-native-gesture-handler@2.32.0: 96573c000f7fe56b5abfa13e2e5f0d065907e674cb8e2300155226d7c9874398 @@ -131,7 +131,7 @@ importers: dependencies: '@clerk/electron': specifier: 0.0.37 - version: 0.0.37(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.1.0)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 0.0.37(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.1.0)(react-dom@19.2.6(react@19.2.8))(react@19.2.6) '@clerk/electron-passkeys': specifier: 0.0.3 version: 0.0.3 @@ -139,8 +139,8 @@ importers: specifier: 0.13.0 version: 0.13.0 '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@napi-rs/keyring': specifier: ^1.3.0 version: 1.3.0 @@ -163,8 +163,8 @@ importers: specifier: 0.10.2 version: 0.10.2(patch_hash=cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4) effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) electron: specifier: 44.1.0 version: 44.1.0 @@ -185,8 +185,8 @@ importers: version: 0.1.44(react@19.2.6) devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -234,8 +234,8 @@ importers: specifier: 4.2.0 version: 4.2.0(patch_hash=72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1)(dbc31631339ce74330e188d5d7a88158) '@effect/atom-react': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(react@19.2.3)(scheduler@0.27.0) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(react@19.2.3)(scheduler@0.27.0) '@expo-google-fonts/dm-sans': specifier: ^0.4.2 version: 0.4.2 @@ -312,8 +312,8 @@ importers: specifier: 8.0.3 version: 8.0.3 effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) expo: specifier: ~57.0.18 version: 57.0.18(fc5a731e35a0144aab60c7305f29cbed) @@ -469,8 +469,8 @@ importers: version: 1.11.0(patch_hash=17d92be2eec71bb6396b402e8d034968e54b28746876d7977cb3139655f42b90)(@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6))(metro-cache@0.84.5)(metro-transform-worker@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(metro@0.84.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)(tailwindcss@4.3.3) devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@pierre/trees': specifier: 1.0.0-beta.4 version: 1.0.0-beta.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -496,17 +496,17 @@ importers: specifier: ^0.3.260 version: 0.3.260(@anthropic-ai/sdk@0.93.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3) '@effect/platform-bun': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6) '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/platform-node-shared': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6) '@effect/sql-sqlite-bun': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@ff-labs/fff-node': specifier: 0.9.4 version: 0.9.4(patch_hash=ab9ff544009e1891cfe3930105862d3699007f38922a79f3c98d90018deca368) @@ -514,11 +514,8 @@ importers: specifier: ^1.3.15 version: 1.15.13 effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) - msgpackr-extract: - specifier: 3.0.4 - version: 3.0.4 + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) node-pty: specifier: ^1.1.0 version: 1.1.0 @@ -536,8 +533,8 @@ importers: version: 3.4.0 devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@t3tools/contracts': specifier: workspace:* version: link:../../packages/contracts @@ -596,8 +593,8 @@ importers: specifier: ^3.2.2 version: 3.2.2(react@19.2.6) '@effect/atom-react': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(react@19.2.6)(scheduler@0.27.0) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(react@19.2.6)(scheduler@0.27.0) '@formkit/auto-animate': specifier: ^0.9.0 version: 0.9.0 @@ -638,8 +635,8 @@ importers: specifier: ^4.0.2 version: 4.0.2 effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) hast-util-to-html: specifier: ^9.0.5 version: 9.0.5 @@ -693,11 +690,11 @@ importers: version: 5.0.14(@types/react@19.2.16)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6)) devDependencies: '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@rolldown/plugin-babel': specifier: ^0.2.0 version: 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.2.5) @@ -760,10 +757,10 @@ importers: dependencies: '@clerk/backend': specifier: 3.14.0 - version: 3.14.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + version: 3.14.0(react-dom@19.2.6(react@19.2.8))(react@19.2.6) '@effect/sql-pg': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@noble/curves': specifier: 'catalog:' version: 1.9.1 @@ -780,24 +777,24 @@ importers: specifier: workspace:* version: link:../../packages/shared alchemy: - specifier: 2.0.0-beta.76 - version: 2.0.0-beta.76(b3825b36417e56a486ccb5f22a7f3d7e) + specifier: 2.0.0-beta.77 + version: 2.0.0-beta.77(9adae5bd1cccd15a2b8494a4d082c84c) drizzle-orm: specifier: 1.0.0-rc.5-ab785fc - version: 1.0.0-rc.5-ab785fc(8ab70e2706da13c78d64d8a92fef1884) + version: 1.0.0-rc.5-ab785fc(f872227dc1446ef55ed3d4bf864b0ffe) effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@cloudflare/workers-types': specifier: ^4.20260601.1 version: 4.20260604.1 '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -809,23 +806,23 @@ importers: version: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' vite-plus: specifier: 'catalog:' - version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) + version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) oxlint-plugin-t3code: dependencies: '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@oxlint/plugins': specifier: ^1.63.0 version: 1.68.0 effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) vite-plus: specifier: 'catalog:' version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) @@ -839,8 +836,8 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) mdast-util-directive: specifier: ^3.1.0 version: 3.1.0 @@ -858,8 +855,8 @@ importers: version: 11.0.5 devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) micromark-util-types: specifier: ^2.0.2 version: 2.0.2 @@ -870,12 +867,12 @@ importers: packages/contracts: dependencies: effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) vite-plus: specifier: 'catalog:' version: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) @@ -883,18 +880,18 @@ importers: packages/effect-acp: dependencies: effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@effect/openapi-generator': specifier: 'catalog:' - version: 4.0.0-rc.112(@effect/platform-node@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(encoding@0.1.13) + version: 4.0.0-rc.115(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(encoding@0.1.13) '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -905,18 +902,18 @@ importers: packages/effect-codex-app-server: dependencies: effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@effect/openapi-generator': specifier: 'catalog:' - version: 4.0.0-rc.112(@effect/platform-node@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(encoding@0.1.13) + version: 4.0.0-rc.115(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(encoding@0.1.13) '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -936,8 +933,8 @@ importers: specifier: workspace:* version: link:../contracts effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) jose: specifier: 'catalog:' version: 6.2.2 @@ -946,11 +943,11 @@ importers: version: 2.9.0 devDependencies: '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -967,15 +964,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -989,12 +986,12 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1005,8 +1002,8 @@ importers: scripts: dependencies: '@effect/platform-node': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@electron/asar': specifier: ^3.4.1 version: 3.4.1 @@ -1020,8 +1017,8 @@ importers: specifier: workspace:* version: link:../packages/tailscale effect: - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) pngjs: specifier: 7.0.0 version: 7.0.0 @@ -1030,8 +1027,8 @@ importers: version: 0.34.5 devDependencies: '@effect/vitest': - specifier: 4.0.0-rc.112 - version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + specifier: 4.0.0-rc.115 + version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@types/pngjs': specifier: 6.0.5 version: 6.0.5 @@ -1057,17 +1054,13 @@ packages: resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==} engines: {node: '>=18'} - '@alcalzone/ansi-tokenize@0.2.5': - resolution: {integrity: sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==} - engines: {node: '>=18'} - - '@alchemy.run/cloudflare-runtime@2.0.0-beta.76': - resolution: {integrity: sha512-rH5BFh0Xq7aExpSpITyQbC+Jqfc9XgwJXidHVHTi1tNRC6/KAWg4tOzBfwiFIxljFLLYcApzlYFvLa/fTYcEjw==} + '@alchemy.run/cloudflare-runtime@2.0.0-beta.77': + resolution: {integrity: sha512-RQGtSjhMNW9dvzm2D0mS/ujCMpejasFjXW9XKVq5ch50GyMLE7dfa/VuW9otMKM1pfTNuekLiMF352S04aAl0Q==} peerDependencies: - '@distilled.cloud/cloudflare': 1.0.0-rc.8 - '@effect/platform-bun': 4.0.0-rc.112 - '@effect/platform-node': 4.0.0-rc.112 - effect: 4.0.0-rc.112 + '@distilled.cloud/cloudflare': 1.0.0-rc.9 + '@effect/platform-bun': 4.0.0-rc.115 + '@effect/platform-node': 4.0.0-rc.115 + effect: 4.0.0-rc.115 rolldown: 1.2.5 vite: ^7.0.0 || ^8.0.0 peerDependenciesMeta: @@ -1080,13 +1073,26 @@ packages: vite: optional: true - '@alchemy.run/floci@2.0.0-beta.76': - resolution: {integrity: sha512-UIKd+Hki3t5seDpLfyRBwWiNukKlbAqDCTOYBD+n49b/WQIgEWHhYXzGtnwC7OY/b3KAv5p7gsdn8IpPnRXR8g==} + '@alchemy.run/floci@2.0.0-beta.77': + resolution: {integrity: sha512-P+qf4/8MJ6Qgy28pDtdDAavxeDCn+TE3xTgvgT+d1zt6mOLkP9cxeI9C0u0UW7Q/OiLVqHToFc4FVrxYIkm6ig==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@alchemy.run/node-utils@2.0.0-beta.76': - resolution: {integrity: sha512-KUAlGdoeWeMEToUP1V3I+mEf6FVzUjU+6Tc8savNvMsXN9t3uwZVqD1FeMzTMzMTJJijjxVljQTCtyoeE9W43w==} + '@alchemy.run/node-utils@2.0.0-beta.77': + resolution: {integrity: sha512-+Z8hf9EAHMdgSVbB1O04nQLYVosElYhZtENhT4gIDCYcQrHUUu6BKpjof5P9x+tLpiR2eIOadTuGXi5KR3S/Sg==} + + '@alchemy.run/sigil@0.0.0-alpha.10': + resolution: {integrity: sha512-lsTxOZeJdyJH34leBaECAXomwjtN8fZh2fL8wnkZPOg6dU5gBwkoVZQs8Yd5Gg4X17zbShDq6ctv0VHYrQp3/w==} + engines: {node: '>=22'} + peerDependencies: + '@types/react': '>=19.2.0' + react: '>=19.2.0' + react-devtools-core: '>=6.1.2' + peerDependenciesMeta: + '@types/react': + optional: true + react-devtools-core: + optional: true '@anthropic-ai/claude-agent-sdk@0.3.260': resolution: {integrity: sha512-PmABtP4Rwd6l95itQrqzguv6rS9uACqikPB9g8BPeWRKZOpy3xpEOjJLYauof3BFk2wNZnfhr0Ttx8ttcZzq0w==} @@ -1793,18 +1799,10 @@ packages: resolution: {integrity: sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==} engines: {node: '>= 20.12.0'} - '@clack/core@1.4.3': - resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} - engines: {node: '>= 20.12.0'} - '@clack/prompts@1.6.0': resolution: {integrity: sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.7.0': - resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} - engines: {node: '>= 20.12.0'} - '@clerk/backend@3.14.0': resolution: {integrity: sha512-WsphTvDFHDuQilKI7dyVE5qmt7USu8qSrujAq6SqpEHbVFfNBfINDNuzxlF9M2skOTfHFfgiTE8Jjb1egIBGLg==} engines: {node: '>=20.9.0'} @@ -1921,32 +1919,32 @@ packages: workerd: optional: true - '@cloudflare/workerd-darwin-64@1.20260704.1': - resolution: {integrity: sha512-XO+vvdhhTNZSsIWCkZ+JaE/JrFUmQAB0H0y/sVkAf32xa2TYBRvFUMwjSqf6WxtlxcKPQvmbLfpO/UQ0l/q4eQ==} + '@cloudflare/workerd-darwin-64@1.20260901.1': + resolution: {integrity: sha512-5nJCpnclV6cc5v3aZOewu+djFvNvm9A/owQ+WJ2G1450roeFHfZGsyW7vVjSRWx3v2iykfkviyJfGm9ApeFDGg==} engines: {node: '>=16'} cpu: [x64] os: [darwin] - '@cloudflare/workerd-darwin-arm64@1.20260704.1': - resolution: {integrity: sha512-6iI7nbOOO8PzEQ6UZVBZB/hv95m8jl0yvyjMuWrF5cJbiLb5zPw3KnpqvGi+aeOs2ZmUkc81i1FWKfXwLXzPRA==} + '@cloudflare/workerd-darwin-arm64@1.20260901.1': + resolution: {integrity: sha512-nLwfUVoYmFNW1Ntp0BfZ2K1UWIll4zTTYP8Ni7NQnyrNkTnFeU/prrllWtnw7OG8Z/jyaEAAFaDFEBobrNTU3A==} engines: {node: '>=16'} cpu: [arm64] os: [darwin] - '@cloudflare/workerd-linux-64@1.20260704.1': - resolution: {integrity: sha512-3mT0YHtxT7eLjghu3hKSJDUQoz+AYv8FM43nLPYhM0YiHOxr8OlmvnCb2Lp7v/U3bwd3Gnx7WEqjSppR583mGg==} + '@cloudflare/workerd-linux-64@1.20260901.1': + resolution: {integrity: sha512-wzCO0cMrFLRRs6bG5KXDpLSe70GpzpsxPjxwBzQngQOfyI2cxs5i4Rb5rDB0GG8E19feZEhjGXcHgY9+5Lq8YA==} engines: {node: '>=16'} cpu: [x64] os: [linux] - '@cloudflare/workerd-linux-arm64@1.20260704.1': - resolution: {integrity: sha512-Opo7cPTPg4x0WwK+eZSDszCyFLKQkOGNCWxF005HRTJ5SJH8h0K9KyrC1k4LBwx3haXSVi+E1eGqo1gZ1Hmhkg==} + '@cloudflare/workerd-linux-arm64@1.20260901.1': + resolution: {integrity: sha512-aBk82+sSphMa6uR6h/CFN/GXmELJ2YOgQKYSsOsCTvbVLvHjclmyoEdLTY5FEImvo1ch1uXpGQgTjI8/suHGEg==} engines: {node: '>=16'} cpu: [arm64] os: [linux] - '@cloudflare/workerd-windows-64@1.20260704.1': - resolution: {integrity: sha512-a97Ecnzhy04x3U052VKPCNp863F7Wf00WY7Ga5P0SbtYvaO1PDzylsHrvFMPKeiDFcOwqiredawmJ+v6bhIgeQ==} + '@cloudflare/workerd-windows-64@1.20260901.1': + resolution: {integrity: sha512-3oJnCV7mWwzqmqz+3E+KYLbw1FylH+8n+p84srWv9MEsY9II1QuKiRKVf3CQTIdTDb6rkr5fCuRtkmLgRpAsNg==} engines: {node: '>=16'} cpu: [x64] os: [win32] @@ -1999,50 +1997,50 @@ packages: resolution: {integrity: sha512-WTYHwlBhImGmmMt81crxaRvNdZXlBNemFyrP5GGHj2WeDTJMBrHgHTaladTypXHXrviFFBBGROl5moijRQ4ODA==} engines: {node: '>=18'} - '@distilled.cloud/aws@1.0.0-rc.8': - resolution: {integrity: sha512-eL4tRACU4TSykk/6+ItwUTZs93r3tRlrBn36ohqaUxqYYOfmssYlt/SLCzos4nlLgCxb+1T6BAstgYC848v1EQ==} + '@distilled.cloud/aws@1.0.0-rc.9': + resolution: {integrity: sha512-JVw6pRsl5Z+0iHdUI0Kw0r9gIGNDui/q7iYSVGgzlqiU9OXltOxxvgzW2FZ1jEzToBFUabIb9Ew2SjsWO+W82Q==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/axiom@1.0.0-rc.8': - resolution: {integrity: sha512-lczeM0FPuF1mLZu7V8vcj8Klm9b1VSo4A75PP2a4km/cjphDl9LKamUwrSGLEY9denmqd1nn4+g2Svw1UmGpEw==} + '@distilled.cloud/axiom@1.0.0-rc.9': + resolution: {integrity: sha512-SKr1r5Eq62UVeUBbTMERmBFgl96z5Q3FStlD8AkxI9EnPjYsGulKEiLlBawUWGfbhcy1srUoQgRWP/a9gEFsvA==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/cloudflare@1.0.0-rc.8': - resolution: {integrity: sha512-nhEyGOaupi/JmT0PS1DEMH5Ebwu004pvQv3Emzt9MJz3mF3LTdiuAnxP86rf3jsFtfa826TDokKArVMq55OKRA==} + '@distilled.cloud/cloudflare@1.0.0-rc.9': + resolution: {integrity: sha512-tmdqv6/voHJEtzRX2z+CdxY8AyHsex+V1RBozsmisCMt6J0CQg7zVa+eQzz7zL5jDCTUwabVSA+jMN/4vStbBg==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/core@1.0.0-rc.8': - resolution: {integrity: sha512-baZMSaBh9kEyAqdhO+UbkvVDK+wqyI8d0UW0paSp5CqVResOl7ydHU4tCbBUOLoxOrqLRWfmImKrhW9SY1R8qw==} + '@distilled.cloud/core@1.0.0-rc.9': + resolution: {integrity: sha512-42JhW0d0cD1U3vO6gZ7QiXjtHtzd+SNz9hYrznIcL/R61cl6tLePs6C6zfOjGAgO2xp4/E/FAFzi3iNx0eEBGw==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/fly-io@1.0.0-rc.8': - resolution: {integrity: sha512-0HqVLIpBxmuvrIrnmziz8iK39F5cBxkHlz43WR2s+tFidbPlCzmnci6gxixxiwMBCzcmiRmv57xQxuQzgfDQMw==} + '@distilled.cloud/fly-io@1.0.0-rc.9': + resolution: {integrity: sha512-MchXCinyJKfscWMCbJi6Vw94PJj2Q4OptyxcIvZ8odCNNCbS43RB3spSSeZihX79xenVn8SFJYtwonEJmSvkZg==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/hetzner@1.0.0-rc.8': - resolution: {integrity: sha512-CAPj912qUQXMetyFvJEc7PJnSG4DR6RBvGXCOfQcJVgGTspt/IdT3iIeIInTUf6rgFRsqoGiRfS4ywTqWoqLFA==} + '@distilled.cloud/hetzner@1.0.0-rc.9': + resolution: {integrity: sha512-Tla418BxNSxap8r2n0YVZZBo79DVY26PTNxZS3ZPHDmfgSoPQ6+W/+Arxsl1oTvNRRRuNcSbdJ4EuESOv70Edg==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/neon@1.0.0-rc.8': - resolution: {integrity: sha512-xIgxgoDyIs/G5lW8T2r4oyHpOcRzBO1wu7p46lU3ppuJ2rlJR4pmP9dF7KxStAVglr9yK3wmmmnraLoCAtd8Sg==} + '@distilled.cloud/neon@1.0.0-rc.9': + resolution: {integrity: sha512-9/UNB2XNUwdyKWFd1aDTEVfpPpxVp8oF1QiAlDMRtMMGnUx08eaxDtX2SZU8voXMJaxYw08gDOFlHtkeTzLIiA==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/planetscale@1.0.0-rc.8': - resolution: {integrity: sha512-D0mnkT2Gnk/SKWoz05rkf7+sngH8+5m5ugjQ1GycsFMfTxUVSIVUIHX9yrO5vFrTsMlNsmrMR+7a9R3ZMGCWkA==} + '@distilled.cloud/planetscale@1.0.0-rc.9': + resolution: {integrity: sha512-9lrkuQ1by+UkNsGQ8tNKaM+DEdOHYPGAhCyrDLQd7DG4Xh6JHPmrPlyTFsjHhS9thSz2WVaDVMDbsJ8zHsDNTQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/railway@1.0.0-rc.8': - resolution: {integrity: sha512-VW2YdbblVHhYww5JVtOjFlv3jBFl7xlt6/xTfkNxxgXgzJ5GYVlD3gPgBIpGy9Pcnv9rVRA6CL7QZeYeu47c9Q==} + '@distilled.cloud/railway@1.0.0-rc.9': + resolution: {integrity: sha512-AI5SgoaPl7giY+HiYldwKihyCqhed5sjz1f8WwdRxTehswto/Rbx9vMX4FWeVgrQYXgkVK/NWcZuJJdCxSyM9Q==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 '@dnd-kit/accessibility@3.1.1': resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} @@ -2075,57 +2073,57 @@ packages: '@drizzle-team/brocli@0.12.0': resolution: {integrity: sha512-mlUE+rZ8CatQekLhnaiN91Iemdd+e2gFKooGlnRB3oPTL3VghLfX24dx7HrzMNeC1JrIB/0kpsfyty3f5HNfxQ==} - '@effect/atom-react@4.0.0-rc.112': - resolution: {integrity: sha512-Ksf90KQa6D4UDnMj4M84arlVKNIuwxxF2GvgXBzuaYi2LsgririsUhKQ5SYaK1euf8oIYeamEuthoZSbUQmIhw==} + '@effect/atom-react@4.0.0-rc.115': + resolution: {integrity: sha512-CUPeP6JmiGyFa4t8YSBEydXAL3kCOzs/5st0kanjqj/rqnekydrThx/l2u2HNTkhqSrQi9HLokMd8QTEpWsdDQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 react: '>=19.0.0 <20.0.0' scheduler: '>=0.25.0 <0.28.0' - '@effect/openapi-generator@4.0.0-rc.112': - resolution: {integrity: sha512-ZgAkEP2/8qPZKgnI5AqmBgqhrZsdMDKZXJoKn29xgElZUWCvHhdE6eSUfFtkQBRE5kQcATXOZajHl+S/Pg+8Dw==} + '@effect/openapi-generator@4.0.0-rc.115': + resolution: {integrity: sha512-/AkcQ4GdoTTa7CwkybSnKc0U0FhOCA+TAV6E93Ozz4XshgKCC2F75Zik+3EOlTfbENmvAsYNEIVrPfqupoO+ng==} hasBin: true peerDependencies: - '@effect/platform-node': 4.0.0-rc.112 - effect: 4.0.0-rc.112 + '@effect/platform-node': 4.0.0-rc.115 + effect: 4.0.0-rc.115 - '@effect/platform-bun@4.0.0-rc.112': - resolution: {integrity: sha512-Y5n2HhV/vsbrJls9ukX42RL7zqXQxISHegWFsP9njsCyDmGTnq7QYSO82rglwrLPwtTrv5dkSRTuGw4+oXxgMg==} + '@effect/platform-bun@4.0.0-rc.115': + resolution: {integrity: sha512-ilTFcs66ghInP8WHCJYa4bx/yzohYM9dRR//qjmVBBpSKu1hrCTiRWpEcc1N6zrnOEPk2kyVaKg5ykSMgiBMqQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@effect/platform-node-shared@4.0.0-rc.112': - resolution: {integrity: sha512-ttjz0xKamFN7vL8pNDYVwddJLjZvqKePc05djlz2VcdaKbLsnYbtMnL1rbOfHgEnIUSHGh7FkjaN4DM1Ov81sQ==} + '@effect/platform-node-shared@4.0.0-rc.115': + resolution: {integrity: sha512-rcBwhDIfb82akJoTv7Vwh8K5x9vC/XfuePS7JjOr+z+dORXzsmKqI1BUQF27ARCN9fTAbDh7I6YvBlWhLjnqNg==} engines: {node: '>=18.0.0'} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@effect/platform-node@4.0.0-rc.112': - resolution: {integrity: sha512-/BMAcdNGQQskLmI0Zoa95KfTZkr9HV9N4NSxaSrusG6GeW6Ulp9KvZ+Rlaiw8lnOt43CXjFLdfll5/k5rxL4hQ==} + '@effect/platform-node@4.0.0-rc.115': + resolution: {integrity: sha512-mW03Wjq2FiTL5oi9yOkaKpCyUNBaduKgTk7qMHNELvC21Jq2qOAfdsfH+p+s2zmpB9w2RSa+ApODv4WjO9wQfw==} engines: {node: '>=18.0.0'} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 redis: '>=5.0.0 <7.0.0' '@effect/sql-d1@4.0.0-rc.112': resolution: {integrity: sha512-Wxdr6aU3pBHqhyBiybzbHmEK7qZ2w4iy0IxBgJHe9BLleYzCxObOaBQI9qq/VZSqEvc0IaOBMpbk2zh3dlPNSQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@effect/sql-pg@4.0.0-rc.112': - resolution: {integrity: sha512-UYUA3LAGH1Pg88Yau7eTlTLHRrIb/uTdxdPGxVcRdIjjrTzxtA7iKHR4hcmUeq5lQEcGLCopN7E4ffsAKF8vEQ==} + '@effect/sql-pg@4.0.0-rc.115': + resolution: {integrity: sha512-TLdzqBvGF/HwAKpWTw/5ih7JqVkkakVSb4aD6amzMaavFfFl4vsqqeKjSBijwuzbOMANNN0HqnEt/9fgjTsFEA==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 - '@effect/sql-sqlite-bun@4.0.0-rc.112': - resolution: {integrity: sha512-EqR8pWZo3VzedRvP6qo5HcfqNmFvSa+sQLWQl3oBMx2KY1FCc8NYjep79wYjNkW0qABnffrPUXCMTOncd1A+5g==} + '@effect/sql-sqlite-bun@4.0.0-rc.115': + resolution: {integrity: sha512-CypwmCPAUSOOhopcnSI9ocgpKHfpgOdERpei3GuXZm5cCGP31pk2NUETqNaYhonhr2bWd+6Rc8atctnEbIYKYQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 '@effect/sql-sqlite-do@4.0.0-rc.112': resolution: {integrity: sha512-PewNVasimmhrdxYbNU91O0YlCcalIHOoF0H5XAWXrmzcEQrKM7kVCyb5h0gmJAZjBM4ZgWRvPY0PUOfbNmWchQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 '@effect/tsgo-darwin-arm64@0.41.0': resolution: {integrity: sha512-3iEPtcHF72yDjv7T5YpnX+Io1LDLywJb1oGG3Fp/Fth4xmqiT1Vacyz5wnPCfEWGQ6CyrlyCZSSjUxPyJ70+DQ==} @@ -2166,10 +2164,10 @@ packages: resolution: {integrity: sha512-C/U7lFM0AXsfpqRilDOgwu+llBhAo8bcdIlzgbRWf1LWlU4KZKB2UsUvBPL3qPnm+wmbCvQLeTQc4BjV9oJrcg==} hasBin: true - '@effect/vitest@4.0.0-rc.112': - resolution: {integrity: sha512-mEKh/FI64mt8JK1/v9mpOrJYdnp+UFZdRUBMEdZMiKz7klg6NPqVgg/oeAGH6wOOQc2iAPcfc2H9BbAv1KyzMQ==} + '@effect/vitest@4.0.0-rc.115': + resolution: {integrity: sha512-DJR0hfdr3HNXAkzW8AzfvUz6VmrNFLrKk9tZGDURi33faMyxkc7ZewxELMMZwGpOTGN4mfqYVbX2CXgI+ZJBeQ==} peerDependencies: - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 '@egjs/hammerjs@2.0.17': resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==} @@ -3454,36 +3452,6 @@ packages: resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==} engines: {node: '>=16'} - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': - resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==} - cpu: [arm64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': - resolution: {integrity: sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==} - cpu: [x64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': - resolution: {integrity: sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==} - cpu: [arm64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': - resolution: {integrity: sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==} - cpu: [arm] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': - resolution: {integrity: sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==} - cpu: [x64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': - resolution: {integrity: sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==} - cpu: [x64] - os: [win32] - '@mswjs/interceptors@0.41.9': resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==} engines: {node: '>=18'} @@ -5058,10 +5026,6 @@ packages: resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/node-config-provider@4.4.6': - resolution: {integrity: sha512-M+gG6eQ0y073mSmNB+erRXJvwpsqsN72ol2w6vcd8FEKeG7pqYK0JvzfVqONkPj2ElBB2pg+cU13I850b//Wag==} - engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.7.7': resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==} engines: {node: '>=18.0.0'} @@ -6083,20 +6047,20 @@ packages: ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} - alchemy@2.0.0-beta.76: - resolution: {integrity: sha512-XpcsXWk38YV9nO0v7s5PPjlMVtF8OQPeP8YqLu1iMzrq33bwViEOqkwQn3cgFiD7/QsnNcCju+hCXyeBwXrdtg==} + alchemy@2.0.0-beta.77: + resolution: {integrity: sha512-8JXWIHFKw5F9kTYiDY2+vHW7Y9v9hoopS5PJVreYB+nJ7VhiKoJ7ApcA4hpWj78GmQoU5tgxy1Ue2OHmvTOt4A==} hasBin: true peerDependencies: - '@alchemy.run/frontend-frameworks': 2.0.0-beta.76 + '@alchemy.run/frontend-frameworks': 2.0.0-beta.77 '@aws/durable-execution-sdk-js': ^2.1.0 - '@effect/platform-bun': 4.0.0-rc.112 - '@effect/platform-node': 4.0.0-rc.112 + '@effect/platform-bun': 4.0.0-rc.115 + '@effect/platform-node': 4.0.0-rc.115 '@effect/sql-mysql2': '>=4.0.0-rc.112 || >=4.0.0' - '@effect/sql-pg': 4.0.0-rc.112 + '@effect/sql-pg': 4.0.0-rc.115 '@vercel/nft': ^1.10.2 drizzle-kit: 1.0.0-rc.5-ab785fc drizzle-orm: 1.0.0-rc.5-ab785fc - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 mongodb: ^6.10.0 mysql2: ^3.24.2 pg: ^8.22.0 @@ -6146,10 +6110,6 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} - ansi-escapes@7.3.0: - resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} - engines: {node: '>=18'} - ansi-regex@4.1.1: resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==} engines: {node: '>=6'} @@ -6255,10 +6215,6 @@ packages: resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==} engines: {node: '>=10.12.0'} - auto-bind@5.0.1: - resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - await-lock@2.2.2: resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==} @@ -6472,11 +6428,11 @@ packages: caniuse-lite@1.0.30001793: resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} - capnp-es@0.0.14: - resolution: {integrity: sha512-8lWj4GJISiqRSlAJGkWpI4Azib7QY5UDIkqxeHcI7aAnXVk9SFuWxl1Fme+2HhzNANV0WTJqwUZvvXvloc3sBA==} + capnp-es@0.0.16: + resolution: {integrity: sha512-pqhhnRqGfDdgHa+rz4JVO9j1jnkyqsHRYrD4RBtIwxCknYSRG7Mjs+x3IRfd20u+ZGS0IhW2L7cDv9ZcIkCYhQ==} hasBin: true peerDependencies: - typescript: ^5.7.3 + typescript: ^5.7.3 || ^6.0.0 peerDependenciesMeta: typescript: optional: true @@ -6559,18 +6515,10 @@ packages: class-variance-authority@0.7.1: resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} - cli-boxes@3.0.0: - resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} - engines: {node: '>=10'} - cli-cursor@2.1.0: resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==} engines: {node: '>=4'} - cli-cursor@4.0.0: - resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cli-cursor@5.0.0: resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} engines: {node: '>=18'} @@ -6583,10 +6531,6 @@ packages: resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} engines: {node: '>=18.20'} - cli-truncate@5.2.0: - resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} - engines: {node: '>=20'} - cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -6618,10 +6562,6 @@ packages: resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==} engines: {node: '>=0.10.0'} - code-excerpt@4.0.0: - resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - color-convert@1.9.3: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} @@ -6718,10 +6658,6 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - convert-to-spaces@2.0.1: - resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - cookie-es@1.2.3: resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==} @@ -6967,9 +6903,9 @@ packages: '@effect/sql-d1': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-libsql': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-mysql2': '>=4.0.0-beta.105 || >=4.0.0' - '@effect/sql-pg': 4.0.0-rc.112 + '@effect/sql-pg': 4.0.0-rc.115 '@effect/sql-pglite': '>=4.0.0-beta.105 || >=4.0.0' - '@effect/sql-sqlite-bun': 4.0.0-rc.112 + '@effect/sql-sqlite-bun': 4.0.0-rc.115 '@effect/sql-sqlite-do': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-sqlite-node': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-sqlite-wasm': '>=4.0.0-beta.105 || >=4.0.0' @@ -6998,7 +6934,7 @@ packages: arktype: '>=2.0.0' better-sqlite3: '>=9.3.0' bun-types: '*' - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 expo-sqlite: '>=14.0.0' minipg: '>=0.2.0' mssql: ^11.0.1 @@ -7125,8 +7061,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@4.0.0-rc.112: - resolution: {integrity: sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==} + effect@4.0.0-rc.115: + resolution: {integrity: sha512-ogYulZ5ffeOzrJqQrG0XOkDO5lKn2s9KNHhoxJy/6wKUkF0i12dlVXWA9TgsgQ+zV/JzizyG0+XMPepZEQX6vw==} ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} @@ -7205,10 +7141,6 @@ packages: resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - environment@1.1.0: - resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} - engines: {node: '>=18'} - err-code@2.0.3: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} @@ -7234,9 +7166,6 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-toolkit@1.47.0: - resolution: {integrity: sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw==} - es6-error@4.1.1: resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==} @@ -7264,10 +7193,6 @@ packages: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} - escape-string-regexp@2.0.0: - resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} - engines: {node: '>=8'} - escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} @@ -7638,10 +7563,6 @@ packages: extend@3.0.2: resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - fast-check@4.9.0: - resolution: {integrity: sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg==} - engines: {node: '>=12.17.0'} - fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -8079,10 +8000,6 @@ packages: immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} - indent-string@5.0.0: - resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} - engines: {node: '>=12'} - inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -8090,19 +8007,6 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - ink@6.8.0: - resolution: {integrity: sha512-sbl1RdLOgkO9isK42WCZlJCFN9hb++sX9dsklOvfd1YQ3bQ2AiFu12Q6tFlr0HvEUvzraJntQCCpfEoUe9DSzA==} - engines: {node: '>=20'} - peerDependencies: - '@types/react': '>=19.0.0' - react: '>=19.0.0' - react-devtools-core: '>=6.1.2' - peerDependenciesMeta: - '@types/react': - optional: true - react-devtools-core: - optional: true - inline-style-parser@0.2.7: resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} @@ -8163,10 +8067,6 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - is-fullwidth-code-point@5.1.0: - resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} - engines: {node: '>=18'} - is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -8174,11 +8074,6 @@ packages: is-hexadecimal@2.0.1: resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - is-in-ci@2.0.0: - resolution: {integrity: sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==} - engines: {node: '>=20'} - hasBin: true - is-inside-container@1.0.0: resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} engines: {node: '>=14.16'} @@ -8901,11 +8796,6 @@ packages: engines: {node: '>=4.0.0'} hasBin: true - mime@4.1.0: - resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==} - engines: {node: '>=16'} - hasBin: true - mimic-fn@1.2.0: resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==} engines: {node: '>=4'} @@ -9009,13 +8899,6 @@ packages: ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - msgpackr-extract@3.0.4: - resolution: {integrity: sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==} - hasBin: true - - msgpackr@2.1.0: - resolution: {integrity: sha512-p/pBCVO63CsvvpkomUnNNag6+n38rULuDA6HHe70o2gtC8ODI52foF/4ko2qQcp6OiErJXTmrZeXmsGGHsIQNQ==} - msw@2.12.11: resolution: {integrity: sha512-dVg20zi2I2EvnwH/+WupzsOC2mCa7qsIhyMAWtfRikn6RKtwL9+7SaF1IQ5LyZry4tlUtf6KyTVhnlQiZXozTQ==} engines: {node: '>=18'} @@ -9090,10 +8973,6 @@ packages: resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==} engines: {node: '>= 6.13.0'} - node-gyp-build-optional-packages@5.2.2: - resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==} - hasBin: true - node-gyp-build@4.8.4: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true @@ -9178,9 +9057,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - obuf@1.1.2: - resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==} - obug@2.1.3: resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==} engines: {node: '>=12.20.0'} @@ -9334,10 +9210,6 @@ packages: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} engines: {node: '>= 0.8'} - patch-console@2.0.0: - resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - path-browserify@1.0.1: resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} @@ -9392,19 +9264,10 @@ packages: pg-connection-string@2.14.0: resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==} - pg-cursor@2.22.0: - resolution: {integrity: sha512-knzXLKqarTjOvb3qDSW0JiGsazmxwEKXrqHfWRte7XUsOYccQRafn3BLnQobWwInkzFJSyOej8y8cQRh2z3kGw==} - peerDependencies: - pg: ^8 - pg-int8@1.0.1: resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==} engines: {node: '>=4.0.0'} - pg-numeric@1.0.2: - resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==} - engines: {node: '>=4'} - pg-pool@3.14.0: resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==} peerDependencies: @@ -9417,10 +9280,6 @@ packages: resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==} engines: {node: '>=4'} - pg-types@4.1.0: - resolution: {integrity: sha512-o2XFanIMy/3+mThw69O8d4n1E5zsLhdO+OPqswezu7Z5ekP4hYDqlDjlmOpYMbzY2Br0ufCwJLdDIXeNVwcWFg==} - engines: {node: '>=10'} - pg@8.23.0: resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==} engines: {node: '>= 16.0.0'} @@ -9492,37 +9351,18 @@ packages: resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==} engines: {node: '>=4'} - postgres-array@3.0.4: - resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==} - engines: {node: '>=12'} - postgres-bytea@1.0.1: resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==} engines: {node: '>=0.10.0'} - postgres-bytea@3.0.0: - resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==} - engines: {node: '>= 6'} - postgres-date@1.0.7: resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==} engines: {node: '>=0.10.0'} - postgres-date@2.1.0: - resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==} - engines: {node: '>=12'} - postgres-interval@1.2.0: resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==} engines: {node: '>=0.10.0'} - postgres-interval@3.0.0: - resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==} - engines: {node: '>=12'} - - postgres-range@1.1.4: - resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==} - postject@1.0.0-alpha.6: resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==} engines: {node: '>=14.0.0'} @@ -9607,9 +9447,6 @@ packages: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - pure-rand@8.4.0: - resolution: {integrity: sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==} - pvtsutils@1.3.6: resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} @@ -9859,6 +9696,10 @@ packages: resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==} engines: {node: '>=0.10.0'} + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + read-binary-file-arch@1.0.6: resolution: {integrity: sha512-BNg9EN3DD3GsDXX7Aa8O4p92sryjkmzYYgmgTAc6CA4uGLEDzFfxOxugu21akOxpcXHiEgsYkC6nPsQvLLLmEg==} hasBin: true @@ -10005,10 +9846,6 @@ packages: resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==} engines: {node: '>=4'} - restore-cursor@4.0.0: - resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - restore-cursor@5.1.0: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} @@ -10253,10 +10090,6 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} - slice-ansi@8.0.0: - resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} - engines: {node: '>=20'} - slugify@1.6.9: resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==} engines: {node: '>=8.0.0'} @@ -10312,10 +10145,6 @@ packages: sprintf-js@1.1.3: resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==} - stack-utils@2.0.6: - resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} - engines: {node: '>=10'} - stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} @@ -10390,6 +10219,10 @@ packages: resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} engines: {node: '>=20'} + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} + engines: {node: '>=20'} + string_decoder@1.1.1: resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} @@ -10489,10 +10322,6 @@ packages: resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==} engines: {node: '>=8'} - terminal-size@4.0.1: - resolution: {integrity: sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ==} - engines: {node: '>=18'} - terser@5.48.0: resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==} engines: {node: '>=10'} @@ -11148,12 +10977,8 @@ packages: engines: {node: '>=8'} hasBin: true - widest-line@6.0.0: - resolution: {integrity: sha512-U89AsyEeAsyoF0zVJBkG9zBgekjgjK7yk9sje3F4IQpXBJ10TF6ByLlIfjMhcmHMJgHZI4KHt4rdNfktzxIAMA==} - engines: {node: '>=20'} - - workerd@1.20260704.1: - resolution: {integrity: sha512-GDZ0jzIYDYfN7rCt/oFJv4BG3QJ+4IS2kfRvxEMY9VKIfPhzo63PH69Ir7ug8LfORCgCtmfkiQVXrqbot7pZTQ==} + workerd@1.20260901.1: + resolution: {integrity: sha512-Z5PVprrPRlV70+RzgbFpzoPpjCLGtErhsQ9Ahe96pe7hJGMsmexTU4+rhUPH+2Sguf7vRAxFFsqXpkIleRFSPA==} engines: {node: '>=16'} hasBin: true @@ -11302,9 +11127,6 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - yoga-layout@3.2.1: - resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==} - yuku-codegen@0.5.48: resolution: {integrity: sha512-p7HxD5Xl4jzDzqMrGePAOeSHmRY4g58h4HuGq15weQFPxuPWd/W6e7nqp/+Lea6JfpOdBwJOAyXFqIZ/J9Zfnw==} @@ -11365,27 +11187,22 @@ snapshots: dependencies: json-schema: 0.4.0 - '@alcalzone/ansi-tokenize@0.2.5': + '@alchemy.run/cloudflare-runtime@2.0.0-beta.77(@distilled.cloud/cloudflare@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(rolldown@1.2.5)(typescript@6.0.3)': dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - - '@alchemy.run/cloudflare-runtime@2.0.0-beta.76(@distilled.cloud/cloudflare@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)))(@effect/platform-bun@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(rolldown@1.2.5)(typescript@7.0.2)': - dependencies: - '@alchemy.run/node-utils': 2.0.0-beta.76 - '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1) - '@distilled.cloud/cloudflare': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + '@alchemy.run/node-utils': 2.0.0-beta.77 + '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1) + '@distilled.cloud/cloudflare': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@puppeteer/browsers': 3.2.2(yauzl@3.4.0) - capnp-es: 0.0.14(typescript@7.0.2) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + capnp-es: 0.0.16(typescript@6.0.3) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) magic-string: 0.30.21 sharp: 0.35.4(@types/node@24.12.4) unenv: 2.0.0-rc.24 - workerd: 1.20260704.1 + workerd: 1.20260901.1 yauzl: 3.4.0 optionalDependencies: - '@effect/platform-bun': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6) - '@effect/platform-node': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) + '@effect/platform-bun': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6) + '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) rolldown: 1.2.5 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' transitivePeerDependencies: @@ -11393,11 +11210,23 @@ snapshots: - proxy-agent - typescript - '@alchemy.run/floci@2.0.0-beta.76(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@alchemy.run/floci@2.0.0-beta.77(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + dependencies: + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) + + '@alchemy.run/node-utils@2.0.0-beta.77': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + chokidar: 5.0.0 + rolldown: 1.2.5 - '@alchemy.run/node-utils@2.0.0-beta.76': {} + '@alchemy.run/sigil@0.0.0-alpha.10(@types/react@19.2.16)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react@19.2.8)': + dependencies: + react: 19.2.8 + react-reconciler: 0.33.0(react@19.2.8) + scheduler: 0.27.0 + optionalDependencies: + '@types/react': 19.2.16 + react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@anthropic-ai/claude-agent-sdk@0.3.260(@anthropic-ai/sdk@0.93.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3)': dependencies: @@ -12349,11 +12178,6 @@ snapshots: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/core@1.4.3': - dependencies: - fast-wrap-ansi: 0.2.2 - sisteransi: 1.0.5 - '@clack/prompts@1.6.0': dependencies: '@clack/core': 1.4.2 @@ -12361,16 +12185,9 @@ snapshots: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.7.0': - dependencies: - '@clack/core': 1.4.3 - fast-string-width: 3.0.2 - fast-wrap-ansi: 0.2.2 - sisteransi: 1.0.5 - - '@clerk/backend@3.14.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@clerk/backend@3.14.0(react-dom@19.2.6(react@19.2.8))(react@19.2.6)': dependencies: - '@clerk/shared': 4.30.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@clerk/shared': 4.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6) standardwebhooks: 1.0.0 tslib: 2.8.1 transitivePeerDependencies: @@ -12411,6 +12228,23 @@ snapshots: - react - react-dom + '@clerk/clerk-js@6.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6)': + dependencies: + '@clerk/shared': 4.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6) + '@stripe/stripe-js': 5.6.0 + '@swc/helpers': 0.5.21 + '@tanstack/query-core': 5.100.14 + '@zxcvbn-ts/core': 3.0.4 + '@zxcvbn-ts/language-common': 3.0.4 + alien-signals: 2.0.6 + browser-tabs-lock: 1.3.0 + core-js: 3.47.0 + crypto-js: 4.2.0 + dequal: 2.0.3 + transitivePeerDependencies: + - react + - react-dom + '@clerk/electron-passkeys-darwin-arm64@0.0.3': optional: true @@ -12443,6 +12277,19 @@ snapshots: electron-store: 8.2.0 react-dom: 19.2.6(react@19.2.6) + '@clerk/electron@0.0.37(@clerk/electron-passkeys@0.0.3)(electron-store@8.2.0)(electron@44.1.0)(react-dom@19.2.6(react@19.2.8))(react@19.2.6)': + dependencies: + '@clerk/clerk-js': 6.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6) + '@clerk/react': 6.14.7(react-dom@19.2.6(react@19.2.8))(react@19.2.6) + '@clerk/shared': 4.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6) + electron: 44.1.0 + react: 19.2.6 + tslib: 2.8.1 + optionalDependencies: + '@clerk/electron-passkeys': 0.0.3 + electron-store: 8.2.0 + react-dom: 19.2.6(react@19.2.8) + '@clerk/expo@4.2.0(patch_hash=72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1)(dbc31631339ce74330e188d5d7a88158)': dependencies: '@clerk/clerk-js': 6.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) @@ -12480,6 +12327,13 @@ snapshots: react-dom: 19.2.6(react@19.2.6) tslib: 2.8.1 + '@clerk/react@6.14.7(react-dom@19.2.6(react@19.2.8))(react@19.2.6)': + dependencies: + '@clerk/shared': 4.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6) + react: 19.2.6 + react-dom: 19.2.6(react@19.2.8) + tslib: 2.8.1 + '@clerk/shared@4.30.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': dependencies: '@tanstack/query-core': 5.100.14 @@ -12500,25 +12354,35 @@ snapshots: react: 19.2.6 react-dom: 19.2.6(react@19.2.6) - '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1)': + '@clerk/shared@4.30.1(react-dom@19.2.6(react@19.2.8))(react@19.2.6)': + dependencies: + '@tanstack/query-core': 5.100.14 + dequal: 2.0.3 + glob-to-regexp: 0.4.1 + js-cookie: 3.0.7 + optionalDependencies: + react: 19.2.6 + react-dom: 19.2.6(react@19.2.8) + + '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1)': dependencies: unenv: 2.0.0-rc.24 optionalDependencies: - workerd: 1.20260704.1 + workerd: 1.20260901.1 - '@cloudflare/workerd-darwin-64@1.20260704.1': + '@cloudflare/workerd-darwin-64@1.20260901.1': optional: true - '@cloudflare/workerd-darwin-arm64@1.20260704.1': + '@cloudflare/workerd-darwin-arm64@1.20260901.1': optional: true - '@cloudflare/workerd-linux-64@1.20260704.1': + '@cloudflare/workerd-linux-64@1.20260901.1': optional: true - '@cloudflare/workerd-linux-arm64@1.20260704.1': + '@cloudflare/workerd-linux-arm64@1.20260901.1': optional: true - '@cloudflare/workerd-windows-64@1.20260704.1': + '@cloudflare/workerd-windows-64@1.20260901.1': optional: true '@cloudflare/workers-types@4.20260604.1': {} @@ -12552,58 +12416,58 @@ snapshots: '@crowecawcaw/xa11y-win32-arm64-msvc': 0.13.0 '@crowecawcaw/xa11y-win32-x64-msvc': 0.13.0 - '@distilled.cloud/aws@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/aws@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/credential-providers': 3.1062.0 '@aws-sdk/types': 3.973.10 - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@smithy/shared-ini-file-loader': 4.5.6 '@smithy/types': 4.14.3 '@smithy/util-base64': 4.4.6 aws4fetch: 1.0.20 - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) fast-xml-parser: 5.8.0 - '@distilled.cloud/axiom@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/axiom@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/cloudflare@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/cloudflare@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/core@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/core@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/fly-io@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/fly-io@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/hetzner@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/hetzner@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/neon@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/neon@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/planetscale@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/planetscale@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/railway@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@distilled.cloud/railway@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) '@dnd-kit/accessibility@3.1.1(react@19.2.6)': dependencies: @@ -12639,77 +12503,69 @@ snapshots: '@drizzle-team/brocli@0.12.0': {} - '@effect/atom-react@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(react@19.2.3)(scheduler@0.27.0)': + '@effect/atom-react@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(react@19.2.3)(scheduler@0.27.0)': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) react: 19.2.3 scheduler: 0.27.0 - '@effect/atom-react@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(react@19.2.6)(scheduler@0.27.0)': + '@effect/atom-react@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(react@19.2.6)(scheduler@0.27.0)': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) react: 19.2.6 scheduler: 0.27.0 - '@effect/openapi-generator@4.0.0-rc.112(@effect/platform-node@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(encoding@0.1.13)': + '@effect/openapi-generator@4.0.0-rc.115(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(encoding@0.1.13)': dependencies: - '@effect/platform-node': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) swagger2openapi: 7.0.8(encoding@0.1.13) transitivePeerDependencies: - encoding - '@effect/platform-bun@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6)': + '@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6)': dependencies: - '@effect/platform-node-shared': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@effect/platform-node-shared': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node-shared@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6)': + '@effect/platform-node-shared@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6)': dependencies: '@types/ws': 8.18.1 - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6)': + '@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6)': dependencies: - '@effect/platform-node-shared': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) - mime: 4.1.0 + '@effect/platform-node-shared': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) redis: 6.2.1 undici: 8.10.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/sql-d1@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@effect/sql-d1@4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: '@cloudflare/workers-types': 5.20260907.1 - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@effect/sql-pg@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@effect/sql-pg@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) - pg: 8.23.0 - pg-connection-string: 2.14.0 - pg-cursor: 2.22.0(pg@8.23.0) - pg-pool: 3.14.0(pg@8.23.0) - pg-types: 4.1.0 - transitivePeerDependencies: - - pg-native + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@effect/sql-sqlite-bun@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@effect/sql-sqlite-do@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@effect/sql-sqlite-do@4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) '@effect/tsgo-darwin-arm64@0.41.0': optional: true @@ -12742,9 +12598,9 @@ snapshots: '@effect/tsgo-win32-arm64': 0.41.0 '@effect/tsgo-win32-x64': 0.41.0 - '@effect/vitest@4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@effect/vitest@4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) '@egjs/hammerjs@2.0.17': dependencies: @@ -13175,26 +13031,26 @@ snapshots: - typescript - utf-8-validate - '@expo/cli@57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2)(utf-8-validate@6.0.6)': + '@expo/cli@57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8))(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)(typescript@6.0.3)(utf-8-validate@6.0.6)': dependencies: '@expo/code-signing-certificates': 0.0.6 - '@expo/config': 57.0.9(typescript@7.0.2) - '@expo/config-plugins': 57.0.9(typescript@7.0.2) + '@expo/config': 57.0.9(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(typescript@6.0.3) '@expo/devcert': 1.2.1 '@expo/env': 2.4.3 - '@expo/image-utils': 0.11.5(typescript@7.0.2) - '@expo/inline-modules': 0.1.7(typescript@7.0.2) + '@expo/image-utils': 0.11.5(typescript@6.0.3) + '@expo/inline-modules': 0.1.7(typescript@6.0.3) '@expo/json-file': 11.0.1 - '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6) + '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6) '@expo/metro-file-map': 57.0.2 '@expo/osascript': 2.7.1 '@expo/package-manager': 1.13.1 '@expo/plist': 0.8.1 - '@expo/prebuild-config': 57.0.15(typescript@7.0.2) - '@expo/require-utils': 57.0.5(typescript@7.0.2) - '@expo/router-server': 57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react@19.2.6) + '@expo/prebuild-config': 57.0.15(typescript@6.0.3) + '@expo/require-utils': 57.0.5(typescript@6.0.3) + '@expo/router-server': 57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react@19.2.8) '@expo/schema-utils': 57.0.2 '@expo/spawn-async': 1.8.0 '@expo/ws-tunnel': 2.0.0(ws@8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)) @@ -13211,7 +13067,7 @@ snapshots: connect: 3.7.0 debug: 4.4.3 dnssd-advertise: 1.1.4 - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) expo-server: 57.0.3 fetch-nodeshim: 0.4.10 getenv: 2.0.0 @@ -13238,7 +13094,7 @@ snapshots: ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) zod: 3.25.76 optionalDependencies: - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) transitivePeerDependencies: - '@expo/dom-webview' - '@expo/metro-runtime' @@ -13257,6 +13113,26 @@ snapshots: dependencies: node-forge: 1.4.0 + '@expo/config-plugins@57.0.9(typescript@6.0.3)': + dependencies: + '@expo/config-types': 57.0.2 + '@expo/json-file': 11.0.1 + '@expo/plist': 0.8.1 + '@expo/require-utils': 57.0.5(typescript@6.0.3) + '@expo/sdk-runtime-versions': 1.0.0 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + semver: 7.8.5 + slugify: 1.6.9 + xcode: 3.0.1 + xml2js: 0.6.0 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/config-plugins@57.0.9(typescript@7.0.2)': dependencies: '@expo/config-types': 57.0.2 @@ -13278,6 +13154,23 @@ snapshots: '@expo/config-types@57.0.2': {} + '@expo/config@57.0.9(typescript@6.0.3)': + dependencies: + '@expo/config-plugins': 57.0.9(typescript@6.0.3) + '@expo/config-types': 57.0.2 + '@expo/json-file': 11.0.1 + '@expo/require-utils': 57.0.5(typescript@6.0.3) + deepmerge: 4.3.1 + getenv: 2.0.0 + glob: 13.0.6 + resolve-workspace-root: 2.0.1 + semver: 7.8.5 + slugify: 1.6.9 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/config@57.0.9(typescript@7.0.2)': dependencies: '@expo/config-plugins': 57.0.9(typescript@7.0.2) @@ -13308,12 +13201,12 @@ snapshots: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - '@expo/devtools@57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)': + '@expo/devtools@57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)': dependencies: chalk: 4.1.2 optionalDependencies: - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3)': @@ -13322,11 +13215,11 @@ snapshots: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)': + '@expo/dom-webview@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)': dependencies: - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true '@expo/env@2.4.3': @@ -13355,6 +13248,20 @@ snapshots: transitivePeerDependencies: - supports-color + '@expo/image-utils@0.11.5(typescript@6.0.3)': + dependencies: + '@expo/require-utils': 57.0.5(typescript@6.0.3) + '@expo/spawn-async': 1.8.0 + chalk: 4.1.2 + getenv: 2.0.0 + jimp-compact: 0.16.1 + parse-png: 2.1.0 + semver: 7.8.5 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/image-utils@0.11.5(typescript@7.0.2)': dependencies: '@expo/require-utils': 57.0.5(typescript@7.0.2) @@ -13381,6 +13288,14 @@ snapshots: - supports-color - typescript + '@expo/inline-modules@0.1.7(typescript@6.0.3)': + dependencies: + '@expo/config-plugins': 57.0.9(typescript@6.0.3) + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/inline-modules@0.1.7(typescript@7.0.2)': dependencies: '@expo/config-plugins': 57.0.9(typescript@7.0.2) @@ -13393,6 +13308,15 @@ snapshots: '@babel/code-frame': 7.29.7 json5: 2.2.3 + '@expo/local-build-cache-provider@57.0.8(typescript@6.0.3)': + dependencies: + '@expo/config': 57.0.9(typescript@6.0.3) + chalk: 4.1.2 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/local-build-cache-provider@57.0.8(typescript@7.0.2)': dependencies: '@expo/config': 57.0.9(typescript@7.0.2) @@ -13410,26 +13334,26 @@ snapshots: react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) stacktrace-parser: 0.1.11 - '@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)': + '@expo/log-box@57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)': dependencies: - '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) anser: 1.4.10 - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) stacktrace-parser: 0.1.11 optional: true - '@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)': + '@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6)': dependencies: '@babel/code-frame': 7.29.7 '@babel/core': 7.29.7 '@babel/generator': 7.29.7 - '@expo/config': 57.0.9(typescript@7.0.2) + '@expo/config': 57.0.9(typescript@6.0.3) '@expo/env': 2.4.3 '@expo/json-file': 11.0.1 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@expo/require-utils': 57.0.5(typescript@7.0.2) + '@expo/require-utils': 57.0.5(typescript@6.0.3) '@expo/spawn-async': 1.8.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/remapping': 2.3.5 @@ -13446,20 +13370,54 @@ snapshots: postcss: 8.5.15 resolve-from: 5.0.0 optionalDependencies: - expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) transitivePeerDependencies: - bufferutil - supports-color - typescript - utf-8-validate + optional: true - '@expo/metro-file-map@57.0.2': + '@expo/metro-config@57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6)': dependencies: - debug: 4.4.3 - fb-watchman: 2.0.2 - invariant: 2.2.4 - jest-worker: 29.7.0 - micromatch: 4.0.8 + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/generator': 7.29.7 + '@expo/config': 57.0.9(typescript@7.0.2) + '@expo/env': 2.4.3 + '@expo/json-file': 11.0.1 + '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6) + '@expo/require-utils': 57.0.5(typescript@7.0.2) + '@expo/spawn-async': 1.8.0 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/remapping': 2.3.5 + '@jridgewell/sourcemap-codec': 1.5.5 + browserslist: 4.28.2 + chalk: 4.1.2 + debug: 4.4.3 + getenv: 2.0.0 + glob: 13.0.6 + hermes-parser: 0.36.1 + jsc-safe-url: 0.2.4 + lightningcss: 1.33.0 + picomatch: 4.0.7 + postcss: 8.5.15 + resolve-from: 5.0.0 + optionalDependencies: + expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed) + transitivePeerDependencies: + - bufferutil + - supports-color + - typescript + - utf-8-validate + + '@expo/metro-file-map@57.0.2': + dependencies: + debug: 4.4.3 + fb-watchman: 2.0.2 + invariant: 2.2.4 + jest-worker: 29.7.0 + micromatch: 4.0.8 walker: 1.0.8 transitivePeerDependencies: - supports-color @@ -13477,18 +13435,18 @@ snapshots: optionalDependencies: react-dom: 19.2.3(react@19.2.3) - '@expo/metro-runtime@57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)': + '@expo/metro-runtime@57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)': dependencies: - '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) anser: 1.4.10 - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) pretty-format: 29.7.0 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) stacktrace-parser: 0.1.11 whatwg-fetch: 3.6.20 optionalDependencies: - react-dom: 19.2.6(react@19.2.6) + react-dom: 19.2.6(react@19.2.8) optional: true '@expo/metro@56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)': @@ -13531,6 +13489,23 @@ snapshots: base64-js: 1.5.1 xmlbuilder: 15.1.1 + '@expo/prebuild-config@57.0.15(typescript@6.0.3)': + dependencies: + '@expo/config': 57.0.9(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(typescript@6.0.3) + '@expo/config-types': 57.0.2 + '@expo/image-utils': 0.11.5(typescript@6.0.3) + '@expo/json-file': 11.0.1 + '@react-native/normalize-colors': 0.86.3 + debug: 4.4.3 + expo-modules-autolinking: 57.0.12(typescript@6.0.3) + resolve-from: 5.0.0 + semver: 7.8.5 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + '@expo/prebuild-config@57.0.15(typescript@7.0.2)': dependencies: '@expo/config': 57.0.9(typescript@7.0.2) @@ -13557,6 +13532,17 @@ snapshots: transitivePeerDependencies: - supports-color + '@expo/require-utils@57.0.5(typescript@6.0.3)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7) + optionalDependencies: + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + optional: true + '@expo/require-utils@57.0.5(typescript@7.0.2)': dependencies: '@babel/code-frame': 7.29.7 @@ -13581,17 +13567,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@expo/router-server@57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react@19.2.6)': + '@expo/router-server@57.0.8(@expo/metro-runtime@57.0.14)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react@19.2.8)': dependencies: debug: 4.4.3 - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) - expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)) + expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) expo-server: 57.0.3 - react: 19.2.6 + react: 19.2.8 optionalDependencies: - '@expo/metro-runtime': 57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) - react-dom: 19.2.6(react@19.2.6) + '@expo/metro-runtime': 57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) + react-dom: 19.2.6(react@19.2.8) transitivePeerDependencies: - supports-color optional: true @@ -14267,24 +14253,6 @@ snapshots: chevrotain: 10.5.0 lilconfig: 2.1.0 - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4': - optional: true - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4': - optional: true - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4': - optional: true - '@mswjs/interceptors@0.41.9': dependencies: '@open-draft/deferred-promise': 2.2.0 @@ -15183,12 +15151,12 @@ snapshots: optionalDependencies: '@types/react': 19.2.16 - '@react-native/virtualized-lists@0.86.3(@types/react@19.2.16)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)': + '@react-native/virtualized-lists@0.86.3(@types/react@19.2.16)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)': dependencies: invariant: 2.2.4 nullthrows: 1.1.1 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optionalDependencies: '@types/react': 19.2.16 optional: true @@ -15539,11 +15507,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@smithy/node-config-provider@4.4.6': - dependencies: - '@smithy/core': 3.24.6 - tslib: 2.8.1 - '@smithy/node-http-handler@4.7.7': dependencies: '@smithy/core': 3.24.6 @@ -16082,6 +16045,18 @@ snapshots: '@rolldown/plugin-babel': 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.2.5) babel-plugin-react-compiler: 1.0.0 + '@vitest/browser-preview@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2)))': + dependencies: + '@testing-library/dom': 10.4.1 + '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) + '@vitest/browser': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))) + vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2)) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + '@vitest/browser-preview@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)': dependencies: '@testing-library/dom': 10.4.1 @@ -16094,6 +16069,23 @@ snapshots: - utf-8-validate - vite + '@vitest/browser@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2)))': + dependencies: + '@blazediff/core': 1.9.1 + '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3)) + '@vitest/utils': 4.1.11 + magic-string: 0.30.21 + pngjs: 7.0.0 + sirv: 3.0.2 + tinyrainbow: 3.1.0 + vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2)) + ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) + transitivePeerDependencies: + - bufferutil + - msw + - utf-8-validate + - vite + '@vitest/browser@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11)': dependencies: '@blazediff/core': 1.9.1 @@ -16120,6 +16112,15 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 + '@vitest/mocker@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))': + dependencies: + '@vitest/spy': 4.1.11 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + msw: 2.12.11(@types/node@24.12.4)(typescript@6.0.3) + vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' + '@vitest/mocker@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))': dependencies: '@vitest/spy': 4.1.11 @@ -16453,53 +16454,49 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@2.0.0-beta.76(b3825b36417e56a486ccb5f22a7f3d7e): + alchemy@2.0.0-beta.77(9adae5bd1cccd15a2b8494a4d082c84c): dependencies: - '@alchemy.run/cloudflare-runtime': 2.0.0-beta.76(@distilled.cloud/cloudflare@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)))(@effect/platform-bun@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(rolldown@1.2.5)(typescript@7.0.2) - '@alchemy.run/floci': 2.0.0-beta.76(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@alchemy.run/node-utils': 2.0.0-beta.76 + '@alchemy.run/cloudflare-runtime': 2.0.0-beta.77(@distilled.cloud/cloudflare@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(rolldown@1.2.5)(typescript@6.0.3) + '@alchemy.run/floci': 2.0.0-beta.77(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@alchemy.run/node-utils': 2.0.0-beta.77 + '@alchemy.run/sigil': 0.0.0-alpha.10(@types/react@19.2.16)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react@19.2.8) '@aws-sdk/credential-providers': 3.1062.0 - '@clack/prompts': 1.7.0 - '@distilled.cloud/aws': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/axiom': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/cloudflare': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/fly-io': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/hetzner': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/neon': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/planetscale': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@distilled.cloud/railway': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@effect/vitest': 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + '@distilled.cloud/aws': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/axiom': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/cloudflare': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/fly-io': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/hetzner': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/neon': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/planetscale': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/railway': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/vitest': 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@octokit/rest': 22.0.1 '@octokit/webhooks': 14.2.0 '@prisma/dev': 0.20.0(typescript@6.0.3) - '@smithy/node-config-provider': 4.4.6 - '@smithy/shared-ini-file-loader': 4.5.6 - '@smithy/types': 4.14.3 '@types/aws-lambda': 8.10.161 aws4fetch: 1.0.20 capnweb: 0.6.1 - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) fast-glob: 3.3.3 - fast-xml-parser: 5.8.0 - ink: 6.8.0(@types/react@19.2.16)(bufferutil@4.1.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react@19.2.6)(utf-8-validate@6.0.6) jszip: 3.10.1 libsodium-wrappers: 0.8.4 pathe: 2.0.3 picomatch: 4.0.7 - react: 19.2.6 + react: 19.2.8 rolldown: 1.2.5 + string-width: 8.2.2 undici: 7.27.1 yaml: 2.9.0 optionalDependencies: - '@effect/platform-bun': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(utf-8-validate@6.0.6) - '@effect/platform-node': 4.0.0-rc.112(bufferutil@4.1.0)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(redis@6.2.1)(utf-8-validate@6.0.6) - '@effect/sql-pg': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + '@effect/platform-bun': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6) + '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) + '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) drizzle-kit: 1.0.0-rc.5-ab785fc - drizzle-orm: 1.0.0-rc.5-ab785fc(8ab70e2706da13c78d64d8a92fef1884) + drizzle-orm: 1.0.0-rc.5-ab785fc(f872227dc1446ef55ed3d4bf864b0ffe) mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9) pg: 8.23.0 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' @@ -16525,10 +16522,6 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.3.0: - dependencies: - environment: 1.1.0 - ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} @@ -16742,8 +16735,6 @@ snapshots: atomically@1.7.0: {} - auto-bind@5.0.1: {} - await-lock@2.2.2: {} aws4@1.13.2: {} @@ -17033,9 +17024,9 @@ snapshots: caniuse-lite@1.0.30001793: {} - capnp-es@0.0.14(typescript@7.0.2): + capnp-es@0.0.16(typescript@6.0.3): optionalDependencies: - typescript: 7.0.2 + typescript: 6.0.3 capnweb@0.6.1: {} @@ -17116,16 +17107,10 @@ snapshots: dependencies: clsx: 2.1.1 - cli-boxes@3.0.0: {} - cli-cursor@2.1.0: dependencies: restore-cursor: 2.0.0 - cli-cursor@4.0.0: - dependencies: - restore-cursor: 4.0.0 - cli-cursor@5.0.0: dependencies: restore-cursor: 5.1.0 @@ -17134,11 +17119,6 @@ snapshots: cli-spinners@3.4.0: {} - cli-truncate@5.2.0: - dependencies: - slice-ansi: 8.0.0 - string-width: 8.2.1 - cli-width@4.1.0: optional: true @@ -17167,10 +17147,6 @@ snapshots: cluster-key-slot@1.1.2: {} - code-excerpt@4.0.0: - dependencies: - convert-to-spaces: 2.0.1 - color-convert@1.9.3: dependencies: color-name: 1.1.3 @@ -17266,8 +17242,6 @@ snapshots: convert-source-map@2.0.0: {} - convert-to-spaces@2.0.1: {} - cookie-es@1.2.3: {} cookie-es@3.1.1: {} @@ -17491,20 +17465,20 @@ snapshots: get-tsconfig: 4.14.3 jiti: 2.7.0 - drizzle-orm@1.0.0-rc.5-ab785fc(8ab70e2706da13c78d64d8a92fef1884): + drizzle-orm@1.0.0-rc.5-ab785fc(f872227dc1446ef55ed3d4bf864b0ffe): optionalDependencies: '@cloudflare/workers-types': 4.20260604.1 - '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@effect/sql-pg': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-sqlite-bun': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@electric-sql/pglite': 0.3.15 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) bun-types: 1.3.14 - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) - expo-sqlite: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) + expo-sqlite: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) pg: 8.23.0 - valibot: 1.2.0(typescript@7.0.2) + valibot: 1.2.0(typescript@6.0.3) zod: 4.4.3 dset@3.1.4: {} @@ -17523,10 +17497,7 @@ snapshots: ee-first@1.1.1: {} - effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2): - dependencies: - fast-check: 4.9.0 - msgpackr: 2.1.0 + effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5): {} ejs@3.1.10: dependencies: @@ -17646,8 +17617,6 @@ snapshots: env-paths@3.0.0: {} - environment@1.1.0: {} - err-code@2.0.3: {} error-stack-parser@2.1.4: @@ -17671,8 +17640,6 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.4 - es-toolkit@1.47.0: {} - es6-error@4.1.1: optional: true @@ -17742,8 +17709,6 @@ snapshots: escape-string-regexp@1.0.5: {} - escape-string-regexp@2.0.0: {} - escape-string-regexp@4.0.0: {} escape-string-regexp@5.0.0: {} @@ -17795,13 +17760,13 @@ snapshots: - supports-color - typescript - expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2): + expo-asset@57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)(typescript@6.0.3): dependencies: - '@expo/image-utils': 0.11.5(typescript@7.0.2) - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + '@expo/image-utils': 0.11.5(typescript@6.0.3) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) transitivePeerDependencies: - supports-color - typescript @@ -17864,11 +17829,11 @@ snapshots: transitivePeerDependencies: - supports-color - expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)): + expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)): dependencies: '@expo/env': 2.4.3 - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) transitivePeerDependencies: - supports-color optional: true @@ -17922,10 +17887,10 @@ snapshots: expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed) react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - expo-file-system@57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)): + expo-file-system@57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)): dependencies: - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3): @@ -17935,12 +17900,12 @@ snapshots: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6): + expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8): dependencies: - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) fontfaceobserver: 2.3.0 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true expo-glass-effect@57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3): @@ -17976,10 +17941,10 @@ snapshots: expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed) react: 19.2.3 - expo-keep-awake@57.0.1(expo@57.0.18)(react@19.2.6): + expo-keep-awake@57.0.1(expo@57.0.18)(react@19.2.8): dependencies: - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - react: 19.2.6 + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + react: 19.2.8 optional: true expo-linking@57.0.8(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3): @@ -17997,6 +17962,17 @@ snapshots: expo: 57.0.18(fc5a731e35a0144aab60c7305f29cbed) expo-json-utils: 57.0.1 + expo-modules-autolinking@57.0.12(typescript@6.0.3): + dependencies: + '@expo/require-utils': 57.0.5(typescript@6.0.3) + '@expo/spawn-async': 1.8.0 + chalk: 4.1.2 + commander: 7.2.0 + transitivePeerDependencies: + - supports-color + - typescript + optional: true + expo-modules-autolinking@57.0.12(typescript@7.0.2): dependencies: '@expo/require-utils': 57.0.5(typescript@7.0.2) @@ -18017,24 +17993,24 @@ snapshots: optionalDependencies: react-native-worklets: 0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3) - expo-modules-core@57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6): + expo-modules-core@57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8): dependencies: '@expo/expo-modules-macros-plugin': 0.6.1 - expo-modules-jsi: 57.0.6(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) + expo-modules-jsi: 57.0.6(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)) invariant: 2.2.4 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optionalDependencies: - react-native-worklets: 0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + react-native-worklets: 0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) optional: true expo-modules-jsi@57.0.6(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6)): dependencies: react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - expo-modules-jsi@57.0.6(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)): + expo-modules-jsi@57.0.6(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)): dependencies: - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true expo-network@57.0.1(expo@57.0.18)(react@19.2.3): @@ -18107,12 +18083,12 @@ snapshots: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6): + expo-sqlite@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8): dependencies: await-lock: 2.2.2 - expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb) - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + expo: 57.0.18(cd73bbc634c55d5682c35c131de05433) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true expo-structured-headers@57.0.0: {} @@ -18180,37 +18156,37 @@ snapshots: - react-dom - react-native-worklets - expo@57.0.18(0bf40d5ad6281d8f1e92517b24812edb): + expo@57.0.18(cd73bbc634c55d5682c35c131de05433): dependencies: '@babel/runtime': 7.29.7 - '@expo/cli': 57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2)(utf-8-validate@6.0.6) - '@expo/config': 57.0.9(typescript@7.0.2) - '@expo/config-plugins': 57.0.9(typescript@7.0.2) - '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@expo/cli': 57.0.20(@expo/dom-webview@57.0.1)(@expo/metro-runtime@57.0.14)(bufferutil@4.1.0)(expo-constants@57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)))(expo-font@57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8))(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)(typescript@6.0.3)(utf-8-validate@6.0.6) + '@expo/config': 57.0.9(typescript@6.0.3) + '@expo/config-plugins': 57.0.9(typescript@6.0.3) + '@expo/devtools': 57.0.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) '@expo/fingerprint': 0.20.11 - '@expo/local-build-cache-provider': 57.0.8(typescript@7.0.2) - '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@expo/local-build-cache-provider': 57.0.8(typescript@6.0.3) + '@expo/log-box': 57.0.4(@expo/dom-webview@57.0.1)(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6) - '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@7.0.2)(utf-8-validate@6.0.6) + '@expo/metro-config': 57.0.12(patch_hash=96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2)(bufferutil@4.1.0)(expo@57.0.18)(typescript@6.0.3)(utf-8-validate@6.0.6) '@ungap/structured-clone': 1.3.1 babel-preset-expo: 57.0.9(@babel/core@7.29.7)(@babel/runtime@7.29.7)(expo-widgets@57.0.15)(expo@57.0.18)(react-refresh@0.14.2) - expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6)(typescript@7.0.2) - expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) - expo-file-system: 57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6)) - expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) - expo-keep-awake: 57.0.1(expo@57.0.18)(react@19.2.6) - expo-modules-autolinking: 57.0.12(typescript@7.0.2) - expo-modules-core: 57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + expo-asset: 57.0.15(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8)(typescript@6.0.3) + expo-constants: 57.0.16(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)) + expo-file-system: 57.0.6(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6)) + expo-font: 57.0.2(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) + expo-keep-awake: 57.0.1(expo@57.0.18)(react@19.2.8) + expo-modules-autolinking: 57.0.12(typescript@6.0.3) + expo-modules-core: 57.0.14(react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) pretty-format: 29.7.0 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) react-refresh: 0.14.2 whatwg-url-minimum: 0.1.2 optionalDependencies: - '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) - '@expo/metro-runtime': 57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.6(react@19.2.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) - react-dom: 19.2.6(react@19.2.6) - react-native-webview: 13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@expo/dom-webview': 57.0.1(expo@57.0.18)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) + '@expo/metro-runtime': 57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.6(react@19.2.8))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) + react-dom: 19.2.6(react@19.2.8) + react-native-webview: 13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) transitivePeerDependencies: - '@babel/core' - bufferutil @@ -18307,10 +18283,6 @@ snapshots: extend@3.0.2: {} - fast-check@4.9.0: - dependencies: - pure-rand: 8.4.0 - fast-deep-equal@3.1.3: {} fast-glob@3.3.3: @@ -18877,8 +18849,6 @@ snapshots: immediate@3.0.6: {} - indent-string@5.0.0: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -18886,41 +18856,6 @@ snapshots: inherits@2.0.4: {} - ink@6.8.0(@types/react@19.2.16)(bufferutil@4.1.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react@19.2.6)(utf-8-validate@6.0.6): - dependencies: - '@alcalzone/ansi-tokenize': 0.2.5 - ansi-escapes: 7.3.0 - ansi-styles: 6.2.3 - auto-bind: 5.0.1 - chalk: 5.6.2 - cli-boxes: 3.0.0 - cli-cursor: 4.0.0 - cli-truncate: 5.2.0 - code-excerpt: 4.0.0 - es-toolkit: 1.47.0 - indent-string: 5.0.0 - is-in-ci: 2.0.0 - patch-console: 2.0.0 - react: 19.2.6 - react-reconciler: 0.33.0(react@19.2.6) - scheduler: 0.27.0 - signal-exit: 3.0.7 - slice-ansi: 8.0.0 - stack-utils: 2.0.6 - string-width: 8.2.1 - terminal-size: 4.0.1 - type-fest: 5.7.0 - widest-line: 6.0.0 - wrap-ansi: 9.0.2 - ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) - yoga-layout: 3.2.1 - optionalDependencies: - '@types/react': 19.2.16 - react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) - transitivePeerDependencies: - - bufferutil - - utf-8-validate - inline-style-parser@0.2.7: {} invariant@2.2.4: @@ -18971,18 +18906,12 @@ snapshots: is-fullwidth-code-point@3.0.0: {} - is-fullwidth-code-point@5.1.0: - dependencies: - get-east-asian-width: 1.6.0 - is-glob@4.0.3: dependencies: is-extglob: 2.1.1 is-hexadecimal@2.0.1: {} - is-in-ci@2.0.0: {} - is-inside-container@1.0.0: dependencies: is-docker: 3.0.0 @@ -20100,8 +20029,6 @@ snapshots: mime@2.6.0: {} - mime@4.1.0: {} - mimic-fn@1.2.0: {} mimic-fn@2.1.0: {} @@ -20168,20 +20095,31 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.4: + msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3): dependencies: - node-gyp-build-optional-packages: 5.2.2 - optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.4 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.4 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.4 - - msgpackr@2.1.0: + '@inquirer/confirm': 5.1.21(@types/node@24.12.4) + '@mswjs/interceptors': 0.41.9 + '@open-draft/deferred-promise': 2.2.0 + '@types/statuses': 2.0.6 + cookie: 1.1.1 + graphql: 16.14.1 + headers-polyfill: 4.0.3 + is-node-process: 1.2.0 + outvariant: 1.4.3 + path-to-regexp: 6.3.0 + picocolors: 1.1.1 + rettime: 0.10.1 + statuses: 2.0.2 + strict-event-emitter: 0.5.1 + tough-cookie: 6.0.1 + type-fest: 5.7.0 + until-async: 3.0.2 + yargs: 17.7.2 optionalDependencies: - msgpackr-extract: 3.0.4 + typescript: 6.0.3 + transitivePeerDependencies: + - '@types/node' + optional: true msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2): dependencies: @@ -20254,10 +20192,6 @@ snapshots: node-forge@1.4.0: {} - node-gyp-build-optional-packages@5.2.2: - dependencies: - detect-libc: 2.1.2 - node-gyp-build@4.8.4: optional: true @@ -20355,8 +20289,6 @@ snapshots: object-keys@1.1.1: optional: true - obuf@1.1.2: {} - obug@2.1.3: {} ofetch@1.5.1: @@ -20475,6 +20407,31 @@ snapshots: '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2 '@oxc-resolver/binding-win32-x64-msvc': 11.24.2 + oxfmt@0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)): + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.64.0 + '@oxfmt/binding-android-arm64': 0.64.0 + '@oxfmt/binding-darwin-arm64': 0.64.0 + '@oxfmt/binding-darwin-x64': 0.64.0 + '@oxfmt/binding-freebsd-x64': 0.64.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.64.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.64.0 + '@oxfmt/binding-linux-arm64-gnu': 0.64.0 + '@oxfmt/binding-linux-arm64-musl': 0.64.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.64.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.64.0 + '@oxfmt/binding-linux-riscv64-musl': 0.64.0 + '@oxfmt/binding-linux-s390x-gnu': 0.64.0 + '@oxfmt/binding-linux-x64-gnu': 0.64.0 + '@oxfmt/binding-linux-x64-musl': 0.64.0 + '@oxfmt/binding-openharmony-arm64': 0.64.0 + '@oxfmt/binding-win32-arm64-msvc': 0.64.0 + '@oxfmt/binding-win32-ia32-msvc': 0.64.0 + '@oxfmt/binding-win32-x64-msvc': 0.64.0 + vite-plus: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) + oxfmt@0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)): dependencies: tinypool: 2.1.0 @@ -20509,6 +20466,30 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 7.0.2001 '@oxlint-tsgolint/win32-x64': 7.0.2001 + oxlint@1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)): + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.79.0 + '@oxlint/binding-android-arm64': 1.79.0 + '@oxlint/binding-darwin-arm64': 1.79.0 + '@oxlint/binding-darwin-x64': 1.79.0 + '@oxlint/binding-freebsd-x64': 1.79.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.79.0 + '@oxlint/binding-linux-arm-musleabihf': 1.79.0 + '@oxlint/binding-linux-arm64-gnu': 1.79.0 + '@oxlint/binding-linux-arm64-musl': 1.79.0 + '@oxlint/binding-linux-ppc64-gnu': 1.79.0 + '@oxlint/binding-linux-riscv64-gnu': 1.79.0 + '@oxlint/binding-linux-riscv64-musl': 1.79.0 + '@oxlint/binding-linux-s390x-gnu': 1.79.0 + '@oxlint/binding-linux-x64-gnu': 1.79.0 + '@oxlint/binding-linux-x64-musl': 1.79.0 + '@oxlint/binding-openharmony-arm64': 1.79.0 + '@oxlint/binding-win32-arm64-msvc': 1.79.0 + '@oxlint/binding-win32-ia32-msvc': 1.79.0 + '@oxlint/binding-win32-x64-msvc': 1.79.0 + oxlint-tsgolint: 7.0.2001 + vite-plus: 0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0) + oxlint@1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)): optionalDependencies: '@oxlint/binding-android-arm-eabi': 1.79.0 @@ -20596,8 +20577,6 @@ snapshots: parseurl@1.3.3: {} - patch-console@2.0.0: {} - path-browserify@1.0.1: {} path-exists@3.0.0: {} @@ -20634,21 +20613,19 @@ snapshots: pg-cloudflare@1.4.0: optional: true - pg-connection-string@2.14.0: {} - - pg-cursor@2.22.0(pg@8.23.0): - dependencies: - pg: 8.23.0 - - pg-int8@1.0.1: {} + pg-connection-string@2.14.0: + optional: true - pg-numeric@1.0.2: {} + pg-int8@1.0.1: + optional: true pg-pool@3.14.0(pg@8.23.0): dependencies: pg: 8.23.0 + optional: true - pg-protocol@1.16.0: {} + pg-protocol@1.16.0: + optional: true pg-types@2.2.0: dependencies: @@ -20657,16 +20634,7 @@ snapshots: postgres-bytea: 1.0.1 postgres-date: 1.0.7 postgres-interval: 1.2.0 - - pg-types@4.1.0: - dependencies: - pg-int8: 1.0.1 - pg-numeric: 1.0.2 - postgres-array: 3.0.4 - postgres-bytea: 3.0.0 - postgres-date: 2.1.0 - postgres-interval: 3.0.0 - postgres-range: 1.1.4 + optional: true pg@8.23.0: dependencies: @@ -20677,10 +20645,12 @@ snapshots: pgpass: 1.0.5 optionalDependencies: pg-cloudflare: 1.4.0 + optional: true pgpass@1.0.5: dependencies: split2: 4.2.0 + optional: true piccolore@0.1.3: {} @@ -20731,27 +20701,19 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postgres-array@2.0.0: {} - - postgres-array@3.0.4: {} - - postgres-bytea@1.0.1: {} - - postgres-bytea@3.0.0: - dependencies: - obuf: 1.1.2 + postgres-array@2.0.0: + optional: true - postgres-date@1.0.7: {} + postgres-bytea@1.0.1: + optional: true - postgres-date@2.1.0: {} + postgres-date@1.0.7: + optional: true postgres-interval@1.2.0: dependencies: xtend: 4.0.2 - - postgres-interval@3.0.0: {} - - postgres-range@1.1.4: {} + optional: true postject@1.0.0-alpha.6: dependencies: @@ -20831,8 +20793,6 @@ snapshots: punycode@2.3.1: optional: true - pure-rand@8.4.0: {} - pvtsutils@1.3.6: dependencies: tslib: 2.8.1 @@ -20888,6 +20848,11 @@ snapshots: react: 19.2.6 scheduler: 0.27.0 + react-dom@19.2.6(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + react-error-boundary@6.1.2(react@19.2.6): dependencies: react: 19.2.6 @@ -21014,12 +20979,12 @@ snapshots: react: 19.2.3 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6) - react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6): + react-native-webview@13.16.1(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8): dependencies: escape-string-regexp: 4.0.0 invariant: 2.2.4 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) optional: true react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.3)(utf-8-validate@6.0.6))(react@19.2.3): @@ -21043,7 +21008,7 @@ snapshots: transitivePeerDependencies: - supports-color - react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6): + react-native-worklets@0.10.1(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8): dependencies: '@babel/core': 7.29.7 '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@7.29.7) @@ -21058,8 +21023,8 @@ snapshots: '@babel/types': 7.29.7 '@react-native/metro-config': 0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6) convert-source-map: 2.0.0 - react: 19.2.6 - react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6) + react: 19.2.8 + react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6) semver: 7.8.5 transitivePeerDependencies: - supports-color @@ -21110,7 +21075,7 @@ snapshots: - supports-color - utf-8-validate - react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6): + react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6): dependencies: '@react-native/assets-registry': 0.86.3 '@react-native/codegen': 0.86.3(@babel/core@7.29.7) @@ -21118,7 +21083,7 @@ snapshots: '@react-native/gradle-plugin': 0.86.3 '@react-native/js-polyfills': 0.86.3 '@react-native/normalize-colors': 0.86.3 - '@react-native/virtualized-lists': 0.86.3(@types/react@19.2.16)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.6)(utf-8-validate@6.0.6))(react@19.2.6) + '@react-native/virtualized-lists': 0.86.3(@types/react@19.2.16)(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.2.16)(bufferutil@4.1.0)(react@19.2.8)(utf-8-validate@6.0.6))(react@19.2.8) abort-controller: 3.0.0 anser: 1.4.10 ansi-regex: 5.0.1 @@ -21134,7 +21099,7 @@ snapshots: nullthrows: 1.1.1 pretty-format: 29.7.0 promise: 8.3.0 - react: 19.2.6 + react: 19.2.8 react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6) react-refresh: 0.14.2 regenerator-runtime: 0.13.11 @@ -21156,9 +21121,9 @@ snapshots: - utf-8-validate optional: true - react-reconciler@0.33.0(react@19.2.6): + react-reconciler@0.33.0(react@19.2.8): dependencies: - react: 19.2.6 + react: 19.2.8 scheduler: 0.27.0 react-refresh@0.14.2: {} @@ -21200,6 +21165,8 @@ snapshots: react@19.2.6: {} + react@19.2.8: {} + read-binary-file-arch@1.0.6: dependencies: debug: 4.4.3 @@ -21394,11 +21361,6 @@ snapshots: onetime: 2.0.1 signal-exit: 3.0.7 - restore-cursor@4.0.0: - dependencies: - onetime: 5.1.2 - signal-exit: 3.0.7 - restore-cursor@5.1.0: dependencies: onetime: 7.0.0 @@ -21829,11 +21791,6 @@ snapshots: sisteransi@1.0.5: {} - slice-ansi@8.0.0: - dependencies: - ansi-styles: 6.2.3 - is-fullwidth-code-point: 5.1.0 - slugify@1.6.9: {} smart-buffer@4.2.0: @@ -21869,7 +21826,8 @@ snapshots: split-on-first@1.1.0: {} - split2@4.2.0: {} + split2@4.2.0: + optional: true split@0.3.3: dependencies: @@ -21878,10 +21836,6 @@ snapshots: sprintf-js@1.1.3: optional: true - stack-utils@2.0.6: - dependencies: - escape-string-regexp: 2.0.0 - stackback@0.0.2: {} stackframe@1.3.4: {} @@ -21946,6 +21900,11 @@ snapshots: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 + string-width@8.2.2: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + string_decoder@1.1.1: dependencies: safe-buffer: 5.1.2 @@ -22065,8 +22024,6 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terminal-size@4.0.1: {} - terser@5.48.0: dependencies: '@jridgewell/source-map': 0.3.11 @@ -22413,11 +22370,6 @@ snapshots: optionalDependencies: typescript: 6.0.3 - valibot@1.2.0(typescript@7.0.2): - optionalDependencies: - typescript: 7.0.2 - optional: true - validate-npm-package-name@5.0.1: {} vary@1.1.2: {} @@ -22446,6 +22398,64 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 + vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0): + dependencies: + '@oxc-project/types': 0.146.0 + '@oxlint/plugins': 1.79.0 + '@vitest/browser': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))) + '@vitest/browser-preview': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(utf-8-validate@6.0.6)(vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))) + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + '@voidzero-dev/vite-plus-core': 0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0) + oxfmt: 0.64.0(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)) + oxlint: 1.79.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3))(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)) + oxlint-tsgolint: 7.0.2001 + vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)' + vitest: 4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3)) + optionalDependencies: + '@voidzero-dev/vite-plus-darwin-arm64': 0.3.0 + '@voidzero-dev/vite-plus-darwin-x64': 0.3.0 + '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.3.0 + '@voidzero-dev/vite-plus-linux-arm64-musl': 0.3.0 + '@voidzero-dev/vite-plus-linux-x64-gnu': 0.3.0 + '@voidzero-dev/vite-plus-linux-x64-musl': 0.3.0 + '@voidzero-dev/vite-plus-win32-arm64-msvc': 0.3.0 + '@voidzero-dev/vite-plus-win32-x64-msvc': 0.3.0 + transitivePeerDependencies: + - '@arethetypeswrong/core' + - '@edge-runtime/vm' + - '@opentelemetry/api' + - '@types/node' + - '@vitejs/devtools' + - '@vitest/coverage-istanbul' + - '@vitest/coverage-v8' + - '@vitest/ui' + - bufferutil + - esbuild + - happy-dom + - jiti + - jsdom + - less + - msw + - publint + - sass + - sass-embedded + - stylus + - sugarss + - svelte + - terser + - tsx + - typescript + - unplugin-unused + - unrun + - utf-8-validate + - yaml + vite-plus@0.3.0(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.28.1)(jiti@2.7.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0): dependencies: '@oxc-project/types': 0.146.0 @@ -22508,6 +22518,34 @@ snapshots: optionalDependencies: vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(yaml@2.9.0)' + vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11))(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3)): + dependencies: + '@vitest/expect': 4.1.11 + '@vitest/mocker': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3)) + '@vitest/pretty-format': 4.1.11 + '@vitest/runner': 4.1.11 + '@vitest/snapshot': 4.1.11 + '@vitest/spy': 4.1.11 + '@vitest/utils': 4.1.11 + es-module-lexer: 2.1.0 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.3 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.4 + '@vitest/browser-preview': 4.1.11(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@4.1.11) + transitivePeerDependencies: + - msw + vitest@4.1.11(@types/node@24.12.4)(@vitest/browser-preview@4.1.11)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2)): dependencies: '@vitest/expect': 4.1.11 @@ -22698,17 +22736,13 @@ snapshots: siginfo: 2.0.0 stackback: 0.0.2 - widest-line@6.0.0: - dependencies: - string-width: 8.2.1 - - workerd@1.20260704.1: + workerd@1.20260901.1: optionalDependencies: - '@cloudflare/workerd-darwin-64': 1.20260704.1 - '@cloudflare/workerd-darwin-arm64': 1.20260704.1 - '@cloudflare/workerd-linux-64': 1.20260704.1 - '@cloudflare/workerd-linux-arm64': 1.20260704.1 - '@cloudflare/workerd-windows-64': 1.20260704.1 + '@cloudflare/workerd-darwin-64': 1.20260901.1 + '@cloudflare/workerd-darwin-arm64': 1.20260901.1 + '@cloudflare/workerd-linux-64': 1.20260901.1 + '@cloudflare/workerd-linux-arm64': 1.20260901.1 + '@cloudflare/workerd-windows-64': 1.20260901.1 wrap-ansi@6.2.0: dependencies: @@ -22767,7 +22801,8 @@ snapshots: xmlbuilder@15.1.1: {} - xtend@4.0.2: {} + xtend@4.0.2: + optional: true xxhash-wasm@1.1.0: {} @@ -22835,8 +22870,6 @@ snapshots: yoctocolors@2.1.2: {} - yoga-layout@3.2.1: {} - yuku-codegen@0.5.48: dependencies: '@yuku-toolchain/types': 0.5.43 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 8a4bf972f82f..81e69cd4755d 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -15,7 +15,6 @@ allowBuilds: electron: true electron-winstaller: false esbuild: true - msgpackr-extract: true msw: false node-pty: true sharp: true @@ -30,15 +29,15 @@ catalog: "@clerk/expo": 4.2.0 "@clerk/react": 6.14.7 "@clerk/shared": 4.30.1 - "@effect/atom-react": 4.0.0-rc.112 - "@effect/openapi-generator": 4.0.0-rc.112 - "@effect/platform-bun": 4.0.0-rc.112 - "@effect/platform-node": 4.0.0-rc.112 - "@effect/platform-node-shared": 4.0.0-rc.112 - "@effect/sql-pg": 4.0.0-rc.112 - "@effect/sql-sqlite-bun": 4.0.0-rc.112 + "@effect/atom-react": 4.0.0-rc.115 + "@effect/openapi-generator": 4.0.0-rc.115 + "@effect/platform-bun": 4.0.0-rc.115 + "@effect/platform-node": 4.0.0-rc.115 + "@effect/platform-node-shared": 4.0.0-rc.115 + "@effect/sql-pg": 4.0.0-rc.115 + "@effect/sql-sqlite-bun": 4.0.0-rc.115 "@effect/tsgo": 0.41.0 - "@effect/vitest": 4.0.0-rc.112 + "@effect/vitest": 4.0.0-rc.115 "@legendapp/list": 3.3.5 "@noble/curves": 1.9.1 "@noble/hashes": 1.8.0 @@ -47,7 +46,7 @@ catalog: "@tailwindcss/oxide": 4.3.3 "@tailwindcss/vite": 4.3.3 "@types/node": 24.12.4 - effect: 4.0.0-rc.112 + effect: 4.0.0-rc.115 jose: 6.2.2 lightningcss: 1.33.0 tailwindcss: 4.3.3 @@ -69,16 +68,16 @@ minimumReleaseAgeExclude: - "@distilled.cloud/core@0.30.2" - "@distilled.cloud/neon@0.30.2" - "@distilled.cloud/planetscale@0.30.2" - - "@effect/atom-react@4.0.0-rc.112" - - "@effect/openapi-generator@4.0.0-rc.112" - - "@effect/platform-bun@4.0.0-rc.112" - - "@effect/platform-node-shared@4.0.0-rc.112" - - "@effect/platform-node@4.0.0-rc.112" - - "@effect/sql-pg@4.0.0-rc.112" - - "@effect/sql-sqlite-bun@4.0.0-rc.112" - - "@effect/vitest@4.0.0-rc.112" - - alchemy@2.0.0-beta.76 - - effect@4.0.0-rc.112 + - "@effect/atom-react@4.0.0-rc.115" + - "@effect/openapi-generator@4.0.0-rc.115" + - "@effect/platform-bun@4.0.0-rc.115" + - "@effect/platform-node-shared@4.0.0-rc.115" + - "@effect/platform-node@4.0.0-rc.115" + - "@effect/sql-pg@4.0.0-rc.115" + - "@effect/sql-sqlite-bun@4.0.0-rc.115" + - "@effect/vitest@4.0.0-rc.115" + - alchemy@2.0.0-beta.77 + - effect@4.0.0-rc.115 - "@legendapp/list@3.3.5" - "@expo/cli@57.0.20" - "@expo/env@2.4.3" @@ -164,7 +163,7 @@ packageExtensions: patchedDependencies: "@clerk/expo@4.2.0": patches/@clerk__expo@4.2.0.patch - "@effect/vitest@4.0.0-rc.112": patches/@effect__vitest@4.0.0-rc.112.patch + "@effect/vitest@4.0.0-rc.115": patches/@effect__vitest@4.0.0-rc.115.patch "@expo/metro-config@57.0.12": patches/@expo__metro-config@57.0.12.patch "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch @@ -173,7 +172,7 @@ patchedDependencies: "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch dbus-next@0.10.2: patches/dbus-next@0.10.2.patch - effect@4.0.0-rc.112: patches/effect@4.0.0-rc.112.patch + effect@4.0.0-rc.115: patches/effect@4.0.0-rc.115.patch expo-audio@57.0.4: patches/expo-audio@57.0.4.patch expo-sharing@57.0.17: patches/expo-sharing@57.0.17.patch react-native-gesture-handler@2.32.0: patches/react-native-gesture-handler@2.32.0.patch diff --git a/scripts/apply-web-brand-assets.ts b/scripts/apply-web-brand-assets.ts index 30e6bc325b6c..450af75f37be 100644 --- a/scripts/apply-web-brand-assets.ts +++ b/scripts/apply-web-brand-assets.ts @@ -42,15 +42,15 @@ export const applyWebBrandAssets = Effect.fn("applyWebBrandAssets")(function* ( export const applyWebBrandAssetsCommand = Command.make( "apply-web-brand-assets", { - brand: Argument.choice("brand", WEB_ASSET_BRANDS).pipe( + brand: Argument.Literals("brand", WEB_ASSET_BRANDS).pipe( Argument.withDescription("Asset brand to copy into the hosted web output directory."), Argument.optional, ), - channel: Flag.choice("channel", WEB_ASSET_CHANNELS).pipe( + channel: Flag.Literals("channel", WEB_ASSET_CHANNELS).pipe( Flag.withDescription("Hosted release channel to map to a web asset brand."), Flag.optional, ), - targetDirectory: Argument.string("target-directory").pipe( + targetDirectory: Argument.String("target-directory").pipe( Argument.withDescription("Output directory that contains the hosted web build assets."), Argument.optional, ), diff --git a/scripts/build-desktop-artifact.test.ts b/scripts/build-desktop-artifact.test.ts index b601d3997fd7..742cc783cf16 100644 --- a/scripts/build-desktop-artifact.test.ts +++ b/scripts/build-desktop-artifact.test.ts @@ -733,7 +733,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { "@ff-labs/fff-node": "0.9.4", "@opencode-ai/sdk": "^1.3.15", "@pierre/diffs": "1.3.0", - "msgpackr-extract": "3.0.4", "node-pty": "1.1.0", }, desktopDependencies: { @@ -745,7 +744,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { }), { "@ff-labs/fff-node": "0.9.4", - "msgpackr-extract": "3.0.4", "node-pty": "1.1.0", "@clerk/electron": "0.0.34", effect: "4.0.0-beta.103", @@ -1907,7 +1905,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { "--exclude=node_modules/node-pty/third_party/conpty*", "--exclude=node_modules/@ff-labs/fff-bin-win32-*", "--exclude=node_modules/@yuuang/ffi-rs-win32-*", - "--exclude=node_modules/@msgpackr-extract/msgpackr-extract-win32-*", "apps/server/dist", "node_modules", ]); @@ -2010,8 +2007,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { "node_modules/@ff-labs/fff-bin-linux-x64-gnu/libfff.so", "node_modules/@yuuang/ffi-rs-win32-x64-msvc/ffi.dll", "node_modules/@yuuang/ffi-rs-linux-x64-gnu/libffi.so", - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64/addon.node", - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/addon.node", "node_modules/@anthropic-ai/claude-agent-sdk-win32-x64/index.js", "node_modules/.bin/tool", "node_modules/.pnpm/lock.yaml", @@ -2050,10 +2045,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { assert.include(listing, "node_modules/node-pty/prebuilds/linux-x64/pty.node"); assert.include(listing, "node_modules/@ff-labs/fff-bin-linux-x64-gnu/libfff.so"); assert.include(listing, "node_modules/@yuuang/ffi-rs-linux-x64-gnu/libffi.so"); - assert.include( - listing, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64/addon.node", - ); for (const excluded of [ "prebuilds/darwin-", "prebuilds/win32-", @@ -2061,7 +2052,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => { "third_party/conpty", "fff-bin-win32-", "ffi-rs-win32-", - "msgpackr-extract-win32-", "claude-agent-sdk-", "node_modules/.bin", "node_modules/.pnpm", diff --git a/scripts/build-desktop-artifact.ts b/scripts/build-desktop-artifact.ts index 44d5f0ab12f4..d27ea0112d04 100644 --- a/scripts/build-desktop-artifact.ts +++ b/scripts/build-desktop-artifact.ts @@ -865,11 +865,11 @@ const resolvePythonForNodeGyp = Effect.fn("resolvePythonForNodeGyp")(function* ( const path = yield* Path.Path; const hostPlatform = yield* HostProcessPlatform; const env = yield* Config.all({ - configuredPython: Config.string("npm_config_python").pipe( - Config.orElse(() => Config.string("PYTHON")), + configuredPython: Config.String("npm_config_python").pipe( + Config.orElse(() => Config.String("PYTHON")), Config.option, ), - localAppData: Config.string("LOCALAPPDATA").pipe(Config.option), + localAppData: Config.String("LOCALAPPDATA").pipe(Config.option), }); const isPython3 = (candidate: string) => spawnAndCollectOutput( @@ -1069,7 +1069,6 @@ export const WSL_RUNTIME_ARCHIVE_EXCLUDED_PREFIXES = [ "node_modules/node-pty/third_party/conpty", "node_modules/@ff-labs/fff-bin-win32-", "node_modules/@yuuang/ffi-rs-win32-", - "node_modules/@msgpackr-extract/msgpackr-extract-win32-", ] as const; // WSL runs the same CPU arch as the Windows host; universal is mac-only. export const resolveWslPrebuildArch = (arch: typeof BuildArch.Type): "x64" | "arm64" | undefined => @@ -1560,36 +1559,36 @@ function getPatchedDependencyPackageName(patchKey: string): string { } const AzureTrustedSigningOptionsConfig = Config.all({ - publisherName: Config.string("AZURE_TRUSTED_SIGNING_PUBLISHER_NAME"), - endpoint: Config.string("AZURE_TRUSTED_SIGNING_ENDPOINT"), - certificateProfileName: Config.string("AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_NAME"), - codeSigningAccountName: Config.string("AZURE_TRUSTED_SIGNING_ACCOUNT_NAME"), - fileDigest: Config.string("AZURE_TRUSTED_SIGNING_FILE_DIGEST").pipe(Config.withDefault("SHA256")), - timestampDigest: Config.string("AZURE_TRUSTED_SIGNING_TIMESTAMP_DIGEST").pipe( + publisherName: Config.String("AZURE_TRUSTED_SIGNING_PUBLISHER_NAME"), + endpoint: Config.String("AZURE_TRUSTED_SIGNING_ENDPOINT"), + certificateProfileName: Config.String("AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_NAME"), + codeSigningAccountName: Config.String("AZURE_TRUSTED_SIGNING_ACCOUNT_NAME"), + fileDigest: Config.String("AZURE_TRUSTED_SIGNING_FILE_DIGEST").pipe(Config.withDefault("SHA256")), + timestampDigest: Config.String("AZURE_TRUSTED_SIGNING_TIMESTAMP_DIGEST").pipe( Config.withDefault("SHA256"), ), - timestampRfc3161: Config.string("AZURE_TRUSTED_SIGNING_TIMESTAMP_RFC3161").pipe( + timestampRfc3161: Config.String("AZURE_TRUSTED_SIGNING_TIMESTAMP_RFC3161").pipe( Config.withDefault("http://timestamp.acs.microsoft.com"), ), }); const BuildEnvConfig = Config.all({ platform: Config.schema(BuildPlatform, "T3CODE_DESKTOP_PLATFORM").pipe(Config.option), - target: Config.string("T3CODE_DESKTOP_TARGET").pipe(Config.option), + target: Config.String("T3CODE_DESKTOP_TARGET").pipe(Config.option), arch: Config.schema(BuildArch, "T3CODE_DESKTOP_ARCH").pipe(Config.option), - version: Config.string("T3CODE_DESKTOP_VERSION").pipe(Config.option), - outputDir: Config.string("T3CODE_DESKTOP_OUTPUT_DIR").pipe(Config.option), - skipBuild: Config.boolean("T3CODE_DESKTOP_SKIP_BUILD").pipe(Config.withDefault(false)), - keepStage: Config.boolean("T3CODE_DESKTOP_KEEP_STAGE").pipe(Config.withDefault(false)), - signed: Config.boolean("T3CODE_DESKTOP_SIGNED").pipe(Config.withDefault(false)), - verbose: Config.boolean("T3CODE_DESKTOP_VERBOSE").pipe(Config.withDefault(false)), - mockUpdates: Config.boolean("T3CODE_DESKTOP_MOCK_UPDATES").pipe(Config.withDefault(false)), - mockUpdateServerPort: Config.string("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.option), + version: Config.String("T3CODE_DESKTOP_VERSION").pipe(Config.option), + outputDir: Config.String("T3CODE_DESKTOP_OUTPUT_DIR").pipe(Config.option), + skipBuild: Config.Boolean("T3CODE_DESKTOP_SKIP_BUILD").pipe(Config.withDefault(false)), + keepStage: Config.Boolean("T3CODE_DESKTOP_KEEP_STAGE").pipe(Config.withDefault(false)), + signed: Config.Boolean("T3CODE_DESKTOP_SIGNED").pipe(Config.withDefault(false)), + verbose: Config.Boolean("T3CODE_DESKTOP_VERBOSE").pipe(Config.withDefault(false)), + mockUpdates: Config.Boolean("T3CODE_DESKTOP_MOCK_UPDATES").pipe(Config.withDefault(false)), + mockUpdateServerPort: Config.String("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.option), // Path to a prebuilt Linux node-pty binary (pty.node) for the target arch, // produced by the Linux CI job and handed to the Windows packaging job. Placed // into the staged node-pty so the WSL backend ships a ready binary and never // compiles on the user's machine. - wslPrebuild: Config.string("T3CODE_DESKTOP_WSL_PREBUILD").pipe(Config.option), + wslPrebuild: Config.String("T3CODE_DESKTOP_WSL_PREBUILD").pipe(Config.option), }); const MockUpdateServerPortSchema = Schema.NumberFromString.check( @@ -1754,10 +1753,10 @@ const rustTargetIsInstalled = Effect.fn("rustTargetIsInstalled")(function* (targ export const preflightLinuxDesktopBuild = Effect.fn("preflightLinuxDesktopBuild")(function* ( arch: typeof BuildArch.Type = "x64", ) { - const reuseResourceMonitor = yield* Config.boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe( + const reuseResourceMonitor = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe( Config.withDefault(false), ); - const reuseCaptureHelpers = yield* Config.boolean( + const reuseCaptureHelpers = yield* Config.Boolean( "T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS", ).pipe(Config.withDefault(false)); // Rust is only optional when every Linux Rust artifact comes from a cache. @@ -1796,7 +1795,7 @@ export const preflightMacDesktopBuild = Effect.fn("preflightMacDesktopBuild")(fu arch: typeof BuildArch.Type, ) { const rustTargets = resolveResourceMonitorRustTargets("mac", arch); - const reuseResourceMonitor = yield* Config.boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe( + const reuseResourceMonitor = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe( Config.withDefault(false), ); const checks = yield* Effect.all( @@ -1853,7 +1852,7 @@ function windowsVswherePrerequisiteScript(arch: typeof BuildArch.Type): string { export const preflightWindowsDesktopBuild = Effect.fn("preflightWindowsDesktopBuild")( function* (input: { readonly arch: typeof BuildArch.Type; readonly bundlesWslRuntime: boolean }) { const rustTarget = resolveResourceMonitorRustTargets("win", input.arch)[0]!; - const reuseResourceMonitor = yield* Config.boolean( + const reuseResourceMonitor = yield* Config.Boolean( "T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR", ).pipe(Config.withDefault(false)); const python = yield* resolvePythonForNodeGyp(); @@ -2171,7 +2170,7 @@ export const stageLinuxCaptureHelper = Effect.fn("stageLinuxCaptureHelper")(func const [rustTarget] = resolveResourceMonitorRustTargets("linux", input.arch); // Release CI restores these binaries from a cache keyed on the crate sources and // skips the Rust toolchain on a hit, so the build must be skippable too. - const reuseHelpers = yield* Config.boolean("T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS").pipe( + const reuseHelpers = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS").pipe( Config.withDefault(false), ); const binaryPath = path.join( @@ -2234,7 +2233,7 @@ export const stageResourceMonitor = Effect.fn("stageResourceMonitor")(function* const manifestPath = path.join(input.repoRoot, "native/resource-monitor/Cargo.toml"); const executableName = resourceMonitorExecutableName(input.platform); const rustTargets = resolveResourceMonitorRustTargets(input.platform, input.arch); - const reuseResourceMonitor = yield* Config.boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe( + const reuseResourceMonitor = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe( Config.withDefault(false), ); const builtBinaries: string[] = []; @@ -2573,8 +2572,8 @@ export const resolveGitHubPublishConfig = Effect.fn("resolveGitHubPublishConfig" updateChannel: "latest" | "nightly", ) { const env = yield* Config.all({ - updateRepository: Config.string("T3CODE_DESKTOP_UPDATE_REPOSITORY").pipe(Config.option), - githubRepository: Config.string("GITHUB_REPOSITORY").pipe(Config.option), + updateRepository: Config.String("T3CODE_DESKTOP_UPDATE_REPOSITORY").pipe(Config.option), + githubRepository: Config.String("GITHUB_REPOSITORY").pipe(Config.option), }); const rawRepo = ( Option.getOrUndefined(env.updateRepository)?.trim() || @@ -3564,10 +3563,11 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* ( // Assert against the emitted bundle, not the bundler config. `alwaysBundle` // only forces packages IN, so a transitive dependency of an external package // is bundled by default however the predicate is written — that silently - // inlined msgpackr-extract and its native loader while every list-based test - // still passed. An inlined native loader resolves its prebuilds relative to - // the bundle and quietly falls back to a slower pure-JS path, so this fails - // the build rather than shipping a silent regression. + // inlined a native loader (node-gyp-build-optional-packages) while every + // list-based test still passed. An inlined native loader resolves its + // prebuilds relative to the bundle and quietly falls back to a slower + // pure-JS path, so this fails the build rather than shipping a silent + // regression. { const chunkNames = (yield* fs.readDirectory(distDirs.serverDist)).filter((entry) => entry.endsWith(".mjs"), @@ -3986,58 +3986,58 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* ( }); const buildDesktopArtifactCli = Command.make("build-desktop-artifact", { - platform: Flag.choice("platform", BuildPlatform.literals).pipe( + platform: Flag.Literals("platform", BuildPlatform.literals).pipe( Flag.withDescription("Build platform (env: T3CODE_DESKTOP_PLATFORM)."), Flag.optional, ), - target: Flag.string("target").pipe( + target: Flag.String("target").pipe( Flag.withDescription( "Artifact target, for example dmg/AppImage/nsis (env: T3CODE_DESKTOP_TARGET).", ), Flag.optional, ), - arch: Flag.choice("arch", BuildArch.literals).pipe( + arch: Flag.Literals("arch", BuildArch.literals).pipe( Flag.withDescription("Build arch, for example arm64/x64/universal (env: T3CODE_DESKTOP_ARCH)."), Flag.optional, ), - buildVersion: Flag.string("build-version").pipe( + buildVersion: Flag.String("build-version").pipe( Flag.withDescription("Artifact version metadata (env: T3CODE_DESKTOP_VERSION)."), Flag.optional, ), - outputDir: Flag.string("output-dir").pipe( + outputDir: Flag.String("output-dir").pipe( Flag.withDescription("Output directory for artifacts (env: T3CODE_DESKTOP_OUTPUT_DIR)."), Flag.optional, ), - skipBuild: Flag.boolean("skip-build").pipe( + skipBuild: Flag.Boolean("skip-build").pipe( Flag.withDescription( "Skip `vp run build:desktop` and use existing dist artifacts (env: T3CODE_DESKTOP_SKIP_BUILD).", ), Flag.optional, ), - keepStage: Flag.boolean("keep-stage").pipe( + keepStage: Flag.Boolean("keep-stage").pipe( Flag.withDescription("Keep temporary staging files (env: T3CODE_DESKTOP_KEEP_STAGE)."), Flag.optional, ), - signed: Flag.boolean("signed").pipe( + signed: Flag.Boolean("signed").pipe( Flag.withDescription( "Enable signing/notarization discovery; Windows uses Azure Trusted Signing (env: T3CODE_DESKTOP_SIGNED).", ), Flag.optional, ), - verbose: Flag.boolean("verbose").pipe( + verbose: Flag.Boolean("verbose").pipe( Flag.withDescription("Stream subprocess stdout (env: T3CODE_DESKTOP_VERBOSE)."), Flag.optional, ), - mockUpdates: Flag.boolean("mock-updates").pipe( + mockUpdates: Flag.Boolean("mock-updates").pipe( Flag.withDescription("Enable mock updates (env: T3CODE_DESKTOP_MOCK_UPDATES)."), Flag.optional, ), - mockUpdateServerPort: Flag.integer("mock-update-server-port").pipe( + mockUpdateServerPort: Flag.Int("mock-update-server-port").pipe( Flag.withSchema(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))), Flag.withDescription("Mock update server port (env: T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT)."), Flag.optional, ), - wslPrebuild: Flag.string("wsl-prebuild").pipe( + wslPrebuild: Flag.String("wsl-prebuild").pipe( Flag.withDescription( "Path to a prebuilt Linux node-pty (pty.node) for the target arch, staged for the WSL backend (env: T3CODE_DESKTOP_WSL_PREBUILD).", ), diff --git a/scripts/dev-runner.ts b/scripts/dev-runner.ts index c4062955e9d5..65436a20f525 100644 --- a/scripts/dev-runner.ts +++ b/scripts/dev-runner.ts @@ -202,22 +202,22 @@ export type DevRunnerError = typeof DevRunnerError.Type; export const isDevRunnerError = Schema.is(DevRunnerError); const optionalStringConfig = (name: string): Config.Config => - Config.string(name).pipe( + Config.String(name).pipe( Config.option, Config.map((value) => Option.getOrUndefined(value)), ); const optionalBooleanConfig = (name: string): Config.Config => - Config.boolean(name).pipe( + Config.Boolean(name).pipe( Config.option, Config.map((value) => Option.getOrUndefined(value)), ); const optionalPortConfig = (name: string): Config.Config => - Config.port(name).pipe( + Config.Port(name).pipe( Config.option, Config.map((value) => Option.getOrUndefined(value)), ); const optionalIntegerConfig = (name: string): Config.Config => - Config.int(name).pipe( + Config.Int(name).pipe( Config.option, Config.map((value) => Option.getOrUndefined(value)), ); @@ -855,41 +855,41 @@ export function runDevRunnerWithInput(input: DevRunnerCliInput) { } const devRunnerCli = Command.make("dev-runner", { - mode: Argument.choice("mode", DEV_RUNNER_MODES).pipe( + mode: Argument.Literals("mode", DEV_RUNNER_MODES).pipe( Argument.withDescription("Development mode to run."), ), - t3Home: Flag.string("home-dir").pipe( + t3Home: Flag.String("home-dir").pipe( Flag.withDescription( "Explicit T3 Code data directory; runtime state is stored under userdata (equivalent to T3CODE_HOME). Inside a git worktree this defaults to that worktree's own .t3 so dev state stays off the shared home.", ), Flag.optional, Flag.map(Option.getOrUndefined), ), - browser: Flag.boolean("browser").pipe( + browser: Flag.Boolean("browser").pipe( Flag.withDescription("Open a browser automatically (disabled by default for web dev)."), Flag.withDefault(false), ), - autoBootstrapProjectFromCwd: Flag.boolean("auto-bootstrap-project-from-cwd").pipe( + autoBootstrapProjectFromCwd: Flag.Boolean("auto-bootstrap-project-from-cwd").pipe( Flag.withDescription( "Auto-bootstrap toggle (equivalent to T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD).", ), Flag.withFallbackConfig(optionalBooleanConfig("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD")), ), - logWebSocketEvents: Flag.boolean("log-websocket-events").pipe( + logWebSocketEvents: Flag.Boolean("log-websocket-events").pipe( Flag.withDescription("WebSocket event logging toggle (equivalent to T3CODE_LOG_WS_EVENTS)."), Flag.withAlias("log-ws-events"), Flag.withFallbackConfig(optionalBooleanConfig("T3CODE_LOG_WS_EVENTS")), ), - host: Flag.string("host").pipe( + host: Flag.String("host").pipe( Flag.withDescription("Server host/interface override (forwards to T3CODE_HOST)."), Flag.withFallbackConfig(optionalStringConfig("T3CODE_HOST")), ), - port: Flag.integer("port").pipe( + port: Flag.Int("port").pipe( Flag.withSchema(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))), Flag.withDescription("Server port override (forwards to T3CODE_PORT)."), Flag.withFallbackConfig(optionalPortConfig("T3CODE_PORT")), ), - devUrl: Flag.string("dev-url").pipe( + devUrl: Flag.String("dev-url").pipe( Flag.withSchema(Schema.URLFromString), Flag.withDescription( "Explicit web dev URL override (forwards to VITE_DEV_SERVER_URL). Ambient VITE_DEV_SERVER_URL values are ignored so a parent dev app cannot redirect the child runner.", @@ -897,17 +897,17 @@ const devRunnerCli = Command.make("dev-runner", { Flag.optional, Flag.map(Option.getOrUndefined), ), - dryRun: Flag.boolean("dry-run").pipe( + dryRun: Flag.Boolean("dry-run").pipe( Flag.withDescription("Resolve mode/ports/env and print, but do not spawn Vite+."), Flag.withDefault(false), ), - share: Flag.boolean("share").pipe( + share: Flag.Boolean("share").pipe( Flag.withDescription( "Publish the web dev server on this machine's tailnet over HTTPS (via `tailscale serve`) and print the pairing URL for it. Removed again on exit.", ), Flag.withDefault(false), ), - runArgs: Argument.string("run-arg").pipe( + runArgs: Argument.String("run-arg").pipe( Argument.withDescription("Additional Vite+ run args (pass after `--`)."), Argument.variadic(), ), diff --git a/scripts/export-brand-icons.ts b/scripts/export-brand-icons.ts index 3150aa2e396a..620a98655367 100644 --- a/scripts/export-brand-icons.ts +++ b/scripts/export-brand-icons.ts @@ -790,7 +790,7 @@ export const exportBrandIcons = Effect.fn("exportBrandIcons")(function* (checkOn export const exportBrandIconsCommand = Command.make( "export-brand-icons", { - check: Flag.boolean("check").pipe( + check: Flag.Boolean("check").pipe( Flag.withDescription("Verify generated icon assets without modifying files."), Flag.withDefault(false), ), diff --git a/scripts/lib/build-target-arch.ts b/scripts/lib/build-target-arch.ts index eb804b226eae..b79c1746f88f 100644 --- a/scripts/lib/build-target-arch.ts +++ b/scripts/lib/build-target-arch.ts @@ -11,8 +11,8 @@ interface PlatformConfig { } const WindowsProcessorArchitectureConfig = Config.all({ - processorArchitecture: Config.string("PROCESSOR_ARCHITECTURE").pipe(Config.option), - processorArchitectureW6432: Config.string("PROCESSOR_ARCHITEW6432").pipe(Config.option), + processorArchitecture: Config.String("PROCESSOR_ARCHITECTURE").pipe(Config.option), + processorArchitectureW6432: Config.String("PROCESSOR_ARCHITEW6432").pipe(Config.option), }); function normalizeWindowsArch(value: string | undefined): BuildArch | undefined { diff --git a/scripts/lib/cli-external-packages.test.ts b/scripts/lib/cli-external-packages.test.ts index e894359eccb5..373c3ac5036a 100644 --- a/scripts/lib/cli-external-packages.test.ts +++ b/scripts/lib/cli-external-packages.test.ts @@ -19,8 +19,8 @@ import { // Only the field this test cares about; decoding ignores everything else. // optionalDependencies matter as much as dependencies here: every native family // in the list declares its actual platform bindings there (ffi-rs -> @yuuang/*, -// msgpackr-extract -> @msgpackr-extract/*, fff-node -> @ff-labs/fff-bin-*), so -// reading only `dependencies` would check nothing for exactly those packages. +// fff-node -> @ff-labs/fff-bin-*), so reading only `dependencies` would check +// nothing for exactly those packages. const PackageManifest = Schema.Struct({ dependencies: Schema.optional(Schema.Record(Schema.String, Schema.String)), optionalDependencies: Schema.optional(Schema.Record(Schema.String, Schema.String)), @@ -48,8 +48,7 @@ describe("shouldBundleCliDependency", () => { "@yuuang/ffi-rs-win32-x64-msvc", "@ff-labs/fff-node", "@clerk/electron-passkeys", - "msgpackr-extract", - "@msgpackr-extract/msgpackr-extract-win32-x64", + "node-addon-api", ]) { assert.strictEqual(shouldBundleCliDependency(id), false, id); } @@ -60,9 +59,9 @@ describe("shouldBundleCliDependency", () => { assert.strictEqual(shouldBundleCliDependency("@effect/sql-sqlite-bun"), false); }); - // The real package is `node-gyp-build-optional-packages`, reached by prefix. - // It is transitive to a selected dependency root, so the runtime closure test - // below ensures it follows that root into the sidecar. + // `node-gyp-build-optional-packages` is reached by prefix. Nothing in the + // server's closure depends on it today, but the prefix keeps a future native + // dependency that does from being inlined by default. it("treats prefix-matched siblings as external", () => { assert.strictEqual(shouldBundleCliDependency("node-gyp-build-optional-packages"), false); }); @@ -87,7 +86,7 @@ describe("selectCliRuntimeExternalDependencies", () => { it("selects every external root declared by the server", () => { assert.deepStrictEqual( Object.keys(selectCliRuntimeExternalDependencies(serverPackageJson.dependencies)).sort(), - ["@ff-labs/fff-node", "msgpackr-extract", "node-pty"], + ["@ff-labs/fff-node", "node-pty"], ); }); }); @@ -97,12 +96,13 @@ describe("selectCliRuntimeExternalDependencies", () => { // bundled away instead of left external, that dependency does not follow the // selected root into the sidecar. // -// Found the hard way: node-gyp-build-optional-packages requires detect-libc, -// which was bundled. Windows was fine; WSL got MODULE_NOT_FOUND. +// Found the hard way: msgpackr-extract's node-gyp-build-optional-packages +// required detect-libc, which was bundled. Windows was fine; WSL got +// MODULE_NOT_FOUND. it.layer(NodeServices.layer)("external package dependency closure", (it) => { // Read manifests off disk from the pnpm store rather than resolving them. // `require("/package.json")` cannot do this job: under pnpm isolation a - // transitive package (detect-libc, msgpackr-extract, ffi-rs) is not reachable + // transitive package (node-addon-api, ffi-rs) is not reachable // by name from this file at all, and an `exports` map can refuse the // `/package.json` subpath outright (@ff-labs/fff-node). Both surface as "not // installed", which would let this test skip everything and pass while @@ -163,9 +163,10 @@ it.layer(NodeServices.layer)("external package dependency closure", (it) => { const found = [...installed.keys()].filter(isRuntimeExternal); // Without this the closure check below can pass vacuously: if nothing is - // read, nothing is checked. These are the packages whose closure actually - // broke WSL, so require them by name. - for (const required of ["node-pty", "node-gyp-build-optional-packages", "detect-libc"]) { + // read, nothing is checked. node-pty is the one native root every + // platform ships, and node-addon-api is its transitive runtime + // dependency, so require them by name. + for (const required of ["node-pty", "node-addon-api"]) { assert.ok( found.includes(required), `expected ${required} in the pnpm store; the closure check is only meaningful if it can read these (found ${found.length})`, @@ -225,13 +226,13 @@ var x = 1; it("flags an external package that was inlined", () => { const source = - region("../../node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/process.js") + + region("../../node_modules/.pnpm/node-addon-api@7.1.1/node_modules/node-addon-api/index.js") + region( - "../../node_modules/.pnpm/msgpackr-extract@3.0.4/node_modules/msgpackr-extract/index.js", + "../../node_modules/.pnpm/node-gyp-build-optional-packages@5.2.2/node_modules/node-gyp-build-optional-packages/index.js", ); const result = findInlinedExternalPackages(source); - assert.deepStrictEqual(result.inlined, ["detect-libc", "msgpackr-extract"]); + assert.deepStrictEqual(result.inlined, ["node-addon-api", "node-gyp-build-optional-packages"]); assert.strictEqual(result.regionCount, 2); }); @@ -276,7 +277,7 @@ var x = 1; }); it("reports no regions when the marker format is absent", () => { - const result = findInlinedExternalPackages("var x = 1; // node_modules/detect-libc/lib.js"); + const result = findInlinedExternalPackages("var x = 1; // node_modules/node-pty/lib.js"); assert.strictEqual(result.regionCount, 0); assert.deepStrictEqual(result.inlined, []); }); diff --git a/scripts/lib/cli-external-packages.ts b/scripts/lib/cli-external-packages.ts index d7a89bc408a4..0bbcfa853863 100644 --- a/scripts/lib/cli-external-packages.ts +++ b/scripts/lib/cli-external-packages.ts @@ -31,13 +31,8 @@ export const CLI_RUNTIME_EXTERNAL_PREFIXES = [ "@yuuang/", "@ff-labs/", "@clerk/electron-passkeys", - "@msgpackr-extract/", - "msgpackr-extract", "node-gyp-build", "node-addon-api", - // Required by node-gyp-build-optional-packages. Not native, but in the - // closure: without it, WSL gets MODULE_NOT_FOUND while Windows is fine. - "detect-libc", // ws's optional accelerators. Nothing in this repo declares them, so they are // not in the staged production install and the packaged app does not ship // them either way -- ws wraps the require in try/catch and falls back to its @@ -78,9 +73,9 @@ export function isRuntimeExternalCliDependency(id: string): boolean { * This has to be wired to the bundler's `neverBundle`, not just to * `alwaysBundle`. `alwaysBundle` only forces packages IN — returning false from * it means "no opinion", and the default then applies: a declared dependency - * stays external, but a transitive one gets bundled. That is how - * msgpackr-extract, node-gyp-build-optional-packages and detect-libc ended up - * inlined while node-pty (a declared dependency) stayed external. + * stays external, but a transitive one gets bundled. That is how a native + * loader such as node-gyp-build ended up inlined while node-pty (a declared + * dependency) stayed external. */ export function isExternalCliDependency(id: string): boolean { return CLI_EXTERNAL_PACKAGE_PREFIXES.some((prefix) => id.startsWith(prefix)); @@ -107,9 +102,10 @@ export function selectCliRuntimeExternalDependencies( * Configuring the bundler is not the same as checking what it produced. The * `alwaysBundle` predicate only forces packages IN; returning false from it * means "no opinion", so a transitive dependency still gets bundled by default. - * msgpackr-extract, node-gyp-build-optional-packages and detect-libc were - * inlined that way while every list-based test passed, which is why this reads - * the artifact instead. + * A native loader and its helper (node-gyp-build-optional-packages and + * detect-libc, when msgpackr-extract was still a dependency) were inlined that + * way while every list-based test passed, which is why this reads the artifact + * instead. * * `regionCount` is reported so the caller can tell "nothing was inlined" apart * from "the marker format changed and this scan no longer sees anything". diff --git a/scripts/merge-update-manifests.ts b/scripts/merge-update-manifests.ts index f7ba30f8a307..a3cb63878b6c 100644 --- a/scripts/merge-update-manifests.ts +++ b/scripts/merge-update-manifests.ts @@ -79,18 +79,18 @@ export const mergeUpdateManifestFiles = Effect.fn("mergeUpdateManifestFiles")(fu export const mergeUpdateManifestsCommand = Command.make( "merge-update-manifests", { - platform: Flag.choice("platform", UpdateManifestPlatform.literals).pipe( + platform: Flag.Literals("platform", UpdateManifestPlatform.literals).pipe( Flag.withDescription("Update manifest platform."), ), - primaryPath: Argument.string("primary-path").pipe( + primaryPath: Argument.String("primary-path").pipe( Argument.withDescription("Primary update manifest path. Defaults to the output path."), ), - secondaryPath: Argument.string("secondary-path").pipe( + secondaryPath: Argument.String("secondary-path").pipe( Argument.withDescription( "Secondary update manifest path to merge into the primary manifest.", ), ), - outputPath: Argument.string("output-path").pipe( + outputPath: Argument.String("output-path").pipe( Argument.withDescription("Optional output path for the merged manifest."), Argument.optional, ), diff --git a/scripts/mock-update-server.ts b/scripts/mock-update-server.ts index de50a6c04592..e65d41f0e872 100644 --- a/scripts/mock-update-server.ts +++ b/scripts/mock-update-server.ts @@ -18,8 +18,8 @@ const resolveMockUpdateServerConfig = Effect.gen(function* () { const fileSystem = yield* FileSystem.FileSystem; const path = yield* Path.Path; const config = yield* Config.all({ - port: Config.port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.withDefault(3000)), - root: Config.string("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_ROOT").pipe( + port: Config.Port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.withDefault(3000)), + root: Config.String("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_ROOT").pipe( Config.withDefault("../release-mock"), ), }); diff --git a/scripts/notify-discord-release.ts b/scripts/notify-discord-release.ts index 431ddfcd4516..8f9f1d7a33b6 100644 --- a/scripts/notify-discord-release.ts +++ b/scripts/notify-discord-release.ts @@ -49,7 +49,7 @@ interface DiscordWebhookPayload { const DISCORD_RELEASE_TARGETS = ["prerelease", "latest"] as const; const DiscordRoleIdSchema = Schema.String.check(Schema.isPattern(/^\d+$/)); -const DiscordWebhookUrl = Config.url("DISCORD_WEBHOOK_URL"); +const DiscordWebhookUrl = Config.URL("DISCORD_WEBHOOK_URL"); const discordReleaseErrorContext = { target: Schema.Literals(["prerelease", "latest"]), @@ -221,26 +221,26 @@ export const postDiscordWebhook = Effect.fn("postDiscordWebhook")(function* ( export const notifyDiscordReleaseCommand = Command.make( "notify-discord-release", { - target: Argument.choice("target", DISCORD_RELEASE_TARGETS).pipe( + target: Argument.Literals("target", DISCORD_RELEASE_TARGETS).pipe( Argument.withDescription("Discord announcement target: prerelease or latest."), ), - roleId: Flag.string("role-id").pipe( + roleId: Flag.String("role-id").pipe( Flag.withSchema(DiscordRoleIdSchema), Flag.withDescription("Discord role ID to mention in the release announcement."), ), - releaseName: Flag.string("release-name").pipe( + releaseName: Flag.String("release-name").pipe( Flag.withSchema(Schema.NonEmptyString), Flag.withDescription("Human-readable release name."), ), - releaseVersion: Flag.string("release-version").pipe( + releaseVersion: Flag.String("release-version").pipe( Flag.withSchema(Schema.NonEmptyString), Flag.withDescription("Release version."), ), - tag: Flag.string("tag").pipe( + tag: Flag.String("tag").pipe( Flag.withSchema(Schema.NonEmptyString), Flag.withDescription("Git tag for the release."), ), - releaseUrl: Flag.string("release-url").pipe( + releaseUrl: Flag.String("release-url").pipe( Flag.withSchema(Schema.URLFromString), Flag.withDescription("Public GitHub release URL."), ), diff --git a/scripts/resolve-nightly-release.ts b/scripts/resolve-nightly-release.ts index 672e61aedb42..98c37e4071e6 100644 --- a/scripts/resolve-nightly-release.ts +++ b/scripts/resolve-nightly-release.ts @@ -158,7 +158,7 @@ export const writeNightlyReleaseOutput = Effect.fn("writeNightlyReleaseOutput")( ] as const; if (writeGithubOutput) { - const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT").pipe( + const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT").pipe( Effect.mapError( (cause) => new NightlyReleaseGitHubOutputConfigError({ @@ -186,23 +186,23 @@ export const writeNightlyReleaseOutput = Effect.fn("writeNightlyReleaseOutput")( const command = Command.make( "resolve-nightly-release", { - date: Flag.string("date").pipe( + date: Flag.String("date").pipe( Flag.withSchema(DateSchema), Flag.withDescription("Nightly build date in YYYYMMDD."), ), - runNumber: Flag.string("run-number").pipe( + runNumber: Flag.String("run-number").pipe( Flag.withSchema(RunNumberSchema), Flag.withDescription("GitHub Actions run number."), ), - sha: Flag.string("sha").pipe( + sha: Flag.String("sha").pipe( Flag.withSchema(ShaSchema), Flag.withDescription("Commit sha for the nightly build."), ), - githubOutput: Flag.boolean("github-output").pipe( + githubOutput: Flag.Boolean("github-output").pipe( Flag.withDescription("Write values to GITHUB_OUTPUT instead of stdout."), Flag.withDefault(false), ), - root: Flag.string("root").pipe( + root: Flag.String("root").pipe( Flag.withDescription("Workspace root used to resolve apps/desktop/package.json."), Flag.optional, ), diff --git a/scripts/resolve-previous-release-tag.ts b/scripts/resolve-previous-release-tag.ts index 43b3901af810..364b2399a136 100644 --- a/scripts/resolve-previous-release-tag.ts +++ b/scripts/resolve-previous-release-tag.ts @@ -313,7 +313,7 @@ export const writePreviousReleaseTagOutput = Effect.fn("writePreviousReleaseTagO if (writeGithubOutput) { const fs = yield* FileSystem.FileSystem; - const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT").pipe( + const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT").pipe( Effect.mapError( (cause) => new PreviousReleaseTagGitHubOutputConfigError({ @@ -339,13 +339,13 @@ export const writePreviousReleaseTagOutput = Effect.fn("writePreviousReleaseTagO const command = Command.make( "resolve-previous-release-tag", { - channel: Flag.choice("channel", ReleaseChannel.literals).pipe( + channel: Flag.Literals("channel", ReleaseChannel.literals).pipe( Flag.withDescription("Release channel whose previous tag should be resolved."), ), - currentTag: Flag.string("current-tag").pipe( + currentTag: Flag.String("current-tag").pipe( Flag.withDescription("Current release tag to compare against."), ), - githubOutput: Flag.boolean("github-output").pipe( + githubOutput: Flag.Boolean("github-output").pipe( Flag.withDescription("Write values to GITHUB_OUTPUT instead of stdout."), Flag.withDefault(false), ), diff --git a/scripts/sync-reference-repos.ts b/scripts/sync-reference-repos.ts index f39a8d708a65..2cb13d42683b 100644 --- a/scripts/sync-reference-repos.ts +++ b/scripts/sync-reference-repos.ts @@ -296,21 +296,21 @@ export const syncReferenceRepos = Effect.fn("syncReferenceRepos")(function* ( export const syncReferenceReposCommand = Command.make( "sync-reference-repos", { - repo: Flag.string("repo").pipe( + repo: Flag.String("repo").pipe( Flag.withDescription("Sync only the named reference repo. Defaults to all configured repos."), Flag.optional, ), - latest: Flag.boolean("latest").pipe( + latest: Flag.Boolean("latest").pipe( Flag.withDescription( "Sync each repo from its latest branch instead of the installed version.", ), Flag.withDefault(false), ), - root: Flag.string("root").pipe( + root: Flag.String("root").pipe( Flag.withDescription("Workspace root used to resolve versions and subtree prefixes."), Flag.optional, ), - dryRun: Flag.boolean("dry-run").pipe( + dryRun: Flag.Boolean("dry-run").pipe( Flag.withDescription("Print planned subtree operations without running git."), Flag.withDefault(false), ), diff --git a/scripts/update-release-package-versions.ts b/scripts/update-release-package-versions.ts index 6c1d28c8e384..ec825d709d68 100644 --- a/scripts/update-release-package-versions.ts +++ b/scripts/update-release-package-versions.ts @@ -125,7 +125,7 @@ export const updateReleasePackageVersions = Effect.fn("updateReleasePackageVersi const writeGithubOutput = Effect.fn("writeGithubOutput")(function* (changed: boolean) { const fs = yield* FileSystem.FileSystem; - const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT").pipe( + const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT").pipe( Effect.mapError( (cause) => new ReleaseGitHubOutputConfigurationError({ @@ -147,14 +147,14 @@ const writeGithubOutput = Effect.fn("writeGithubOutput")(function* (changed: boo export const updateReleasePackageVersionsCommand = Command.make( "update-release-package-versions", { - version: Argument.string("version").pipe( + version: Argument.String("version").pipe( Argument.withDescription("Release version to write into each releasable package.json."), ), - root: Flag.string("root").pipe( + root: Flag.String("root").pipe( Flag.withDescription("Workspace root used to resolve the release package manifests."), Flag.optional, ), - githubOutput: Flag.boolean("github-output").pipe( + githubOutput: Flag.Boolean("github-output").pipe( Flag.withDescription("Append changed= to GITHUB_OUTPUT."), Flag.withDefault(false), ), From 46b2b2501d52fb62a133a80d9afa65b47a775330 Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Fri, 11 Sep 2026 22:26:11 -0700 Subject: [PATCH 2/3] chore(deps): pin Alchemy to the rc.115 preview build until a release exists Alchemy has fixed its Effect rc.113+ constructor renames on main and has an rc.115 PR open, but beta.77 on npm still calls the old names at module scope and cannot load under rc.115. The relay pins the pkg.ing build of that PR head. Its transitive @alchemy.run/* and @distilled.cloud/* packages are pkg.ing tarballs too, so blockExoticSubdeps is off; the released Fly and Railway providers it still depends on get a two-line patch for the same renames and share the preview core through an override. infra/relay tests pass (284) and scripts/deploy.ts loads again. Revert all of this once Alchemy ships beta.78. Co-Authored-By: Claude Fable 5 --- infra/relay/package.json | 2 +- .../@distilled.cloud__fly-io@1.0.0-rc.9.patch | 15 ++ ...@distilled.cloud__railway@1.0.0-rc.9.patch | 19 ++ pnpm-lock.yaml | 177 +++++++++--------- pnpm-workspace.yaml | 16 +- 5 files changed, 141 insertions(+), 88 deletions(-) create mode 100644 patches/@distilled.cloud__fly-io@1.0.0-rc.9.patch create mode 100644 patches/@distilled.cloud__railway@1.0.0-rc.9.patch diff --git a/infra/relay/package.json b/infra/relay/package.json index 37a66c99236f..8e86e5946395 100644 --- a/infra/relay/package.json +++ b/infra/relay/package.json @@ -18,7 +18,7 @@ "@t3tools/client-runtime": "workspace:*", "@t3tools/contracts": "workspace:*", "@t3tools/shared": "workspace:*", - "alchemy": "2.0.0-beta.77", + "alchemy": "https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777", "drizzle-orm": "1.0.0-rc.5-ab785fc", "effect": "catalog:" }, diff --git a/patches/@distilled.cloud__fly-io@1.0.0-rc.9.patch b/patches/@distilled.cloud__fly-io@1.0.0-rc.9.patch new file mode 100644 index 000000000000..09c6629bb3c0 --- /dev/null +++ b/patches/@distilled.cloud__fly-io@1.0.0-rc.9.patch @@ -0,0 +1,15 @@ +diff --git a/lib/credentials.js b/lib/credentials.js +index dbbbf5910f857b50a2d10954eca55676b42ff6f3..8516d91d6ea42d4a7ba67e1d6e7134b468feb2d2 100644 +--- a/lib/credentials.js ++++ b/lib/credentials.js +@@ -48,8 +48,8 @@ export const normalizeApiBaseUrl = (hostname) => { + export class Credentials extends Context.Service()("Fly-ioCredentials") { + } + const envConfig = EffectConfig.all({ +- apiKey: EffectConfig.string("FLY_API_TOKEN").pipe(EffectConfig.orElse(() => EffectConfig.string("FLY_IO_API_KEY"))), +- apiBaseUrl: EffectConfig.string("FLY_API_HOSTNAME").pipe(EffectConfig.withDefault("")), ++ apiKey: EffectConfig.String("FLY_API_TOKEN").pipe(EffectConfig.orElse(() => EffectConfig.String("FLY_IO_API_KEY"))), ++ apiBaseUrl: EffectConfig.String("FLY_API_HOSTNAME").pipe(EffectConfig.withDefault("")), + }); + export const CredentialsFromEnv = Layer.succeed(Credentials, envConfig.pipe(Effect.mapError(() => new ConfigError({ + message: "FLY_API_TOKEN (or FLY_IO_API_KEY) environment variable is required", diff --git a/patches/@distilled.cloud__railway@1.0.0-rc.9.patch b/patches/@distilled.cloud__railway@1.0.0-rc.9.patch new file mode 100644 index 000000000000..a9115f039512 --- /dev/null +++ b/patches/@distilled.cloud__railway@1.0.0-rc.9.patch @@ -0,0 +1,19 @@ +diff --git a/lib/credentials.js b/lib/credentials.js +index 3c801225b366c1eced942effba0950acd3cc2f3f..dfecff442d23ad01f4cf4db2efba7b528c95f54d 100644 +--- a/lib/credentials.js ++++ b/lib/credentials.js +@@ -43,10 +43,10 @@ export const CredentialsFromToken = (config) => Layer.succeed(Credentials, Effec + apiBaseUrl: config.apiBaseUrl, + }))); + const envConfig = EffectConfig.all({ +- apiToken: EffectConfig.option(EffectConfig.string("RAILWAY_API_TOKEN")), +- railwayToken: EffectConfig.option(EffectConfig.string("RAILWAY_TOKEN")), +- projectToken: EffectConfig.option(EffectConfig.string("RAILWAY_PROJECT_TOKEN")), +- apiBaseUrl: EffectConfig.string("RAILWAY_API_URL").pipe(EffectConfig.withDefault(DEFAULT_API_BASE_URL)), ++ apiToken: EffectConfig.option(EffectConfig.String("RAILWAY_API_TOKEN")), ++ railwayToken: EffectConfig.option(EffectConfig.String("RAILWAY_TOKEN")), ++ projectToken: EffectConfig.option(EffectConfig.String("RAILWAY_PROJECT_TOKEN")), ++ apiBaseUrl: EffectConfig.String("RAILWAY_API_URL").pipe(EffectConfig.withDefault(DEFAULT_API_BASE_URL)), + }); + const MISSING_TOKEN = "RAILWAY_API_TOKEN (or RAILWAY_TOKEN / RAILWAY_PROJECT_TOKEN) environment variable is required"; + /** diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1e9589a10423..46923cba31f0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -35,6 +35,7 @@ catalogs: version: 0.3.0 overrides: + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb '@react-navigation/core': 7.21.13 dbus-next>usocket: '-' '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-darwin-arm64': '-' @@ -88,6 +89,8 @@ packageExtensionsChecksum: sha256-k/dT9NFDl5hihRPaoFKeY11hzyutMFs5psfZLFiKJic= patchedDependencies: '@clerk/expo@4.2.0': 72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1 + '@distilled.cloud/fly-io@1.0.0-rc.9': 90a513dfa05a1e8a7bab5c274475f427ccce2f4bb1db6fc4226917739c50dbae + '@distilled.cloud/railway@1.0.0-rc.9': 13b8135d0e32b952c21135ec41121e32c4498a2206e2e20b67b767a5ae7cb6c8 '@effect/vitest@4.0.0-rc.115': 172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902 '@expo/metro-config@57.0.12': 96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2 '@ff-labs/fff-node@0.9.4': ab9ff544009e1891cfe3930105862d3699007f38922a79f3c98d90018deca368 @@ -777,11 +780,11 @@ importers: specifier: workspace:* version: link:../../packages/shared alchemy: - specifier: 2.0.0-beta.77 - version: 2.0.0-beta.77(9adae5bd1cccd15a2b8494a4d082c84c) + specifier: https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777 + version: https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777(67ceca4f66667b28f02a5dcfe008bbae) drizzle-orm: specifier: 1.0.0-rc.5-ab785fc - version: 1.0.0-rc.5-ab785fc(f872227dc1446ef55ed3d4bf864b0ffe) + version: 1.0.0-rc.5-ab785fc(93afcb4ceb87ca5eb6027e0deeb5c4b9) effect: specifier: 4.0.0-rc.115 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) @@ -1054,10 +1057,11 @@ packages: resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==} engines: {node: '>=18'} - '@alchemy.run/cloudflare-runtime@2.0.0-beta.77': - resolution: {integrity: sha512-RQGtSjhMNW9dvzm2D0mS/ujCMpejasFjXW9XKVq5ch50GyMLE7dfa/VuW9otMKM1pfTNuekLiMF352S04aAl0Q==} + '@alchemy.run/cloudflare-runtime@https://pkg.ing/@alchemy.run/cloudflare-runtime/2365753e583e15d1476c28055f6b12d3adfdd777': + resolution: {integrity: sha512-HiN3NPBWRfC2HBVymFHDMF8C3sO74wPfHsLBwn8ObdPvdl7UISxaaMf742v1h3x5C+CWcpU/sZrAHc9wEkFRlg==, tarball: https://pkg.ing/@alchemy.run/cloudflare-runtime/2365753e583e15d1476c28055f6b12d3adfdd777} + version: 2.0.0-beta.77 peerDependencies: - '@distilled.cloud/cloudflare': 1.0.0-rc.9 + '@distilled.cloud/cloudflare': https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb '@effect/platform-bun': 4.0.0-rc.115 '@effect/platform-node': 4.0.0-rc.115 effect: 4.0.0-rc.115 @@ -1073,13 +1077,15 @@ packages: vite: optional: true - '@alchemy.run/floci@2.0.0-beta.77': - resolution: {integrity: sha512-P+qf4/8MJ6Qgy28pDtdDAavxeDCn+TE3xTgvgT+d1zt6mOLkP9cxeI9C0u0UW7Q/OiLVqHToFc4FVrxYIkm6ig==} + '@alchemy.run/floci@https://pkg.ing/@alchemy.run/floci/2365753e583e15d1476c28055f6b12d3adfdd777': + resolution: {integrity: sha512-rYyB1H2tF7NKOOSkC9jl2rfmzQrEtxobB9BympiqbDX7sZn+0ETM/1ZbDQA3JEdkxK6JMdo3mbnVMp3BlOqstw==, tarball: https://pkg.ing/@alchemy.run/floci/2365753e583e15d1476c28055f6b12d3adfdd777} + version: 2.0.0-beta.77 peerDependencies: effect: 4.0.0-rc.115 - '@alchemy.run/node-utils@2.0.0-beta.77': - resolution: {integrity: sha512-+Z8hf9EAHMdgSVbB1O04nQLYVosElYhZtENhT4gIDCYcQrHUUu6BKpjof5P9x+tLpiR2eIOadTuGXi5KR3S/Sg==} + '@alchemy.run/node-utils@https://pkg.ing/@alchemy.run/node-utils/2365753e583e15d1476c28055f6b12d3adfdd777': + resolution: {integrity: sha512-onTgFiRGU/iHED38cyyYoBSMrgDOvHNJZJUdS2FczAlngz05pRoSxONE8C574uay37/EAVQ+xj93DnmM7CFJwQ==, tarball: https://pkg.ing/@alchemy.run/node-utils/2365753e583e15d1476c28055f6b12d3adfdd777} + version: 2.0.0-beta.77 '@alchemy.run/sigil@0.0.0-alpha.10': resolution: {integrity: sha512-lsTxOZeJdyJH34leBaECAXomwjtN8fZh2fL8wnkZPOg6dU5gBwkoVZQs8Yd5Gg4X17zbShDq6ctv0VHYrQp3/w==} @@ -1997,23 +2003,27 @@ packages: resolution: {integrity: sha512-WTYHwlBhImGmmMt81crxaRvNdZXlBNemFyrP5GGHj2WeDTJMBrHgHTaladTypXHXrviFFBBGROl5moijRQ4ODA==} engines: {node: '>=18'} - '@distilled.cloud/aws@1.0.0-rc.9': - resolution: {integrity: sha512-JVw6pRsl5Z+0iHdUI0Kw0r9gIGNDui/q7iYSVGgzlqiU9OXltOxxvgzW2FZ1jEzToBFUabIb9Ew2SjsWO+W82Q==} + '@distilled.cloud/aws@https://pkg.ing/@distilled.cloud/aws/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-1av4ptXvWew8rgBaLz56HizS85LuV5vgnAjRC30xkGcoQTD8efAyhIzTWdFYtFZ/vUUNifyk9MxLvp78zRO4MA==, tarball: https://pkg.ing/@distilled.cloud/aws/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 - '@distilled.cloud/axiom@1.0.0-rc.9': - resolution: {integrity: sha512-SKr1r5Eq62UVeUBbTMERmBFgl96z5Q3FStlD8AkxI9EnPjYsGulKEiLlBawUWGfbhcy1srUoQgRWP/a9gEFsvA==} + '@distilled.cloud/axiom@https://pkg.ing/@distilled.cloud/axiom/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-c54hOCRksAF4rmJtLpAX0/5PFEqaCVrc3GiPTcpK7V3l4axP9IqBv33Y0F2zB0FOhfsex3GElx+z96CiZ9SAPg==, tarball: https://pkg.ing/@distilled.cloud/axiom/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 - '@distilled.cloud/cloudflare@1.0.0-rc.9': - resolution: {integrity: sha512-tmdqv6/voHJEtzRX2z+CdxY8AyHsex+V1RBozsmisCMt6J0CQg7zVa+eQzz7zL5jDCTUwabVSA+jMN/4vStbBg==} + '@distilled.cloud/cloudflare@https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-ilKTRpGIcqNRqpbFnAvHut2J09gPFUabVHIDIBHnmWNwYlmiZnxLIGHX0DyLUwoUikCvXATTRriYHOnvznk1DQ==, tarball: https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 - '@distilled.cloud/core@1.0.0-rc.9': - resolution: {integrity: sha512-42JhW0d0cD1U3vO6gZ7QiXjtHtzd+SNz9hYrznIcL/R61cl6tLePs6C6zfOjGAgO2xp4/E/FAFzi3iNx0eEBGw==} + '@distilled.cloud/core@https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-mw9bpnrAcV+9Z7Pou4sOTb+KGgw6Tuwzz//IZDufWR71D/dPLD5BvRFUDw54WAn95lpRmQ247QNt4Ra1N6QR0Q==, tarball: https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 @@ -2022,18 +2032,21 @@ packages: peerDependencies: effect: 4.0.0-rc.115 - '@distilled.cloud/hetzner@1.0.0-rc.9': - resolution: {integrity: sha512-Tla418BxNSxap8r2n0YVZZBo79DVY26PTNxZS3ZPHDmfgSoPQ6+W/+Arxsl1oTvNRRRuNcSbdJ4EuESOv70Edg==} + '@distilled.cloud/hetzner@https://pkg.ing/@distilled.cloud/hetzner/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-2fBA2auw7jRxPk+h6riGj+6zywGoyE2ryEhsJiEYujt6TGTw03YQxjycFvuMKY5Q1hz6UaMy5HCIhP/imQudtw==, tarball: https://pkg.ing/@distilled.cloud/hetzner/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 - '@distilled.cloud/neon@1.0.0-rc.9': - resolution: {integrity: sha512-9/UNB2XNUwdyKWFd1aDTEVfpPpxVp8oF1QiAlDMRtMMGnUx08eaxDtX2SZU8voXMJaxYw08gDOFlHtkeTzLIiA==} + '@distilled.cloud/neon@https://pkg.ing/@distilled.cloud/neon/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-tryA2DPVbJXv+fFjE3T0SWKRpfmtbDbjRLpUnr/HRfmWXsQrz1VKM5+1umc3IrcvUSg7pycX7WRB6xVcfduicQ==, tarball: https://pkg.ing/@distilled.cloud/neon/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 - '@distilled.cloud/planetscale@1.0.0-rc.9': - resolution: {integrity: sha512-9lrkuQ1by+UkNsGQ8tNKaM+DEdOHYPGAhCyrDLQd7DG4Xh6JHPmrPlyTFsjHhS9thSz2WVaDVMDbsJ8zHsDNTQ==} + '@distilled.cloud/planetscale@https://pkg.ing/@distilled.cloud/planetscale/92586a4137b3982be6ae30a7b3c749c326ea11cb': + resolution: {integrity: sha512-ZWXsmzODE8C5ofcfXm3Rsj/QW03p8QrT+BEcb4hYS11DNsU/1uidxSJJg0ojpXZ3eFG6PxZz2fLVoxl0JaDEfQ==, tarball: https://pkg.ing/@distilled.cloud/planetscale/92586a4137b3982be6ae30a7b3c749c326ea11cb} + version: 1.0.0-rc.9 peerDependencies: effect: 4.0.0-rc.115 @@ -2105,8 +2118,8 @@ packages: effect: 4.0.0-rc.115 redis: '>=5.0.0 <7.0.0' - '@effect/sql-d1@4.0.0-rc.112': - resolution: {integrity: sha512-Wxdr6aU3pBHqhyBiybzbHmEK7qZ2w4iy0IxBgJHe9BLleYzCxObOaBQI9qq/VZSqEvc0IaOBMpbk2zh3dlPNSQ==} + '@effect/sql-d1@4.0.0-rc.115': + resolution: {integrity: sha512-o2JkGjN02NBMxwDtJbwcC4teyMiOApqN085fdVMid4FUC6ixj/WyKyPpe51QGOMQQTTl2BkXccA/IwDIywGXlA==} peerDependencies: effect: 4.0.0-rc.115 @@ -2120,8 +2133,8 @@ packages: peerDependencies: effect: 4.0.0-rc.115 - '@effect/sql-sqlite-do@4.0.0-rc.112': - resolution: {integrity: sha512-PewNVasimmhrdxYbNU91O0YlCcalIHOoF0H5XAWXrmzcEQrKM7kVCyb5h0gmJAZjBM4ZgWRvPY0PUOfbNmWchQ==} + '@effect/sql-sqlite-do@4.0.0-rc.115': + resolution: {integrity: sha512-7lH9h+w4DW2tI+dus4hEac5mSCy1wgiT+uw/VvjR8YhNDemd3zEFY03NkbD81ipfOpnu2QA1YwgM58ExyPlhug==} peerDependencies: effect: 4.0.0-rc.115 @@ -6047,15 +6060,16 @@ packages: ajv@8.20.0: resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} - alchemy@2.0.0-beta.77: - resolution: {integrity: sha512-8JXWIHFKw5F9kTYiDY2+vHW7Y9v9hoopS5PJVreYB+nJ7VhiKoJ7ApcA4hpWj78GmQoU5tgxy1Ue2OHmvTOt4A==} + alchemy@https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777: + resolution: {integrity: sha512-Dnuq4c6/xaUawRNDfrdUUawKtvGSZZWUVbz/txMUjbgSxOfDL3ovVCnXdUPv9Ft+ozmibb89mMm/VjnrYgnPZw==, tarball: https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777} + version: 2.0.0-beta.77 hasBin: true peerDependencies: - '@alchemy.run/frontend-frameworks': 2.0.0-beta.77 + '@alchemy.run/frontend-frameworks': https://pkg.ing/@alchemy.run/frontend-frameworks/2365753e583e15d1476c28055f6b12d3adfdd777 '@aws/durable-execution-sdk-js': ^2.1.0 '@effect/platform-bun': 4.0.0-rc.115 '@effect/platform-node': 4.0.0-rc.115 - '@effect/sql-mysql2': '>=4.0.0-rc.112 || >=4.0.0' + '@effect/sql-mysql2': '>=4.0.0-rc.115 || >=4.0.0' '@effect/sql-pg': 4.0.0-rc.115 '@vercel/nft': ^1.10.2 drizzle-kit: 1.0.0-rc.5-ab785fc @@ -10215,10 +10229,6 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.2.1: - resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} - engines: {node: '>=20'} - string-width@8.2.2: resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} engines: {node: '>=20'} @@ -11187,11 +11197,11 @@ snapshots: dependencies: json-schema: 0.4.0 - '@alchemy.run/cloudflare-runtime@2.0.0-beta.77(@distilled.cloud/cloudflare@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(rolldown@1.2.5)(typescript@6.0.3)': + '@alchemy.run/cloudflare-runtime@https://pkg.ing/@alchemy.run/cloudflare-runtime/2365753e583e15d1476c28055f6b12d3adfdd777(@distilled.cloud/cloudflare@https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(rolldown@1.2.5)(typescript@6.0.3)': dependencies: - '@alchemy.run/node-utils': 2.0.0-beta.77 + '@alchemy.run/node-utils': https://pkg.ing/@alchemy.run/node-utils/2365753e583e15d1476c28055f6b12d3adfdd777 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1) - '@distilled.cloud/cloudflare': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/cloudflare': https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@puppeteer/browsers': 3.2.2(yauzl@3.4.0) capnp-es: 0.0.16(typescript@6.0.3) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) @@ -11210,11 +11220,11 @@ snapshots: - proxy-agent - typescript - '@alchemy.run/floci@2.0.0-beta.77(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@alchemy.run/floci@https://pkg.ing/@alchemy.run/floci/2365753e583e15d1476c28055f6b12d3adfdd777(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@alchemy.run/node-utils@2.0.0-beta.77': + '@alchemy.run/node-utils@https://pkg.ing/@alchemy.run/node-utils/2365753e583e15d1476c28055f6b12d3adfdd777': dependencies: chokidar: 5.0.0 rolldown: 1.2.5 @@ -12416,13 +12426,13 @@ snapshots: '@crowecawcaw/xa11y-win32-arm64-msvc': 0.13.0 '@crowecawcaw/xa11y-win32-x64-msvc': 0.13.0 - '@distilled.cloud/aws@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/aws@https://pkg.ing/@distilled.cloud/aws/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/util': 5.2.0 '@aws-sdk/credential-providers': 3.1062.0 '@aws-sdk/types': 3.973.10 - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@smithy/shared-ini-file-loader': 4.5.6 '@smithy/types': 4.14.3 '@smithy/util-base64': 4.4.6 @@ -12430,43 +12440,43 @@ snapshots: effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) fast-xml-parser: 5.8.0 - '@distilled.cloud/axiom@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/axiom@https://pkg.ing/@distilled.cloud/axiom/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/cloudflare@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/cloudflare@https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/core@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/core@https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/fly-io@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/fly-io@1.0.0-rc.9(patch_hash=90a513dfa05a1e8a7bab5c274475f427ccce2f4bb1db6fc4226917739c50dbae)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/hetzner@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/hetzner@https://pkg.ing/@distilled.cloud/hetzner/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/neon@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/neon@https://pkg.ing/@distilled.cloud/neon/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/planetscale@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/planetscale@https://pkg.ing/@distilled.cloud/planetscale/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@distilled.cloud/railway@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@distilled.cloud/railway@1.0.0-rc.9(patch_hash=13b8135d0e32b952c21135ec41121e32c4498a2206e2e20b67b767a5ae7cb6c8)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) '@dnd-kit/accessibility@3.1.1(react@19.2.6)': @@ -12550,7 +12560,7 @@ snapshots: - bufferutil - utf-8-validate - '@effect/sql-d1@4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@effect/sql-d1@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: '@cloudflare/workers-types': 5.20260907.1 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) @@ -12563,7 +12573,7 @@ snapshots: dependencies: effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) - '@effect/sql-sqlite-do@4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': + '@effect/sql-sqlite-do@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))': dependencies: effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5) @@ -16454,24 +16464,24 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@2.0.0-beta.77(9adae5bd1cccd15a2b8494a4d082c84c): + alchemy@https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777(67ceca4f66667b28f02a5dcfe008bbae): dependencies: - '@alchemy.run/cloudflare-runtime': 2.0.0-beta.77(@distilled.cloud/cloudflare@1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(rolldown@1.2.5)(typescript@6.0.3) - '@alchemy.run/floci': 2.0.0-beta.77(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@alchemy.run/node-utils': 2.0.0-beta.77 + '@alchemy.run/cloudflare-runtime': https://pkg.ing/@alchemy.run/cloudflare-runtime/2365753e583e15d1476c28055f6b12d3adfdd777(@distilled.cloud/cloudflare@https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@effect/platform-bun@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(utf-8-validate@6.0.6))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(rolldown@1.2.5)(typescript@6.0.3) + '@alchemy.run/floci': https://pkg.ing/@alchemy.run/floci/2365753e583e15d1476c28055f6b12d3adfdd777(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@alchemy.run/node-utils': https://pkg.ing/@alchemy.run/node-utils/2365753e583e15d1476c28055f6b12d3adfdd777 '@alchemy.run/sigil': 0.0.0-alpha.10(@types/react@19.2.16)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react@19.2.8) '@aws-sdk/credential-providers': 3.1062.0 - '@distilled.cloud/aws': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/axiom': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/cloudflare': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/core': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/fly-io': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/hetzner': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/neon': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/planetscale': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@distilled.cloud/railway': 1.0.0-rc.9(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/aws': https://pkg.ing/@distilled.cloud/aws/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/axiom': https://pkg.ing/@distilled.cloud/axiom/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/cloudflare': https://pkg.ing/@distilled.cloud/cloudflare/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/core': https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/fly-io': 1.0.0-rc.9(patch_hash=90a513dfa05a1e8a7bab5c274475f427ccce2f4bb1db6fc4226917739c50dbae)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/hetzner': https://pkg.ing/@distilled.cloud/hetzner/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/neon': https://pkg.ing/@distilled.cloud/neon/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/planetscale': https://pkg.ing/@distilled.cloud/planetscale/92586a4137b3982be6ae30a7b3c749c326ea11cb(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@distilled.cloud/railway': 1.0.0-rc.9(patch_hash=13b8135d0e32b952c21135ec41121e32c4498a2206e2e20b67b767a5ae7cb6c8)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@effect/vitest': 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@octokit/rest': 22.0.1 @@ -16496,7 +16506,7 @@ snapshots: '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) drizzle-kit: 1.0.0-rc.5-ab785fc - drizzle-orm: 1.0.0-rc.5-ab785fc(f872227dc1446ef55ed3d4bf864b0ffe) + drizzle-orm: 1.0.0-rc.5-ab785fc(93afcb4ceb87ca5eb6027e0deeb5c4b9) mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9) pg: 8.23.0 vite: '@voidzero-dev/vite-plus-core@0.3.0(@types/node@24.12.4)(esbuild@0.28.1)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' @@ -17465,13 +17475,13 @@ snapshots: get-tsconfig: 4.14.3 jiti: 2.7.0 - drizzle-orm@1.0.0-rc.5-ab785fc(f872227dc1446ef55ed3d4bf864b0ffe): + drizzle-orm@1.0.0-rc.5-ab785fc(93afcb4ceb87ca5eb6027e0deeb5c4b9): optionalDependencies: '@cloudflare/workers-types': 4.20260604.1 - '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@effect/sql-sqlite-bun': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) - '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) + '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)) '@electric-sql/pglite': 0.3.15 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) bun-types: 1.3.14 @@ -20356,7 +20366,7 @@ snapshots: is-unicode-supported: 2.1.0 log-symbols: 7.0.1 stdin-discarder: 0.3.2 - string-width: 8.2.1 + string-width: 8.2.2 outvariant@1.4.3: optional: true @@ -21895,11 +21905,6 @@ snapshots: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string-width@8.2.1: - dependencies: - get-east-asian-width: 1.6.0 - strip-ansi: 7.2.0 - string-width@8.2.2: dependencies: get-east-asian-width: 1.6.0 @@ -22849,7 +22854,7 @@ snapshots: cliui: 9.0.1 escalade: 3.2.0 get-caller-file: 2.0.5 - string-width: 8.2.1 + string-width: 8.2.2 y18n: 5.0.8 yargs-parser: 22.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 81e69cd4755d..90bcfdbd61c7 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -55,6 +55,12 @@ catalog: vite-plus: 0.3.0 yaml: ^2.9.0 +# Alchemy is pinned to a pkg.ing preview build of upstream main until a release +# built against Effect rc.115 exists; its own @alchemy.run/* and +# @distilled.cloud/* dependencies are pkg.ing tarballs too, which this check +# would otherwise reject as transitive exotic sources. +blockExoticSubdeps: false + minimumReleaseAgeExclude: - "@clerk/backend@3.14.0" - "@clerk/clerk-js@6.30.1" @@ -76,7 +82,6 @@ minimumReleaseAgeExclude: - "@effect/sql-pg@4.0.0-rc.115" - "@effect/sql-sqlite-bun@4.0.0-rc.115" - "@effect/vitest@4.0.0-rc.115" - - alchemy@2.0.0-beta.77 - effect@4.0.0-rc.115 - "@legendapp/list@3.3.5" - "@expo/cli@57.0.20" @@ -90,8 +95,15 @@ minimumReleaseAgeExclude: - expo-widgets@57.0.15 - electron@44.1.0 - "@anthropic-ai/claude-agent-sdk@0.3.260" + - "@effect/sql-d1@4.0.0-rc.115" + - "@effect/sql-sqlite-do@4.0.0-rc.115" overrides: + # The Alchemy preview build pins its Fly and Railway providers to the released + # rc.9, which still depends on the released @distilled.cloud/core; that core + # calls rc.112 Config constructors. Point it at the same pkg.ing core the + # other providers use so one Effect-rc.115-compatible copy loads. + "@distilled.cloud/core": "https://pkg.ing/@distilled.cloud/core/92586a4137b3982be6ae30a7b3c749c326ea11cb" # Earlier React Navigation declarations create a circular type alias in TypeScript 7. "@react-navigation/core": 7.21.13 # The dbus-next patch drops usocket from the package, but pnpm resolves from the @@ -163,6 +175,8 @@ packageExtensions: patchedDependencies: "@clerk/expo@4.2.0": patches/@clerk__expo@4.2.0.patch + "@distilled.cloud/fly-io@1.0.0-rc.9": patches/@distilled.cloud__fly-io@1.0.0-rc.9.patch + "@distilled.cloud/railway@1.0.0-rc.9": patches/@distilled.cloud__railway@1.0.0-rc.9.patch "@effect/vitest@4.0.0-rc.115": patches/@effect__vitest@4.0.0-rc.115.patch "@expo/metro-config@57.0.12": patches/@expo__metro-config@57.0.12.patch "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch From 0ab440ca36d54984bcb30f1497b2800fedf40b29 Mon Sep 17 00:00:00 2001 From: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com> Date: Fri, 11 Sep 2026 22:27:06 -0700 Subject: [PATCH 3/3] chore(refs): follow pkg.ing preview pins to their upstream commit Co-Authored-By: Claude Fable 5 --- scripts/sync-reference-repos.test.ts | 20 ++++++++++++++++++++ scripts/sync-reference-repos.ts | 7 +++++++ 2 files changed, 27 insertions(+) diff --git a/scripts/sync-reference-repos.test.ts b/scripts/sync-reference-repos.test.ts index e3189936352c..83b487f1ae66 100644 --- a/scripts/sync-reference-repos.test.ts +++ b/scripts/sync-reference-repos.test.ts @@ -178,6 +178,26 @@ it.layer(NodeServices.layer)("sync-reference-repos", (it) => { }), ); + it.effect("resolves a pkg.ing preview pin to its upstream commit", () => + Effect.gen(function* () { + const fs = yield* FileSystem.FileSystem; + const path = yield* Path.Path; + const rootDir = yield* fs.makeTempDirectoryScoped({ + prefix: "sync-reference-repos-alchemy-preview-", + }); + yield* fs.makeDirectory(path.join(rootDir, "infra", "relay"), { recursive: true }); + yield* fs.writeFileString( + path.join(rootDir, "infra", "relay", "package.json"), + '{"dependencies":{"alchemy":"https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777"}}', + ); + + assert.equal( + yield* resolveReferenceRepoRef(alchemyEffect, rootDir, false), + "2365753e583e15d1476c28055f6b12d3adfdd777", + ); + }), + ); + it.effect("plans an add for a missing subtree and a pull for an existing subtree", () => Effect.gen(function* () { const fs = yield* FileSystem.FileSystem; diff --git a/scripts/sync-reference-repos.ts b/scripts/sync-reference-repos.ts index 2cb13d42683b..6ad3b07697f8 100644 --- a/scripts/sync-reference-repos.ts +++ b/scripts/sync-reference-repos.ts @@ -197,6 +197,13 @@ export const resolveReferenceRepoRef = Effect.fn("resolveReferenceRepoRef")(func }); } + // A pkg.ing preview pin (`https://pkg.ing//`) names the upstream + // commit directly, so the reference syncs to that commit instead of a tag. + const previewCommit = /^https:\/\/pkg\.ing\/.+\/([0-9a-f]{7,40})$/u.exec(version)?.[1]; + if (previewCommit !== undefined) { + return previewCommit; + } + return `${repo.versionTagPrefix}${version}`; });