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..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.76", + "alchemy": "https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777", "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/@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/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..46923cba31f0 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 @@ -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': '-' @@ -58,13 +59,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 +75,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 +89,9 @@ packageExtensionsChecksum: sha256-k/dT9NFDl5hihRPaoFKeY11hzyutMFs5psfZLFiKJic= patchedDependencies: '@clerk/expo@4.2.0': 72e426f44fc1cde16fc2cbba3d1e96cdca7c6d957faa73d0fe6b43948608a6c1 - '@effect/vitest@4.0.0-rc.112': a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b + '@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 '@legendapp/list@3.3.5': a05e968651a1352d2f374324016d1034b763b9fb2c5bf5f95111540d6899a52b @@ -97,7 +100,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 +134,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 +142,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 +166,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 +188,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 +237,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 +315,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 +472,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 +499,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 +517,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 +536,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 +596,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 +638,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 +693,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 +760,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 +780,24 @@ importers: specifier: workspace:* version: link:../../packages/shared alchemy: - specifier: 2.0.0-beta.76 - version: 2.0.0-beta.76(b3825b36417e56a486ccb5f22a7f3d7e) + 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(8ab70e2706da13c78d64d8a92fef1884) + version: 1.0.0-rc.5-ab785fc(93afcb4ceb87ca5eb6027e0deeb5c4b9) 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 +809,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 +839,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 +858,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 +870,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 +883,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 +905,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 +936,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 +946,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 +967,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 +989,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 +1005,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 +1020,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 +1030,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 +1057,14 @@ 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@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.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': 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 rolldown: 1.2.5 vite: ^7.0.0 || ^8.0.0 peerDependenciesMeta: @@ -1080,13 +1077,28 @@ packages: vite: optional: true - '@alchemy.run/floci@2.0.0-beta.76': - resolution: {integrity: sha512-UIKd+Hki3t5seDpLfyRBwWiNukKlbAqDCTOYBD+n49b/WQIgEWHhYXzGtnwC7OY/b3KAv5p7gsdn8IpPnRXR8g==} + '@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.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@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==} + 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 +1805,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 +1925,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 +2003,57 @@ 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@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.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/axiom@1.0.0-rc.8': - resolution: {integrity: sha512-lczeM0FPuF1mLZu7V8vcj8Klm9b1VSo4A75PP2a4km/cjphDl9LKamUwrSGLEY9denmqd1nn4+g2Svw1UmGpEw==} + '@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.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/cloudflare@1.0.0-rc.8': - resolution: {integrity: sha512-nhEyGOaupi/JmT0PS1DEMH5Ebwu004pvQv3Emzt9MJz3mF3LTdiuAnxP86rf3jsFtfa826TDokKArVMq55OKRA==} + '@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.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/core@1.0.0-rc.8': - resolution: {integrity: sha512-baZMSaBh9kEyAqdhO+UbkvVDK+wqyI8d0UW0paSp5CqVResOl7ydHU4tCbBUOLoxOrqLRWfmImKrhW9SY1R8qw==} + '@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.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@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.112 + effect: 4.0.0-rc.115 - '@distilled.cloud/neon@1.0.0-rc.8': - resolution: {integrity: sha512-xIgxgoDyIs/G5lW8T2r4oyHpOcRzBO1wu7p46lU3ppuJ2rlJR4pmP9dF7KxStAVglr9yK3wmmmnraLoCAtd8Sg==} + '@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.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@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.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 +2086,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==} + '@effect/sql-d1@4.0.0-rc.115': + resolution: {integrity: sha512-o2JkGjN02NBMxwDtJbwcC4teyMiOApqN085fdVMid4FUC6ixj/WyKyPpe51QGOMQQTTl2BkXccA/IwDIywGXlA==} 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==} + '@effect/sql-sqlite-do@4.0.0-rc.115': + resolution: {integrity: sha512-7lH9h+w4DW2tI+dus4hEac5mSCy1wgiT+uw/VvjR8YhNDemd3zEFY03NkbD81ipfOpnu2QA1YwgM58ExyPlhug==} 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 +2177,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 +3465,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 +5039,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 +6060,21 @@ 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@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.76 + '@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.112 - '@effect/platform-node': 4.0.0-rc.112 - '@effect/sql-mysql2': '>=4.0.0-rc.112 || >=4.0.0' - '@effect/sql-pg': 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.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 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 +6124,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 +6229,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 +6442,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 +6529,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 +6545,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 +6576,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 +6672,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 +6917,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 +6948,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 +7075,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 +7155,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 +7180,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 +7207,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 +7577,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 +8014,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 +8021,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 +8081,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 +8088,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 +8810,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 +8913,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 +8987,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 +9071,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 +9224,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 +9278,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 +9294,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 +9365,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 +9461,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 +9710,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 +9860,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 +10104,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 +10159,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==} @@ -10386,8 +10229,8 @@ packages: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} - string-width@8.2.1: - resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + string-width@8.2.2: + resolution: {integrity: sha512-GaPUh5gfdrYzqeVNZvUfT23vYYxXzKYidUcnMtJg/3rxRV63EFZy3k6xfKlmfeJD0176lnUV/Usr3XcwSvFzpg==} engines: {node: '>=20'} string_decoder@1.1.1: @@ -10489,10 +10332,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 +10987,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 +11137,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 +11197,22 @@ snapshots: dependencies: json-schema: 0.4.0 - '@alcalzone/ansi-tokenize@0.2.5': - 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)': + '@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.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': 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': 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.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 +11220,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@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@https://pkg.ing/@alchemy.run/node-utils/2365753e583e15d1476c28055f6b12d3adfdd777': 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 +12188,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 +12195,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 +12238,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 +12287,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 +12337,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 +12364,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 +12426,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@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) + '@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 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@https://pkg.ing/@distilled.cloud/axiom/92586a4137b3982be6ae30a7b3c749c326ea11cb(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': 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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@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.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(patch_hash=90a513dfa05a1e8a7bab5c274475f427ccce2f4bb1db6fc4226917739c50dbae)(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': 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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))': + '@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.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)) - effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2) + '@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)': dependencies: @@ -12639,77 +12513,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.115(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.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/tsgo-darwin-arm64@0.41.0': optional: true @@ -12742,9 +12608,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 +13041,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 +13077,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 +13104,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 +13123,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 +13164,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 +13211,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 +13225,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 +13258,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 +13298,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 +13318,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 +13344,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,22 +13380,56 @@ 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 - walker: 1.0.8 - transitivePeerDependencies: + '@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 '@expo/metro-runtime@57.0.14(@expo/log-box@57.0.4)(expo@57.0.18)(react-dom@19.2.3(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@19.2.3)': @@ -13477,18 +13445,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 +13499,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 +13542,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 +13577,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 +14263,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 +15161,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 +15517,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 +16055,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 +16079,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 +16122,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 +16464,49 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@2.0.0-beta.76(b3825b36417e56a486ccb5f22a7f3d7e): + alchemy@https://pkg.ing/alchemy/2365753e583e15d1476c28055f6b12d3adfdd777(67ceca4f66667b28f02a5dcfe008bbae): 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': 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 - '@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': 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 '@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(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)' @@ -16525,10 +16532,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 +16745,6 @@ snapshots: atomically@1.7.0: {} - auto-bind@5.0.1: {} - await-lock@2.2.2: {} aws4@1.13.2: {} @@ -17033,9 +17034,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 +17117,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 +17129,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 +17157,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 +17252,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 +17475,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(93afcb4ceb87ca5eb6027e0deeb5c4b9): 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.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.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 - 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 +17507,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 +17627,6 @@ snapshots: env-paths@3.0.0: {} - environment@1.1.0: {} - err-code@2.0.3: {} error-stack-parser@2.1.4: @@ -17671,8 +17650,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 +17719,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 +17770,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 +17839,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 +17897,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 +17910,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 +17951,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 +17972,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 +18003,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 +18093,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 +18166,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 +18293,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 +18859,6 @@ snapshots: immediate@3.0.6: {} - indent-string@5.0.0: {} - inflight@1.0.6: dependencies: once: 1.4.0 @@ -18886,41 +18866,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 +18916,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 +20039,6 @@ snapshots: mime@2.6.0: {} - mime@4.1.0: {} - mimic-fn@1.2.0: {} mimic-fn@2.1.0: {} @@ -20168,20 +20105,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 +20202,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 +20299,6 @@ snapshots: object-keys@1.1.1: optional: true - obuf@1.1.2: {} - obug@2.1.3: {} ofetch@1.5.1: @@ -20424,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 @@ -20475,6 +20417,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 +20476,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 +20587,6 @@ snapshots: parseurl@1.3.3: {} - patch-console@2.0.0: {} - path-browserify@1.0.1: {} path-exists@3.0.0: {} @@ -20634,21 +20623,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 +20644,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 +20655,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 +20711,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 +20803,6 @@ snapshots: punycode@2.3.1: optional: true - pure-rand@8.4.0: {} - pvtsutils@1.3.6: dependencies: tslib: 2.8.1 @@ -20888,6 +20858,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 +20989,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 +21018,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 +21033,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 +21085,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 +21093,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 +21109,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 +21131,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 +21175,8 @@ snapshots: react@19.2.6: {} + react@19.2.8: {} + read-binary-file-arch@1.0.6: dependencies: debug: 4.4.3 @@ -21394,11 +21371,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 +21801,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 +21836,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 +21846,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: {} @@ -21941,7 +21905,7 @@ snapshots: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 - string-width@8.2.1: + string-width@8.2.2: dependencies: get-east-asian-width: 1.6.0 strip-ansi: 7.2.0 @@ -22065,8 +22029,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 +22375,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 +22403,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 +22523,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 +22741,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 +22806,8 @@ snapshots: xmlbuilder@15.1.1: {} - xtend@4.0.2: {} + xtend@4.0.2: + optional: true xxhash-wasm@1.1.0: {} @@ -22814,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 @@ -22835,8 +22875,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..90bcfdbd61c7 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 @@ -56,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" @@ -69,16 +74,15 @@ 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" + - effect@4.0.0-rc.115 - "@legendapp/list@3.3.5" - "@expo/cli@57.0.20" - "@expo/env@2.4.3" @@ -91,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 @@ -164,7 +175,9 @@ 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 + "@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 "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch @@ -173,7 +186,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.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 f39a8d708a65..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}`; }); @@ -296,21 +303,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), ),