authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-09-17 23:21:24-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-09-17 23:21:24-07:00
logd547e3b12a1af79e9dd81e422255a12d6ecf70d1
treea6164265afe4a5b8676101dcfe94de9227dc7984
parent243e94470f80a6a5f31a68785ceff30c29ce5d4c
signature Signed by PGP key B5690EEEBB952194

chore(deps): upgrade Effect to rc.115 and Alchemy to beta.78 (#12326)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

87 files changed, 1805 insertions(+), 1823 deletions(-)

apps/desktop/src/app/DesktopConfig.ts+6-6
...@@ -9,10 +9,10 @@ const trimNonEmptyOption = (value: string): Option.Option<string> => {...@@ -9,10 +9,10 @@ const trimNonEmptyOption = (value: string): Option.Option<string> => {
9};9};
1010
11const trimmedString = (name: string) =>11const trimmedString = (name: string) =>
12 Config.string(name).pipe(Config.option, Config.map(Option.flatMap(trimNonEmptyOption)));12 Config.String(name).pipe(Config.option, Config.map(Option.flatMap(trimNonEmptyOption)));
1313
14const optionalBoolean = (name: string) =>14const optionalBoolean = (name: string) =>
15 Config.boolean(name).pipe(Config.option, Config.map(Option.getOrElse(() => false)));15 Config.Boolean(name).pipe(Config.option, Config.map(Option.getOrElse(() => false)));
1616
17const commaSeparatedStrings = (name: string) =>17const commaSeparatedStrings = (name: string) =>
18 trimmedString(name).pipe(18 trimmedString(name).pipe(
...@@ -38,15 +38,15 @@ export const DesktopConfig = Config.all({...@@ -38,15 +38,15 @@ export const DesktopConfig = Config.all({
38 xdgConfigHome: trimmedString("XDG_CONFIG_HOME"),38 xdgConfigHome: trimmedString("XDG_CONFIG_HOME"),
39 xdgDataHome: trimmedString("XDG_DATA_HOME"),39 xdgDataHome: trimmedString("XDG_DATA_HOME"),
40 t3Home: trimmedString("T3CODE_HOME"),40 t3Home: trimmedString("T3CODE_HOME"),
41 devServerUrl: Config.url("VITE_DEV_SERVER_URL").pipe(Config.option),41 devServerUrl: Config.URL("VITE_DEV_SERVER_URL").pipe(Config.option),
42 appUserModelIdOverride: trimmedString("T3CODE_DESKTOP_APP_USER_MODEL_ID"),42 appUserModelIdOverride: trimmedString("T3CODE_DESKTOP_APP_USER_MODEL_ID"),
43 devRemoteT3ServerEntryPath: trimmedString("T3CODE_DEV_REMOTE_T3_SERVER_ENTRY_PATH"),43 devRemoteT3ServerEntryPath: trimmedString("T3CODE_DEV_REMOTE_T3_SERVER_ENTRY_PATH"),
44 configuredBackendPort: Config.port("T3CODE_PORT").pipe(Config.option),44 configuredBackendPort: Config.Port("T3CODE_PORT").pipe(Config.option),
45 commitHashOverride: trimmedString("T3CODE_COMMIT_HASH"),45 commitHashOverride: trimmedString("T3CODE_COMMIT_HASH"),
46 desktopLanHostOverride: trimmedString("T3CODE_DESKTOP_LAN_HOST"),46 desktopLanHostOverride: trimmedString("T3CODE_DESKTOP_LAN_HOST"),
47 desktopHttpsEndpointUrls: commaSeparatedStrings("T3CODE_DESKTOP_HTTPS_ENDPOINTS"),47 desktopHttpsEndpointUrls: commaSeparatedStrings("T3CODE_DESKTOP_HTTPS_ENDPOINTS"),
48 otlpTracesUrl: trimmedString("T3CODE_OTLP_TRACES_URL"),48 otlpTracesUrl: trimmedString("T3CODE_OTLP_TRACES_URL"),
49 otlpExportIntervalMs: Config.int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe(49 otlpExportIntervalMs: Config.Int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe(
50 Config.withDefault(10_000),50 Config.withDefault(10_000),
51 ),51 ),
52 otlpHeaders: Config.schema(OtlpHeadersFromString, "T3CODE_OTLP_HEADERS").pipe(Config.option),52 otlpHeaders: Config.schema(OtlpHeadersFromString, "T3CODE_OTLP_HEADERS").pipe(Config.option),
...@@ -56,7 +56,7 @@ export const DesktopConfig = Config.all({...@@ -56,7 +56,7 @@ export const DesktopConfig = Config.all({
56 appImagePath: trimmedString("APPIMAGE"),56 appImagePath: trimmedString("APPIMAGE"),
57 disableAutoUpdate: optionalBoolean("T3CODE_DISABLE_AUTO_UPDATE"),57 disableAutoUpdate: optionalBoolean("T3CODE_DISABLE_AUTO_UPDATE"),
58 mockUpdates: optionalBoolean("T3CODE_DESKTOP_MOCK_UPDATES"),58 mockUpdates: optionalBoolean("T3CODE_DESKTOP_MOCK_UPDATES"),
59 mockUpdateServerPort: Config.port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(59 mockUpdateServerPort: Config.Port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(
60 Config.withDefault(3000),60 Config.withDefault(3000),
61 ),61 ),
62});62});
apps/desktop/src/electron/ElectronProtocol.ts+5-2
...@@ -1,10 +1,11 @@...@@ -1,10 +1,11 @@
1import Mime from "@effect/platform-node/Mime";
2import * as Context from "effect/Context";1import * as Context from "effect/Context";
3import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
4import * as FileSystem from "effect/FileSystem";3import * as FileSystem from "effect/FileSystem";
5import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";
6import * as NodeTimersPromises from "node:timers/promises";6import * as NodeTimersPromises from "node:timers/promises";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Mime from "effect/unstable/http/Mime";
8import * as Ref from "effect/Ref";9import * as Ref from "effect/Ref";
9import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
10import * as Scope from "effect/Scope";11import * as Scope from "effect/Scope";
...@@ -227,7 +228,9 @@ const serveDesktopAsset = Effect.fn("desktop.protocol.serveAsset")(function* (...@@ -227,7 +228,9 @@ const serveDesktopAsset = Effect.fn("desktop.protocol.serveAsset")(function* (
227 const contents = yield* fileSystem.readFile(filePath).pipe(Effect.orElseSucceed(() => null));228 const contents = yield* fileSystem.readFile(filePath).pipe(Effect.orElseSucceed(() => null));
228 if (contents === null) return new Response(null, { status: 404 });229 if (contents === null) return new Response(null, { status: 404 });
229 return new Response(request.method === "HEAD" ? null : new Uint8Array(contents), {230 return new Response(request.method === "HEAD" ? null : new Uint8Array(contents), {
230 headers: { "content-type": Mime.getType(filePath) ?? "application/octet-stream" },231 headers: {
232 "content-type": Option.getOrElse(Mime.getType(filePath), () => "application/octet-stream"),
233 },
231 });234 });
232});235});
233236
apps/server/integration/NetworkTransferMeasurement.integration.ts+2-1
...@@ -181,8 +181,9 @@ function countingWsRpcProtocolLayer(input: {...@@ -181,8 +181,9 @@ function countingWsRpcProtocolLayer(input: {
181 readonly cookie: string;181 readonly cookie: string;
182 readonly recorder: WebSocketTransferRecorder;182 readonly recorder: WebSocketTransferRecorder;
183}) {183}) {
184 // Socket.makeWebSocket only ever passes its `protocols` option here.
184 const webSocketConstructorLayer = Layer.succeed(Socket.WebSocketConstructor, (url, protocols) =>185 const webSocketConstructorLayer = Layer.succeed(Socket.WebSocketConstructor, (url, protocols) =>
185 input.recorder.connect(url, protocols, input.cookie),186 input.recorder.connect(url, protocols as string | string[] | undefined, input.cookie),
186 );187 );
187 return RpcClient.layerProtocolSocket().pipe(188 return RpcClient.layerProtocolSocket().pipe(
188 Layer.provide(189 Layer.provide(
apps/server/integration/orphanedProviderSessionStartup.integration.test.ts+2-1
...@@ -21,6 +21,7 @@ import * as Option from "effect/Option";...@@ -21,6 +21,7 @@ import * as Option from "effect/Option";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import * as SqlClient from "effect/unstable/sql/SqlClient";22import * as SqlClient from "effect/unstable/sql/SqlClient";
23import { HttpServer } from "effect/unstable/http";23import { HttpServer } from "effect/unstable/http";
24import * as NetAddress from "effect/unstable/net/NetAddress";
2425
25import * as EnvironmentAuth from "../src/auth/EnvironmentAuth.ts";26import * as EnvironmentAuth from "../src/auth/EnvironmentAuth.ts";
26import * as ServiceLauncherClient from "../src/cloud/serviceLauncherClient.ts";27import * as ServiceLauncherClient from "../src/cloud/serviceLauncherClient.ts";
...@@ -104,7 +105,7 @@ const startupDependencies = Layer.mergeAll(...@@ -104,7 +105,7 @@ const startupDependencies = Layer.mergeAll(
104 Layer.succeed(105 Layer.succeed(
105 HttpServer.HttpServer,106 HttpServer.HttpServer,
106 HttpServer.HttpServer.of({107 HttpServer.HttpServer.of({
107 address: { _tag: "TcpAddress", hostname: "127.0.0.1", port: 3773 },108 address: NetAddress.inetAddressFromIpStringUnsafe("127.0.0.1", 3773),
108 serve: (() => Effect.void) as HttpServer.HttpServer["Service"]["serve"],109 serve: (() => Effect.void) as HttpServer.HttpServer["Service"]["serve"],
109 }),110 }),
110 ),111 ),
apps/server/package.json-1
...@@ -30,7 +30,6 @@...@@ -30,7 +30,6 @@
30 "@opencode-ai/sdk": "^1.3.15",30 "@opencode-ai/sdk": "^1.3.15",
31 "diff": "8.0.3",31 "diff": "8.0.3",
32 "effect": "catalog:",32 "effect": "catalog:",
33 "msgpackr-extract": "3.0.4",
34 "node-pty": "^1.1.0",33 "node-pty": "^1.1.0",
35 "stream-chain": "^4.2.5",34 "stream-chain": "^4.2.5",
36 "stream-json": "3.6.0",35 "stream-json": "3.6.0",
apps/server/scripts/cli.ts+9-9
...@@ -70,7 +70,7 @@ const applyDevelopmentIconOverrides = Effect.fn("applyDevelopmentIconOverrides")...@@ -70,7 +70,7 @@ const applyDevelopmentIconOverrides = Effect.fn("applyDevelopmentIconOverrides")
70const buildCmd = Command.make(70const buildCmd = Command.make(
71 "build",71 "build",
72 {72 {
73 verbose: Flag.boolean("verbose").pipe(Flag.withDefault(false)),73 verbose: Flag.Boolean("verbose").pipe(Flag.withDefault(false)),
74 },74 },
75 (config) =>75 (config) =>
76 Effect.gen(function* () {76 Effect.gen(function* () {
...@@ -109,8 +109,8 @@ const buildCmd = Command.make(...@@ -109,8 +109,8 @@ const buildCmd = Command.make(
109const buildExeCmd = Command.make(109const buildExeCmd = Command.make(
110 "build-exe",110 "build-exe",
111 {111 {
112 verbose: Flag.boolean("verbose").pipe(Flag.withDefault(false)),112 verbose: Flag.Boolean("verbose").pipe(Flag.withDefault(false)),
113 target: Flag.string("target").pipe(113 target: Flag.String("target").pipe(
114 Flag.withDescription(114 Flag.withDescription(
115 "Cross-build for <platform>-<arch> in nodejs.org naming (for example darwin-x64); defaults to the host.",115 "Cross-build for <platform>-<arch> in nodejs.org naming (for example darwin-x64); defaults to the host.",
116 ),116 ),
...@@ -175,14 +175,14 @@ const buildExeCmd = Command.make(...@@ -175,14 +175,14 @@ const buildExeCmd = Command.make(
175const publishCmd = Command.make(175const publishCmd = Command.make(
176 "publish",176 "publish",
177 {177 {
178 packagesDir: Flag.string("packages-dir").pipe(178 packagesDir: Flag.String("packages-dir").pipe(
179 Flag.withDescription("Output dir of scripts/build-npm-platform-packages.ts."),179 Flag.withDescription("Output dir of scripts/build-npm-platform-packages.ts."),
180 ),180 ),
181 tag: Flag.string("tag").pipe(Flag.withDefault("latest")),181 tag: Flag.String("tag").pipe(Flag.withDefault("latest")),
182 access: Flag.string("access").pipe(Flag.withDefault("public")),182 access: Flag.String("access").pipe(Flag.withDefault("public")),
183 provenance: Flag.boolean("provenance").pipe(Flag.withDefault(false)),183 provenance: Flag.Boolean("provenance").pipe(Flag.withDefault(false)),
184 dryRun: Flag.boolean("dry-run").pipe(Flag.withDefault(false)),184 dryRun: Flag.Boolean("dry-run").pipe(Flag.withDefault(false)),
185 verbose: Flag.boolean("verbose").pipe(Flag.withDefault(false)),185 verbose: Flag.Boolean("verbose").pipe(Flag.withDefault(false)),
186 },186 },
187 (config) =>187 (config) =>
188 Effect.gen(function* () {188 Effect.gen(function* () {
apps/server/scripts/migrate-dev-db.ts+4-4
...@@ -506,19 +506,19 @@ const formatSize = (bytes: number): string =>...@@ -506,19 +506,19 @@ const formatSize = (bytes: number): string =>
506export const migrateDevDbCommand = Command.make(506export const migrateDevDbCommand = Command.make(
507 "migrate-dev-db",507 "migrate-dev-db",
508 {508 {
509 projects: Flag.integer("projects").pipe(509 projects: Flag.Int("projects").pipe(
510 Flag.withDefault(5),510 Flag.withDefault(5),
511 Flag.withDescription("How many recently updated projects to keep."),511 Flag.withDescription("How many recently updated projects to keep."),
512 ),512 ),
513 threadsPerProject: Flag.integer("threads-per-project").pipe(513 threadsPerProject: Flag.Int("threads-per-project").pipe(
514 Flag.withDefault(10),514 Flag.withDefault(10),
515 Flag.withDescription("How many recent stopped threads to keep per project."),515 Flag.withDescription("How many recent stopped threads to keep per project."),
516 ),516 ),
517 baseDir: Flag.string("base-dir").pipe(517 baseDir: Flag.String("base-dir").pipe(
518 Flag.optional,518 Flag.optional,
519 Flag.withDescription("Isolated .t3 directory. Defaults to the current worktree's .t3."),519 Flag.withDescription("Isolated .t3 directory. Defaults to the current worktree's .t3."),
520 ),520 ),
521 source: Flag.string("source").pipe(521 source: Flag.String("source").pipe(
522 Flag.optional,522 Flag.optional,
523 Flag.withDescription("Source database. Defaults to ~/.t3/userdata/state.sqlite."),523 Flag.withDescription("Source database. Defaults to ~/.t3/userdata/state.sqlite."),
524 ),524 ),
apps/server/scripts/t3-sqlite-state.ts+4-4
...@@ -248,17 +248,17 @@ export const runSqliteState = Effect.fn("runSqliteState")(function* (...@@ -248,17 +248,17 @@ export const runSqliteState = Effect.fn("runSqliteState")(function* (
248const t3SqliteStateCommand = Command.make(248const t3SqliteStateCommand = Command.make(
249 "t3-sqlite-state",249 "t3-sqlite-state",
250 {250 {
251 operation: Argument.choice("operation", SqliteStateOperation.literals).pipe(251 operation: Argument.Literals("operation", SqliteStateOperation.literals).pipe(
252 Argument.withDescription("Run a read-only query or a backed-up fixture mutation."),252 Argument.withDescription("Run a read-only query or a backed-up fixture mutation."),
253 ),253 ),
254 baseDir: Flag.string("base-dir").pipe(254 baseDir: Flag.String("base-dir").pipe(
255 Flag.withDescription("Explicit T3 base directory containing userdata/state.sqlite."),255 Flag.withDescription("Explicit T3 base directory containing userdata/state.sqlite."),
256 ),256 ),
257 sql: Flag.string("sql").pipe(257 sql: Flag.String("sql").pipe(
258 Flag.optional,258 Flag.optional,
259 Flag.withDescription("SQL source supplied directly on the command line."),259 Flag.withDescription("SQL source supplied directly on the command line."),
260 ),260 ),
261 file: Flag.string("file").pipe(261 file: Flag.String("file").pipe(
262 Flag.optional,262 Flag.optional,
263 Flag.withDescription("Path to a SQL source file."),263 Flag.withDescription("Path to a SQL source file."),
264 ),264 ),
apps/server/src/assets/GitHubMediaFetch.ts+3-2
...@@ -1,7 +1,8 @@...@@ -1,7 +1,8 @@
1import Mime from "@effect/platform-node/Mime";1import * as Mime from "effect/unstable/http/Mime";
2import { githubMediaFileName } from "@t3tools/shared/githubMedia";2import { githubMediaFileName } from "@t3tools/shared/githubMedia";
3import * as Clock from "effect/Clock";3import * as Clock from "effect/Clock";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Option from "effect/Option";
5import * as Redacted from "effect/Redacted";6import * as Redacted from "effect/Redacted";
6import {7import {
7 FetchHttpClient,8 FetchHttpClient,
...@@ -176,7 +177,7 @@ export const githubMediaResponse = Effect.fn("GitHubMediaFetch.githubMediaRespon...@@ -176,7 +177,7 @@ export const githubMediaResponse = Effect.fn("GitHubMediaFetch.githubMediaRespon
176 response.headers["content-type"]?.split(";", 1)[0]?.trim().toLowerCase() ?? "";177 response.headers["content-type"]?.split(";", 1)[0]?.trim().toLowerCase() ?? "";
177 const contentType = MEDIA_CONTENT_TYPE_PATTERN.test(upstreamType)178 const contentType = MEDIA_CONTENT_TYPE_PATTERN.test(upstreamType)
178 ? upstreamType179 ? upstreamType
179 : (Mime.getType(githubMediaFileName(asset.url))?.toLowerCase() ?? "");180 : Option.getOrElse(Mime.getType(githubMediaFileName(asset.url)), () => "").toLowerCase();
180 if (!MEDIA_CONTENT_TYPE_PATTERN.test(contentType)) {181 if (!MEDIA_CONTENT_TYPE_PATTERN.test(contentType)) {
181 return HttpServerResponse.empty({ status: 415, headers });182 return HttpServerResponse.empty({ status: 415, headers });
182 }183 }
apps/server/src/bin.ts+1-1
...@@ -38,7 +38,7 @@ class ConnectPublicConfigMissingError extends CliError.UserError {...@@ -38,7 +38,7 @@ class ConnectPublicConfigMissingError extends CliError.UserError {
38}38}
3939
40const connectUnavailableCommand = Command.make("connect", {40const connectUnavailableCommand = Command.make("connect", {
41 command: Argument.string("command").pipe(Argument.variadic),41 command: Argument.String("command").pipe(Argument.variadic),
42}).pipe(42}).pipe(
43 Command.withDescription("T3 Connect is unavailable in builds without public configuration."),43 Command.withDescription("T3 Connect is unavailable in builds without public configuration."),
44 Command.unlisted,44 Command.unlisted,
apps/server/src/cli/app.ts+4-4
...@@ -178,9 +178,9 @@ function sendDesktopAppActivationRequest(input: {...@@ -178,9 +178,9 @@ function sendDesktopAppActivationRequest(input: {
178}178}
179179
180const appEnvironment = Config.all({180const appEnvironment = Config.all({
181 t3Home: Config.string("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)),181 t3Home: Config.String("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)),
182 sshConnection: Config.string("SSH_CONNECTION").pipe(Config.option),182 sshConnection: Config.String("SSH_CONNECTION").pipe(Config.option),
183 sshTty: Config.string("SSH_TTY").pipe(Config.option),183 sshTty: Config.String("SSH_TTY").pipe(Config.option),
184});184});
185185
186const runAppCommand = Effect.fn("cli.app")(function* (flags: {186const runAppCommand = Effect.fn("cli.app")(function* (flags: {
...@@ -251,7 +251,7 @@ const runAppCommand = Effect.fn("cli.app")(function* (flags: {...@@ -251,7 +251,7 @@ const runAppCommand = Effect.fn("cli.app")(function* (flags: {
251251
252export const appCommand = Command.make("app", {252export const appCommand = Command.make("app", {
253 baseDir: baseDirFlag,253 baseDir: baseDirFlag,
254 workspaceRoot: Argument.string("path").pipe(254 workspaceRoot: Argument.String("path").pipe(
255 Argument.withDescription("Project directory. Default: current directory."),255 Argument.withDescription("Project directory. Default: current directory."),
256 Argument.optional,256 Argument.optional,
257 ),257 ),
apps/server/src/cli/auth.ts+8-8
...@@ -50,33 +50,33 @@ const runWithEnvironmentAuth = <A, E>(...@@ -50,33 +50,33 @@ const runWithEnvironmentAuth = <A, E>(
50 );50 );
51 });51 });
5252
53const ttlFlag = Flag.string("ttl").pipe(53const ttlFlag = Flag.String("ttl").pipe(
54 Flag.withSchema(DurationFromString),54 Flag.withSchema(DurationFromString),
55 Flag.withDescription("TTL, for example `5m`, `1h`, `30d`, or `15 minutes`."),55 Flag.withDescription("TTL, for example `5m`, `1h`, `30d`, or `15 minutes`."),
56 Flag.optional,56 Flag.optional,
57);57);
5858
59const jsonFlag = Flag.boolean("json").pipe(59const jsonFlag = Flag.Boolean("json").pipe(
60 Flag.withDescription("Emit JSON instead of human-readable output."),60 Flag.withDescription("Emit JSON instead of human-readable output."),
61 Flag.withDefault(false),61 Flag.withDefault(false),
62);62);
6363
64const labelFlag = Flag.string("label").pipe(64const labelFlag = Flag.String("label").pipe(
65 Flag.withDescription("Optional human-readable label."),65 Flag.withDescription("Optional human-readable label."),
66 Flag.optional,66 Flag.optional,
67);67);
6868
69const subjectFlag = Flag.string("subject").pipe(69const subjectFlag = Flag.String("subject").pipe(
70 Flag.withDescription("Optional session subject."),70 Flag.withDescription("Optional session subject."),
71 Flag.optional,71 Flag.optional,
72);72);
7373
74const baseUrlFlag = Flag.string("base-url").pipe(74const baseUrlFlag = Flag.String("base-url").pipe(
75 Flag.withDescription("Optional public base URL used to print a ready `/pair#token=...` link."),75 Flag.withDescription("Optional public base URL used to print a ready `/pair#token=...` link."),
76 Flag.optional,76 Flag.optional,
77);77);
7878
79const tokenOnlyFlag = Flag.boolean("token-only").pipe(79const tokenOnlyFlag = Flag.Boolean("token-only").pipe(
80 Flag.withDescription("Print only the issued bearer token."),80 Flag.withDescription("Print only the issued bearer token."),
81 Flag.withDefault(false),81 Flag.withDefault(false),
82);82);
...@@ -137,7 +137,7 @@ const pairingListCommand = Command.make("list", {...@@ -137,7 +137,7 @@ const pairingListCommand = Command.make("list", {
137137
138const pairingRevokeCommand = Command.make("revoke", {138const pairingRevokeCommand = Command.make("revoke", {
139 ...authLocationFlags,139 ...authLocationFlags,
140 id: Argument.string("id").pipe(Argument.withDescription("Pairing credential id to revoke.")),140 id: Argument.String("id").pipe(Argument.withDescription("Pairing credential id to revoke.")),
141}).pipe(141}).pipe(
142 Command.withDescription("Revoke an active client pairing token."),142 Command.withDescription("Revoke an active client pairing token."),
143 Command.withHandler((flags) =>143 Command.withHandler((flags) =>
...@@ -215,7 +215,7 @@ const sessionListCommand = Command.make("list", {...@@ -215,7 +215,7 @@ const sessionListCommand = Command.make("list", {
215215
216const sessionRevokeCommand = Command.make("revoke", {216const sessionRevokeCommand = Command.make("revoke", {
217 ...authLocationFlags,217 ...authLocationFlags,
218 sessionId: Argument.string("session-id").pipe(218 sessionId: Argument.String("session-id").pipe(
219 Argument.withDescription("Session id to revoke."),219 Argument.withDescription("Session id to revoke."),
220 Argument.withSchema(AuthSessionId),220 Argument.withSchema(AuthSessionId),
221 ),221 ),
apps/server/src/cli/claudeHistory.ts+3-3
...@@ -10,9 +10,9 @@ import { runClaudeHistoryWorker } from "../claudeHistoryWorker.ts";...@@ -10,9 +10,9 @@ import { runClaudeHistoryWorker } from "../claudeHistoryWorker.ts";
10 * this hidden subcommand on its own executable instead.10 * this hidden subcommand on its own executable instead.
11 */11 */
12export const claudeHistoryCommand = Command.make("__claude-history", {12export const claudeHistoryCommand = Command.make("__claude-history", {
13 method: Argument.string("method"),13 method: Argument.String("method"),
14 sessionId: Argument.string("session-id"),14 sessionId: Argument.String("session-id"),
15 options: Argument.string("options").pipe(Argument.optional),15 options: Argument.String("options").pipe(Argument.optional),
16}).pipe(16}).pipe(
17 Command.unlisted,17 Command.unlisted,
18 Command.withHandler(({ method, sessionId, options }) =>18 Command.withHandler(({ method, sessionId, options }) =>
apps/server/src/cli/config.ts+37-37
...@@ -19,87 +19,87 @@ import { readBootstrapEnvelope } from "../bootstrap.ts";...@@ -19,87 +19,87 @@ import { readBootstrapEnvelope } from "../bootstrap.ts";
19import * as ServerConfig from "../config.ts";19import * as ServerConfig from "../config.ts";
20import { expandHomePath, resolveBaseDir } from "../os-jank.ts";20import { expandHomePath, resolveBaseDir } from "../os-jank.ts";
2121
22const modeFlag = Flag.choice("mode", ServerConfig.RuntimeMode.literals).pipe(22const modeFlag = Flag.Literals("mode", ServerConfig.RuntimeMode.literals).pipe(
23 Flag.withDescription("Runtime mode. `desktop` keeps loopback defaults unless overridden."),23 Flag.withDescription("Runtime mode. `desktop` keeps loopback defaults unless overridden."),
24 Flag.optional,24 Flag.optional,
25);25);
26const portFlag = Flag.integer("port").pipe(26const portFlag = Flag.Int("port").pipe(
27 Flag.withSchema(PortSchema),27 Flag.withSchema(PortSchema),
28 Flag.withDescription("Port for the HTTP/WebSocket server."),28 Flag.withDescription("Port for the HTTP/WebSocket server."),
29 Flag.optional,29 Flag.optional,
30);30);
31const hostFlag = Flag.string("host").pipe(31const hostFlag = Flag.String("host").pipe(
32 Flag.withDescription("Host/interface to bind (for example 127.0.0.1, 0.0.0.0, or a Tailnet IP)."),32 Flag.withDescription("Host/interface to bind (for example 127.0.0.1, 0.0.0.0, or a Tailnet IP)."),
33 Flag.optional,33 Flag.optional,
34);34);
35export const baseDirFlag = Flag.string("base-dir").pipe(35export const baseDirFlag = Flag.String("base-dir").pipe(
36 Flag.withDescription(36 Flag.withDescription(
37 "Explicit T3 Code data directory; runtime state is stored under userdata (equivalent to T3CODE_HOME).",37 "Explicit T3 Code data directory; runtime state is stored under userdata (equivalent to T3CODE_HOME).",
38 ),38 ),
39 Flag.optional,39 Flag.optional,
40);40);
41const devUrlFlag = Flag.string("dev-url").pipe(41const devUrlFlag = Flag.String("dev-url").pipe(
42 Flag.withSchema(Schema.URLFromString),42 Flag.withSchema(Schema.URLFromString),
43 Flag.withDescription("Dev web URL to proxy/redirect to (equivalent to VITE_DEV_SERVER_URL)."),43 Flag.withDescription("Dev web URL to proxy/redirect to (equivalent to VITE_DEV_SERVER_URL)."),
44 Flag.optional,44 Flag.optional,
45);45);
46const noBrowserFlag = Flag.boolean("no-browser").pipe(46const noBrowserFlag = Flag.Boolean("no-browser").pipe(
47 Flag.withDescription("Disable automatic browser opening."),47 Flag.withDescription("Disable automatic browser opening."),
48 Flag.optional,48 Flag.optional,
49);49);
50const bootstrapFdFlag = Flag.integer("bootstrap-fd").pipe(50const bootstrapFdFlag = Flag.Int("bootstrap-fd").pipe(
51 Flag.withSchema(Schema.Int),51 Flag.withSchema(Schema.Int),
52 Flag.withDescription("Read one-time bootstrap secrets from the given file descriptor."),52 Flag.withDescription("Read one-time bootstrap secrets from the given file descriptor."),
53 Flag.optional,53 Flag.optional,
54);54);
55const autoBootstrapProjectFromCwdFlag = Flag.boolean("auto-bootstrap-project-from-cwd").pipe(55const autoBootstrapProjectFromCwdFlag = Flag.Boolean("auto-bootstrap-project-from-cwd").pipe(
56 Flag.withDescription(56 Flag.withDescription(
57 "Create a project for the current working directory on startup when missing.",57 "Create a project for the current working directory on startup when missing.",
58 ),58 ),
59 Flag.optional,59 Flag.optional,
60);60);
61const logWebSocketEventsFlag = Flag.boolean("log-websocket-events").pipe(61const logWebSocketEventsFlag = Flag.Boolean("log-websocket-events").pipe(
62 Flag.withDescription(62 Flag.withDescription(
63 "Emit server-side logs for outbound WebSocket push traffic (equivalent to T3CODE_LOG_WS_EVENTS).",63 "Emit server-side logs for outbound WebSocket push traffic (equivalent to T3CODE_LOG_WS_EVENTS).",
64 ),64 ),
65 Flag.withAlias("log-ws-events"),65 Flag.withAlias("log-ws-events"),
66 Flag.optional,66 Flag.optional,
67);67);
68const tailscaleServeFlag = Flag.boolean("tailscale-serve").pipe(68const tailscaleServeFlag = Flag.Boolean("tailscale-serve").pipe(
69 Flag.withDescription(69 Flag.withDescription(
70 "Configure Tailscale Serve to expose this backend over HTTPS on the Tailnet.",70 "Configure Tailscale Serve to expose this backend over HTTPS on the Tailnet.",
71 ),71 ),
72 Flag.optional,72 Flag.optional,
73);73);
74const tailscaleServePortFlag = Flag.integer("tailscale-serve-port").pipe(74const tailscaleServePortFlag = Flag.Int("tailscale-serve-port").pipe(
75 Flag.withSchema(PortSchema),75 Flag.withSchema(PortSchema),
76 Flag.withDescription("HTTPS port for Tailscale Serve when --tailscale-serve is enabled."),76 Flag.withDescription("HTTPS port for Tailscale Serve when --tailscale-serve is enabled."),
77 Flag.optional,77 Flag.optional,
78);78);
7979
80const EnvServerConfig = Config.all({80const EnvServerConfig = Config.all({
81 logLevel: Config.logLevel("T3CODE_LOG_LEVEL").pipe(Config.withDefault("Info")),81 logLevel: Config.LogLevel("T3CODE_LOG_LEVEL").pipe(Config.withDefault("Info")),
82 traceMinLevel: Config.logLevel("T3CODE_TRACE_MIN_LEVEL").pipe(Config.withDefault("Info")),82 traceMinLevel: Config.LogLevel("T3CODE_TRACE_MIN_LEVEL").pipe(Config.withDefault("Info")),
83 traceTimingEnabled: Config.boolean("T3CODE_TRACE_TIMING_ENABLED").pipe(Config.withDefault(true)),83 traceTimingEnabled: Config.Boolean("T3CODE_TRACE_TIMING_ENABLED").pipe(Config.withDefault(true)),
84 traceFile: Config.string("T3CODE_TRACE_FILE").pipe(84 traceFile: Config.String("T3CODE_TRACE_FILE").pipe(
85 Config.option,85 Config.option,
86 Config.map(Option.getOrUndefined),86 Config.map(Option.getOrUndefined),
87 ),87 ),
88 traceMaxBytes: Config.int("T3CODE_TRACE_MAX_BYTES").pipe(Config.withDefault(10 * 1024 * 1024)),88 traceMaxBytes: Config.Int("T3CODE_TRACE_MAX_BYTES").pipe(Config.withDefault(10 * 1024 * 1024)),
89 traceMaxFiles: Config.int("T3CODE_TRACE_MAX_FILES").pipe(Config.withDefault(10)),89 traceMaxFiles: Config.Int("T3CODE_TRACE_MAX_FILES").pipe(Config.withDefault(10)),
90 traceBatchWindowMs: Config.int("T3CODE_TRACE_BATCH_WINDOW_MS").pipe(Config.withDefault(1_000)),90 traceBatchWindowMs: Config.Int("T3CODE_TRACE_BATCH_WINDOW_MS").pipe(Config.withDefault(1_000)),
91 otlpTracesUrl: Config.string("T3CODE_OTLP_TRACES_URL").pipe(91 otlpTracesUrl: Config.String("T3CODE_OTLP_TRACES_URL").pipe(
92 Config.option,92 Config.option,
93 Config.map(Option.getOrUndefined),93 Config.map(Option.getOrUndefined),
94 ),94 ),
95 otlpMetricsUrl: Config.string("T3CODE_OTLP_METRICS_URL").pipe(95 otlpMetricsUrl: Config.String("T3CODE_OTLP_METRICS_URL").pipe(
96 Config.option,96 Config.option,
97 Config.map(Option.getOrUndefined),97 Config.map(Option.getOrUndefined),
98 ),98 ),
99 otlpExportIntervalMs: Config.int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe(99 otlpExportIntervalMs: Config.Int("T3CODE_OTLP_EXPORT_INTERVAL_MS").pipe(
100 Config.withDefault(10_000),100 Config.withDefault(10_000),
101 ),101 ),
102 otlpServiceName: Config.string("T3CODE_OTLP_SERVICE_NAME").pipe(Config.withDefault("t3-server")),102 otlpServiceName: Config.String("T3CODE_OTLP_SERVICE_NAME").pipe(Config.withDefault("t3-server")),
103 otlpHeaders: Config.schema(OtlpHeadersFromString, "T3CODE_OTLP_HEADERS").pipe(103 otlpHeaders: Config.schema(OtlpHeadersFromString, "T3CODE_OTLP_HEADERS").pipe(
104 Config.option,104 Config.option,
105 Config.map(Option.getOrUndefined),105 Config.map(Option.getOrUndefined),
...@@ -111,11 +111,11 @@ const EnvServerConfig = Config.all({...@@ -111,11 +111,11 @@ const EnvServerConfig = Config.all({
111 Config.option,111 Config.option,
112 Config.map(Option.getOrUndefined),112 Config.map(Option.getOrUndefined),
113 ),113 ),
114 port: Config.port("T3CODE_PORT").pipe(Config.option, Config.map(Option.getOrUndefined)),114 port: Config.Port("T3CODE_PORT").pipe(Config.option, Config.map(Option.getOrUndefined)),
115 host: Config.string("T3CODE_HOST").pipe(Config.option, Config.map(Option.getOrUndefined)),115 host: Config.String("T3CODE_HOST").pipe(Config.option, Config.map(Option.getOrUndefined)),
116 t3Home: Config.string("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)),116 t3Home: Config.String("T3CODE_HOME").pipe(Config.option, Config.map(Option.getOrUndefined)),
117 devUrl: Config.url("VITE_DEV_SERVER_URL").pipe(Config.option, Config.map(Option.getOrUndefined)),117 devUrl: Config.URL("VITE_DEV_SERVER_URL").pipe(Config.option, Config.map(Option.getOrUndefined)),
118 devAllowedOrigins: Config.string("T3CODE_DEV_ALLOWED_ORIGINS").pipe(118 devAllowedOrigins: Config.String("T3CODE_DEV_ALLOWED_ORIGINS").pipe(
119 Config.withDefault(""),119 Config.withDefault(""),
120 Config.map((value) =>120 Config.map((value) =>
121 value121 value
...@@ -124,35 +124,35 @@ const EnvServerConfig = Config.all({...@@ -124,35 +124,35 @@ const EnvServerConfig = Config.all({
124 .filter((entry) => entry.length > 0),124 .filter((entry) => entry.length > 0),
125 ),125 ),
126 ),126 ),
127 noBrowser: Config.boolean("T3CODE_NO_BROWSER").pipe(127 noBrowser: Config.Boolean("T3CODE_NO_BROWSER").pipe(
128 Config.option,128 Config.option,
129 Config.map(Option.getOrUndefined),129 Config.map(Option.getOrUndefined),
130 ),130 ),
131 bootstrapFd: Config.int("T3CODE_BOOTSTRAP_FD").pipe(131 bootstrapFd: Config.Int("T3CODE_BOOTSTRAP_FD").pipe(
132 Config.option,132 Config.option,
133 Config.map(Option.getOrUndefined),133 Config.map(Option.getOrUndefined),
134 ),134 ),
135 autoBootstrapProjectFromCwd: Config.boolean("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD").pipe(135 autoBootstrapProjectFromCwd: Config.Boolean("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD").pipe(
136 Config.option,136 Config.option,
137 Config.map(Option.getOrUndefined),137 Config.map(Option.getOrUndefined),
138 ),138 ),
139 logWebSocketEvents: Config.boolean("T3CODE_LOG_WS_EVENTS").pipe(139 logWebSocketEvents: Config.Boolean("T3CODE_LOG_WS_EVENTS").pipe(
140 Config.option,140 Config.option,
141 Config.map(Option.getOrUndefined),141 Config.map(Option.getOrUndefined),
142 ),142 ),
143 tailscaleServeEnabled: Config.boolean("T3CODE_TAILSCALE_SERVE").pipe(143 tailscaleServeEnabled: Config.Boolean("T3CODE_TAILSCALE_SERVE").pipe(
144 Config.option,144 Config.option,
145 Config.map(Option.getOrUndefined),145 Config.map(Option.getOrUndefined),
146 ),146 ),
147 tailscaleServePort: Config.port("T3CODE_TAILSCALE_SERVE_PORT").pipe(147 tailscaleServePort: Config.Port("T3CODE_TAILSCALE_SERVE_PORT").pipe(
148 Config.option,148 Config.option,
149 Config.map(Option.getOrUndefined),149 Config.map(Option.getOrUndefined),
150 ),150 ),
151});151});
152152
153const DevAuthTokenConfig = Config.redacted("T3CODE_DEV_AUTH_TOKEN").pipe(153const DevAuthTokenConfig = Config.Redacted("T3CODE_DEV_AUTH_TOKEN").pipe(
154 Config.map((token) => Redacted.make(Redacted.value(token).trim())),154 Config.map((token) => Redacted.make(Redacted.value(token).trim())),
155 Config.mapOrFail((token) =>155 Config.mapEffect((token) =>
156 Redacted.value(token).length === 0 || Redacted.value(token).length >= 32156 Redacted.value(token).length === 0 || Redacted.value(token).length >= 32
157 ? Effect.succeed(token)157 ? Effect.succeed(token)
158 : Effect.fail(158 : Effect.fail(
...@@ -204,7 +204,7 @@ export const sharedServerCommandFlags = {...@@ -204,7 +204,7 @@ export const sharedServerCommandFlags = {
204 port: portFlag,204 port: portFlag,
205 host: hostFlag,205 host: hostFlag,
206 baseDir: baseDirFlag,206 baseDir: baseDirFlag,
207 cwd: Argument.string("cwd").pipe(207 cwd: Argument.String("cwd").pipe(
208 Argument.withDescription(208 Argument.withDescription(
209 "Working directory for provider sessions (defaults to the current directory).",209 "Working directory for provider sessions (defaults to the current directory).",
210 ),210 ),
...@@ -491,7 +491,7 @@ const parseDurationInput = (value: string): Duration.Duration | null => {...@@ -491,7 +491,7 @@ const parseDurationInput = (value: string): Duration.Duration | null => {
491export const DurationFromString = Schema.String.pipe(491export const DurationFromString = Schema.String.pipe(
492 Schema.decodeTo(492 Schema.decodeTo(
493 Schema.Duration,493 Schema.Duration,
494 SchemaTransformation.transformOrFail({494 SchemaTransformation.transformEffect({
495 decode: (value) => {495 decode: (value) => {
496 const duration = parseDurationInput(value);496 const duration = parseDurationInput(value);
497 if (duration !== null) {497 if (duration !== null) {
apps/server/src/cli/connect.ts+7-7
...@@ -55,14 +55,14 @@ import {...@@ -55,14 +55,14 @@ import {
55 recoverServiceOnboardingOffer,55 recoverServiceOnboardingOffer,
56} from "./service.ts";56} from "./service.ts";
5757
58const jsonFlag = Flag.boolean("json").pipe(58const jsonFlag = Flag.Boolean("json").pipe(
59 Flag.withDescription("Emit JSON instead of human-readable output."),59 Flag.withDescription("Emit JSON instead of human-readable output."),
60 Flag.withDefault(false),60 Flag.withDefault(false),
61);61);
6262
63const isCloudCliTokenManagerError = Schema.is(CliTokenManager.CloudCliTokenManagerError);63const isCloudCliTokenManagerError = Schema.is(CliTokenManager.CloudCliTokenManagerError);
6464
65const headlessFlag = Flag.boolean("headless").pipe(65const headlessFlag = Flag.Boolean("headless").pipe(
66 Flag.withDescription("Authorize without a local browser using the OAuth device flow."),66 Flag.withDescription("Authorize without a local browser using the OAuth device flow."),
67 Flag.withDefault(false),67 Flag.withDefault(false),
68);68);
...@@ -73,8 +73,8 @@ const headlessFlag = Flag.boolean("headless").pipe(...@@ -73,8 +73,8 @@ const headlessFlag = Flag.boolean("headless").pipe(
73 * can work.73 * can work.
74 */74 */
75export const headlessSessionConfig = Config.all({75export const headlessSessionConfig = Config.all({
76 sshConnection: Config.string("SSH_CONNECTION").pipe(Config.option),76 sshConnection: Config.String("SSH_CONNECTION").pipe(Config.option),
77 sshTty: Config.string("SSH_TTY").pipe(Config.option),77 sshTty: Config.String("SSH_TTY").pipe(Config.option),
78}).pipe(78}).pipe(
79 Config.map(({ sshConnection, sshTty }) => Option.isSome(sshConnection) || Option.isSome(sshTty)),79 Config.map(({ sshConnection, sshTty }) => Option.isSome(sshConnection) || Option.isSome(sshTty)),
80);80);
...@@ -214,7 +214,7 @@ const CLOUD_CLI_LIVE_SERVER_TIMEOUT = Duration.seconds(5);...@@ -214,7 +214,7 @@ const CLOUD_CLI_LIVE_SERVER_TIMEOUT = Duration.seconds(5);
214214
215const confirmRelayClientInstall = (version: string) =>215const confirmRelayClientInstall = (version: string) =>
216 Prompt.run(216 Prompt.run(
217 Prompt.confirm({217 Prompt.Confirm({
218 message: `The T3 relay client is required for T3 Connect. Download and install version ${version}?`,218 message: `The T3 relay client is required for T3 Connect. Download and install version ${version}?`,
219 initial: false,219 initial: false,
220 }),220 }),
...@@ -511,7 +511,7 @@ const connectLoginCommand = Command.make("login", {...@@ -511,7 +511,7 @@ const connectLoginCommand = Command.make("login", {
511const connectLinkCommand = Command.make("link", {511const connectLinkCommand = Command.make("link", {
512 ...projectLocationFlags,512 ...projectLocationFlags,
513 headless: headlessFlag,513 headless: headlessFlag,
514 publishOnly: Flag.boolean("publish-only").pipe(514 publishOnly: Flag.Boolean("publish-only").pipe(
515 Flag.withDescription(515 Flag.withDescription(
516 "Link to publish agent activity only — no managed tunnel. Reach this environment out of band (e.g. Tailscale).",516 "Link to publish agent activity only — no managed tunnel. Reach this environment out of band (e.g. Tailscale).",
517 ),517 ),
...@@ -584,7 +584,7 @@ const connectStatusCommand = Command.make("status", {...@@ -584,7 +584,7 @@ const connectStatusCommand = Command.make("status", {
584584
585const connectPublishCommand = Command.make("publish", {585const connectPublishCommand = Command.make("publish", {
586 ...projectLocationFlags,586 ...projectLocationFlags,
587 disable: Flag.boolean("disable").pipe(587 disable: Flag.Boolean("disable").pipe(
588 Flag.withDescription("Stop publishing agent activity to your mobile clients."),588 Flag.withDescription("Stop publishing agent activity to your mobile clients."),
589 Flag.withDefault(false),589 Flag.withDefault(false),
590 ),590 ),
apps/server/src/cli/pair.ts+5-5
...@@ -251,7 +251,7 @@ const discoverPairTarget = Effect.fn("pair.discoverPairTarget")(function* (...@@ -251,7 +251,7 @@ const discoverPairTarget = Effect.fn("pair.discoverPairTarget")(function* (
251 if (worktreeHome !== undefined) {251 if (worktreeHome !== undefined) {
252 bases.push(worktreeHome);252 bases.push(worktreeHome);
253 }253 }
254 const envHome = yield* Config.string("T3CODE_HOME").pipe(Config.option);254 const envHome = yield* Config.String("T3CODE_HOME").pipe(Config.option);
255 bases.push(yield* resolveBaseDir(Option.getOrUndefined(envHome)));255 bases.push(yield* resolveBaseDir(Option.getOrUndefined(envHome)));
256 }256 }
257257
...@@ -447,7 +447,7 @@ const mintPairingLink = Effect.fn("pair.mintPairingLink")(function* (input: {...@@ -447,7 +447,7 @@ const mintPairingLink = Effect.fn("pair.mintPairingLink")(function* (input: {
447 );447 );
448});448});
449449
450const ttlFlag = Flag.string("ttl").pipe(450const ttlFlag = Flag.String("ttl").pipe(
451 Flag.withSchema(DurationFromString),451 Flag.withSchema(DurationFromString),
452 Flag.withDescription(452 Flag.withDescription(
453 "Token TTL, for example `5m`, `1h`, or `15 minutes`. Defaults to 5 minutes.",453 "Token TTL, for example `5m`, `1h`, or `15 minutes`. Defaults to 5 minutes.",
...@@ -455,19 +455,19 @@ const ttlFlag = Flag.string("ttl").pipe(...@@ -455,19 +455,19 @@ const ttlFlag = Flag.string("ttl").pipe(
455 Flag.optional,455 Flag.optional,
456);456);
457457
458const labelFlag = Flag.string("label").pipe(458const labelFlag = Flag.String("label").pipe(
459 Flag.withDescription("Optional label shown in the server's connections list."),459 Flag.withDescription("Optional label shown in the server's connections list."),
460 Flag.optional,460 Flag.optional,
461);461);
462462
463const tailscaleFlag = Flag.boolean("tailscale").pipe(463const tailscaleFlag = Flag.Boolean("tailscale").pipe(
464 Flag.withDescription(464 Flag.withDescription(
465 "Publish the server over Tailscale Serve HTTPS and pair through the tailnet URL.",465 "Publish the server over Tailscale Serve HTTPS and pair through the tailnet URL.",
466 ),466 ),
467 Flag.withDefault(false),467 Flag.withDefault(false),
468);468);
469469
470const tailscaleServePortFlag = Flag.integer("tailscale-serve-port").pipe(470const tailscaleServePortFlag = Flag.Int("tailscale-serve-port").pipe(
471 Flag.withSchema(PortSchema),471 Flag.withSchema(PortSchema),
472 Flag.withDescription("HTTPS port for Tailscale Serve when --tailscale is enabled."),472 Flag.withDescription("HTTPS port for Tailscale Serve when --tailscale is enabled."),
473 Flag.withDefault(DEFAULT_TAILSCALE_SERVE_PORT),473 Flag.withDefault(DEFAULT_TAILSCALE_SERVE_PORT),
apps/server/src/cli/project.ts+6-6
...@@ -442,10 +442,10 @@ const runProjectMutation = Effect.fn("runProjectMutation")(function* (...@@ -442,10 +442,10 @@ const runProjectMutation = Effect.fn("runProjectMutation")(function* (
442442
443const projectAddCommand = Command.make("add", {443const projectAddCommand = Command.make("add", {
444 ...projectLocationFlags,444 ...projectLocationFlags,
445 workspaceRoot: Argument.string("path").pipe(445 workspaceRoot: Argument.String("path").pipe(
446 Argument.withDescription("Workspace root to add as a project."),446 Argument.withDescription("Workspace root to add as a project."),
447 ),447 ),
448 title: Flag.string("title").pipe(Flag.withDescription("Optional project title."), Flag.optional),448 title: Flag.String("title").pipe(Flag.withDescription("Optional project title."), Flag.optional),
449}).pipe(449}).pipe(
450 Command.withDescription("Add a project."),450 Command.withDescription("Add a project."),
451 Command.withHandler((flags) =>451 Command.withHandler((flags) =>
...@@ -490,10 +490,10 @@ const projectAddCommand = Command.make("add", {...@@ -490,10 +490,10 @@ const projectAddCommand = Command.make("add", {
490490
491const projectRemoveCommand = Command.make("remove", {491const projectRemoveCommand = Command.make("remove", {
492 ...projectLocationFlags,492 ...projectLocationFlags,
493 project: Argument.string("project").pipe(493 project: Argument.String("project").pipe(
494 Argument.withDescription("Project id or workspace root to remove."),494 Argument.withDescription("Project id or workspace root to remove."),
495 ),495 ),
496 force: Flag.boolean("force").pipe(496 force: Flag.Boolean("force").pipe(
497 Flag.withDescription("Delete the project and all of its threads."),497 Flag.withDescription("Delete the project and all of its threads."),
498 Flag.withDefault(false),498 Flag.withDefault(false),
499 ),499 ),
...@@ -529,10 +529,10 @@ const projectRemoveCommand = Command.make("remove", {...@@ -529,10 +529,10 @@ const projectRemoveCommand = Command.make("remove", {
529529
530const projectRenameCommand = Command.make("rename", {530const projectRenameCommand = Command.make("rename", {
531 ...projectLocationFlags,531 ...projectLocationFlags,
532 project: Argument.string("project").pipe(532 project: Argument.String("project").pipe(
533 Argument.withDescription("Project id or workspace root to rename."),533 Argument.withDescription("Project id or workspace root to rename."),
534 ),534 ),
535 title: Argument.string("title").pipe(Argument.withDescription("New project title.")),535 title: Argument.String("title").pipe(Argument.withDescription("New project title.")),
536}).pipe(536}).pipe(
537 Command.withDescription("Rename a project."),537 Command.withDescription("Rename a project."),
538 Command.withHandler((flags) =>538 Command.withHandler((flags) =>
apps/server/src/cli/service.ts+2-2
...@@ -112,7 +112,7 @@ const runServiceCommand = Effect.fn("cli.service.run")(function* <A, E>(...@@ -112,7 +112,7 @@ const runServiceCommand = Effect.fn("cli.service.run")(function* <A, E>(
112112
113const serviceReconcileFlags = {113const serviceReconcileFlags = {
114 ...projectLocationFlags,114 ...projectLocationFlags,
115 allowDowngrade: Flag.boolean("allow-downgrade").pipe(115 allowDowngrade: Flag.Boolean("allow-downgrade").pipe(
116 Flag.withDescription("Allow replacing a newer installed service with this older CLI version."),116 Flag.withDescription("Allow replacing a newer installed service with this older CLI version."),
117 Flag.withDefault(false),117 Flag.withDefault(false),
118 ),118 ),
...@@ -243,7 +243,7 @@ export const offerServiceDuringOnboarding = Effect.gen(function* () {...@@ -243,7 +243,7 @@ export const offerServiceDuringOnboarding = Effect.gen(function* () {
243 // enable-linger equivalent on macOS. Do not promise more than that.243 // enable-linger equivalent on macOS. Do not promise more than that.
244 const platform = yield* HostProcessPlatform;244 const platform = yield* HostProcessPlatform;
245 const wanted = yield* Prompt.run(245 const wanted = yield* Prompt.run(
246 Prompt.confirm({246 Prompt.Confirm({
247 message: installed247 message: installed
248 ? "The installed T3 Code service needs an update or repair. Update it now?"248 ? "The installed T3 Code service needs an update or repair. Update it now?"
249 : platform === "darwin"249 : platform === "darwin"
apps/server/src/cli/servicePreflight.ts+2-2
...@@ -5,8 +5,8 @@ import { Command, Flag } from "effect/unstable/cli";...@@ -5,8 +5,8 @@ import { Command, Flag } from "effect/unstable/cli";
5import { runServicePreflight } from "../cloud/servicePreflight.ts";5import { runServicePreflight } from "../cloud/servicePreflight.ts";
66
7export const servicePreflightCommand = Command.make("__service-preflight", {7export const servicePreflightCommand = Command.make("__service-preflight", {
8 databasePath: Flag.string("database-path"),8 databasePath: Flag.String("database-path"),
9 launcherProtocol: Flag.integer("launcher-protocol"),9 launcherProtocol: Flag.Int("launcher-protocol"),
10}).pipe(10}).pipe(
11 Command.unlisted,11 Command.unlisted,
12 Command.withHandler(({ databasePath, launcherProtocol }) =>12 Command.withHandler(({ databasePath, launcherProtocol }) =>
apps/server/src/cli/sshHelper.ts+7-7
...@@ -30,9 +30,9 @@ const tryPort = (port: number) =>...@@ -30,9 +30,9 @@ const tryPort = (port: number) =>
3030
31/** Prints the first free loopback port from the preferred one, scanning `window` ports. */31/** Prints the first free loopback port from the preferred one, scanning `window` ports. */
32const pickPort = Command.make("pick-port", {32const pickPort = Command.make("pick-port", {
33 portFile: Argument.string("port-file"),33 portFile: Argument.String("port-file"),
34 defaultPort: Argument.integer("default-port"),34 defaultPort: Argument.Int("default-port"),
35 scanWindow: Argument.integer("scan-window"),35 scanWindow: Argument.Int("scan-window"),
36}).pipe(36}).pipe(
37 Command.withHandler(({ portFile, defaultPort, scanWindow }) =>37 Command.withHandler(({ portFile, defaultPort, scanWindow }) =>
38 Effect.promise(async () => {38 Effect.promise(async () => {
...@@ -71,9 +71,9 @@ const probe = (port: number, probeTimeoutMs: number) =>...@@ -71,9 +71,9 @@ const probe = (port: number, probeTimeoutMs: number) =>
7171
72/** Exits 0 once the loopback server answers, 1 when the deadline passes first. */72/** Exits 0 once the loopback server answers, 1 when the deadline passes first. */
73const waitReady = Command.make("wait-ready", {73const waitReady = Command.make("wait-ready", {
74 port: Argument.integer("port"),74 port: Argument.Int("port"),
75 timeoutMs: Argument.integer("timeout-ms"),75 timeoutMs: Argument.Int("timeout-ms"),
76 probeTimeoutMs: Argument.integer("probe-timeout-ms"),76 probeTimeoutMs: Argument.Int("probe-timeout-ms"),
77}).pipe(77}).pipe(
78 Command.withHandler(({ port, timeoutMs, probeTimeoutMs }) =>78 Command.withHandler(({ port, timeoutMs, probeTimeoutMs }) =>
79 Effect.promise(async () => {79 Effect.promise(async () => {
...@@ -89,7 +89,7 @@ const waitReady = Command.make("wait-ready", {...@@ -89,7 +89,7 @@ const waitReady = Command.make("wait-ready", {
8989
90/** Prints `<pid> <port>` for a live default-home server, or exits 1. */90/** Prints `<pid> <port>` for a live default-home server, or exits 1. */
91const runtimePort = Command.make("runtime-port", {91const runtimePort = Command.make("runtime-port", {
92 runtimeFile: Argument.string("runtime-file"),92 runtimeFile: Argument.String("runtime-file"),
93}).pipe(93}).pipe(
94 Command.withHandler(({ runtimeFile }) =>94 Command.withHandler(({ runtimeFile }) =>
95 Effect.sync(() => {95 Effect.sync(() => {
apps/server/src/cli/theme.ts+3-3
...@@ -178,7 +178,7 @@ export class ThemeTargetMissingError extends Schema.TaggedError<ThemeTargetMissi...@@ -178,7 +178,7 @@ export class ThemeTargetMissingError extends Schema.TaggedError<ThemeTargetMissi
178 }178 }
179}179}
180180
181const envT3Home = Config.string("T3CODE_HOME").pipe(Config.option);181const envT3Home = Config.String("T3CODE_HOME").pipe(Config.option);
182182
183const resolveThemePaths = Effect.fn(function* (explicitBaseDir: Option.Option<string>) {183const resolveThemePaths = Effect.fn(function* (explicitBaseDir: Option.Option<string>) {
184 // Same precedence as the rest of the CLI: --base-dir, then T3CODE_HOME,184 // Same precedence as the rest of the CLI: --base-dir, then T3CODE_HOME,
...@@ -463,11 +463,11 @@ const resolvableThemeIds = Effect.fn(function* (themesDir: string) {...@@ -463,11 +463,11 @@ const resolvableThemeIds = Effect.fn(function* (themesDir: string) {
463463
464const themeSetCommand = Command.make("set", {464const themeSetCommand = Command.make("set", {
465 baseDir: baseDirFlag,465 baseDir: baseDirFlag,
466 id: Flag.string("id").pipe(466 id: Flag.String("id").pipe(
467 Flag.withDescription("Theme id to publish a file under, instead of its filename."),467 Flag.withDescription("Theme id to publish a file under, instead of its filename."),
468 Flag.optional,468 Flag.optional,
469 ),469 ),
470 theme: Argument.string("theme").pipe(470 theme: Argument.String("theme").pipe(
471 Argument.withDescription(471 Argument.withDescription(
472 '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.',472 '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.',
473 ),473 ),
apps/server/src/cli/triage.ts+3-3
...@@ -142,12 +142,12 @@ const runInteractiveSession = (input: {...@@ -142,12 +142,12 @@ const runInteractiveSession = (input: {
142 child.once("exit", (code, signal) => resume(Effect.succeed(code ?? (signal === null ? 0 : 1))));142 child.once("exit", (code, signal) => resume(Effect.succeed(code ?? (signal === null ? 0 : 1))));
143 });143 });
144144
145const agentFlag = Flag.choice("agent", ["claude", "codex"]).pipe(145const agentFlag = Flag.Literals("agent", ["claude", "codex"]).pipe(
146 Flag.withDescription("Agent CLI to use. Default: ask when both are installed."),146 Flag.withDescription("Agent CLI to use. Default: ask when both are installed."),
147 Flag.optional,147 Flag.optional,
148);148);
149149
150const modelFlag = Flag.string("model").pipe(150const modelFlag = Flag.String("model").pipe(
151 Flag.withDescription("Model passed through to the agent CLI. Default: the agent's default."),151 Flag.withDescription("Model passed through to the agent CLI. Default: the agent's default."),
152 Flag.optional,152 Flag.optional,
153);153);
...@@ -169,7 +169,7 @@ export const triageCommand = Command.make("triage", {...@@ -169,7 +169,7 @@ export const triageCommand = Command.make("triage", {
169 // --base-dir wins; T3CODE_HOME is its documented env equivalent (same169 // --base-dir wins; T3CODE_HOME is its documented env equivalent (same
170 // precedence as `t3 pair`).170 // precedence as `t3 pair`).
171 const explicitBaseDir = Option.getOrUndefined(flags.baseDir);171 const explicitBaseDir = Option.getOrUndefined(flags.baseDir);
172 const envHome = yield* Config.string("T3CODE_HOME").pipe(Config.option);172 const envHome = yield* Config.String("T3CODE_HOME").pipe(Config.option);
173 const baseDir = yield* resolveBaseDir(explicitBaseDir ?? Option.getOrUndefined(envHome));173 const baseDir = yield* resolveBaseDir(explicitBaseDir ?? Option.getOrUndefined(envHome));
174 const paths = yield* ServerConfig.deriveServerPaths(baseDir, undefined, {});174 const paths = yield* ServerConfig.deriveServerPaths(baseDir, undefined, {});
175175
apps/server/src/cli/uninstall.ts+2-2
...@@ -101,7 +101,7 @@ const planUninstall = Effect.fn("cli.uninstall.plan")(function* (input: {...@@ -101,7 +101,7 @@ const planUninstall = Effect.fn("cli.uninstall.plan")(function* (input: {
101101
102export const uninstallCommand = Command.make("uninstall", {102export const uninstallCommand = Command.make("uninstall", {
103 ...projectLocationFlags,103 ...projectLocationFlags,
104 yes: Flag.boolean("yes").pipe(104 yes: Flag.Boolean("yes").pipe(
105 Flag.withAlias("y"),105 Flag.withAlias("y"),
106 Flag.withDescription(106 Flag.withDescription(
107 "Remove everything without asking. Required from a script, where there is no prompt.",107 "Remove everything without asking. Required from a script, where there is no prompt.",
...@@ -161,7 +161,7 @@ const runUninstall = Effect.fn("cli.uninstall.run")(function* (input: {...@@ -161,7 +161,7 @@ const runUninstall = Effect.fn("cli.uninstall.run")(function* (input: {
161 });161 });
162 }162 }
163 const confirmed = yield* Prompt.run(163 const confirmed = yield* Prompt.run(
164 Prompt.confirm({ message: "Remove t3 from this machine?", initial: false }),164 Prompt.Confirm({ message: "Remove t3 from this machine?", initial: false }),
165 ).pipe(Effect.catchTag("QuitError", () => Effect.succeed(false)));165 ).pipe(Effect.catchTag("QuitError", () => Effect.succeed(false)));
166 if (!confirmed) {166 if (!confirmed) {
167 yield* Console.log("Left as is.");167 yield* Console.log("Left as is.");
apps/server/src/cli/update.ts+6-6
...@@ -225,17 +225,17 @@ export const findWindowsShim = Effect.fn("cli.update.find_windows_shim")(functio...@@ -225,17 +225,17 @@ export const findWindowsShim = Effect.fn("cli.update.find_windows_shim")(functio
225225
226const updateFlags = {226const updateFlags = {
227 ...projectLocationFlags,227 ...projectLocationFlags,
228 channel: Flag.choice("channel", CLI_RELEASE_CHANNELS).pipe(228 channel: Flag.Literals("channel", CLI_RELEASE_CHANNELS).pipe(
229 Flag.withDescription(229 Flag.withDescription(
230 "Release channel to follow. Defaults to the channel this t3 was published on.",230 "Release channel to follow. Defaults to the channel this t3 was published on.",
231 ),231 ),
232 Flag.optional,232 Flag.optional,
233 ),233 ),
234 allowDowngrade: Flag.boolean("allow-downgrade").pipe(234 allowDowngrade: Flag.Boolean("allow-downgrade").pipe(
235 Flag.withDescription("Allow moving to an older version than the one running."),235 Flag.withDescription("Allow moving to an older version than the one running."),
236 Flag.withDefault(false),236 Flag.withDefault(false),
237 ),237 ),
238 yes: Flag.boolean("yes").pipe(238 yes: Flag.Boolean("yes").pipe(
239 Flag.withAlias("y"),239 Flag.withAlias("y"),
240 Flag.withDescription(240 Flag.withDescription(
241 "Restart the background service without asking. Required to restart it from a script, where there is no prompt.",241 "Restart the background service without asking. Required to restart it from a script, where there is no prompt.",
...@@ -244,7 +244,7 @@ const updateFlags = {...@@ -244,7 +244,7 @@ const updateFlags = {
244 ),244 ),
245};245};
246246
247const versionArgument = Argument.string("version").pipe(247const versionArgument = Argument.String("version").pipe(
248 Argument.withDescription(248 Argument.withDescription(
249 "Exact version to install. Defaults to the newest release on the channel.",249 "Exact version to install. Defaults to the newest release on the channel.",
250 ),250 ),
...@@ -388,7 +388,7 @@ const runUpdate = Effect.fn("cli.update.run")(function* (input: {...@@ -388,7 +388,7 @@ const runUpdate = Effect.fn("cli.update.run")(function* (input: {
388 });388 });
389 }389 }
390 const confirmed = yield* Prompt.run(390 const confirmed = yield* Prompt.run(
391 Prompt.confirm({ message: "Install the preview build anyway?", initial: false }),391 Prompt.Confirm({ message: "Install the preview build anyway?", initial: false }),
392 ).pipe(Effect.catchTag("QuitError", () => Effect.succeed(false)));392 ).pipe(Effect.catchTag("QuitError", () => Effect.succeed(false)));
393 if (!confirmed) {393 if (!confirmed) {
394 yield* Console.log("Left as is.");394 yield* Console.log("Left as is.");
...@@ -474,7 +474,7 @@ const runUpdate = Effect.fn("cli.update.run")(function* (input: {...@@ -474,7 +474,7 @@ const runUpdate = Effect.fn("cli.update.run")(function* (input: {
474 restartService = true;474 restartService = true;
475 } else if (process.stdin.isTTY && process.stdout.isTTY) {475 } else if (process.stdin.isTTY && process.stdout.isTTY) {
476 restartService = yield* Prompt.run(476 restartService = yield* Prompt.run(
477 Prompt.confirm({477 Prompt.Confirm({
478 message: "Restart the background service once the download is verified?",478 message: "Restart the background service once the download is verified?",
479 initial: true,479 initial: true,
480 }),480 }),
apps/server/src/cloud/bootService.ts+3-3
...@@ -562,10 +562,10 @@ export const make = Effect.fn("cloud.boot_service.make")(function* (input: {...@@ -562,10 +562,10 @@ export const make = Effect.fn("cloud.boot_service.make")(function* (input: {
562 const uid = yield* HostProcessUserId;562 const uid = yield* HostProcessUserId;
563 const httpClient = yield* HttpClient.HttpClient;563 const httpClient = yield* HttpClient.HttpClient;
564 const releaseBaseUrl = Option.getOrUndefined(564 const releaseBaseUrl = Option.getOrUndefined(
565 yield* Config.string(CLI_RELEASE_BASE_URL_ENV).pipe(Config.option),565 yield* Config.String(CLI_RELEASE_BASE_URL_ENV).pipe(Config.option),
566 );566 );
567 const homeDir = yield* Config.string("HOME").pipe(Config.withDefault(""));567 const homeDir = yield* Config.String("HOME").pipe(Config.withDefault(""));
568 const installerPath = yield* Config.string("PATH").pipe(Config.withDefault(""));568 const installerPath = yield* Config.String("PATH").pipe(Config.withDefault(""));
569 const fs = yield* FileSystem.FileSystem;569 const fs = yield* FileSystem.FileSystem;
570 const path = yield* Path.Path;570 const path = yield* Path.Path;
571 const runner = yield* ProcessRunner.ProcessRunner;571 const runner = yield* ProcessRunner.ProcessRunner;
apps/server/src/cloud/publicConfig.ts+5-5
...@@ -96,9 +96,9 @@ export function resolveRelayClientTracingConfig(...@@ -96,9 +96,9 @@ export function resolveRelayClientTracingConfig(
96}96}
9797
98export function makeRelayUrlConfig(fallback = buildTimeRelayUrl) {98export function makeRelayUrlConfig(fallback = buildTimeRelayUrl) {
99 const runtimeConfig = Config.nonEmptyString("T3CODE_RELAY_URL");99 const runtimeConfig = Config.NonEmptyString("T3CODE_RELAY_URL");
100 return (fallback ? runtimeConfig.pipe(Config.withDefault(fallback)) : runtimeConfig).pipe(100 return (fallback ? runtimeConfig.pipe(Config.withDefault(fallback)) : runtimeConfig).pipe(
101 Config.mapOrFail(validateRelayUrl),101 Config.mapEffect(validateRelayUrl),
102 );102 );
103}103}
104104
...@@ -112,7 +112,7 @@ export const relayUrlConfig = makeRelayUrlConfig();...@@ -112,7 +112,7 @@ export const relayUrlConfig = makeRelayUrlConfig();
112export const hostedAppUrlConfig = makePublicValueConfig(112export const hostedAppUrlConfig = makePublicValueConfig(
113 "T3CODE_HOSTED_APP_URL",113 "T3CODE_HOSTED_APP_URL",
114 DEFAULT_HOSTED_APP_URL,114 DEFAULT_HOSTED_APP_URL,
115).pipe(Config.mapOrFail(validateHostedAppUrl));115).pipe(Config.mapEffect(validateHostedAppUrl));
116116
117function validateHostedAppUrl(value: string) {117function validateHostedAppUrl(value: string) {
118 try {118 try {
...@@ -143,7 +143,7 @@ function validateHostedAppUrl(value: string) {...@@ -143,7 +143,7 @@ function validateHostedAppUrl(value: string) {
143}143}
144144
145function makePublicValueConfig(name: string, fallback: string) {145function makePublicValueConfig(name: string, fallback: string) {
146 const runtimeConfig = Config.nonEmptyString(name);146 const runtimeConfig = Config.NonEmptyString(name);
147 return (fallback ? runtimeConfig.pipe(Config.withDefault(fallback)) : runtimeConfig).pipe(147 return (fallback ? runtimeConfig.pipe(Config.withDefault(fallback)) : runtimeConfig).pipe(
148 Config.map((value) => value.trim()),148 Config.map((value) => value.trim()),
149 );149 );
...@@ -182,7 +182,7 @@ export function makeCloudCliOAuthConfig({...@@ -182,7 +182,7 @@ export function makeCloudCliOAuthConfig({
182 clerkCliOAuthClientIdFallback,182 clerkCliOAuthClientIdFallback,
183 ),183 ),
184 }).pipe(184 }).pipe(
185 Config.mapOrFail(({ clerkPublishableKey, clientId }) =>185 Config.mapEffect(({ clerkPublishableKey, clientId }) =>
186 Effect.try({186 Effect.try({
187 try: () => clerkFrontendApiUrlFromPublishableKey(clerkPublishableKey),187 try: () => clerkFrontendApiUrlFromPublishableKey(clerkPublishableKey),
188 catch: (cause) =>188 catch: (cause) =>
apps/server/src/cloud/selfUpdate.ts+1-1
...@@ -182,7 +182,7 @@ export const make = Effect.fn("cloud.server_self_update.make")(function* () {...@@ -182,7 +182,7 @@ export const make = Effect.fn("cloud.server_self_update.make")(function* () {
182 // optional so callers without one (tests, npm-only hosts) still construct.182 // optional so callers without one (tests, npm-only hosts) still construct.
183 const httpClient = yield* HttpClient.HttpClient;183 const httpClient = yield* HttpClient.HttpClient;
184 const releaseBaseUrl = Option.getOrUndefined(184 const releaseBaseUrl = Option.getOrUndefined(
185 yield* Config.string(CLI_RELEASE_BASE_URL_ENV).pipe(Config.option),185 yield* Config.String(CLI_RELEASE_BASE_URL_ENV).pipe(Config.option),
186 );186 );
187 const inFlight = yield* Ref.make(false);187 const inFlight = yield* Ref.make(false);
188188
apps/server/src/device/DeviceHubProxy.ts+14-4
...@@ -134,15 +134,25 @@ const proxyWebSocket = Effect.fn("DeviceHubProxy.proxyWebSocket")(function* (...@@ -134,15 +134,25 @@ const proxyWebSocket = Effect.fn("DeviceHubProxy.proxyWebSocket")(function* (
134 Effect.gen(function* () {134 Effect.gen(function* () {
135 const writeToClient = yield* client.writer;135 const writeToClient = yield* client.writer;
136 const writeToUpstream = yield* upstream.writer;136 const writeToUpstream = yield* upstream.writer;
137 const downstream = upstream.runRaw((data) => writeToClient(data));137 // Whichever side closes first ends the other via scope teardown: a close
138 const upstreamPump = client.runRaw((data) => writeToUpstream(data));138 // fails the pull with a SocketError, which loses the race.
139 // Whichever side closes first ends the other via scope teardown.139 return yield* Effect.raceFirst(
140 yield* Effect.raceFirst(downstream, upstreamPump);140 pumpFrames(upstream, writeToClient),
141 pumpFrames(client, writeToUpstream),
142 );
141 }),143 }),
142 ).pipe(Effect.catchCause(() => Effect.void));144 ).pipe(Effect.catchCause(() => Effect.void));
143 return HttpServerResponse.empty();145 return HttpServerResponse.empty();
144});146});
145147
148const pumpFrames = (source: Socket.Socket, sink: Socket.Writer) =>
149 Effect.gen(function* () {
150 const { pull } = yield* source.reader;
151 while (true) {
152 yield* sink.writeAll(yield* pull);
153 }
154 });
155
146const proxyHttp = Effect.fn("DeviceHubProxy.proxyHttp")(function* (156const proxyHttp = Effect.fn("DeviceHubProxy.proxyHttp")(function* (
147 request: HttpServerRequest.HttpServerRequest,157 request: HttpServerRequest.HttpServerRequest,
148 upstreamUrl: string,158 upstreamUrl: string,
apps/server/src/git/GitManager.ts+2-1
...@@ -2,6 +2,7 @@ import * as Arr from "effect/Array";...@@ -2,6 +2,7 @@ import * as Arr from "effect/Array";
2import * as Cache from "effect/Cache";2import * as Cache from "effect/Cache";
3import * as Context from "effect/Context";3import * as Context from "effect/Context";
4import * as Crypto from "effect/Crypto";4import * as Crypto from "effect/Crypto";
5import * as ByteSize from "effect/ByteSize";
5import * as DateTime from "effect/DateTime";6import * as DateTime from "effect/DateTime";
6import * as Duration from "effect/Duration";7import * as Duration from "effect/Duration";
7import * as Effect from "effect/Effect";8import * as Effect from "effect/Effect";
...@@ -707,7 +708,7 @@ export const make = Effect.gen(function* () {...@@ -707,7 +708,7 @@ export const make = Effect.gen(function* () {
707 return "";708 return "";
708 }709 }
709 const info = yield* fileSystem.stat(instructionPath);710 const info = yield* fileSystem.stat(instructionPath);
710 if (info.type !== "File" || info.size > FileSystem.Size(20_000)) {711 if (info.type !== "File" || info.size > ByteSize.bytes(20_000)) {
711 return "";712 return "";
712 }713 }
713 return (yield* fileSystem.readFileString(instructionPath)).trim();714 return (yield* fileSystem.readFileString(instructionPath)).trim();
apps/server/src/http.ts+7-4
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import Mime from "@effect/platform-node/Mime";1import * as Mime from "effect/unstable/http/Mime";
2import {2import {
3 AuthOrchestrationOperateScope,3 AuthOrchestrationOperateScope,
4 AuthOrchestrationReadScope,4 AuthOrchestrationReadScope,
...@@ -203,7 +203,10 @@ export const assetFileResponse = Effect.fn("assetFileResponse")(function* (...@@ -203,7 +203,10 @@ export const assetFileResponse = Effect.fn("assetFileResponse")(function* (
203 }203 }
204 if (mediaFile && mediaInfo) {204 if (mediaFile && mediaInfo) {
205 const size = bytesToRead ?? mediaInfo.size;205 const size = bytesToRead ?? mediaInfo.size;
206 headers["Content-Type"] ??= Mime.getType(asset.path) ?? "application/octet-stream";206 headers["Content-Type"] ??= Option.getOrElse(
207 Mime.getType(asset.path),
208 () => "application/octet-stream",
209 );
207 headers["Content-Length"] = String(size);210 headers["Content-Length"] = String(size);
208 if (!isMedia) {211 if (!isMedia) {
209 headers["Last-Modified"] = mediaInfo.mtime.toUTCString();212 headers["Last-Modified"] = mediaInfo.mtime.toUTCString();
...@@ -507,7 +510,7 @@ const streamStaticFile = (file: FileSystem.File, size: bigint) =>...@@ -507,7 +510,7 @@ const streamStaticFile = (file: FileSystem.File, size: bigint) =>
507 Effect.fnUntraced(function* (offset: bigint) {510 Effect.fnUntraced(function* (offset: bigint) {
508 if (offset >= size) return;511 if (offset >= size) return;
509 const remaining = size - offset;512 const remaining = size - offset;
510 const bytes = yield* file.readAlloc(remaining < 65_536n ? remaining : 65_536n);513 const bytes = yield* file.readAlloc(Number(remaining < 65_536n ? remaining : 65_536n));
511 if (Option.isNone(bytes)) return;514 if (Option.isNone(bytes)) return;
512 return [bytes.value, offset + BigInt(bytes.value.byteLength)] as const;515 return [bytes.value, offset + BigInt(bytes.value.byteLength)] as const;
513 }),516 }),
...@@ -583,7 +586,7 @@ const handleStaticAndDevRequest = Effect.fn("handleStaticAndDevRequest")(...@@ -583,7 +586,7 @@ const handleStaticAndDevRequest = Effect.fn("handleStaticAndDevRequest")(
583 }586 }
584 }587 }
585 const fileInfo = opened.info;588 const fileInfo = opened.info;
586 const mimeType = Mime.getType(filePath) ?? "application/octet-stream";589 const mimeType = Option.getOrElse(Mime.getType(filePath), () => "application/octet-stream");
587 const isHtml = mimeType === "text/html";590 const isHtml = mimeType === "text/html";
588591
589 // A hash-like name is not enough: custom static files can use the same naming pattern.592 // A hash-like name is not enough: custom static files can use the same naming pattern.
apps/server/src/imageMime.ts+6-4
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1import Mime from "@effect/platform-node/Mime";1import * as Option from "effect/Option";
2import * as Mime from "effect/unstable/http/Mime";
23
3const IMAGE_EXTENSION_BY_MIME_TYPE: Record<string, string> = {4const IMAGE_EXTENSION_BY_MIME_TYPE: Record<string, string> = {
4 "image/avif": ".avif",5 "image/avif": ".avif",
...@@ -121,9 +122,10 @@ export function inferImageExtension(input: { mimeType: string; fileName?: string...@@ -121,9 +122,10 @@ export function inferImageExtension(input: { mimeType: string; fileName?: string
121 return fromMime;122 return fromMime;
122 }123 }
123124
124 const fromMimeExtension = Mime.getExtension(input.mimeType);125 // The registry returns bare extensions ("png"); the safe list is dotted.
125 if (fromMimeExtension && SAFE_IMAGE_FILE_EXTENSIONS.has(fromMimeExtension)) {126 const fromMimeExtension = Option.map(Mime.getExtension(input.mimeType), (ext) => `.${ext}`);
126 return fromMimeExtension;127 if (Option.isSome(fromMimeExtension) && SAFE_IMAGE_FILE_EXTENSIONS.has(fromMimeExtension.value)) {
128 return fromMimeExtension.value;
127 }129 }
128130
129 const fileName = input.fileName?.trim() ?? "";131 const fileName = input.fileName?.trim() ?? "";
apps/server/src/keybindings.ts+1-1
...@@ -61,7 +61,7 @@ export {...@@ -61,7 +61,7 @@ export {
61export const ResolvedKeybindingFromConfig = KeybindingRule.pipe(61export const ResolvedKeybindingFromConfig = KeybindingRule.pipe(
62 Schema.decodeTo(62 Schema.decodeTo(
63 Schema.toType(ResolvedKeybindingRule),63 Schema.toType(ResolvedKeybindingRule),
64 SchemaTransformation.transformOrFail({64 SchemaTransformation.transformEffect({
65 decode: (rule) =>65 decode: (rule) =>
66 Effect.succeed(compileResolvedKeybindingRule(rule)).pipe(66 Effect.succeed(compileResolvedKeybindingRule(rule)).pipe(
67 Effect.filterOrFail(67 Effect.filterOrFail(
apps/server/src/mcp/McpHttpServer.test.ts+1-1
...@@ -681,7 +681,7 @@ it.effect("registers annotated tools and preserves authenticated request context...@@ -681,7 +681,7 @@ it.effect("registers annotated tools and preserves authenticated request context
681 expect(clickTool?.tool.annotations?.openWorldHint).toBe(true);681 expect(clickTool?.tool.annotations?.openWorldHint).toBe(true);
682 expect(clickTool?.tool.outputSchema).toMatchObject({682 expect(clickTool?.tool.outputSchema).toMatchObject({
683 type: "object",683 type: "object",
684 additionalProperties: false,684 additionalProperties: true,
685 description: "The preview action completed successfully.",685 description: "The preview action completed successfully.",
686 });686 });
687687
apps/server/src/mcp/McpSessionRegistry.test.ts+4-2
...@@ -3,6 +3,7 @@ import { expect, it } from "@effect/vitest";...@@ -3,6 +3,7 @@ import { expect, it } from "@effect/vitest";
3import { EnvironmentId, ProviderInstanceId, ThreadId } from "@t3tools/contracts";3import { EnvironmentId, ProviderInstanceId, ThreadId } from "@t3tools/contracts";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import { HttpServer } from "effect/unstable/http";5import { HttpServer } from "effect/unstable/http";
6import * as NetAddress from "effect/unstable/net/NetAddress";
67
7import * as ServerEnvironment from "../environment/ServerEnvironment.ts";8import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
8import * as McpSessionRegistry from "./McpSessionRegistry.ts";9import * as McpSessionRegistry from "./McpSessionRegistry.ts";
...@@ -10,7 +11,7 @@ import * as McpSessionRegistry from "./McpSessionRegistry.ts";...@@ -10,7 +11,7 @@ import * as McpSessionRegistry from "./McpSessionRegistry.ts";
10const environmentId = EnvironmentId.make("environment-1");11const environmentId = EnvironmentId.make("environment-1");
11const makeFakeHttpServer = (hostname: string, port = 43123) =>12const makeFakeHttpServer = (hostname: string, port = 43123) =>
12 HttpServer.HttpServer.of({13 HttpServer.HttpServer.of({
13 address: { _tag: "TcpAddress", hostname, port },14 address: NetAddress.inetAddressFromIpStringUnsafe(hostname, port),
14 serve: (() => Effect.void) as HttpServer.HttpServer["Service"]["serve"],15 serve: (() => Effect.void) as HttpServer.HttpServer["Service"]["serve"],
15 });16 });
16const fakeHttpServer = makeFakeHttpServer("127.0.0.1");17const fakeHttpServer = makeFakeHttpServer("127.0.0.1");
...@@ -89,7 +90,8 @@ it.effect("builds MCP endpoints from the bound server host", () =>...@@ -89,7 +90,8 @@ it.effect("builds MCP endpoints from the bound server host", () =>
89 const cases = [90 const cases = [
90 ["100.64.0.40", "http://100.64.0.40:43123/mcp"],91 ["100.64.0.40", "http://100.64.0.40:43123/mcp"],
91 ["0.0.0.0", "http://127.0.0.1:43123/mcp"],92 ["0.0.0.0", "http://127.0.0.1:43123/mcp"],
92 ["localhost", "http://localhost:43123/mcp"],93 ["::", "http://127.0.0.1:43123/mcp"],
94 ["::1", "http://[::1]:43123/mcp"],
93 ["127.0.0.1", "http://127.0.0.1:43123/mcp"],95 ["127.0.0.1", "http://127.0.0.1:43123/mcp"],
94 ] as const;96 ] as const;
9597
apps/server/src/mcp/McpSessionRegistry.ts+10-14
...@@ -6,6 +6,7 @@ import * as Effect from "effect/Effect";...@@ -6,6 +6,7 @@ import * as Effect from "effect/Effect";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as SynchronizedRef from "effect/SynchronizedRef";7import * as SynchronizedRef from "effect/SynchronizedRef";
8import { HttpServer } from "effect/unstable/http";8import { HttpServer } from "effect/unstable/http";
9import * as NetAddress from "effect/unstable/net/NetAddress";
910
10import * as ServerEnvironment from "../environment/ServerEnvironment.ts";11import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
11import * as McpInvocationContext from "./McpInvocationContext.ts";12import * as McpInvocationContext from "./McpInvocationContext.ts";
...@@ -78,16 +79,12 @@ const bytesToHex = (bytes: Uint8Array): string =>...@@ -78,16 +79,12 @@ const bytesToHex = (bytes: Uint8Array): string =>
7879
79const tokenFromBytes = (bytes: Uint8Array): string => Buffer.from(bytes).toString("base64url");80const tokenFromBytes = (bytes: Uint8Array): string => Buffer.from(bytes).toString("base64url");
8081
81const getHttpMcpEndpointHost = (hostname: string): string => {82// A wildcard bind is reachable on loopback, which is where the provider
82 const normalized = hostname.toLowerCase();83// subprocesses run; anything else is announced as the address it bound.
83 const endpointHostname =84const getHttpMcpEndpointHost = (address: NetAddress.IpAddress): string =>
84 normalized === "0.0.0.0" || normalized === "::" || normalized === "[::]"85 NetAddress.isUnspecified(address)
85 ? "127.0.0.1"86 ? "127.0.0.1"
86 : hostname;87 : NetAddress.formatUrlHostString(NetAddress.formatIp(address));
87 return endpointHostname.includes(":") && !endpointHostname.startsWith("[")
88 ? `[${endpointHostname}]`
89 : endpointHostname;
90};
9188
92const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* (89const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* (
93 options: McpSessionRegistryOptions = {},90 options: McpSessionRegistryOptions = {},
...@@ -99,10 +96,9 @@ const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* (...@@ -99,10 +96,9 @@ const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* (
99 const state = yield* SynchronizedRef.make<RegistryState>({ records: new Map() });96 const state = yield* SynchronizedRef.make<RegistryState>({ records: new Map() });
100 const currentTimeMillis = options.now ? Effect.sync(options.now) : Clock.currentTimeMillis;97 const currentTimeMillis = options.now ? Effect.sync(options.now) : Clock.currentTimeMillis;
101 const livenessWindowMs = options.livenessWindowMs ?? DEFAULT_LIVENESS_WINDOW_MS;98 const livenessWindowMs = options.livenessWindowMs ?? DEFAULT_LIVENESS_WINDOW_MS;
102 const endpoint =99 const endpoint = NetAddress.isInetAddress(httpServer.address)
103 httpServer.address._tag === "TcpAddress"100 ? `http://${getHttpMcpEndpointHost(httpServer.address.address)}:${httpServer.address.port}/mcp`
104 ? `http://${getHttpMcpEndpointHost(httpServer.address.hostname)}:${httpServer.address.port}/mcp`101 : "http://127.0.0.1/mcp";
105 : "http://127.0.0.1/mcp";
106102
107 const hashToken = (token: string) =>103 const hashToken = (token: string) =>
108 crypto104 crypto
apps/server/src/mcp/toolkits/preview/tools.test.ts+3-1
...@@ -65,10 +65,12 @@ it("exports exact object result schemas for preview actions", () => {...@@ -65,10 +65,12 @@ it("exports exact object result schemas for preview actions", () => {
65 "preview_wait_for",65 "preview_wait_for",
66 ] as const;66 ] as const;
67 for (const name of actionNames) {67 for (const name of actionNames) {
68 // Effect's tool schemas follow the decoder default since rc.113 and leave
69 // unmodeled result keys open.
68 expect(Tool.getJsonSchemaFromSchema(PreviewToolkit.tools[name].successSchema)).toEqual({70 expect(Tool.getJsonSchemaFromSchema(PreviewToolkit.tools[name].successSchema)).toEqual({
69 type: "object",71 type: "object",
70 properties: { toolIcon: expect.any(Object) },72 properties: { toolIcon: expect.any(Object) },
71 additionalProperties: false,73 additionalProperties: true,
72 description: "The preview action completed successfully.",74 description: "The preview action completed successfully.",
73 });75 });
74 }76 }
apps/server/src/process/externalLauncher.ts+13-13
...@@ -93,22 +93,22 @@ const compactEnv = (input: Record<string, Option.Option<string>>): NodeJS.Proces...@@ -93,22 +93,22 @@ const compactEnv = (input: Record<string, Option.Option<string>>): NodeJS.Proces
93 );93 );
9494
95const BrowserLaunchEnvConfig = Config.all({95const BrowserLaunchEnvConfig = Config.all({
96 SYSTEMROOT: Config.string("SYSTEMROOT").pipe(Config.option),96 SYSTEMROOT: Config.String("SYSTEMROOT").pipe(Config.option),
97 windir: Config.string("windir").pipe(Config.option),97 windir: Config.String("windir").pipe(Config.option),
98 WSL_DISTRO_NAME: Config.string("WSL_DISTRO_NAME").pipe(Config.option),98 WSL_DISTRO_NAME: Config.String("WSL_DISTRO_NAME").pipe(Config.option),
99 WSL_INTEROP: Config.string("WSL_INTEROP").pipe(Config.option),99 WSL_INTEROP: Config.String("WSL_INTEROP").pipe(Config.option),
100 SSH_CONNECTION: Config.string("SSH_CONNECTION").pipe(Config.option),100 SSH_CONNECTION: Config.String("SSH_CONNECTION").pipe(Config.option),
101 SSH_TTY: Config.string("SSH_TTY").pipe(Config.option),101 SSH_TTY: Config.String("SSH_TTY").pipe(Config.option),
102 container: Config.string("container").pipe(Config.option),102 container: Config.String("container").pipe(Config.option),
103 DISPLAY: Config.string("DISPLAY").pipe(Config.option),103 DISPLAY: Config.String("DISPLAY").pipe(Config.option),
104 WAYLAND_DISPLAY: Config.string("WAYLAND_DISPLAY").pipe(Config.option),104 WAYLAND_DISPLAY: Config.String("WAYLAND_DISPLAY").pipe(Config.option),
105}).pipe(Config.map(compactEnv));105}).pipe(Config.map(compactEnv));
106106
107const CommandLookupEnvConfig = Config.all({107const CommandLookupEnvConfig = Config.all({
108 PATH: Config.string("PATH").pipe(Config.option),108 PATH: Config.String("PATH").pipe(Config.option),
109 Path: Config.string("Path").pipe(Config.option),109 Path: Config.String("Path").pipe(Config.option),
110 path: Config.string("path").pipe(Config.option),110 path: Config.String("path").pipe(Config.option),
111 PATHEXT: Config.string("PATHEXT").pipe(Config.option),111 PATHEXT: Config.String("PATHEXT").pipe(Config.option),
112}).pipe(Config.map(compactEnv));112}).pipe(Config.map(compactEnv));
113113
114const readBrowserLaunchEnv = BrowserLaunchEnvConfig.pipe(Effect.orElseSucceed(() => ({})));114const readBrowserLaunchEnv = BrowserLaunchEnvConfig.pipe(Effect.orElseSucceed(() => ({})));
apps/server/src/project/AgentSessionScanner.test.ts+7-4
...@@ -1144,7 +1144,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {...@@ -1144,7 +1144,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {
1144 Effect.map((file) => ({1144 Effect.map((file) => ({
1145 ...file,1145 ...file,
1146 stat: file.stat,1146 stat: file.stat,
1147 readAlloc: (size: FileSystem.SizeInput) => {1147 readAlloc: (size: number) => {
1148 reservedBytes += Number(size);1148 reservedBytes += Number(size);
1149 requests.push(Number(size));1149 requests.push(Number(size));
1150 return file.readAlloc(size);1150 return file.readAlloc(size);
...@@ -1712,7 +1712,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {...@@ -1712,7 +1712,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {
1712 : {1712 : {
1713 ...file,1713 ...file,
1714 stat: file.stat,1714 stat: file.stat,
1715 readAlloc: (size: FileSystem.SizeInput) =>1715 readAlloc: (size: number) =>
1716 file.readAlloc(size).pipe(1716 file.readAlloc(size).pipe(
1717 Effect.tap((chunk) =>1717 Effect.tap((chunk) =>
1718 Effect.sync(() => {1718 Effect.sync(() => {
...@@ -2160,7 +2160,10 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {...@@ -2160,7 +2160,10 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {
2160 payload: { type: "user_message", message: "Future work" },2160 payload: { type: "user_message", message: "Future work" },
2161 }),2161 }),
2162 ].join("\n"),2162 ].join("\n"),
2163 mtimeMs: nowMs + 1,2163 // Node's BigInt stat (which the Effect file system now uses) floors
2164 // sub-millisecond precision, so a one-millisecond offset can round
2165 // back to `nowMs`; use a full second to stay clear of the clock.
2166 mtimeMs: nowMs + 1_000,
2164 });2167 });
21652168
2166 const outcomes = yield* runRecentThreadOutcomes({2169 const outcomes = yield* runRecentThreadOutcomes({
...@@ -2214,7 +2217,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {...@@ -2214,7 +2217,7 @@ it.layer(NodeServices.layer)("AgentSessionScanner", (it) => {
2214 Effect.map((file) => ({2217 Effect.map((file) => ({
2215 ...file,2218 ...file,
2216 stat: file.stat,2219 stat: file.stat,
2217 readAlloc: (size: FileSystem.SizeInput) =>2220 readAlloc: (size: number) =>
2218 file.readAlloc(size).pipe(2221 file.readAlloc(size).pipe(
2219 Effect.tap((chunk) =>2222 Effect.tap((chunk) =>
2220 Effect.gen(function* () {2223 Effect.gen(function* () {
apps/server/src/provider/Drivers/CursorSkills.ts+3-2
...@@ -11,6 +11,7 @@...@@ -11,6 +11,7 @@
11import * as NodeOS from "node:os";11import * as NodeOS from "node:os";
1212
13import type { ServerProviderSkill } from "@t3tools/contracts";13import type { ServerProviderSkill } from "@t3tools/contracts";
14import * as ByteSize from "effect/ByteSize";
14import * as Effect from "effect/Effect";15import * as Effect from "effect/Effect";
15import * as FileSystem from "effect/FileSystem";16import * as FileSystem from "effect/FileSystem";
16import * as Path from "effect/Path";17import * as Path from "effect/Path";
...@@ -23,9 +24,9 @@ const SKILL_MENTION_PATTERN =...@@ -23,9 +24,9 @@ const SKILL_MENTION_PATTERN =
23 /(^|\s)\p{Sc}(?![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|$)/gu;24 /(^|\s)\p{Sc}(?![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|$)/gu;
24const HAS_SKILL_MENTION_PATTERN = new RegExp(SKILL_MENTION_PATTERN.source, "u");25const HAS_SKILL_MENTION_PATTERN = new RegExp(SKILL_MENTION_PATTERN.source, "u");
25const MAX_SKILL_DEPTH = 10;26const MAX_SKILL_DEPTH = 10;
26const MAX_SKILL_BYTES = FileSystem.Size(1_000_000);27const MAX_SKILL_BYTES = ByteSize.bytes(1_000_000);
27const MAX_SKILL_SCAN_ENTRIES = 10_000;28const MAX_SKILL_SCAN_ENTRIES = 10_000;
28const MAX_SKILL_SCAN_BYTES = FileSystem.Size(8_000_000);29const MAX_SKILL_SCAN_BYTES = ByteSize.bytes(8_000_000);
2930
30interface CursorSkillFrontmatter {31interface CursorSkillFrontmatter {
31 readonly description?: string;32 readonly description?: string;
apps/server/src/provider/providerMaintenance.ts+4-4
...@@ -46,10 +46,10 @@ const compactEnv = (input: Record<string, Option.Option<string>>): NodeJS.Proces...@@ -46,10 +46,10 @@ const compactEnv = (input: Record<string, Option.Option<string>>): NodeJS.Proces
46 );46 );
4747
48const CommandLookupEnvConfig = Config.all({48const CommandLookupEnvConfig = Config.all({
49 PATH: Config.string("PATH").pipe(Config.option),49 PATH: Config.String("PATH").pipe(Config.option),
50 Path: Config.string("Path").pipe(Config.option),50 Path: Config.String("Path").pipe(Config.option),
51 path: Config.string("path").pipe(Config.option),51 path: Config.String("path").pipe(Config.option),
52 PATHEXT: Config.string("PATHEXT").pipe(Config.option),52 PATHEXT: Config.String("PATHEXT").pipe(Config.option),
53}).pipe(Config.map(compactEnv));53}).pipe(Config.map(compactEnv));
5454
55const readCommandLookupEnv = CommandLookupEnvConfig.pipe(Effect.orElseSucceed(() => ({})));55const readCommandLookupEnv = CommandLookupEnvConfig.pipe(Effect.orElseSucceed(() => ({})));
apps/server/src/server.test.ts+8-6
...@@ -86,6 +86,7 @@ import {...@@ -86,6 +86,7 @@ import {
86} from "effect/unstable/http";86} from "effect/unstable/http";
87import { OtlpSerialization, OtlpTracer } from "effect/unstable/observability";87import { OtlpSerialization, OtlpTracer } from "effect/unstable/observability";
88import { RpcClient, RpcSerialization } from "effect/unstable/rpc";88import { RpcClient, RpcSerialization } from "effect/unstable/rpc";
89import * as NetAddress from "effect/unstable/net/NetAddress";
89import * as Socket from "effect/unstable/socket/Socket";90import * as Socket from "effect/unstable/socket/Socket";
90import { vi } from "vite-plus/test";91import { vi } from "vite-plus/test";
9192
...@@ -1242,9 +1243,10 @@ const wsRpcProtocolLayer = (wsUrl: string, onMessage?: (message: string) => void...@@ -1242,9 +1243,10 @@ const wsRpcProtocolLayer = (wsUrl: string, onMessage?: (message: string) => void
1242 const webSocketConstructorLayer = Layer.succeed(1243 const webSocketConstructorLayer = Layer.succeed(
1243 Socket.WebSocketConstructor,1244 Socket.WebSocketConstructor,
1244 (socketUrl, protocols) => {1245 (socketUrl, protocols) => {
1246 // Socket.makeWebSocket only ever passes its `protocols` option here.
1245 const socket = new NodeSocket.NodeWS.WebSocket(1247 const socket = new NodeSocket.NodeWS.WebSocket(
1246 socketUrl,1248 socketUrl,
1247 protocols,1249 protocols as string | string[] | undefined,
1248 cookie ? { headers: { cookie } } : undefined,1250 cookie ? { headers: { cookie } } : undefined,
1249 );1251 );
1250 if (onMessage) socket.on("message", (data) => onMessage(data.toString()));1252 if (onMessage) socket.on("message", (data) => onMessage(data.toString()));
...@@ -1304,7 +1306,7 @@ const appendSessionCookieToWsUrl = (url: string, sessionCookieHeader: string) =>...@@ -1304,7 +1306,7 @@ const appendSessionCookieToWsUrl = (url: string, sessionCookieHeader: string) =>
1304const getHttpServerUrl = (pathname = "") =>1306const getHttpServerUrl = (pathname = "") =>
1305 Effect.gen(function* () {1307 Effect.gen(function* () {
1306 const server = yield* HttpServer.HttpServer;1308 const server = yield* HttpServer.HttpServer;
1307 const address = server.address as HttpServer.TcpAddress;1309 const address = server.address as NetAddress.InetAddress;
1308 return `http://127.0.0.1:${address.port}${pathname}`;1310 return `http://127.0.0.1:${address.port}${pathname}`;
1309 });1311 });
13101312
...@@ -1664,7 +1666,7 @@ const getWsServerUrl = (...@@ -1664,7 +1666,7 @@ const getWsServerUrl = (
1664) =>1666) =>
1665 Effect.gen(function* () {1667 Effect.gen(function* () {
1666 const server = yield* HttpServer.HttpServer;1668 const server = yield* HttpServer.HttpServer;
1667 const address = server.address as HttpServer.TcpAddress;1669 const address = server.address as NetAddress.InetAddress;
1668 const baseUrl = `ws://127.0.0.1:${address.port}${pathname}`;1670 const baseUrl = `ws://127.0.0.1:${address.port}${pathname}`;
1669 if (options?.authenticated === false) {1671 if (options?.authenticated === false) {
1670 return baseUrl;1672 return baseUrl;
...@@ -2065,7 +2067,7 @@ it.layer(NodeServices.layer)("server router seam", (it) => {...@@ -2065,7 +2067,7 @@ it.layer(NodeServices.layer)("server router seam", (it) => {
2065 return new Proxy(file, {2067 return new Proxy(file, {
2066 get(target, key) {2068 get(target, key) {
2067 if (key === "readAlloc") {2069 if (key === "readAlloc") {
2068 return (size: FileSystem.SizeInput) => {2070 return (size: number) => {
2069 bodyReads += 1;2071 bodyReads += 1;
2070 return target.readAlloc(size);2072 return target.readAlloc(size);
2071 };2073 };
...@@ -12629,14 +12631,14 @@ it.live(...@@ -12629,14 +12631,14 @@ it.live(
1262912631
12630 const report = formatTransferBudgetReport(runs);12632 const report = formatTransferBudgetReport(runs);
12631 yield* Effect.logInfo(`\n${report}`);12633 yield* Effect.logInfo(`\n${report}`);
12632 const reportPath = yield* Config.string("T3CODE_TRANSFER_BUDGET_REPORT_PATH").pipe(12634 const reportPath = yield* Config.String("T3CODE_TRANSFER_BUDGET_REPORT_PATH").pipe(
12633 Config.option,12635 Config.option,
12634 );12636 );
12635 if (Option.isSome(reportPath)) {12637 if (Option.isSome(reportPath)) {
12636 const fileSystem = yield* FileSystem.FileSystem;12638 const fileSystem = yield* FileSystem.FileSystem;
12637 yield* fileSystem.writeFileString(reportPath.value, report);12639 yield* fileSystem.writeFileString(reportPath.value, report);
12638 }12640 }
12639 const resultPath = yield* Config.string("T3CODE_TRANSFER_BUDGET_RESULT_PATH").pipe(12641 const resultPath = yield* Config.String("T3CODE_TRANSFER_BUDGET_RESULT_PATH").pipe(
12640 Config.option,12642 Config.option,
12641 );12643 );
12642 if (Option.isSome(resultPath)) {12644 if (Option.isSome(resultPath)) {
apps/server/src/sourceControl/BitbucketApi.ts+4-4
...@@ -39,12 +39,12 @@ const DEFAULT_MAX_RESPONSE_BYTES = 8 * 1024 * 1024;...@@ -39,12 +39,12 @@ const DEFAULT_MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
39const MAX_REDIRECTS = 3;39const MAX_REDIRECTS = 3;
4040
41const BitbucketApiEnvConfig = Config.all({41const BitbucketApiEnvConfig = Config.all({
42 baseUrl: Config.string("T3CODE_BITBUCKET_API_BASE_URL").pipe(42 baseUrl: Config.String("T3CODE_BITBUCKET_API_BASE_URL").pipe(
43 Config.withDefault(DEFAULT_API_BASE_URL),43 Config.withDefault(DEFAULT_API_BASE_URL),
44 ),44 ),
45 accessToken: Config.string("T3CODE_BITBUCKET_ACCESS_TOKEN").pipe(Config.option),45 accessToken: Config.String("T3CODE_BITBUCKET_ACCESS_TOKEN").pipe(Config.option),
46 email: Config.string("T3CODE_BITBUCKET_EMAIL").pipe(Config.option),46 email: Config.String("T3CODE_BITBUCKET_EMAIL").pipe(Config.option),
47 apiToken: Config.string("T3CODE_BITBUCKET_API_TOKEN").pipe(Config.option),47 apiToken: Config.String("T3CODE_BITBUCKET_API_TOKEN").pipe(Config.option),
48});48});
4949
50const BitbucketApiOperation = Schema.Literals([50const BitbucketApiOperation = Schema.Literals([
apps/server/src/telemetry/AnalyticsService.ts+6-6
...@@ -30,18 +30,18 @@ interface BufferedAnalyticsEvent {...@@ -30,18 +30,18 @@ interface BufferedAnalyticsEvent {
30}30}
3131
32const TelemetryEnvConfig = Config.all({32const TelemetryEnvConfig = Config.all({
33 posthogKey: Config.string("T3CODE_POSTHOG_KEY").pipe(33 posthogKey: Config.String("T3CODE_POSTHOG_KEY").pipe(
34 Config.withDefault("phc_XOWci4oZP4VvLiEyrFqkFjP4CZn55mjYYBMREK5Wd6m"),34 Config.withDefault("phc_XOWci4oZP4VvLiEyrFqkFjP4CZn55mjYYBMREK5Wd6m"),
35 ),35 ),
36 posthogHost: Config.string("T3CODE_POSTHOG_HOST").pipe(36 posthogHost: Config.String("T3CODE_POSTHOG_HOST").pipe(
37 Config.withDefault("https://us.i.posthog.com"),37 Config.withDefault("https://us.i.posthog.com"),
38 ),38 ),
39 enabled: Config.boolean("T3CODE_TELEMETRY_ENABLED").pipe(Config.withDefault(true)),39 enabled: Config.Boolean("T3CODE_TELEMETRY_ENABLED").pipe(Config.withDefault(true)),
40 flushBatchSize: Config.number("T3CODE_TELEMETRY_FLUSH_BATCH_SIZE").pipe(Config.withDefault(20)),40 flushBatchSize: Config.Number("T3CODE_TELEMETRY_FLUSH_BATCH_SIZE").pipe(Config.withDefault(20)),
41 maxBufferedEvents: Config.number("T3CODE_TELEMETRY_MAX_BUFFERED_EVENTS").pipe(41 maxBufferedEvents: Config.Number("T3CODE_TELEMETRY_MAX_BUFFERED_EVENTS").pipe(
42 Config.withDefault(1_000),42 Config.withDefault(1_000),
43 ),43 ),
44 wslDistroName: Config.string("WSL_DISTRO_NAME").pipe(Config.option),44 wslDistroName: Config.String("WSL_DISTRO_NAME").pipe(Config.option),
45});45});
4646
47export class AnalyticsService extends Context.Service<47export class AnalyticsService extends Context.Service<
apps/server/src/textGeneration/TextGenerationUtils.ts+7-1
...@@ -9,7 +9,13 @@ const decodeJsonThreadTitle = Schema.decodeOption(...@@ -9,7 +9,13 @@ const decodeJsonThreadTitle = Schema.decodeOption(
99
10/** Convert an Effect Schema to a flat JSON Schema object, inlining `$defs` when present. */10/** Convert an Effect Schema to a flat JSON Schema object, inlining `$defs` when present. */
11export function toJsonSchemaObject(schema: Schema.Top): unknown {11export function toJsonSchemaObject(schema: Schema.Top): unknown {
12 const document = Schema.toJsonSchemaDocument(Schema.toType(schema));12 // The type side, so decoding defaults do not turn required fields into
13 // optional ones, and closed objects (`additionalProperties: false`):
14 // structured-output modes require both, and closed was the generator
15 // default before effect rc.113.
16 const document = Schema.toJsonSchemaDocument(Schema.toType(schema), {
17 onExcessProperty: "error",
18 });
13 if (document.definitions && Object.keys(document.definitions).length > 0) {19 if (document.definitions && Object.keys(document.definitions).length > 0) {
14 return { ...document.schema, $defs: document.definitions };20 return { ...document.schema, $defs: document.definitions };
15 }21 }
apps/server/vite.config.ts+2-2
...@@ -100,8 +100,8 @@ export default mergeConfig(...@@ -100,8 +100,8 @@ export default mergeConfig(
100 // (declared deps are external by default, which is what this change is100 // (declared deps are external by default, which is what this change is
101 // undoing). `neverBundle` forces the native packages out: returning101 // undoing). `neverBundle` forces the native packages out: returning
102 // false from `alwaysBundle` only means "no opinion", so a transitive102 // false from `alwaysBundle` only means "no opinion", so a transitive
103 // dependency would still be bundled — which silently inlined103 // dependency would still be bundled — which silently inlined native
104 // msgpackr-extract and its loader, losing native acceleration.104 // loaders such as node-gyp-build, losing native acceleration.
105 alwaysBundle: shouldBundleCliDependency,105 alwaysBundle: shouldBundleCliDependency,
106 neverBundle: (id: string) => isExternalCliDependency(id),106 neverBundle: (id: string) => isExternalCliDependency(id),
107 onlyBundle: false,107 onlyBundle: false,
infra/relay/package.json+1-1
...@@ -18,7 +18,7 @@...@@ -18,7 +18,7 @@
18 "@t3tools/client-runtime": "workspace:*",18 "@t3tools/client-runtime": "workspace:*",
19 "@t3tools/contracts": "workspace:*",19 "@t3tools/contracts": "workspace:*",
20 "@t3tools/shared": "workspace:*",20 "@t3tools/shared": "workspace:*",
21 "alchemy": "2.0.0-beta.76",21 "alchemy": "2.0.0-beta.78",
22 "drizzle-orm": "1.0.0-rc.5-ab785fc",22 "drizzle-orm": "1.0.0-rc.5-ab785fc",
23 "effect": "catalog:"23 "effect": "catalog:"
24 },24 },
infra/relay/scripts/android-push-watch.ts+2-1
...@@ -88,8 +88,9 @@ const main = Effect.gen(function* () {...@@ -88,8 +88,9 @@ const main = Effect.gen(function* () {
88 );88 );
89 const socketConstructor = Layer.succeed(89 const socketConstructor = Layer.succeed(
90 Socket.WebSocketConstructor,90 Socket.WebSocketConstructor,
91 // Socket.makeWebSocket only ever passes its `protocols` option here.
91 (url, protocols) =>92 (url, protocols) =>
92 new NodeSocket.NodeWS.WebSocket(url, protocols, {93 new NodeSocket.NodeWS.WebSocket(url, protocols as string | string[] | undefined, {
93 headers: { authorization: `Bearer ${connection.bearerToken}` },94 headers: { authorization: `Bearer ${connection.bearerToken}` },
94 }) as unknown as globalThis.WebSocket,95 }) as unknown as globalThis.WebSocket,
95 );96 );
infra/relay/scripts/deploy.ts+22-16
...@@ -7,11 +7,12 @@ import * as Apply from "alchemy/Apply";...@@ -7,11 +7,12 @@ import * as Apply from "alchemy/Apply";
7import { ArtifactStore, createArtifactStore, provideFreshArtifactStore } from "alchemy/Artifacts";7import { ArtifactStore, createArtifactStore, provideFreshArtifactStore } from "alchemy/Artifacts";
8import { AuthProviders } from "alchemy/Auth/AuthProvider";8import { AuthProviders } from "alchemy/Auth/AuthProvider";
9import { CredentialsStoreLive } from "alchemy/Auth/Credentials";9import { CredentialsStoreLive } from "alchemy/Auth/Credentials";
10import { ProfileLive } from "alchemy/Auth/Profile";10import { ProfileStoreLive } from "alchemy/Auth/Profile";
11import * as Cloudflare from "alchemy/Cloudflare";11import * as Cloudflare from "alchemy/Cloudflare";
12import { Cli } from "alchemy/Cli/Cli";12import { layerNonInteractive } from "alchemy/Interaction";
13import { LoggingCli } from "alchemy/Cli/LoggingCli";13import { LoggingCli } from "alchemy/Cli/LoggingCli";
14import * as Plan from "alchemy/Plan";14import * as Plan from "alchemy/Plan";
15import { Cli } from "alchemy/Report";
15import * as Stage from "alchemy/Stage";16import * as Stage from "alchemy/Stage";
16import * as State from "alchemy/State/State";17import * as State from "alchemy/State/State";
17import { TelemetryLive } from "alchemy/Telemetry/Layer";18import { TelemetryLive } from "alchemy/Telemetry/Layer";
...@@ -195,7 +196,7 @@ const loadDeployConfigProvider = Effect.fn("relay.deploy.loadConfigProvider")(fu...@@ -195,7 +196,7 @@ const loadDeployConfigProvider = Effect.fn("relay.deploy.loadConfigProvider")(fu
195 );196 );
196});197});
197198
198const relayDeployStage = Config.nonEmptyString("stage").pipe(199const relayDeployStage = Config.NonEmptyString("stage").pipe(
199 Config.option,200 Config.option,
200 Config.map(201 Config.map(
201 Option.getOrElse(() => `dev_${process.env.USER ?? process.env.USERNAME ?? "unknown"}`),202 Option.getOrElse(() => `dev_${process.env.USER ?? process.env.USERNAME ?? "unknown"}`),
...@@ -219,7 +220,7 @@ const writeGithubOutput = Effect.fn("relay.deploy.writeGithubOutput")(function*...@@ -219,7 +220,7 @@ const writeGithubOutput = Effect.fn("relay.deploy.writeGithubOutput")(function*
219 outcome: RelayDeployOutcome,220 outcome: RelayDeployOutcome,
220) {221) {
221 const fs = yield* FileSystem.FileSystem;222 const fs = yield* FileSystem.FileSystem;
222 const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT");223 const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT");
223 yield* fs.writeFileString(224 yield* fs.writeFileString(
224 githubOutputPath,225 githubOutputPath,
225 serializeGithubOutput({226 serializeGithubOutput({
...@@ -259,11 +260,16 @@ const deployBaseServices = Layer.mergeAll(...@@ -259,11 +260,16 @@ const deployBaseServices = Layer.mergeAll(
259 Layer.succeed(AuthProviders, {}),260 Layer.succeed(AuthProviders, {}),
260 Layer.succeed(ArtifactStore, createArtifactStore()),261 Layer.succeed(ArtifactStore, createArtifactStore()),
261 Layer.provideMerge(AlchemyContextLive, PlatformServices),262 Layer.provideMerge(AlchemyContextLive, PlatformServices),
262 Layer.provide(ProfileLive, PlatformServices),263 Layer.provide(ProfileStoreLive, PlatformServices),
263 Layer.provide(CredentialsStoreLive, PlatformServices),264 Layer.provide(CredentialsStoreLive, PlatformServices),
264 FetchHttpClient.layer,265 FetchHttpClient.layer,
265 TelemetryLive,266 TelemetryLive,
266 LoggingCli,267 // LoggingCli captures the prompt environment when it is built.
268 Layer.provide(LoggingCli, PlatformServices),
269 // Alchemy's auth providers prompt through this service. None are configured
270 // here and the apply confirmation is this script's own prompt, so a prompt
271 // reaching it is a typed failure rather than a hang in CI.
272 layerNonInteractive(),
267);273);
268const deployServices = deployBaseServices;274const deployServices = deployBaseServices;
269275
...@@ -376,7 +382,7 @@ const runRelayDeploy = Effect.fn("relay.deploy.run")(...@@ -376,7 +382,7 @@ const runRelayDeploy = Effect.fn("relay.deploy.run")(
376 if (!options.yes && changed) {382 if (!options.yes && changed) {
377 yield* cli.displayPlan(plan);383 yield* cli.displayPlan(plan);
378 const approved = yield* Prompt.run(384 const approved = yield* Prompt.run(
379 Prompt.confirm({385 Prompt.Confirm({
380 message: "Apply this relay deployment?",386 message: "Apply this relay deployment?",
381 }),387 }),
382 );388 );
...@@ -445,43 +451,43 @@ export const deploy = Effect.fn("relay.deploy")(function* (options: RelayDeployO...@@ -445,43 +451,43 @@ export const deploy = Effect.fn("relay.deploy")(function* (options: RelayDeployO
445export const relayDeployCommand = Command.make(451export const relayDeployCommand = Command.make(
446 "relay-deploy",452 "relay-deploy",
447 {453 {
448 dryRun: Flag.boolean("dry-run").pipe(454 dryRun: Flag.Boolean("dry-run").pipe(
449 Flag.withDescription("Dry run the deployment without applying changes."),455 Flag.withDescription("Dry run the deployment without applying changes."),
450 Flag.withDefault(false),456 Flag.withDefault(false),
451 ),457 ),
452 force: Flag.boolean("force").pipe(458 force: Flag.Boolean("force").pipe(
453 Flag.withDescription("Force updates for resources that would otherwise no-op."),459 Flag.withDescription("Force updates for resources that would otherwise no-op."),
454 Flag.withDefault(false),460 Flag.withDefault(false),
455 ),461 ),
456 envFile: Flag.string("env-file").pipe(462 envFile: Flag.String("env-file").pipe(
457 Flag.withDescription(463 Flag.withDescription(
458 "Environment file to load. Defaults to infra/relay/.env with process env fallback.",464 "Environment file to load. Defaults to infra/relay/.env with process env fallback.",
459 ),465 ),
460 Flag.optional,466 Flag.optional,
461 ),467 ),
462 stage: Flag.string("stage").pipe(468 stage: Flag.String("stage").pipe(
463 Flag.withDescription("Stage to deploy. Defaults to dev_${USER}."),469 Flag.withDescription("Stage to deploy. Defaults to dev_${USER}."),
464 Flag.optional,470 Flag.optional,
465 ),471 ),
466 yes: Flag.boolean("yes").pipe(472 yes: Flag.Boolean("yes").pipe(
467 Flag.withDescription("Skip the deployment confirmation prompt."),473 Flag.withDescription("Skip the deployment confirmation prompt."),
468 Flag.withDefault(false),474 Flag.withDefault(false),
469 ),475 ),
470 adopt: Flag.boolean("adopt").pipe(476 adopt: Flag.Boolean("adopt").pipe(
471 Flag.withDescription("Adopt pre-existing cloud resources that conflict with this stack."),477 Flag.withDescription("Adopt pre-existing cloud resources that conflict with this stack."),
472 Flag.withDefault(false),478 Flag.withDefault(false),
473 ),479 ),
474 githubOutput: Flag.boolean("github-output").pipe(480 githubOutput: Flag.Boolean("github-output").pipe(
475 Flag.withDescription("Append relay deployment metadata to GITHUB_OUTPUT."),481 Flag.withDescription("Append relay deployment metadata to GITHUB_OUTPUT."),
476 Flag.withDefault(false),482 Flag.withDefault(false),
477 ),483 ),
478 githubEnvFile: Flag.string("github-env-file").pipe(484 githubEnvFile: Flag.String("github-env-file").pipe(
479 Flag.withDescription(485 Flag.withDescription(
480 "Write relay client tracing variables to a file suitable for GITHUB_ENV.",486 "Write relay client tracing variables to a file suitable for GITHUB_ENV.",
481 ),487 ),
482 Flag.optional,488 Flag.optional,
483 ),489 ),
484 readState: Flag.boolean("read-state").pipe(490 readState: Flag.Boolean("read-state").pipe(
485 Flag.withDescription("Read the deployed stack output without planning or applying changes."),491 Flag.withDescription("Read the deployed stack output without planning or applying changes."),
486 Flag.withDefault(false),492 Flag.withDefault(false),
487 ),493 ),
infra/relay/src/worker.ts+9-9
...@@ -141,19 +141,19 @@ export const ApiLive = Api.make(...@@ -141,19 +141,19 @@ export const ApiLive = Api.make(
141 //141 //
142 // 2. Create bindings142 // 2. Create bindings
143 //143 //
144 const apnsEnabled = yield* Config.boolean("APNS_ENABLED").pipe(Config.withDefault(true));144 const apnsEnabled = yield* Config.Boolean("APNS_ENABLED").pipe(Config.withDefault(true));
145 const apnsCredentials = apnsEnabled145 const apnsCredentials = apnsEnabled
146 ? {146 ? {
147 environment: yield* Config.schema(RelayConfiguration.ApnsEnvironment, "APNS_ENVIRONMENT"),147 environment: yield* Config.schema(RelayConfiguration.ApnsEnvironment, "APNS_ENVIRONMENT"),
148 teamId: yield* Config.string("APNS_TEAM_ID"),148 teamId: yield* Config.String("APNS_TEAM_ID"),
149 keyId: yield* Config.string("APNS_KEY_ID"),149 keyId: yield* Config.String("APNS_KEY_ID"),
150 bundleId: yield* Config.string("APNS_BUNDLE_ID"),150 bundleId: yield* Config.String("APNS_BUNDLE_ID"),
151 privateKey: yield* Config.redacted("APNS_PRIVATE_KEY"),151 privateKey: yield* Config.Redacted("APNS_PRIVATE_KEY"),
152 }152 }
153 : null;153 : null;
154 const fcmServiceAccount = Option.getOrUndefined(154 const fcmServiceAccount = Option.getOrUndefined(
155 Option.filter(155 Option.filter(
156 yield* Config.option(Config.redacted("FCM_SERVICE_ACCOUNT")),156 yield* Config.option(Config.Redacted("FCM_SERVICE_ACCOUNT")),
157 (value) => Redacted.value(value).trim().length > 0,157 (value) => Redacted.value(value).trim().length > 0,
158 ),158 ),
159 );159 );
...@@ -165,9 +165,9 @@ export const ApiLive = Api.make(...@@ -165,9 +165,9 @@ export const ApiLive = Api.make(
165 const axiomIngestToken = yield* observability.workerIngestToken.token;165 const axiomIngestToken = yield* observability.workerIngestToken.token;
166 const axiomTracesEndpoint = yield* observability.traces.otelTracesEndpoint;166 const axiomTracesEndpoint = yield* observability.traces.otelTracesEndpoint;
167167
168 const clerkSecretKey = yield* Config.redacted("CLERK_SECRET_KEY");168 const clerkSecretKey = yield* Config.Redacted("CLERK_SECRET_KEY");
169 const clerkPublishableKey = yield* Config.string("CLERK_PUBLISHABLE_KEY");169 const clerkPublishableKey = yield* Config.String("CLERK_PUBLISHABLE_KEY");
170 const clerkJwtAudience = yield* Config.string("CLERK_JWT_AUDIENCE");170 const clerkJwtAudience = yield* Config.String("CLERK_JWT_AUDIENCE");
171171
172 const cloudMintPrivateKey = yield* cloudMintKeyPair.privateKey;172 const cloudMintPrivateKey = yield* cloudMintKeyPair.privateKey;
173 const cloudMintPublicKey = yield* cloudMintKeyPair.publicKey;173 const cloudMintPublicKey = yield* cloudMintKeyPair.publicKey;
infra/relay/src/zone.ts+3-3
...@@ -21,9 +21,9 @@ function withLogicalId<Resource extends object>(resource: Resource, logicalId: s...@@ -21,9 +21,9 @@ function withLogicalId<Resource extends object>(resource: Resource, logicalId: s
2121
22export const RelayDeploymentConfig = Effect.gen(function* () {22export const RelayDeploymentConfig = Effect.gen(function* () {
23 const { stage } = yield* Alchemy.Stack;23 const { stage } = yield* Alchemy.Stack;
24 const relayApiZoneName = yield* Config.nonEmptyString("RELAY_API_ZONE_NAME");24 const relayApiZoneName = yield* Config.NonEmptyString("RELAY_API_ZONE_NAME");
25 const managedEndpointZoneName = yield* Config.nonEmptyString("RELAY_TUNNEL_ZONE_NAME");25 const managedEndpointZoneName = yield* Config.NonEmptyString("RELAY_TUNNEL_ZONE_NAME");
26 const relayPublicDomainOverride = yield* Config.string("RELAY_DOMAIN").pipe(26 const relayPublicDomainOverride = yield* Config.String("RELAY_DOMAIN").pipe(
27 Config.option,27 Config.option,
28 Config.map(28 Config.map(
29 Option.flatMap((value) => {29 Option.flatMap((value) => {
knip.jsonc+2-2
...@@ -26,8 +26,8 @@...@@ -26,8 +26,8 @@
26 "src/provider/testFixtures/*.mjs",26 "src/provider/testFixtures/*.mjs",
27 ],27 ],
28 // Keep the transitive Effect runtime pinned for standalone npm installs.28 // Keep the transitive Effect runtime pinned for standalone npm installs.
29 // Native msgpack acceleration and the Vite+ web build prerequisite.29 // The Vite+ web build prerequisite.
30 "ignoreDependencies": ["@effect/platform-node-shared", "msgpackr-extract", "@t3tools/web"],30 "ignoreDependencies": ["@effect/platform-node-shared", "@t3tools/web"],
31 },31 },
32 "apps/desktop": {32 "apps/desktop": {
33 // Electron loads these bundles by filename rather than importing them.33 // Electron loads these bundles by filename rather than importing them.
packages/contracts/src/baseSchemas.ts+1-1
...@@ -6,7 +6,7 @@ import * as SchemaTransformation from "effect/SchemaTransformation";...@@ -6,7 +6,7 @@ import * as SchemaTransformation from "effect/SchemaTransformation";
6export const TrimmedString = Schema.String.pipe(6export const TrimmedString = Schema.String.pipe(
7 Schema.decodeTo(7 Schema.decodeTo(
8 Schema.String,8 Schema.String,
9 SchemaTransformation.transformOrFail({9 SchemaTransformation.transformEffect({
10 decode: (value) => Effect.succeed(value.trim()),10 decode: (value) => Effect.succeed(value.trim()),
11 encode: (value) => Effect.succeed(value.trim()),11 encode: (value) => Effect.succeed(value.trim()),
12 }),12 }),
packages/contracts/src/model.ts+1-1
...@@ -68,7 +68,7 @@ const LegacyProviderOptionSelectionsObject = Schema.Record(Schema.String, Schema...@@ -68,7 +68,7 @@ const LegacyProviderOptionSelectionsObject = Schema.Record(Schema.String, Schema
68const ProviderOptionSelectionsFromLegacyObject = LegacyProviderOptionSelectionsObject.pipe(68const ProviderOptionSelectionsFromLegacyObject = LegacyProviderOptionSelectionsObject.pipe(
69 Schema.decodeTo(69 Schema.decodeTo(
70 Schema.Array(ProviderOptionSelection),70 Schema.Array(ProviderOptionSelection),
71 SchemaTransformation.transformOrFail({71 SchemaTransformation.transformEffect({
72 decode: (record) => Effect.succeed(coerceLegacyOptionsObjectToArray(record)),72 decode: (record) => Effect.succeed(coerceLegacyOptionsObjectToArray(record)),
73 encode: (selections) => Effect.succeed(canonicalSelectionsToLegacyObject(selections)),73 encode: (selections) => Effect.succeed(canonicalSelectionsToLegacyObject(selections)),
74 }),74 }),
packages/contracts/src/orchestration.ts+1-1
...@@ -92,7 +92,7 @@ const ModelSelectionSource = Schema.Struct({...@@ -92,7 +92,7 @@ const ModelSelectionSource = Schema.Struct({
92export const ModelSelection = ModelSelectionSource.pipe(92export const ModelSelection = ModelSelectionSource.pipe(
93 Schema.decodeTo(93 Schema.decodeTo(
94 ModelSelectionWire,94 ModelSelectionWire,
95 SchemaTransformation.transformOrFail({95 SchemaTransformation.transformEffect({
96 decode: (raw) => {96 decode: (raw) => {
97 // Resolve the routing key: prefer an explicit `instanceId`; fall97 // Resolve the routing key: prefer an explicit `instanceId`; fall
98 // back to promoting the legacy `provider` slug (the canonical98 // back to promoting the legacy `provider` slug (the canonical
packages/contracts/src/settings.ts+1-1
...@@ -503,7 +503,7 @@ const makeBinaryPathSetting = (fallback: string) =>...@@ -503,7 +503,7 @@ const makeBinaryPathSetting = (fallback: string) =>
503 TrimmedString.pipe(503 TrimmedString.pipe(
504 Schema.decodeTo(504 Schema.decodeTo(
505 Schema.String,505 Schema.String,
506 SchemaTransformation.transformOrFail({506 SchemaTransformation.transformEffect({
507 decode: (value) => Effect.succeed(value || fallback),507 decode: (value) => Effect.succeed(value || fallback),
508 encode: (value) => Effect.succeed(value),508 encode: (value) => Effect.succeed(value),
509 }),509 }),
packages/effect-acp/scripts/generate.ts+1-1
...@@ -281,7 +281,7 @@ const generateSchemas = Effect.fn("generateSchemas")(function* (skipDownload: bo...@@ -281,7 +281,7 @@ const generateSchemas = Effect.fn("generateSchemas")(function* (skipDownload: bo
281const generateCommand = Command.make(281const generateCommand = Command.make(
282 "generate",282 "generate",
283 {283 {
284 skipDownload: Flag.boolean("skip-download").pipe(Flag.withDefault(false)),284 skipDownload: Flag.Boolean("skip-download").pipe(Flag.withDefault(false)),
285 },285 },
286 ({ skipDownload }) => generateSchemas(skipDownload),286 ({ skipDownload }) => generateSchemas(skipDownload),
287).pipe(Command.withDescription("Generate Effect ACP schemas from the pinned ACP release assets."));287).pipe(Command.withDescription("Generate Effect ACP schemas from the pinned ACP release assets."));
packages/shared/src/observability.ts+1-1
...@@ -702,7 +702,7 @@ function parseBigInt(input: string): bigint {...@@ -702,7 +702,7 @@ function parseBigInt(input: string): bigint {
702export const OtlpHeadersFromString = Schema.String.pipe(702export const OtlpHeadersFromString = Schema.String.pipe(
703 Schema.decodeTo(703 Schema.decodeTo(
704 Schema.Record(Schema.String, Schema.String),704 Schema.Record(Schema.String, Schema.String),
705 SchemaTransformation.transformOrFail({705 SchemaTransformation.transformEffect({
706 decode: (input) => {706 decode: (input) => {
707 const headers: Record<string, string> = {};707 const headers: Record<string, string> = {};
708 for (const pair of input.split(",")) {708 for (const pair of input.split(",")) {
packages/shared/src/relayClient.ts+1-1
...@@ -103,7 +103,7 @@ const INSTALL_LOCK_RETRY_DELAY = "100 millis";...@@ -103,7 +103,7 @@ const INSTALL_LOCK_RETRY_DELAY = "100 millis";
103const INSTALL_LOCK_STALE_MS = 5 * 60 * 1_000;103const INSTALL_LOCK_STALE_MS = 5 * 60 * 1_000;
104104
105const trimmedString = (name: string) =>105const trimmedString = (name: string) =>
106 Config.string(name).pipe(106 Config.String(name).pipe(
107 Config.option,107 Config.option,
108 Config.map(108 Config.map(
109 Option.flatMap((value) => {109 Option.flatMap((value) => {
packages/shared/src/schemaYaml.ts+2-2
...@@ -34,7 +34,7 @@ function formatYamlParseError(error: unknown): string {...@@ -34,7 +34,7 @@ function formatYamlParseError(error: unknown): string {
3434
35/** Parses YAML during decoding, reporting parse failures as InvalidValue issues. */35/** Parses YAML during decoding, reporting parse failures as InvalidValue issues. */
36function parseYaml<E extends string>(options?: YamlParseOptions): SchemaGetter.Getter<unknown, E> {36function parseYaml<E extends string>(options?: YamlParseOptions): SchemaGetter.Getter<unknown, E> {
37 return SchemaGetter.transformOrFail((input: E) =>37 return SchemaGetter.transformEffect((input: E) =>
38 Effect.try({38 Effect.try({
39 try: () => parseYamlString(input, options) as unknown,39 try: () => parseYamlString(input, options) as unknown,
40 catch: (error) => new SchemaIssue.InvalidValue({ message: formatYamlParseError(error) }),40 catch: (error) => new SchemaIssue.InvalidValue({ message: formatYamlParseError(error) }),
...@@ -44,7 +44,7 @@ function parseYaml<E extends string>(options?: YamlParseOptions): SchemaGetter.G...@@ -44,7 +44,7 @@ function parseYaml<E extends string>(options?: YamlParseOptions): SchemaGetter.G
4444
45/** Serializes YAML during encoding, reporting stringify failures as InvalidValue issues. */45/** Serializes YAML during encoding, reporting stringify failures as InvalidValue issues. */
46function stringifyYaml(options?: YamlStringifyOptions): SchemaGetter.Getter<string, unknown> {46function stringifyYaml(options?: YamlStringifyOptions): SchemaGetter.Getter<string, unknown> {
47 return SchemaGetter.transformOrFail((input: unknown) =>47 return SchemaGetter.transformEffect((input: unknown) =>
48 Effect.try({48 Effect.try({
49 try: () => stringifyYamlValue(input, options),49 try: () => stringifyYamlValue(input, options),
50 catch: () => new SchemaIssue.InvalidValue({ message: "Failed to stringify YAML." }),50 catch: () => new SchemaIssue.InvalidValue({ message: "Failed to stringify YAML." }),
packages/shared/src/t3ProjectFile.ts+3-1
...@@ -30,7 +30,9 @@ export function parseT3ProjectFile(contents: string): T3ProjectFile | null {...@@ -30,7 +30,9 @@ export function parseT3ProjectFile(contents: string): T3ProjectFile | null {
30 * editors get LSP support via a `$schema` reference.30 * editors get LSP support via a `$schema` reference.
31 */31 */
32export function buildT3ProjectFileJsonSchema(): Record<string, unknown> {32export function buildT3ProjectFileJsonSchema(): Record<string, unknown> {
33 const document = Schema.toJsonSchemaDocument(T3ProjectFile);33 // Closed objects, as before effect rc.113 changed the generator default;
34 // editors then flag unknown keys in t3.json.
35 const document = Schema.toJsonSchemaDocument(T3ProjectFile, { onExcessProperty: "error" });
34 const jsonSchema: Record<string, unknown> = {36 const jsonSchema: Record<string, unknown> = {
35 $schema: "https://json-schema.org/draft/2020-12/schema",37 $schema: "https://json-schema.org/draft/2020-12/schema",
36 $id: T3_PROJECT_FILE_SCHEMA_URL,38 $id: T3_PROJECT_FILE_SCHEMA_URL,
packages/ssh/src/auth.ts+1-1
...@@ -185,7 +185,7 @@ export const buildSshChildEnvironment = Effect.fn("ssh/auth.buildSshChildEnviron...@@ -185,7 +185,7 @@ export const buildSshChildEnvironment = Effect.fn("ssh/auth.buildSshChildEnviron
185 const platform = yield* HostProcessPlatform;185 const platform = yield* HostProcessPlatform;
186 const hostDisplay = input.baseEnv186 const hostDisplay = input.baseEnv
187 ? input.baseEnv.DISPLAY187 ? input.baseEnv.DISPLAY
188 : yield* Config.string("DISPLAY").pipe(188 : yield* Config.String("DISPLAY").pipe(
189 Config.option,189 Config.option,
190 Effect.orElseSucceed(() => Option.none<string>()),190 Effect.orElseSucceed(() => Option.none<string>()),
191 Effect.map(Option.getOrUndefined),191 Effect.map(Option.getOrUndefined),
packages/ssh/src/config.ts+2-2
...@@ -211,8 +211,8 @@ export const discoverSshHosts = Effect.fnUntraced(...@@ -211,8 +211,8 @@ export const discoverSshHosts = Effect.fnUntraced(
211 function* (input: { readonly homeDir?: string }) {211 function* (input: { readonly homeDir?: string }) {
212 const path = yield* Path.Path;212 const path = yield* Path.Path;
213 const env = yield* Config.all({213 const env = yield* Config.all({
214 home: Config.string("HOME").pipe(Config.option),214 home: Config.String("HOME").pipe(Config.option),
215 userProfile: Config.string("USERPROFILE").pipe(Config.option),215 userProfile: Config.String("USERPROFILE").pipe(Config.option),
216 });216 });
217 const homeDir =217 const homeDir =
218 input?.homeDir ??218 input?.homeDir ??
patches/@effect__vitest@4.0.0-rc.112.patch deleted-106
...@@ -1,106 +0,0 @@
1diff --git a/dist/index.d.ts b/dist/index.d.ts
2index a364638..4ee44c2 100644
3--- a/dist/index.d.ts
4+++ b/dist/index.d.ts
5@@ -7,11 +7,11 @@ import type * as Layer from "effect/Layer";
6 import type * as Schema from "effect/Schema";
7 import type * as Scope from "effect/Scope";
8 import type * as FC from "effect/testing/FastCheck";
9-import * as V from "vitest";
10+import * as V from "vite-plus/test";
11 /**
12 * @since 4.0.0
13 */
14-export * from "vitest";
15+export * from "vite-plus/test";
16 /**
17 * @since 4.0.0
18 */
19diff --git a/dist/index.js b/dist/index.js
20index a1a89bd..687df5a 100644
21--- a/dist/index.js
22+++ b/dist/index.js
23@@ -1,9 +1,9 @@
24-import * as V from "vitest";
25+import * as V from "vite-plus/test";
26 import * as internal from "./internal/internal.js";
27 /**
28 * @since 4.0.0
29 */
30-export * from "vitest";
31+export * from "vite-plus/test";
32 /**
33 * @since 4.0.0
34 */
35diff --git a/dist/internal/internal.js b/dist/internal/internal.js
36index fe41479..8ae751c 100644
37--- a/dist/internal/internal.js
38+++ b/dist/internal/internal.js
39@@ -15,7 +15,7 @@ import * as Scope from "effect/Scope";
40 import * as fc from "effect/testing/FastCheck";
41 import * as TestClock from "effect/testing/TestClock";
42 import * as TestConsole from "effect/testing/TestConsole";
43-import * as V from "vitest";
44+import * as V from "vite-plus/test";
45 const getCurrentSuite = V.TestRunner.getCurrentSuite;
46 const runPromise = /*#__PURE__*/Effect.fnUntraced(function* (effect, _ctx) {
47 const exit = yield* Effect.exit(effect);
48diff --git a/dist/utils.js b/dist/utils.js
49index 4871215..2c46e2b 100644
50--- a/dist/utils.js
51+++ b/dist/utils.js
52@@ -4,7 +4,7 @@ import * as Option from "effect/Option";
53 import * as Predicate from "effect/Predicate";
54 import * as Result from "effect/Result";
55 import * as assert from "node:assert";
56-import { assert as vassert } from "vitest";
57+import { assert as vassert } from "vite-plus/test";
58 // ----------------------------
59 // Primitives
60 // ----------------------------
61diff --git a/src/index.ts b/src/index.ts
62index b524786..8d4025d 100644
63--- a/src/index.ts
64+++ b/src/index.ts
65@@ -7,13 +7,13 @@ import type * as Layer from "effect/Layer"
66 import type * as Schema from "effect/Schema"
67 import type * as Scope from "effect/Scope"
68 import type * as FC from "effect/testing/FastCheck"
69-import * as V from "vitest"
70+import * as V from "vite-plus/test"
71 import * as internal from "./internal/internal.ts"
72
73 /**
74 * @since 4.0.0
75 */
76-export * from "vitest"
77+export * from "vite-plus/test"
78
79 /**
80 * @since 4.0.0
81diff --git a/src/internal/internal.ts b/src/internal/internal.ts
82index d4040a0..f02fc9d 100644
83--- a/src/internal/internal.ts
84+++ b/src/internal/internal.ts
85@@ -16,7 +16,7 @@ import * as Scope from "effect/Scope"
86 import * as fc from "effect/testing/FastCheck"
87 import * as TestClock from "effect/testing/TestClock"
88 import * as TestConsole from "effect/testing/TestConsole"
89-import * as V from "vitest"
90+import * as V from "vite-plus/test"
91 import type * as Vitest from "../index.ts"
92
93 const getCurrentSuite = V.TestRunner.getCurrentSuite
94diff --git a/src/utils.ts b/src/utils.ts
95index 4a4612c..846bcc9 100644
96--- a/src/utils.ts
97+++ b/src/utils.ts
98@@ -16,7 +16,7 @@ import * as Option from "effect/Option"
99 import * as Predicate from "effect/Predicate"
100 import * as Result from "effect/Result"
101 import * as assert from "node:assert"
102-import { assert as vassert } from "vitest"
103+import { assert as vassert } from "vite-plus/test"
104
105 // ----------------------------
106 // Primitives
patches/@effect__vitest@4.0.0-rc.115.patch created+106
...@@ -0,0 +1,106 @@
1diff --git a/dist/index.d.ts b/dist/index.d.ts
2index f0b2bcc..1b9bc38 100644
3--- a/dist/index.d.ts
4+++ b/dist/index.d.ts
5@@ -7,11 +7,11 @@ import type * as Layer from "effect/Layer";
6 import type * as Schema from "effect/Schema";
7 import type * as Scope from "effect/Scope";
8 import type * as Arbitrary from "effect/unstable/arbitrary/Arbitrary";
9-import * as V from "vitest";
10+import * as V from "vite-plus/test";
11 /**
12 * @since 4.0.0
13 */
14-export * from "vitest";
15+export * from "vite-plus/test";
16 /**
17 * @since 4.0.0
18 */
19diff --git a/dist/index.js b/dist/index.js
20index d941a25..90e4618 100644
21--- a/dist/index.js
22+++ b/dist/index.js
23@@ -1,9 +1,9 @@
24-import * as V from "vitest";
25+import * as V from "vite-plus/test";
26 import * as internal from "./internal/internal.js";
27 /**
28 * @since 4.0.0
29 */
30-export * from "vitest";
31+export * from "vite-plus/test";
32 /**
33 * @since 4.0.0
34 */
35diff --git a/dist/internal/internal.js b/dist/internal/internal.js
36index 25ab056..d5cce3a 100644
37--- a/dist/internal/internal.js
38+++ b/dist/internal/internal.js
39@@ -12,7 +12,7 @@ import * as Scope from "effect/Scope";
40 import * as TestClock from "effect/testing/TestClock";
41 import * as TestConsole from "effect/testing/TestConsole";
42 import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary";
43-import * as V from "vitest";
44+import * as V from "vite-plus/test";
45 const getCurrentSuite = V.TestRunner.getCurrentSuite;
46 const runPromise = /*#__PURE__*/Effect.fnUntraced(function* (effect, _ctx) {
47 const exit = yield* Effect.exit(effect);
48diff --git a/dist/utils.js b/dist/utils.js
49index 4871215..2c46e2b 100644
50--- a/dist/utils.js
51+++ b/dist/utils.js
52@@ -4,7 +4,7 @@ import * as Option from "effect/Option";
53 import * as Predicate from "effect/Predicate";
54 import * as Result from "effect/Result";
55 import * as assert from "node:assert";
56-import { assert as vassert } from "vitest";
57+import { assert as vassert } from "vite-plus/test";
58 // ----------------------------
59 // Primitives
60 // ----------------------------
61diff --git a/src/index.ts b/src/index.ts
62index 7726aac..7375f10 100644
63--- a/src/index.ts
64+++ b/src/index.ts
65@@ -7,13 +7,13 @@ import type * as Layer from "effect/Layer"
66 import type * as Schema from "effect/Schema"
67 import type * as Scope from "effect/Scope"
68 import type * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"
69-import * as V from "vitest"
70+import * as V from "vite-plus/test"
71 import * as internal from "./internal/internal.ts"
72
73 /**
74 * @since 4.0.0
75 */
76-export * from "vitest"
77+export * from "vite-plus/test"
78
79 /**
80 * @since 4.0.0
81diff --git a/src/internal/internal.ts b/src/internal/internal.ts
82index 3e001b1..5b7aa2a 100644
83--- a/src/internal/internal.ts
84+++ b/src/internal/internal.ts
85@@ -14,7 +14,7 @@ import * as Scope from "effect/Scope"
86 import * as TestClock from "effect/testing/TestClock"
87 import * as TestConsole from "effect/testing/TestConsole"
88 import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"
89-import * as V from "vitest"
90+import * as V from "vite-plus/test"
91 import type * as Vitest from "../index.ts"
92
93 const getCurrentSuite = V.TestRunner.getCurrentSuite
94diff --git a/src/utils.ts b/src/utils.ts
95index 4a4612c..846bcc9 100644
96--- a/src/utils.ts
97+++ b/src/utils.ts
98@@ -16,7 +16,7 @@ import * as Option from "effect/Option"
99 import * as Predicate from "effect/Predicate"
100 import * as Result from "effect/Result"
101 import * as assert from "node:assert"
102-import { assert as vassert } from "vitest"
103+import { assert as vassert } from "vite-plus/test"
104
105 // ----------------------------
106 // Primitives
patches/effect@4.0.0-rc.112.patch deleted-342
...@@ -1,342 +0,0 @@
1diff --git a/dist/unstable/ai/McpServer.js b/dist/unstable/ai/McpServer.js
2index ce9dda4..95c38f2 100644
3--- a/dist/unstable/ai/McpServer.js
4+++ b/dist/unstable/ai/McpServer.js
5@@ -444,6 +444,26 @@ const runWithProtocolState = /*#__PURE__*/Effect.fnUntraced(function* (options,
6 const defaultLogLevel = yield* CurrentLogLevel;
7 const isHttp = Option.isSome(yield* Effect.serviceOption(HttpRouter.HttpRouter));
8 const sessions = protocolState.sessions;
9+ if (isHttp && options.path !== undefined) {
10+ const router = yield* HttpRouter.HttpRouter;
11+ yield* router.add("DELETE", options.path, Effect.gen(function* () {
12+ const request = yield* HttpServerRequest.HttpServerRequest;
13+ const sessionId = request.headers[MCP_SESSION_ID_HEADER];
14+ if (sessionId === undefined) {
15+ return HttpServerResponse.empty({
16+ status: 400
17+ });
18+ }
19+ if (!sessions.bySessionId.delete(sessionId)) {
20+ return HttpServerResponse.empty({
21+ status: 404
22+ });
23+ }
24+ return HttpServerResponse.empty({
25+ status: 204
26+ });
27+ }));
28+ }
29 const clientProtocols = new Map();
30 const activeRequests = new Map();
31 const clientProfiles = new Map();
32@@ -942,7 +962,7 @@ export const layerHttp = options => {
33 const methodNotAllowed = request => isAllowedMcpOrigin(request, options.allowedOrigins) ? Effect.succeed(methodNotAllowedResponse) : Effect.succeed(HttpServerResponse.empty({
34 status: 403
35 }));
36- const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("DELETE", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
37+ const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
38 return Layer.merge(layerWithProtocolState(options), routes).pipe(Layer.provide(layerMcpProtocolHttp(options)), Layer.provide(protocolState), Layer.provide(RpcSerialization.layerJsonRpc()));
39 };
40 const layerMcpProtocolHttp = options => Layer.effect(RpcServer.Protocol)(Effect.gen(function* () {
41diff --git a/dist/unstable/rpc/RpcClient.d.ts b/dist/unstable/rpc/RpcClient.d.ts
42index 1a471aa..7233784 100644
43--- a/dist/unstable/rpc/RpcClient.d.ts
44+++ b/dist/unstable/rpc/RpcClient.d.ts
45@@ -2,6 +2,7 @@ import * as Cause from "../../Cause.ts";
46 import * as Context from "../../Context.ts";
47 import type * as Duration from "../../Duration.ts";
48 import * as Effect from "../../Effect.ts";
49+import * as Exit from "../../Exit.ts";
50 import * as Layer from "../../Layer.ts";
51 import * as Queue from "../../Queue.ts";
52 import * as Schedule from "../../Schedule.ts";
53@@ -280,9 +281,40 @@ export declare const layerProtocolWorker: (options: {
54 readonly targetUtilization?: number | undefined;
55 readonly timeToLive: Duration.Input;
56 }) => Layer.Layer<Protocol, WorkerError, Worker.WorkerPlatform | Worker.Spawner>;
57+declare const RequestHooks_base: Context.ServiceClass<RequestHooks, "effect/rpc/RpcClient/RequestHooks", {
58+ readonly onRequestStart?: ((info: {
59+ readonly id: RequestId;
60+ readonly tag: string;
61+ readonly stream: boolean;
62+ }) => Effect.Effect<void>) | undefined;
63+ readonly onRequestChunk?: ((info: {
64+ readonly id: RequestId;
65+ readonly tag: string;
66+ readonly chunkCount: number;
67+ }) => Effect.Effect<void>) | undefined;
68+ readonly onRequestExit?: ((info: {
69+ readonly id: RequestId;
70+ readonly tag: string;
71+ readonly stream: boolean;
72+ readonly exit: Exit.Exit<unknown, unknown>;
73+ }) => Effect.Effect<void>) | undefined;
74+ readonly onRequestInterrupt?: ((info: {
75+ readonly id: RequestId;
76+ readonly tag?: string | undefined;
77+ }) => Effect.Effect<void>) | undefined;
78+}>;
79+/**
80+ * @since 4.0.0
81+ * @category RequestHooks
82+ */
83+export declare class RequestHooks extends RequestHooks_base {
84+}
85 declare const ConnectionHooks_base: Context.ServiceClass<ConnectionHooks, "effect/rpc/RpcClient/ConnectionHooks", {
86 readonly onConnect: Effect.Effect<void>;
87 readonly onDisconnect: Effect.Effect<void>;
88+ readonly onPing?: Effect.Effect<void> | undefined;
89+ readonly onPong?: Effect.Effect<void> | undefined;
90+ readonly onPingTimeout?: Effect.Effect<void> | undefined;
91 }>;
92 /**
93 * Represents optional client protocol hooks that run when a transport connects
94diff --git a/dist/unstable/rpc/RpcClient.js b/dist/unstable/rpc/RpcClient.js
95index ec78917..342f9d7 100644
96--- a/dist/unstable/rpc/RpcClient.js
97+++ b/dist/unstable/rpc/RpcClient.js
98@@ -49,6 +49,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
99 const services = yield* Effect.context();
100 const scope = Context.get(services, Scope.Scope);
101 const entries = new Map();
102+ const hooks = yield* Effect.serviceOption(RequestHooks);
103 let isShutdown = false;
104 yield* Scope.addFinalizer(scope, Effect.withFiber(parent => {
105 isShutdown = true;
106@@ -86,6 +87,11 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
107 return Effect.interrupt;
108 }
109 const id = generateRequestId();
110+ const onStart = Option.isSome(hooks) && hooks.value.onRequestStart ? hooks.value.onRequestStart({
111+ id,
112+ tag: rpc._tag,
113+ stream: false
114+ }) : Effect.void;
115 const send = middleware(message => options.onFromClient({
116 message,
117 context,
118@@ -103,7 +109,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
119 headers: Headers.merge(parentFiber.getRef(CurrentHeaders), headers)
120 });
121 if (discard) {
122- return send;
123+ return onStart.pipe(Effect.andThen(send));
124 }
125 let fiber;
126 return Effect.onInterrupt(Effect.callback(resume => {
127@@ -121,7 +127,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
128 }
129 };
130 entries.set(id, entry);
131- fiber = send.pipe(span ? Effect.withParentSpan(span, {
132+ fiber = onStart.pipe(Effect.andThen(send), span ? Effect.withParentSpan(span, {
133 captureStackTrace: false
134 }) : identity, Effect.runForkWith(parentFiber.context));
135 fiber.addObserver(exit => {
136@@ -130,8 +136,9 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
137 }
138 });
139 }), interruptors => {
140+ const entry = entries.get(id);
141 entries.delete(id);
142- return Effect.andThen(Fiber.interrupt(fiber), sendInterrupt(id, Array.from(interruptors), context));
143+ return Effect.andThen(Fiber.interrupt(fiber), sendInterrupt(id, Array.from(interruptors), context, entry?.rpc._tag));
144 });
145 });
146 const onStreamRequest = Effect.fnUntraced(function* (rpc, middleware, payload, headers, streamBufferSize, context) {
147@@ -143,11 +150,17 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
148 });
149 const fiber = Fiber.getCurrent();
150 const id = generateRequestId();
151+ const onStart = Option.isSome(hooks) && hooks.value.onRequestStart ? hooks.value.onRequestStart({
152+ id,
153+ tag: rpc._tag,
154+ stream: true
155+ }) : Effect.void;
156 const scope = Context.getUnsafe(fiber.context, Scope.Scope);
157 yield* Scope.addFinalizerExit(scope, exit => {
158- if (!entries.has(id)) return Effect.void;
159+ const entry = entries.get(id);
160+ if (!entry) return Effect.void;
161 entries.delete(id);
162- return sendInterrupt(id, Exit.isFailure(exit) ? Array.from(Cause.interruptors(exit.cause)) : [], context);
163+ return sendInterrupt(id, Exit.isFailure(exit) ? Array.from(Cause.interruptors(exit.cause)) : [], context, entry.rpc._tag);
164 });
165 const queue = yield* Queue.bounded(streamBufferSize);
166 entries.set(id, {
167@@ -155,9 +168,10 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
168 rpc,
169 queue,
170 scope,
171- context
172+ context,
173+ chunkCount: 0
174 });
175- yield* middleware(message => options.onFromClient({
176+ yield* onStart.pipe(Effect.andThen(middleware(message => options.onFromClient({
177 message,
178 context,
179 discard: false
180@@ -172,7 +186,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
181 sampled: span.sampled
182 } : {}),
183 headers: Headers.merge(fiber.getRef(CurrentHeaders), headers)
184- }).pipe(span ? Effect.withParentSpan(span, {
185+ }))).pipe(span ? Effect.withParentSpan(span, {
186 captureStackTrace: false
187 }) : identity, Effect.catchCause(error => Queue.failCause(queue, error)), Effect.interruptible, Effect.forkIn(scope, {
188 startImmediately: true
189@@ -202,7 +216,10 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
190 });
191 };
192 };
193- const sendInterrupt = (requestId, interruptors, context) => Effect.callback(resume => {
194+ const sendInterrupt = (requestId, interruptors, context, tag) => (Option.isSome(hooks) && hooks.value.onRequestInterrupt ? hooks.value.onRequestInterrupt({
195+ id: requestId,
196+ tag
197+ }) : Effect.void).pipe(Effect.andThen(Effect.callback(resume => {
198 const parentFiber = Fiber.getCurrent();
199 const fiber = options.onFromClient({
200 message: {
201@@ -216,7 +233,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
202 fiber.addObserver(() => {
203 resume(Effect.void);
204 });
205- });
206+ })));
207 const write = message => {
208 switch (message._tag) {
209 case "Chunk":
210@@ -224,7 +241,13 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
211 const requestId = message.requestId;
212 const entry = entries.get(requestId);
213 if (!entry || entry._tag !== "Queue") return Effect.void;
214- return Queue.offerAll(entry.queue, message.values).pipe(supportsAck ? Effect.flatMap(() => options.onFromClient({
215+ const chunkCount = entry.chunkCount += message.values.length;
216+ const onChunk = Option.isSome(hooks) && hooks.value.onRequestChunk ? hooks.value.onRequestChunk({
217+ id: requestId,
218+ tag: entry.rpc._tag,
219+ chunkCount
220+ }) : Effect.void;
221+ return Queue.offerAll(entry.queue, message.values).pipe(Effect.andThen(onChunk), supportsAck ? Effect.flatMap(() => options.onFromClient({
222 message: {
223 _tag: "Ack",
224 requestId: message.requestId
225@@ -239,11 +262,18 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
226 const entry = entries.get(requestId);
227 if (!entry) return Effect.void;
228 entries.delete(requestId);
229+ const onExit = Option.isSome(hooks) && hooks.value.onRequestExit ? hooks.value.onRequestExit({
230+ id: requestId,
231+ tag: entry.rpc._tag,
232+ stream: entry._tag === "Queue",
233+ exit: message.exit
234+ }) : Effect.void;
235 if (entry._tag === "Effect") {
236- entry.resume(message.exit);
237- return Effect.void;
238+ return onExit.pipe(Effect.andThen(Effect.sync(() => {
239+ entry.resume(message.exit);
240+ })));
241 }
242- return message.exit._tag === "Success" ? Queue.end(entry.queue) : Queue.failCause(entry.queue, message.exit.cause);
243+ return onExit.pipe(Effect.andThen(message.exit._tag === "Success" ? Queue.end(entry.queue) : Queue.failCause(entry.queue, message.exit.cause)));
244 }
245 case "Defect":
246 {
247@@ -603,7 +633,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
248 // `parser` is replaced on every connect, and a stateful serialization
249 // encodes against the connection it is writing to, so the ping is encoded
250 // when it is sent rather than once up front.
251- const pinger = yield* makePinger(Effect.suspend(() => write(parser.encode(constPing))));
252+ const pinger = yield* makePinger(Effect.suspend(() => write(parser.encode(constPing))), Option.isSome(hooks) ? hooks.value : undefined);
253 let currentError;
254 const onOpen = Effect.suspend(() => {
255 currentError = undefined;
256@@ -630,8 +660,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
257 body: () => {
258 const response = responses[i++];
259 if (response._tag === "Pong") {
260- pinger.onPong();
261- return Effect.void;
262+ return pinger.onPong;
263 }
264 if (Object.hasOwn(response, "requestId")) {
265 const requestId = response.requestId;
266@@ -660,12 +689,12 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
267 }
268 }, {
269 onOpen
270- }).pipe(Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({
271+ }).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({
272 reason: new Socket.SocketOpenError({
273 kind: "Timeout",
274 cause: new Error("ping timeout")
275 })
276- })))));
277+ })))))));
278 }).pipe(Effect.flatMap(() => Effect.fail(new Socket.SocketError({
279 reason: new Socket.SocketCloseError({
280 code: 1000
281@@ -710,20 +739,28 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
282 };
283 }));
284 const defaultRetryPolicy = /*#__PURE__*/Schedule.min([/*#__PURE__*/Schedule.exponential(500, 1.5), /*#__PURE__*/Schedule.spaced(5000)]);
285-const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing) {
286+const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing, hooks) {
287 let recievedPong = true;
288+ let missedPongs = 0;
289 const latch = Latch.makeUnsafe();
290 const reset = () => {
291 recievedPong = true;
292+ missedPongs = 0;
293 latch.closeUnsafe();
294 };
295- const onPong = () => {
296+ const onPong = Effect.sync(() => {
297 recievedPong = true;
298- };
299+ missedPongs = 0;
300+ }).pipe(Effect.andThen(hooks?.onPong ?? Effect.void));
301 yield* Effect.suspend(() => {
302- if (!recievedPong) return latch.open;
303+ if (!recievedPong) {
304+ missedPongs += 1;
305+ if (missedPongs >= 3) return latch.open;
306+ return (hooks?.onPing ?? Effect.void).pipe(Effect.andThen(writePing));
307+ }
308 recievedPong = false;
309- return writePing;
310+ missedPongs = 0;
311+ return (hooks?.onPing ?? Effect.void).pipe(Effect.andThen(writePing));
312 }).pipe(Effect.delay("5 seconds"), Effect.ignore, Effect.forever, Effect.interruptible, Effect.forkScoped);
313 return {
314 timeout: latch.await,
315@@ -874,6 +911,11 @@ export const makeProtocolWorker = options => Protocol.make(Effect.fnUntraced(fun
316 * @since 4.0.0
317 */
318 export const layerProtocolWorker = /*#__PURE__*/flow(makeProtocolWorker, /*#__PURE__*/Layer.effect(Protocol));
319+/**
320+ * @since 4.0.0
321+ * @category RequestHooks
322+ */
323+export class RequestHooks extends /*#__PURE__*/Context.Service()("effect/rpc/RpcClient/RequestHooks") {}
324 /**
325 * Represents optional client protocol hooks that run when a transport connects
326 * and disconnects.
327diff --git a/dist/unstable/http/HttpClientResponse.js b/dist/unstable/http/HttpClientResponse.js
328--- a/dist/unstable/http/HttpClientResponse.js
329+++ b/dist/unstable/http/HttpClientResponse.js
330@@ -177,3 +177,3 @@
331 }
332- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie());
333+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []);
334 }
335diff --git a/src/unstable/http/HttpClientResponse.ts b/src/unstable/http/HttpClientResponse.ts
336--- a/src/unstable/http/HttpClientResponse.ts
337+++ b/src/unstable/http/HttpClientResponse.ts
338@@ -309,3 +309,3 @@
339 }
340- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie())
341+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? [])
342 }
patches/effect@4.0.0-rc.115.patch created+352
...@@ -0,0 +1,352 @@
1diff --git a/dist/unstable/ai/McpServer.js b/dist/unstable/ai/McpServer.js
2index e8b9be4..9cffc5c 100644
3--- a/dist/unstable/ai/McpServer.js
4+++ b/dist/unstable/ai/McpServer.js
5@@ -450,6 +450,26 @@ const runWithProtocolState = /*#__PURE__*/Effect.fnUntraced(function* (options,
6 const defaultLogLevel = yield* CurrentLogLevel;
7 const isHttp = Option.isSome(yield* Effect.serviceOption(HttpRouter.HttpRouter));
8 const sessions = protocolState.sessions;
9+ if (isHttp && options.path !== undefined) {
10+ const router = yield* HttpRouter.HttpRouter;
11+ yield* router.add("DELETE", options.path, Effect.gen(function* () {
12+ const request = yield* HttpServerRequest.HttpServerRequest;
13+ const sessionId = request.headers[MCP_SESSION_ID_HEADER];
14+ if (sessionId === undefined) {
15+ return HttpServerResponse.empty({
16+ status: 400
17+ });
18+ }
19+ if (!sessions.bySessionId.delete(sessionId)) {
20+ return HttpServerResponse.empty({
21+ status: 404
22+ });
23+ }
24+ return HttpServerResponse.empty({
25+ status: 204
26+ });
27+ }));
28+ }
29 const clientProtocols = new Map();
30 const activeRequests = new Map();
31 const clientProfiles = new Map();
32@@ -948,7 +968,7 @@ export const layerHttp = options => {
33 const methodNotAllowed = request => isAllowedMcpOrigin(request, options.allowedOrigins) ? Effect.succeed(methodNotAllowedResponse) : Effect.succeed(HttpServerResponse.empty({
34 status: 403
35 }));
36- const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("DELETE", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
37+ const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
38 return Layer.merge(layerWithProtocolState(options), routes).pipe(Layer.provide(layerMcpProtocolHttp(options)), Layer.provide(protocolState), Layer.provide(RpcSerialization.layerJsonRpc()));
39 };
40 const layerMcpProtocolHttp = options => Layer.effect(RpcServer.Protocol)(Effect.gen(function* () {
41diff --git a/dist/unstable/http/HttpClientResponse.js b/dist/unstable/http/HttpClientResponse.js
42index 59a2b12..ef54250 100644
43--- a/dist/unstable/http/HttpClientResponse.js
44+++ b/dist/unstable/http/HttpClientResponse.js
45@@ -180,7 +180,7 @@ class WebHttpClientResponse extends Inspectable.Class {
46 if (this.cachedCookies) {
47 return this.cachedCookies;
48 }
49- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie());
50+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []);
51 }
52 get remoteAddress() {
53 return Option.none();
54diff --git a/dist/unstable/rpc/RpcClient.d.ts b/dist/unstable/rpc/RpcClient.d.ts
55index 1a471aa..7233784 100644
56--- a/dist/unstable/rpc/RpcClient.d.ts
57+++ b/dist/unstable/rpc/RpcClient.d.ts
58@@ -2,6 +2,7 @@ import * as Cause from "../../Cause.ts";
59 import * as Context from "../../Context.ts";
60 import type * as Duration from "../../Duration.ts";
61 import * as Effect from "../../Effect.ts";
62+import * as Exit from "../../Exit.ts";
63 import * as Layer from "../../Layer.ts";
64 import * as Queue from "../../Queue.ts";
65 import * as Schedule from "../../Schedule.ts";
66@@ -280,9 +281,40 @@ export declare const layerProtocolWorker: (options: {
67 readonly targetUtilization?: number | undefined;
68 readonly timeToLive: Duration.Input;
69 }) => Layer.Layer<Protocol, WorkerError, Worker.WorkerPlatform | Worker.Spawner>;
70+declare const RequestHooks_base: Context.ServiceClass<RequestHooks, "effect/rpc/RpcClient/RequestHooks", {
71+ readonly onRequestStart?: ((info: {
72+ readonly id: RequestId;
73+ readonly tag: string;
74+ readonly stream: boolean;
75+ }) => Effect.Effect<void>) | undefined;
76+ readonly onRequestChunk?: ((info: {
77+ readonly id: RequestId;
78+ readonly tag: string;
79+ readonly chunkCount: number;
80+ }) => Effect.Effect<void>) | undefined;
81+ readonly onRequestExit?: ((info: {
82+ readonly id: RequestId;
83+ readonly tag: string;
84+ readonly stream: boolean;
85+ readonly exit: Exit.Exit<unknown, unknown>;
86+ }) => Effect.Effect<void>) | undefined;
87+ readonly onRequestInterrupt?: ((info: {
88+ readonly id: RequestId;
89+ readonly tag?: string | undefined;
90+ }) => Effect.Effect<void>) | undefined;
91+}>;
92+/**
93+ * @since 4.0.0
94+ * @category RequestHooks
95+ */
96+export declare class RequestHooks extends RequestHooks_base {
97+}
98 declare const ConnectionHooks_base: Context.ServiceClass<ConnectionHooks, "effect/rpc/RpcClient/ConnectionHooks", {
99 readonly onConnect: Effect.Effect<void>;
100 readonly onDisconnect: Effect.Effect<void>;
101+ readonly onPing?: Effect.Effect<void> | undefined;
102+ readonly onPong?: Effect.Effect<void> | undefined;
103+ readonly onPingTimeout?: Effect.Effect<void> | undefined;
104 }>;
105 /**
106 * Represents optional client protocol hooks that run when a transport connects
107diff --git a/dist/unstable/rpc/RpcClient.js b/dist/unstable/rpc/RpcClient.js
108index c586c60..49886d8 100644
109--- a/dist/unstable/rpc/RpcClient.js
110+++ b/dist/unstable/rpc/RpcClient.js
111@@ -49,6 +49,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
112 const services = yield* Effect.context();
113 const scope = Context.get(services, Scope.Scope);
114 const entries = new Map();
115+ const hooks = yield* Effect.serviceOption(RequestHooks);
116 let isShutdown = false;
117 yield* Scope.addFinalizer(scope, Effect.withFiber(parent => {
118 isShutdown = true;
119@@ -86,6 +87,11 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
120 return Effect.interrupt;
121 }
122 const id = generateRequestId();
123+ const onStart = Option.isSome(hooks) && hooks.value.onRequestStart ? hooks.value.onRequestStart({
124+ id,
125+ tag: rpc._tag,
126+ stream: false
127+ }) : Effect.void;
128 const send = middleware(message => options.onFromClient({
129 message,
130 context,
131@@ -103,7 +109,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
132 headers: Headers.merge(parentFiber.getRef(CurrentHeaders), headers)
133 });
134 if (discard) {
135- return send;
136+ return onStart.pipe(Effect.andThen(send));
137 }
138 let fiber;
139 return Effect.onInterrupt(Effect.callback(resume => {
140@@ -121,7 +127,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
141 }
142 };
143 entries.set(id, entry);
144- fiber = send.pipe(span ? Effect.withParentSpan(span, {
145+ fiber = onStart.pipe(Effect.andThen(send), span ? Effect.withParentSpan(span, {
146 captureStackTrace: false
147 }) : identity, Effect.runForkWith(parentFiber.context));
148 fiber.addObserver(exit => {
149@@ -130,8 +136,9 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
150 }
151 });
152 }), interruptors => {
153+ const entry = entries.get(id);
154 entries.delete(id);
155- return Effect.andThen(Fiber.interrupt(fiber), sendInterrupt(id, Array.from(interruptors), context));
156+ return Effect.andThen(Fiber.interrupt(fiber), sendInterrupt(id, Array.from(interruptors), context, entry?.rpc._tag));
157 });
158 });
159 const onStreamRequest = Effect.fnUntraced(function* (rpc, middleware, payload, headers, streamBufferSize, context) {
160@@ -143,11 +150,17 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
161 });
162 const fiber = Fiber.getCurrent();
163 const id = generateRequestId();
164+ const onStart = Option.isSome(hooks) && hooks.value.onRequestStart ? hooks.value.onRequestStart({
165+ id,
166+ tag: rpc._tag,
167+ stream: true
168+ }) : Effect.void;
169 const scope = Context.getUnsafe(fiber.context, Scope.Scope);
170 yield* Scope.addFinalizerExit(scope, exit => {
171- if (!entries.has(id)) return Effect.void;
172+ const entry = entries.get(id);
173+ if (!entry) return Effect.void;
174 entries.delete(id);
175- return sendInterrupt(id, Exit.isFailure(exit) ? Array.from(Cause.interruptors(exit.cause)) : [], context);
176+ return sendInterrupt(id, Exit.isFailure(exit) ? Array.from(Cause.interruptors(exit.cause)) : [], context, entry.rpc._tag);
177 });
178 const queue = yield* Queue.bounded(streamBufferSize);
179 entries.set(id, {
180@@ -155,9 +168,10 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
181 rpc,
182 queue,
183 scope,
184- context
185+ context,
186+ chunkCount: 0
187 });
188- yield* middleware(message => options.onFromClient({
189+ yield* onStart.pipe(Effect.andThen(middleware(message => options.onFromClient({
190 message,
191 context,
192 discard: false
193@@ -172,7 +186,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
194 sampled: span.sampled
195 } : {}),
196 headers: Headers.merge(fiber.getRef(CurrentHeaders), headers)
197- }).pipe(span ? Effect.withParentSpan(span, {
198+ }))).pipe(span ? Effect.withParentSpan(span, {
199 captureStackTrace: false
200 }) : identity, Effect.catchCause(error => Queue.failCause(queue, error)), Effect.interruptible, Effect.forkIn(scope, {
201 startImmediately: true
202@@ -202,7 +216,10 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
203 });
204 };
205 };
206- const sendInterrupt = (requestId, interruptors, context) => Effect.callback(resume => {
207+ const sendInterrupt = (requestId, interruptors, context, tag) => (Option.isSome(hooks) && hooks.value.onRequestInterrupt ? hooks.value.onRequestInterrupt({
208+ id: requestId,
209+ tag
210+ }) : Effect.void).pipe(Effect.andThen(Effect.callback(resume => {
211 const parentFiber = Fiber.getCurrent();
212 const fiber = options.onFromClient({
213 message: {
214@@ -216,7 +233,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
215 fiber.addObserver(() => {
216 resume(Effect.void);
217 });
218- });
219+ })));
220 const write = message => {
221 switch (message._tag) {
222 case "Chunk":
223@@ -224,7 +241,13 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
224 const requestId = message.requestId;
225 const entry = entries.get(requestId);
226 if (!entry || entry._tag !== "Queue") return Effect.void;
227- return Queue.offerAll(entry.queue, message.values).pipe(supportsAck ? Effect.flatMap(() => options.onFromClient({
228+ const chunkCount = entry.chunkCount += message.values.length;
229+ const onChunk = Option.isSome(hooks) && hooks.value.onRequestChunk ? hooks.value.onRequestChunk({
230+ id: requestId,
231+ tag: entry.rpc._tag,
232+ chunkCount
233+ }) : Effect.void;
234+ return Queue.offerAll(entry.queue, message.values).pipe(Effect.andThen(onChunk), supportsAck ? Effect.flatMap(() => options.onFromClient({
235 message: {
236 _tag: "Ack",
237 requestId: message.requestId
238@@ -239,11 +262,18 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
239 const entry = entries.get(requestId);
240 if (!entry) return Effect.void;
241 entries.delete(requestId);
242+ const onExit = Option.isSome(hooks) && hooks.value.onRequestExit ? hooks.value.onRequestExit({
243+ id: requestId,
244+ tag: entry.rpc._tag,
245+ stream: entry._tag === "Queue",
246+ exit: message.exit
247+ }) : Effect.void;
248 if (entry._tag === "Effect") {
249- entry.resume(message.exit);
250- return Effect.void;
251+ return onExit.pipe(Effect.andThen(Effect.sync(() => {
252+ entry.resume(message.exit);
253+ })));
254 }
255- return message.exit._tag === "Success" ? Queue.end(entry.queue) : Queue.failCause(entry.queue, message.exit.cause);
256+ return onExit.pipe(Effect.andThen(message.exit._tag === "Success" ? Queue.end(entry.queue) : Queue.failCause(entry.queue, message.exit.cause)));
257 }
258 case "Defect":
259 {
260@@ -598,7 +628,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
261 // `parser` is replaced on every connect, and a stateful serialization
262 // encodes against the connection it is writing to, so the ping is encoded
263 // when it is sent rather than once up front.
264- const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing))));
265+ const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing))), Option.isSome(hooks) ? hooks.value : undefined);
266 let currentError;
267 const broadcast = response => Effect.forEach(clientIds, clientId => writeResponse(clientId, response));
268 const broadcastError = error => {
269@@ -618,8 +648,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
270 body: () => {
271 const response = responses[i++];
272 if (response._tag === "Pong") {
273- pinger.onPong();
274- return Effect.void;
275+ return pinger.onPong;
276 }
277 if (Object.hasOwn(response, "requestId")) {
278 const requestId = response.requestId;
279@@ -664,12 +693,12 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
280 yield* processData(frames[i]);
281 }
282 }
283- }).pipe(Effect.scoped, Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({
284+ }).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({
285 reason: new Socket.SocketOpenError({
286 kind: "Timeout",
287 cause: new Error("ping timeout")
288 })
289- })))));
290+ })))))));
291 }).pipe(Option.isSome(hooks) ? Effect.ensuring(hooks.value.onDisconnect) : identity, Effect.tapCause(cause => {
292 const error = Cause.findError(cause);
293 const hasError = Result.isSuccess(error);
294@@ -710,20 +739,28 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
295 };
296 }));
297 const defaultRetryPolicy = /*#__PURE__*/Schedule.min([/*#__PURE__*/Schedule.exponential(500, 1.5), /*#__PURE__*/Schedule.spaced(5000)]);
298-const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing) {
299+const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing, hooks) {
300 let recievedPong = true;
301+ let missedPongs = 0;
302 const latch = Latch.makeUnsafe();
303 const reset = () => {
304 recievedPong = true;
305+ missedPongs = 0;
306 latch.closeUnsafe();
307 };
308- const onPong = () => {
309+ const onPong = Effect.sync(() => {
310 recievedPong = true;
311- };
312+ missedPongs = 0;
313+ }).pipe(Effect.andThen(hooks?.onPong ?? Effect.void));
314 yield* Effect.suspend(() => {
315- if (!recievedPong) return latch.open;
316+ if (!recievedPong) {
317+ missedPongs += 1;
318+ if (missedPongs >= 3) return latch.open;
319+ return (hooks?.onPing ?? Effect.void).pipe(Effect.andThen(writePing));
320+ }
321 recievedPong = false;
322- return writePing;
323+ missedPongs = 0;
324+ return (hooks?.onPing ?? Effect.void).pipe(Effect.andThen(writePing));
325 }).pipe(Effect.delay("5 seconds"), Effect.ignore, Effect.forever, Effect.interruptible, Effect.forkScoped);
326 return {
327 timeout: latch.await,
328@@ -874,6 +911,11 @@ export const makeProtocolWorker = options => Protocol.make(Effect.fnUntraced(fun
329 * @since 4.0.0
330 */
331 export const layerProtocolWorker = /*#__PURE__*/flow(makeProtocolWorker, /*#__PURE__*/Layer.effect(Protocol));
332+/**
333+ * @since 4.0.0
334+ * @category RequestHooks
335+ */
336+export class RequestHooks extends /*#__PURE__*/Context.Service()("effect/rpc/RpcClient/RequestHooks") {}
337 /**
338 * Represents optional client protocol hooks that run when a transport connects
339 * and disconnects.
340diff --git a/src/unstable/http/HttpClientResponse.ts b/src/unstable/http/HttpClientResponse.ts
341index cbf047f..c7d5cc2 100644
342--- a/src/unstable/http/HttpClientResponse.ts
343+++ b/src/unstable/http/HttpClientResponse.ts
344@@ -321,7 +321,7 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
345 if (this.cachedCookies) {
346 return this.cachedCookies
347 }
348- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie())
349+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? [])
350 }
351
352 get remoteAddress(): Option.Option<string> {
pnpm-lock.yaml+870-950
...@@ -7,8 +7,8 @@ settings:...@@ -7,8 +7,8 @@ settings:
7catalogs:7catalogs:
8 default:8 default:
9 '@effect/openapi-generator':9 '@effect/openapi-generator':
10 specifier: 4.0.0-rc.11210 specifier: 4.0.0-rc.115
11 version: 4.0.0-rc.11211 version: 4.0.0-rc.115
12 '@effect/tsgo':12 '@effect/tsgo':
13 specifier: 0.41.013 specifier: 0.41.0
14 version: 0.41.014 version: 0.41.0
...@@ -45,6 +45,9 @@ overrides:...@@ -45,6 +45,9 @@ overrides:
45 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-x64-musl': '-'45 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-x64-musl': '-'
46 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-arm64': '-'46 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-arm64': '-'
47 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-x64': '-'47 '@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-x64': '-'
48 '@alchemy.run/sigil>react': '-'
49 '@alchemy.run/sigil>react-reconciler': '-'
50 '@alchemy.run/sigil>scheduler': '-'
48 '@clerk/backend': 3.18.151 '@clerk/backend': 3.18.1
49 '@clerk/clerk-js': 6.32.152 '@clerk/clerk-js': 6.32.1
50 '@clerk/clerk-js>@base-org/account': '-'53 '@clerk/clerk-js>@base-org/account': '-'
...@@ -58,11 +61,11 @@ overrides:...@@ -58,11 +61,11 @@ overrides:
58 '@clerk/expo': 4.6.861 '@clerk/expo': 4.6.8
59 '@clerk/react': 6.16.162 '@clerk/react': 6.16.1
60 '@clerk/shared': 4.33.063 '@clerk/shared': 4.33.0
61 '@effect/atom-react': 4.0.0-rc.11264 '@effect/atom-react': 4.0.0-rc.115
62 '@effect/platform-node': 4.0.0-rc.11265 '@effect/platform-node': 4.0.0-rc.115
63 '@effect/platform-node-shared': 4.0.0-rc.11266 '@effect/platform-node-shared': 4.0.0-rc.115
64 '@effect/sql-pg': 4.0.0-rc.11267 '@effect/sql-pg': 4.0.0-rc.115
65 '@effect/vitest': 4.0.0-rc.11268 '@effect/vitest': 4.0.0-rc.115
66 '@effect/vitest>vitest': '-'69 '@effect/vitest>vitest': '-'
67 '@expo/dom-webview': 57.0.170 '@expo/dom-webview': 57.0.1
68 '@expo/metro-config': 57.0.1271 '@expo/metro-config': 57.0.12
...@@ -72,7 +75,7 @@ overrides:...@@ -72,7 +75,7 @@ overrides:
72 '@tailwindcss/oxide': 4.3.375 '@tailwindcss/oxide': 4.3.3
73 '@tailwindcss/vite': 4.3.376 '@tailwindcss/vite': 4.3.3
74 '@types/node': 24.12.477 '@types/node': 24.12.4
75 effect: 4.0.0-rc.11278 effect: 4.0.0-rc.115
76 expo-router: 57.0.1779 expo-router: 57.0.17
77 expo-sharing>@expo/config-plugins: 57.0.980 expo-sharing>@expo/config-plugins: 57.0.9
78 expo-sharing>@expo/config-types: 57.0.281 expo-sharing>@expo/config-types: 57.0.2
...@@ -86,7 +89,7 @@ packageExtensionsChecksum: sha256-k/dT9NFDl5hihRPaoFKeY11hzyutMFs5psfZLFiKJic=...@@ -86,7 +89,7 @@ packageExtensionsChecksum: sha256-k/dT9NFDl5hihRPaoFKeY11hzyutMFs5psfZLFiKJic=
8689
87patchedDependencies:90patchedDependencies:
88 '@clerk/expo@4.6.8': a82bb41039ee88a290a87d4ab58be7be4c49fa338603b17ea646e1ec140a1cfb91 '@clerk/expo@4.6.8': a82bb41039ee88a290a87d4ab58be7be4c49fa338603b17ea646e1ec140a1cfb
89 '@effect/vitest@4.0.0-rc.112': a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b92 '@effect/vitest@4.0.0-rc.115': 172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902
90 '@expo/metro-config@57.0.12': 96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc293 '@expo/metro-config@57.0.12': 96f1a75347e6ea02dc4b7034ace815d8ee39e18b8166ebfb573d9e58328f0dc2
91 '@ff-labs/fff-node@0.9.4': c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a894 '@ff-labs/fff-node@0.9.4': c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a8
92 '@legendapp/list@3.3.5': 680cc6a5c5b4a4032e467e7b3fde22f89a84c0ee2e6eac6fda737d6277cc080695 '@legendapp/list@3.3.5': 680cc6a5c5b4a4032e467e7b3fde22f89a84c0ee2e6eac6fda737d6277cc0806
...@@ -95,7 +98,7 @@ patchedDependencies:...@@ -95,7 +98,7 @@ patchedDependencies:
95 '@react-native-menu/menu@2.0.0': f63d256bf6a97a873b5e628eb595bd6ef0075ddd5bdd890fc920f7a6024290dd98 '@react-native-menu/menu@2.0.0': f63d256bf6a97a873b5e628eb595bd6ef0075ddd5bdd890fc920f7a6024290dd
96 '@react-navigation/native-stack@7.17.6': e667c3cef8c78bb9ff4882ee5bd23a432247b843060a9499eb5f07e9e229555299 '@react-navigation/native-stack@7.17.6': e667c3cef8c78bb9ff4882ee5bd23a432247b843060a9499eb5f07e9e2295552
97 dbus-next@0.10.2: cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4100 dbus-next@0.10.2: cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4
98 effect@4.0.0-rc.112: 8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2101 effect@4.0.0-rc.115: 0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5
99 expo-audio@57.0.4: fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a102 expo-audio@57.0.4: fa9a3e0442ed395d4071bb406e08c3a471c9a84700bdfa0b9ad7ff144c96041a
100 expo-sharing@57.0.17: 8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45103 expo-sharing@57.0.17: 8d2e3b10eb3f52036a9a086800180ec6cebf3b75bccc5b1775117a7244d4ac45
101 expo-widgets@57.0.15: 319a9ded5db49c5b5215c511a138b33f44c7ea2972eb418192e8d5342fe75ce6104 expo-widgets@57.0.15: 319a9ded5db49c5b5215c511a138b33f44c7ea2972eb418192e8d5342fe75ce6
...@@ -138,8 +141,8 @@ importers:...@@ -138,8 +141,8 @@ importers:
138 specifier: 0.13.0141 specifier: 0.13.0
139 version: 0.13.0142 version: 0.13.0
140 '@effect/platform-node':143 '@effect/platform-node':
141 specifier: 4.0.0-rc.112144 specifier: 4.0.0-rc.115
142 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)145 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)
143 '@napi-rs/keyring':146 '@napi-rs/keyring':
144 specifier: ^1.3.0147 specifier: ^1.3.0
145 version: 1.3.0148 version: 1.3.0
...@@ -162,8 +165,8 @@ importers:...@@ -162,8 +165,8 @@ importers:
162 specifier: 0.10.2165 specifier: 0.10.2
163 version: 0.10.2(patch_hash=cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4)166 version: 0.10.2(patch_hash=cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4)
164 effect:167 effect:
165 specifier: 4.0.0-rc.112168 specifier: 4.0.0-rc.115
166 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)169 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
167 electron:170 electron:
168 specifier: 44.1.0171 specifier: 44.1.0
169 version: 44.1.0172 version: 44.1.0
...@@ -184,8 +187,8 @@ importers:...@@ -184,8 +187,8 @@ importers:
184 version: 0.1.44(react@19.2.6)187 version: 0.1.44(react@19.2.6)
185 devDependencies:188 devDependencies:
186 '@effect/vitest':189 '@effect/vitest':
187 specifier: 4.0.0-rc.112190 specifier: 4.0.0-rc.115
188 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))191 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
189 '@types/node':192 '@types/node':
190 specifier: 24.12.4193 specifier: 24.12.4
191 version: 24.12.4194 version: 24.12.4
...@@ -233,8 +236,8 @@ importers:...@@ -233,8 +236,8 @@ importers:
233 specifier: 4.6.8236 specifier: 4.6.8
234 version: 4.6.8(patch_hash=a82bb41039ee88a290a87d4ab58be7be4c49fa338603b17ea646e1ec140a1cfb)(dbc31631339ce74330e188d5d7a88158)237 version: 4.6.8(patch_hash=a82bb41039ee88a290a87d4ab58be7be4c49fa338603b17ea646e1ec140a1cfb)(dbc31631339ce74330e188d5d7a88158)
235 '@effect/atom-react':238 '@effect/atom-react':
236 specifier: 4.0.0-rc.112239 specifier: 4.0.0-rc.115
237 version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(react@19.2.3)(scheduler@0.27.0)240 version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(react@19.2.3)(scheduler@0.27.0)
238 '@expo-google-fonts/dm-sans':241 '@expo-google-fonts/dm-sans':
239 specifier: ^0.4.2242 specifier: ^0.4.2
240 version: 0.4.2243 version: 0.4.2
...@@ -311,8 +314,8 @@ importers:...@@ -311,8 +314,8 @@ importers:
311 specifier: 8.0.3314 specifier: 8.0.3
312 version: 8.0.3315 version: 8.0.3
313 effect:316 effect:
314 specifier: 4.0.0-rc.112317 specifier: 4.0.0-rc.115
315 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)318 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
316 expo:319 expo:
317 specifier: ~57.0.18320 specifier: ~57.0.18
318 version: 57.0.18(41fd11498a34454c91128cdad32f22f8)321 version: 57.0.18(41fd11498a34454c91128cdad32f22f8)
...@@ -474,8 +477,8 @@ importers:...@@ -474,8 +477,8 @@ importers:
474 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)477 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)
475 devDependencies:478 devDependencies:
476 '@effect/vitest':479 '@effect/vitest':
477 specifier: 4.0.0-rc.112480 specifier: 4.0.0-rc.115
478 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))481 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
479 '@pierre/trees':482 '@pierre/trees':
480 specifier: 1.0.0-beta.4483 specifier: 1.0.0-beta.4
481 version: 1.0.0-beta.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3)484 version: 1.0.0-beta.4(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
...@@ -501,11 +504,11 @@ importers:...@@ -501,11 +504,11 @@ importers:
501 specifier: ^0.3.260504 specifier: ^0.3.260
502 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)505 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)
503 '@effect/platform-node':506 '@effect/platform-node':
504 specifier: 4.0.0-rc.112507 specifier: 4.0.0-rc.115
505 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)508 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)
506 '@effect/platform-node-shared':509 '@effect/platform-node-shared':
507 specifier: 4.0.0-rc.112510 specifier: 4.0.0-rc.115
508 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)511 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)
509 '@ff-labs/fff-node':512 '@ff-labs/fff-node':
510 specifier: 0.9.4513 specifier: 0.9.4
511 version: 0.9.4(patch_hash=c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a8)514 version: 0.9.4(patch_hash=c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a8)
...@@ -516,11 +519,8 @@ importers:...@@ -516,11 +519,8 @@ importers:
516 specifier: 8.0.3519 specifier: 8.0.3
517 version: 8.0.3520 version: 8.0.3
518 effect:521 effect:
519 specifier: 4.0.0-rc.112522 specifier: 4.0.0-rc.115
520 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)523 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
521 msgpackr-extract:
522 specifier: 3.0.4
523 version: 3.0.4
524 node-pty:524 node-pty:
525 specifier: ^1.1.0525 specifier: ^1.1.0
526 version: 1.1.0526 version: 1.1.0
...@@ -538,8 +538,8 @@ importers:...@@ -538,8 +538,8 @@ importers:
538 version: 3.4.0538 version: 3.4.0
539 devDependencies:539 devDependencies:
540 '@effect/vitest':540 '@effect/vitest':
541 specifier: 4.0.0-rc.112541 specifier: 4.0.0-rc.115
542 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))542 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
543 '@t3tools/contracts':543 '@t3tools/contracts':
544 specifier: workspace:*544 specifier: workspace:*
545 version: link:../../packages/contracts545 version: link:../../packages/contracts
...@@ -598,8 +598,8 @@ importers:...@@ -598,8 +598,8 @@ importers:
598 specifier: ^3.2.2598 specifier: ^3.2.2
599 version: 3.2.2(react@19.2.6)599 version: 3.2.2(react@19.2.6)
600 '@effect/atom-react':600 '@effect/atom-react':
601 specifier: 4.0.0-rc.112601 specifier: 4.0.0-rc.115
602 version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))(react@19.2.6)(scheduler@0.27.0)602 version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(react@19.2.6)(scheduler@0.27.0)
603 '@formkit/auto-animate':603 '@formkit/auto-animate':
604 specifier: ^0.9.0604 specifier: ^0.9.0
605 version: 0.9.0605 version: 0.9.0
...@@ -655,8 +655,8 @@ importers:...@@ -655,8 +655,8 @@ importers:
655 specifier: ^4.0.2655 specifier: ^4.0.2
656 version: 4.0.2656 version: 4.0.2
657 effect:657 effect:
658 specifier: 4.0.0-rc.112658 specifier: 4.0.0-rc.115
659 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)659 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
660 hast-util-to-html:660 hast-util-to-html:
661 specifier: ^9.0.5661 specifier: ^9.0.5
662 version: 9.0.5662 version: 9.0.5
...@@ -707,11 +707,11 @@ importers:...@@ -707,11 +707,11 @@ importers:
707 version: 5.0.14(@types/react@19.2.16)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6))707 version: 5.0.14(@types/react@19.2.16)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6))
708 devDependencies:708 devDependencies:
709 '@effect/platform-node':709 '@effect/platform-node':
710 specifier: 4.0.0-rc.112710 specifier: 4.0.0-rc.115
711 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)711 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)
712 '@effect/vitest':712 '@effect/vitest':
713 specifier: 4.0.0-rc.112713 specifier: 4.0.0-rc.115
714 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))714 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
715 '@rolldown/plugin-babel':715 '@rolldown/plugin-babel':
716 specifier: ^0.2.0716 specifier: ^0.2.0
717 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)717 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)
...@@ -776,8 +776,8 @@ importers:...@@ -776,8 +776,8 @@ importers:
776 specifier: 3.18.1776 specifier: 3.18.1
777 version: 3.18.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)777 version: 3.18.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
778 '@effect/sql-pg':778 '@effect/sql-pg':
779 specifier: 4.0.0-rc.112779 specifier: 4.0.0-rc.115
780 version: 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))780 version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
781 '@noble/curves':781 '@noble/curves':
782 specifier: 'catalog:'782 specifier: 'catalog:'
783 version: 1.9.1783 version: 1.9.1
...@@ -794,24 +794,24 @@ importers:...@@ -794,24 +794,24 @@ importers:
794 specifier: workspace:*794 specifier: workspace:*
795 version: link:../../packages/shared795 version: link:../../packages/shared
796 alchemy:796 alchemy:
797 specifier: 2.0.0-beta.76797 specifier: 2.0.0-beta.78
798 version: 2.0.0-beta.76(197b68e0d20fdf20cf352009eca17c9f)798 version: 2.0.0-beta.78(@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)))(@types/node@24.12.4)(@types/react@19.2.16)(@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)(drizzle-kit@1.0.0-rc.5-ab785fc)(drizzle-orm@1.0.0-rc.5-ab785fc(04a2b37736bdb04e55e63e86c7865f24))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9))(pg@8.23.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typescript@6.0.3)(utf-8-validate@6.0.6)(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))
799 drizzle-orm:799 drizzle-orm:
800 specifier: 1.0.0-rc.5-ab785fc800 specifier: 1.0.0-rc.5-ab785fc
801 version: 1.0.0-rc.5-ab785fc(8ab70e2706da13c78d64d8a92fef1884)801 version: 1.0.0-rc.5-ab785fc(04a2b37736bdb04e55e63e86c7865f24)
802 effect:802 effect:
803 specifier: 4.0.0-rc.112803 specifier: 4.0.0-rc.115
804 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)804 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
805 devDependencies:805 devDependencies:
806 '@cloudflare/workers-types':806 '@cloudflare/workers-types':
807 specifier: ^4.20260601.1807 specifier: ^4.20260601.1
808 version: 4.20260604.1808 version: 4.20260604.1
809 '@effect/platform-node':809 '@effect/platform-node':
810 specifier: 4.0.0-rc.112810 specifier: 4.0.0-rc.115
811 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)811 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)
812 '@effect/vitest':812 '@effect/vitest':
813 specifier: 4.0.0-rc.112813 specifier: 4.0.0-rc.115
814 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))814 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
815 '@types/node':815 '@types/node':
816 specifier: 24.12.4816 specifier: 24.12.4
817 version: 24.12.4817 version: 24.12.4
...@@ -823,23 +823,23 @@ importers:...@@ -823,23 +823,23 @@ importers:
823 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)'823 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)'
824 vite-plus:824 vite-plus:
825 specifier: 'catalog:'825 specifier: 'catalog:'
826 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)826 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)
827827
828 oxlint-plugin-t3code:828 oxlint-plugin-t3code:
829 dependencies:829 dependencies:
830 '@effect/platform-node':830 '@effect/platform-node':
831 specifier: 4.0.0-rc.112831 specifier: 4.0.0-rc.115
832 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)832 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)
833 '@oxlint/plugins':833 '@oxlint/plugins':
834 specifier: ^1.63.0834 specifier: ^1.63.0
835 version: 1.68.0835 version: 1.68.0
836 effect:836 effect:
837 specifier: 4.0.0-rc.112837 specifier: 4.0.0-rc.115
838 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)838 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
839 devDependencies:839 devDependencies:
840 '@effect/vitest':840 '@effect/vitest':
841 specifier: 4.0.0-rc.112841 specifier: 4.0.0-rc.115
842 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))842 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
843 vite-plus:843 vite-plus:
844 specifier: 'catalog:'844 specifier: 'catalog:'
845 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)845 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)
...@@ -853,8 +853,8 @@ importers:...@@ -853,8 +853,8 @@ importers:
853 specifier: workspace:*853 specifier: workspace:*
854 version: link:../shared854 version: link:../shared
855 effect:855 effect:
856 specifier: 4.0.0-rc.112856 specifier: 4.0.0-rc.115
857 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)857 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
858 mdast-util-directive:858 mdast-util-directive:
859 specifier: ^3.1.0859 specifier: ^3.1.0
860 version: 3.1.0860 version: 3.1.0
...@@ -872,8 +872,8 @@ importers:...@@ -872,8 +872,8 @@ importers:
872 version: 11.0.5872 version: 11.0.5
873 devDependencies:873 devDependencies:
874 '@effect/vitest':874 '@effect/vitest':
875 specifier: 4.0.0-rc.112875 specifier: 4.0.0-rc.115
876 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))876 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
877 micromark-util-types:877 micromark-util-types:
878 specifier: ^2.0.2878 specifier: ^2.0.2
879 version: 2.0.2879 version: 2.0.2
...@@ -884,12 +884,12 @@ importers:...@@ -884,12 +884,12 @@ importers:
884 packages/contracts:884 packages/contracts:
885 dependencies:885 dependencies:
886 effect:886 effect:
887 specifier: 4.0.0-rc.112887 specifier: 4.0.0-rc.115
888 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)888 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
889 devDependencies:889 devDependencies:
890 '@effect/vitest':890 '@effect/vitest':
891 specifier: 4.0.0-rc.112891 specifier: 4.0.0-rc.115
892 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))892 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
893 vite-plus:893 vite-plus:
894 specifier: 'catalog:'894 specifier: 'catalog:'
895 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)895 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)
...@@ -897,18 +897,18 @@ importers:...@@ -897,18 +897,18 @@ importers:
897 packages/effect-acp:897 packages/effect-acp:
898 dependencies:898 dependencies:
899 effect:899 effect:
900 specifier: 4.0.0-rc.112900 specifier: 4.0.0-rc.115
901 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)901 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
902 devDependencies:902 devDependencies:
903 '@effect/openapi-generator':903 '@effect/openapi-generator':
904 specifier: 'catalog:'904 specifier: 'catalog:'
905 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)905 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)
906 '@effect/platform-node':906 '@effect/platform-node':
907 specifier: 4.0.0-rc.112907 specifier: 4.0.0-rc.115
908 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)908 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)
909 '@effect/vitest':909 '@effect/vitest':
910 specifier: 4.0.0-rc.112910 specifier: 4.0.0-rc.115
911 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))911 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
912 '@types/node':912 '@types/node':
913 specifier: 24.12.4913 specifier: 24.12.4
914 version: 24.12.4914 version: 24.12.4
...@@ -919,18 +919,18 @@ importers:...@@ -919,18 +919,18 @@ importers:
919 packages/effect-codex-app-server:919 packages/effect-codex-app-server:
920 dependencies:920 dependencies:
921 effect:921 effect:
922 specifier: 4.0.0-rc.112922 specifier: 4.0.0-rc.115
923 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)923 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
924 devDependencies:924 devDependencies:
925 '@effect/openapi-generator':925 '@effect/openapi-generator':
926 specifier: 'catalog:'926 specifier: 'catalog:'
927 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)927 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)
928 '@effect/platform-node':928 '@effect/platform-node':
929 specifier: 4.0.0-rc.112929 specifier: 4.0.0-rc.115
930 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)930 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)
931 '@effect/vitest':931 '@effect/vitest':
932 specifier: 4.0.0-rc.112932 specifier: 4.0.0-rc.115
933 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))933 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
934 '@types/node':934 '@types/node':
935 specifier: 24.12.4935 specifier: 24.12.4
936 version: 24.12.4936 version: 24.12.4
...@@ -950,8 +950,8 @@ importers:...@@ -950,8 +950,8 @@ importers:
950 specifier: workspace:*950 specifier: workspace:*
951 version: link:../contracts951 version: link:../contracts
952 effect:952 effect:
953 specifier: 4.0.0-rc.112953 specifier: 4.0.0-rc.115
954 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)954 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
955 jose:955 jose:
956 specifier: 'catalog:'956 specifier: 'catalog:'
957 version: 6.2.2957 version: 6.2.2
...@@ -960,11 +960,11 @@ importers:...@@ -960,11 +960,11 @@ importers:
960 version: 2.9.0960 version: 2.9.0
961 devDependencies:961 devDependencies:
962 '@effect/platform-node':962 '@effect/platform-node':
963 specifier: 4.0.0-rc.112963 specifier: 4.0.0-rc.115
964 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)964 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)
965 '@effect/vitest':965 '@effect/vitest':
966 specifier: 4.0.0-rc.112966 specifier: 4.0.0-rc.115
967 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))967 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
968 '@types/node':968 '@types/node':
969 specifier: 24.12.4969 specifier: 24.12.4
970 version: 24.12.4970 version: 24.12.4
...@@ -981,15 +981,15 @@ importers:...@@ -981,15 +981,15 @@ importers:
981 specifier: workspace:*981 specifier: workspace:*
982 version: link:../shared982 version: link:../shared
983 effect:983 effect:
984 specifier: 4.0.0-rc.112984 specifier: 4.0.0-rc.115
985 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)985 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
986 devDependencies:986 devDependencies:
987 '@effect/platform-node':987 '@effect/platform-node':
988 specifier: 4.0.0-rc.112988 specifier: 4.0.0-rc.115
989 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)989 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)
990 '@effect/vitest':990 '@effect/vitest':
991 specifier: 4.0.0-rc.112991 specifier: 4.0.0-rc.115
992 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))992 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
993 '@types/node':993 '@types/node':
994 specifier: 24.12.4994 specifier: 24.12.4
995 version: 24.12.4995 version: 24.12.4
...@@ -1003,12 +1003,12 @@ importers:...@@ -1003,12 +1003,12 @@ importers:
1003 specifier: workspace:*1003 specifier: workspace:*
1004 version: link:../shared1004 version: link:../shared
1005 effect:1005 effect:
1006 specifier: 4.0.0-rc.1121006 specifier: 4.0.0-rc.115
1007 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)1007 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1008 devDependencies:1008 devDependencies:
1009 '@effect/vitest':1009 '@effect/vitest':
1010 specifier: 4.0.0-rc.1121010 specifier: 4.0.0-rc.115
1011 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))1011 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
1012 '@types/node':1012 '@types/node':
1013 specifier: 24.12.41013 specifier: 24.12.4
1014 version: 24.12.41014 version: 24.12.4
...@@ -1019,8 +1019,8 @@ importers:...@@ -1019,8 +1019,8 @@ importers:
1019 scripts:1019 scripts:
1020 dependencies:1020 dependencies:
1021 '@effect/platform-node':1021 '@effect/platform-node':
1022 specifier: 4.0.0-rc.1121022 specifier: 4.0.0-rc.115
1023 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)1023 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)
1024 '@electron/asar':1024 '@electron/asar':
1025 specifier: ^3.4.11025 specifier: ^3.4.1
1026 version: 3.4.11026 version: 3.4.1
...@@ -1034,8 +1034,8 @@ importers:...@@ -1034,8 +1034,8 @@ importers:
1034 specifier: workspace:*1034 specifier: workspace:*
1035 version: link:../packages/tailscale1035 version: link:../packages/tailscale
1036 effect:1036 effect:
1037 specifier: 4.0.0-rc.1121037 specifier: 4.0.0-rc.115
1038 version: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)1038 version: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1039 pngjs:1039 pngjs:
1040 specifier: 7.0.01040 specifier: 7.0.0
1041 version: 7.0.01041 version: 7.0.0
...@@ -1044,8 +1044,8 @@ importers:...@@ -1044,8 +1044,8 @@ importers:
1044 version: 0.34.51044 version: 0.34.5
1045 devDependencies:1045 devDependencies:
1046 '@effect/vitest':1046 '@effect/vitest':
1047 specifier: 4.0.0-rc.1121047 specifier: 4.0.0-rc.115
1048 version: 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))1048 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
1049 '@types/pngjs':1049 '@types/pngjs':
1050 specifier: 6.0.51050 specifier: 6.0.5
1051 version: 6.0.51051 version: 6.0.5
...@@ -1071,17 +1071,13 @@ packages:...@@ -1071,17 +1071,13 @@ packages:
1071 resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==}1071 resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==}
1072 engines: {node: '>=18'}1072 engines: {node: '>=18'}
10731073
1074 '@alcalzone/ansi-tokenize@0.2.5':1074 '@alchemy.run/cloudflare-runtime@2.0.0-beta.78':
1075 resolution: {integrity: sha512-3NX/MpTdroi0aKz134A6RC2Gb2iXVECN4QaAXnvCIxxIm3C3AVB1mkUe8NaaiyvOpDfsrqWhYtj+Q6a62RrTsw==}1075 resolution: {integrity: sha512-fsNiicISo7gOFPwrfAbRQAfB8RUSwfsFtgb7n54NSinqARxiULJ4vCyn7RuLrZ9d32S0wt6/QwuNAeliGvulfw==}
1076 engines: {node: '>=18'}
1077
1078 '@alchemy.run/cloudflare-runtime@2.0.0-beta.76':
1079 resolution: {integrity: sha512-rH5BFh0Xq7aExpSpITyQbC+Jqfc9XgwJXidHVHTi1tNRC6/KAWg4tOzBfwiFIxljFLLYcApzlYFvLa/fTYcEjw==}
1080 peerDependencies:1076 peerDependencies:
1081 '@distilled.cloud/cloudflare': 1.0.0-rc.81077 '@distilled.cloud/cloudflare': 1.0.0-rc.12
1082 '@effect/platform-bun': '>=4.0.0-rc.112 || >=4.0.0'1078 '@effect/platform-bun': '>=4.0.0-rc.115 || >=4.0.0'
1083 '@effect/platform-node': 4.0.0-rc.1121079 '@effect/platform-node': 4.0.0-rc.115
1084 effect: 4.0.0-rc.1121080 effect: 4.0.0-rc.115
1085 rolldown: 1.2.51081 rolldown: 1.2.5
1086 vite: ^7.0.0 || ^8.0.01082 vite: ^7.0.0 || ^8.0.0
1087 peerDependenciesMeta:1083 peerDependenciesMeta:
...@@ -1094,13 +1090,25 @@ packages:...@@ -1094,13 +1090,25 @@ packages:
1094 vite:1090 vite:
1095 optional: true1091 optional: true
10961092
1097 '@alchemy.run/floci@2.0.0-beta.76':1093 '@alchemy.run/floci@2.0.0-beta.78':
1098 resolution: {integrity: sha512-UIKd+Hki3t5seDpLfyRBwWiNukKlbAqDCTOYBD+n49b/WQIgEWHhYXzGtnwC7OY/b3KAv5p7gsdn8IpPnRXR8g==}1094 resolution: {integrity: sha512-f+XDNleOUF/OU2GKMGGz8x674Ejg/cUf+xKeNByrTNok8OYFN8kO1Cev9gFiFB3JZjW6o6hARBb3MDEuYRAyDg==}
1099 peerDependencies:1095 peerDependencies:
1100 effect: 4.0.0-rc.1121096 effect: 4.0.0-rc.115
1097
1098 '@alchemy.run/node-utils@2.0.0-beta.78':
1099 resolution: {integrity: sha512-tNp202VlDbN7ONlx7Zv7dDbicZerZUOzyfi1RNtTH/POXe+BaDA+Tl5CvhNCsn3l/adWpqNc/3jkQIh47K1Q0w==}
11011100
1102 '@alchemy.run/node-utils@2.0.0-beta.76':1101 '@alchemy.run/sigil@0.0.0-alpha.11':
1103 resolution: {integrity: sha512-KUAlGdoeWeMEToUP1V3I+mEf6FVzUjU+6Tc8savNvMsXN9t3uwZVqD1FeMzTMzMTJJijjxVljQTCtyoeE9W43w==}1102 resolution: {integrity: sha512-JzaCBeRu9kY0qWC8JKkrierstImkrK77dl+7l0RvCTR+7uhOJECL2VxmjhJ1blea+mmbYUVob8OXOH5r8Mqfpw==}
1103 engines: {node: '>=22'}
1104 peerDependencies:
1105 '@types/react': '>=19.2.0'
1106 react-devtools-core: '>=6.1.2'
1107 peerDependenciesMeta:
1108 '@types/react':
1109 optional: true
1110 react-devtools-core:
1111 optional: true
11041112
1105 '@anthropic-ai/claude-agent-sdk@0.3.260':1113 '@anthropic-ai/claude-agent-sdk@0.3.260':
1106 resolution: {integrity: sha512-PmABtP4Rwd6l95itQrqzguv6rS9uACqikPB9g8BPeWRKZOpy3xpEOjJLYauof3BFk2wNZnfhr0Ttx8ttcZzq0w==}1114 resolution: {integrity: sha512-PmABtP4Rwd6l95itQrqzguv6rS9uACqikPB9g8BPeWRKZOpy3xpEOjJLYauof3BFk2wNZnfhr0Ttx8ttcZzq0w==}
...@@ -1305,6 +1313,10 @@ packages:...@@ -1305,6 +1313,10 @@ packages:
1305 resolution: {integrity: sha512-992QrTO7G9qCvKD0fx1rMlqcL14plUcRAbwmqqYVsuF3GrqcvlAL9qxR+baMafarEZ+l7DUQ5lCMmt5mbMhF7g==}1313 resolution: {integrity: sha512-992QrTO7G9qCvKD0fx1rMlqcL14plUcRAbwmqqYVsuF3GrqcvlAL9qxR+baMafarEZ+l7DUQ5lCMmt5mbMhF7g==}
1306 engines: {node: '>=20.0.0'}1314 engines: {node: '>=20.0.0'}
13071315
1316 '@aws-sdk/types@3.974.5':
1317 resolution: {integrity: sha512-LkwLL2BLbC6wNNm4JaH9mbEqBMdOZCct6VAYqhdN4U1xrWM+fUJQEfbHwQgDypapOWTRtlk25akb5afM0P8CIQ==}
1318 engines: {node: '>=20.0.0'}
1319
1308 '@aws-sdk/util-locate-window@3.965.5':1320 '@aws-sdk/util-locate-window@3.965.5':
1309 resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==}1321 resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==}
1310 engines: {node: '>=20.0.0'}1322 engines: {node: '>=20.0.0'}
...@@ -1807,18 +1819,10 @@ packages:...@@ -1807,18 +1819,10 @@ packages:
1807 resolution: {integrity: sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==}1819 resolution: {integrity: sha512-0Ty/1Gfm+Kb07sXcuESjyKfwEhSy4Ns1AgeEisHb/bDY5fWme0tTeTkU14T1Gmcs17YIjB/teiDe4uaCghbYqQ==}
1808 engines: {node: '>= 20.12.0'}1820 engines: {node: '>= 20.12.0'}
18091821
1810 '@clack/core@1.4.3':
1811 resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==}
1812 engines: {node: '>= 20.12.0'}
1813
1814 '@clack/prompts@1.6.0':1822 '@clack/prompts@1.6.0':
1815 resolution: {integrity: sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==}1823 resolution: {integrity: sha512-EYlRokl8szrP9Z25qT5aepMdBjzBvHF9ZEhzIiUBc9guz/T31EqRgvD0QSgZcpE93xiwrr+OkB4nz0BZyF6fSA==}
1816 engines: {node: '>= 20.12.0'}1824 engines: {node: '>= 20.12.0'}
18171825
1818 '@clack/prompts@1.7.0':
1819 resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==}
1820 engines: {node: '>= 20.12.0'}
1821
1822 '@clerk/backend@3.18.1':1826 '@clerk/backend@3.18.1':
1823 resolution: {integrity: sha512-JjaibgZ9OuYE/tcJUgU7w3c83KdCooHNkt9OBjKznbWUuTXI0lcZQQWyy4ZDw3kB1uszeDfs1WGbsOvVkZA/aQ==}1827 resolution: {integrity: sha512-JjaibgZ9OuYE/tcJUgU7w3c83KdCooHNkt9OBjKznbWUuTXI0lcZQQWyy4ZDw3kB1uszeDfs1WGbsOvVkZA/aQ==}
1824 engines: {node: '>=20.9.0'}1828 engines: {node: '>=20.9.0'}
...@@ -1935,32 +1939,32 @@ packages:...@@ -1935,32 +1939,32 @@ packages:
1935 workerd:1939 workerd:
1936 optional: true1940 optional: true
19371941
1938 '@cloudflare/workerd-darwin-64@1.20260704.1':1942 '@cloudflare/workerd-darwin-64@1.20260901.1':
1939 resolution: {integrity: sha512-XO+vvdhhTNZSsIWCkZ+JaE/JrFUmQAB0H0y/sVkAf32xa2TYBRvFUMwjSqf6WxtlxcKPQvmbLfpO/UQ0l/q4eQ==}1943 resolution: {integrity: sha512-5nJCpnclV6cc5v3aZOewu+djFvNvm9A/owQ+WJ2G1450roeFHfZGsyW7vVjSRWx3v2iykfkviyJfGm9ApeFDGg==}
1940 engines: {node: '>=16'}1944 engines: {node: '>=16'}
1941 cpu: [x64]1945 cpu: [x64]
1942 os: [darwin]1946 os: [darwin]
19431947
1944 '@cloudflare/workerd-darwin-arm64@1.20260704.1':1948 '@cloudflare/workerd-darwin-arm64@1.20260901.1':
1945 resolution: {integrity: sha512-6iI7nbOOO8PzEQ6UZVBZB/hv95m8jl0yvyjMuWrF5cJbiLb5zPw3KnpqvGi+aeOs2ZmUkc81i1FWKfXwLXzPRA==}1949 resolution: {integrity: sha512-nLwfUVoYmFNW1Ntp0BfZ2K1UWIll4zTTYP8Ni7NQnyrNkTnFeU/prrllWtnw7OG8Z/jyaEAAFaDFEBobrNTU3A==}
1946 engines: {node: '>=16'}1950 engines: {node: '>=16'}
1947 cpu: [arm64]1951 cpu: [arm64]
1948 os: [darwin]1952 os: [darwin]
19491953
1950 '@cloudflare/workerd-linux-64@1.20260704.1':1954 '@cloudflare/workerd-linux-64@1.20260901.1':
1951 resolution: {integrity: sha512-3mT0YHtxT7eLjghu3hKSJDUQoz+AYv8FM43nLPYhM0YiHOxr8OlmvnCb2Lp7v/U3bwd3Gnx7WEqjSppR583mGg==}1955 resolution: {integrity: sha512-wzCO0cMrFLRRs6bG5KXDpLSe70GpzpsxPjxwBzQngQOfyI2cxs5i4Rb5rDB0GG8E19feZEhjGXcHgY9+5Lq8YA==}
1952 engines: {node: '>=16'}1956 engines: {node: '>=16'}
1953 cpu: [x64]1957 cpu: [x64]
1954 os: [linux]1958 os: [linux]
19551959
1956 '@cloudflare/workerd-linux-arm64@1.20260704.1':1960 '@cloudflare/workerd-linux-arm64@1.20260901.1':
1957 resolution: {integrity: sha512-Opo7cPTPg4x0WwK+eZSDszCyFLKQkOGNCWxF005HRTJ5SJH8h0K9KyrC1k4LBwx3haXSVi+E1eGqo1gZ1Hmhkg==}1961 resolution: {integrity: sha512-aBk82+sSphMa6uR6h/CFN/GXmELJ2YOgQKYSsOsCTvbVLvHjclmyoEdLTY5FEImvo1ch1uXpGQgTjI8/suHGEg==}
1958 engines: {node: '>=16'}1962 engines: {node: '>=16'}
1959 cpu: [arm64]1963 cpu: [arm64]
1960 os: [linux]1964 os: [linux]
19611965
1962 '@cloudflare/workerd-windows-64@1.20260704.1':1966 '@cloudflare/workerd-windows-64@1.20260901.1':
1963 resolution: {integrity: sha512-a97Ecnzhy04x3U052VKPCNp863F7Wf00WY7Ga5P0SbtYvaO1PDzylsHrvFMPKeiDFcOwqiredawmJ+v6bhIgeQ==}1967 resolution: {integrity: sha512-3oJnCV7mWwzqmqz+3E+KYLbw1FylH+8n+p84srWv9MEsY9II1QuKiRKVf3CQTIdTDb6rkr5fCuRtkmLgRpAsNg==}
1964 engines: {node: '>=16'}1968 engines: {node: '>=16'}
1965 cpu: [x64]1969 cpu: [x64]
1966 os: [win32]1970 os: [win32]
...@@ -2026,50 +2030,60 @@ packages:...@@ -2026,50 +2030,60 @@ packages:
2026 '@types/react':2030 '@types/react':
2027 optional: true2031 optional: true
20282032
2029 '@distilled.cloud/aws@1.0.0-rc.8':2033 '@distilled.cloud/aws@1.0.0-rc.12':
2030 resolution: {integrity: sha512-eL4tRACU4TSykk/6+ItwUTZs93r3tRlrBn36ohqaUxqYYOfmssYlt/SLCzos4nlLgCxb+1T6BAstgYC848v1EQ==}2034 resolution: {integrity: sha512-L4TTEwMKB1ymXbYUqvYeoy5UWgmJtqQSzry2qWtAvD2ccwVGy0F7cFViEIYQk7boF4ZIP6SfhAls4+y1fVIi/g==}
2035 peerDependencies:
2036 effect: 4.0.0-rc.115
2037
2038 '@distilled.cloud/axiom@1.0.0-rc.12':
2039 resolution: {integrity: sha512-W/Kx0qKXh/RF5bJeLNr73BTLV51AFf7zsP8pG9wv2yGrA8sPj4Xu2z72sBG+TeQZIhNwA8Rh4J8GotNqH/380g==}
2031 peerDependencies:2040 peerDependencies:
2032 effect: 4.0.0-rc.1122041 effect: 4.0.0-rc.115
20332042
2034 '@distilled.cloud/axiom@1.0.0-rc.8':2043 '@distilled.cloud/cloudflare@1.0.0-rc.12':
2035 resolution: {integrity: sha512-lczeM0FPuF1mLZu7V8vcj8Klm9b1VSo4A75PP2a4km/cjphDl9LKamUwrSGLEY9denmqd1nn4+g2Svw1UmGpEw==}2044 resolution: {integrity: sha512-ddcL4RnAx6L8gRWCnE5T1W35ZlerI7SlaRLidX726iG/K/aA+bkU0ND39y7ljJ2Eyx3zR03TfpNrgXAXc9E3ng==}
2036 peerDependencies:2045 peerDependencies:
2037 effect: 4.0.0-rc.1122046 effect: 4.0.0-rc.115
20382047
2039 '@distilled.cloud/cloudflare@1.0.0-rc.8':2048 '@distilled.cloud/core@1.0.0-rc.12':
2040 resolution: {integrity: sha512-nhEyGOaupi/JmT0PS1DEMH5Ebwu004pvQv3Emzt9MJz3mF3LTdiuAnxP86rf3jsFtfa826TDokKArVMq55OKRA==}2049 resolution: {integrity: sha512-YeH/uPohGXp2qIctbqVzBtQV+bUs+K5Zdac8qIid7/t6VlwY964SALme5znRdFu/rQgrloXnaej8iTSK9RIQdA==}
2041 peerDependencies:2050 peerDependencies:
2042 effect: 4.0.0-rc.1122051 effect: 4.0.0-rc.115
20432052
2044 '@distilled.cloud/core@1.0.0-rc.8':2053 '@distilled.cloud/fly-io@1.0.0-rc.12':
2045 resolution: {integrity: sha512-baZMSaBh9kEyAqdhO+UbkvVDK+wqyI8d0UW0paSp5CqVResOl7ydHU4tCbBUOLoxOrqLRWfmImKrhW9SY1R8qw==}2054 resolution: {integrity: sha512-ACgR8Kcx/OP8gAF+PnXYneGGZNUqyiQHrcTB3/lRcv5gQdacXhTAvreV/d0t7jclRo5BBdNxnd5TuuHpr9vDLA==}
2046 peerDependencies:2055 peerDependencies:
2047 effect: 4.0.0-rc.1122056 effect: 4.0.0-rc.115
20482057
2049 '@distilled.cloud/fly-io@1.0.0-rc.8':2058 '@distilled.cloud/hetzner@1.0.0-rc.12':
2050 resolution: {integrity: sha512-0HqVLIpBxmuvrIrnmziz8iK39F5cBxkHlz43WR2s+tFidbPlCzmnci6gxixxiwMBCzcmiRmv57xQxuQzgfDQMw==}2059 resolution: {integrity: sha512-G6QzOXTNply63I90IjOtNofs0nHkEd1we/fgXiOjobLZt4+sKjjNBVTAHYHGMDeidbtxw270oF9JakgT11Pzww==}
2051 peerDependencies:2060 peerDependencies:
2052 effect: 4.0.0-rc.1122061 effect: 4.0.0-rc.115
20532062
2054 '@distilled.cloud/hetzner@1.0.0-rc.8':2063 '@distilled.cloud/neon@1.0.0-rc.12':
2055 resolution: {integrity: sha512-CAPj912qUQXMetyFvJEc7PJnSG4DR6RBvGXCOfQcJVgGTspt/IdT3iIeIInTUf6rgFRsqoGiRfS4ywTqWoqLFA==}2064 resolution: {integrity: sha512-jiypsVQCcKa9qNgG9HULXNgXj1E4FFO96Hk9p2JX6CEHca7ePldJSJEOf7roogQGC7lrnldBDCiZrxQLOapD3Q==}
2056 peerDependencies:2065 peerDependencies:
2057 effect: 4.0.0-rc.1122066 effect: 4.0.0-rc.115
20582067
2059 '@distilled.cloud/neon@1.0.0-rc.8':2068 '@distilled.cloud/planetscale@1.0.0-rc.12':
2060 resolution: {integrity: sha512-xIgxgoDyIs/G5lW8T2r4oyHpOcRzBO1wu7p46lU3ppuJ2rlJR4pmP9dF7KxStAVglr9yK3wmmmnraLoCAtd8Sg==}2069 resolution: {integrity: sha512-YCTB7soZtqzzgcCAUtrNHjAIsq92XS8cpjnbn3VU+sCQ0LnfnFGeMGJxQ/7qLHtx7Hv4+Ms8XNOs2Q5P81Skig==}
2061 peerDependencies:2070 peerDependencies:
2062 effect: 4.0.0-rc.1122071 effect: 4.0.0-rc.115
20632072
2064 '@distilled.cloud/planetscale@1.0.0-rc.8':2073 '@distilled.cloud/prisma@1.0.0-rc.12':
2065 resolution: {integrity: sha512-D0mnkT2Gnk/SKWoz05rkf7+sngH8+5m5ugjQ1GycsFMfTxUVSIVUIHX9yrO5vFrTsMlNsmrMR+7a9R3ZMGCWkA==}2074 resolution: {integrity: sha512-Z1KyUrhxkUt0KdxmNUd29Dtl9NizKv7HFHUuTcA1j6Ar5apUMvlR0f4lKqpliXW8Om3oVS3Wgvm+gDsxul2Ojg==}
2066 peerDependencies:2075 peerDependencies:
2067 effect: 4.0.0-rc.1122076 effect: 4.0.0-rc.115
20682077
2069 '@distilled.cloud/railway@1.0.0-rc.8':2078 '@distilled.cloud/railway@1.0.0-rc.12':
2070 resolution: {integrity: sha512-VW2YdbblVHhYww5JVtOjFlv3jBFl7xlt6/xTfkNxxgXgzJ5GYVlD3gPgBIpGy9Pcnv9rVRA6CL7QZeYeu47c9Q==}2079 resolution: {integrity: sha512-KOXSpl7r9qTiOYabJ6wUmM418exzv6YE5BVztaqKSGMuNGP/lAqhZm709/p97Zg6vHpxhJLIgmCq00z7hRM3sQ==}
2071 peerDependencies:2080 peerDependencies:
2072 effect: 4.0.0-rc.1122081 effect: 4.0.0-rc.115
2082
2083 '@distilled.cloud/stripe@1.0.0-rc.12':
2084 resolution: {integrity: sha512-4OuZF362yU66G1jDFDgRFFv8ZNRPZ6lw8Wrd5R/isRNHpGgvggLNlKg1QXWEQaTcRzn3RBXczqQCVwQV9IRZDQ==}
2085 peerDependencies:
2086 effect: 4.0.0-rc.115
20732087
2074 '@dnd-kit/accessibility@3.1.1':2088 '@dnd-kit/accessibility@3.1.1':
2075 resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==}2089 resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==}
...@@ -2102,57 +2116,52 @@ packages:...@@ -2102,57 +2116,52 @@ packages:
2102 '@drizzle-team/brocli@0.12.0':2116 '@drizzle-team/brocli@0.12.0':
2103 resolution: {integrity: sha512-mlUE+rZ8CatQekLhnaiN91Iemdd+e2gFKooGlnRB3oPTL3VghLfX24dx7HrzMNeC1JrIB/0kpsfyty3f5HNfxQ==}2117 resolution: {integrity: sha512-mlUE+rZ8CatQekLhnaiN91Iemdd+e2gFKooGlnRB3oPTL3VghLfX24dx7HrzMNeC1JrIB/0kpsfyty3f5HNfxQ==}
21042118
2105 '@effect/atom-react@4.0.0-rc.112':2119 '@effect/atom-react@4.0.0-rc.115':
2106 resolution: {integrity: sha512-Ksf90KQa6D4UDnMj4M84arlVKNIuwxxF2GvgXBzuaYi2LsgririsUhKQ5SYaK1euf8oIYeamEuthoZSbUQmIhw==}2120 resolution: {integrity: sha512-CUPeP6JmiGyFa4t8YSBEydXAL3kCOzs/5st0kanjqj/rqnekydrThx/l2u2HNTkhqSrQi9HLokMd8QTEpWsdDQ==}
2107 peerDependencies:2121 peerDependencies:
2108 effect: 4.0.0-rc.1122122 effect: 4.0.0-rc.115
2109 react: '>=19.0.0 <20.0.0'2123 react: '>=19.0.0 <20.0.0'
2110 scheduler: '>=0.25.0 <0.28.0'2124 scheduler: '>=0.25.0 <0.28.0'
21112125
2112 '@effect/openapi-generator@4.0.0-rc.112':2126 '@effect/openapi-generator@4.0.0-rc.115':
2113 resolution: {integrity: sha512-ZgAkEP2/8qPZKgnI5AqmBgqhrZsdMDKZXJoKn29xgElZUWCvHhdE6eSUfFtkQBRE5kQcATXOZajHl+S/Pg+8Dw==}2127 resolution: {integrity: sha512-/AkcQ4GdoTTa7CwkybSnKc0U0FhOCA+TAV6E93Ozz4XshgKCC2F75Zik+3EOlTfbENmvAsYNEIVrPfqupoO+ng==}
2114 hasBin: true2128 hasBin: true
2115 peerDependencies:2129 peerDependencies:
2116 '@effect/platform-node': 4.0.0-rc.1122130 '@effect/platform-node': 4.0.0-rc.115
2117 effect: 4.0.0-rc.1122131 effect: 4.0.0-rc.115
2118
2119 '@effect/platform-bun@4.0.0-rc.112':
2120 resolution: {integrity: sha512-Y5n2HhV/vsbrJls9ukX42RL7zqXQxISHegWFsP9njsCyDmGTnq7QYSO82rglwrLPwtTrv5dkSRTuGw4+oXxgMg==}
2121 peerDependencies:
2122 effect: 4.0.0-rc.112
21232132
2124 '@effect/platform-node-shared@4.0.0-rc.112':2133 '@effect/platform-node-shared@4.0.0-rc.115':
2125 resolution: {integrity: sha512-ttjz0xKamFN7vL8pNDYVwddJLjZvqKePc05djlz2VcdaKbLsnYbtMnL1rbOfHgEnIUSHGh7FkjaN4DM1Ov81sQ==}2134 resolution: {integrity: sha512-rcBwhDIfb82akJoTv7Vwh8K5x9vC/XfuePS7JjOr+z+dORXzsmKqI1BUQF27ARCN9fTAbDh7I6YvBlWhLjnqNg==}
2126 engines: {node: '>=18.0.0'}2135 engines: {node: '>=18.0.0'}
2127 peerDependencies:2136 peerDependencies:
2128 effect: 4.0.0-rc.1122137 effect: 4.0.0-rc.115
21292138
2130 '@effect/platform-node@4.0.0-rc.112':2139 '@effect/platform-node@4.0.0-rc.115':
2131 resolution: {integrity: sha512-/BMAcdNGQQskLmI0Zoa95KfTZkr9HV9N4NSxaSrusG6GeW6Ulp9KvZ+Rlaiw8lnOt43CXjFLdfll5/k5rxL4hQ==}2140 resolution: {integrity: sha512-mW03Wjq2FiTL5oi9yOkaKpCyUNBaduKgTk7qMHNELvC21Jq2qOAfdsfH+p+s2zmpB9w2RSa+ApODv4WjO9wQfw==}
2132 engines: {node: '>=18.0.0'}2141 engines: {node: '>=18.0.0'}
2133 peerDependencies:2142 peerDependencies:
2134 effect: 4.0.0-rc.1122143 effect: 4.0.0-rc.115
2135 redis: '>=5.0.0 <7.0.0'2144 redis: '>=5.0.0 <7.0.0'
21362145
2137 '@effect/sql-d1@4.0.0-rc.112':2146 '@effect/sql-d1@4.0.0-rc.115':
2138 resolution: {integrity: sha512-Wxdr6aU3pBHqhyBiybzbHmEK7qZ2w4iy0IxBgJHe9BLleYzCxObOaBQI9qq/VZSqEvc0IaOBMpbk2zh3dlPNSQ==}2147 resolution: {integrity: sha512-o2JkGjN02NBMxwDtJbwcC4teyMiOApqN085fdVMid4FUC6ixj/WyKyPpe51QGOMQQTTl2BkXccA/IwDIywGXlA==}
2139 peerDependencies:2148 peerDependencies:
2140 effect: 4.0.0-rc.1122149 effect: 4.0.0-rc.115
21412150
2142 '@effect/sql-pg@4.0.0-rc.112':2151 '@effect/sql-pg@4.0.0-rc.115':
2143 resolution: {integrity: sha512-UYUA3LAGH1Pg88Yau7eTlTLHRrIb/uTdxdPGxVcRdIjjrTzxtA7iKHR4hcmUeq5lQEcGLCopN7E4ffsAKF8vEQ==}2152 resolution: {integrity: sha512-TLdzqBvGF/HwAKpWTw/5ih7JqVkkakVSb4aD6amzMaavFfFl4vsqqeKjSBijwuzbOMANNN0HqnEt/9fgjTsFEA==}
2144 peerDependencies:2153 peerDependencies:
2145 effect: 4.0.0-rc.1122154 effect: 4.0.0-rc.115
21462155
2147 '@effect/sql-sqlite-bun@4.0.0-rc.112':2156 '@effect/sql-sqlite-bun@4.0.0-rc.112':
2148 resolution: {integrity: sha512-EqR8pWZo3VzedRvP6qo5HcfqNmFvSa+sQLWQl3oBMx2KY1FCc8NYjep79wYjNkW0qABnffrPUXCMTOncd1A+5g==}2157 resolution: {integrity: sha512-EqR8pWZo3VzedRvP6qo5HcfqNmFvSa+sQLWQl3oBMx2KY1FCc8NYjep79wYjNkW0qABnffrPUXCMTOncd1A+5g==}
2149 peerDependencies:2158 peerDependencies:
2150 effect: 4.0.0-rc.1122159 effect: 4.0.0-rc.115
21512160
2152 '@effect/sql-sqlite-do@4.0.0-rc.112':2161 '@effect/sql-sqlite-do@4.0.0-rc.115':
2153 resolution: {integrity: sha512-PewNVasimmhrdxYbNU91O0YlCcalIHOoF0H5XAWXrmzcEQrKM7kVCyb5h0gmJAZjBM4ZgWRvPY0PUOfbNmWchQ==}2162 resolution: {integrity: sha512-7lH9h+w4DW2tI+dus4hEac5mSCy1wgiT+uw/VvjR8YhNDemd3zEFY03NkbD81ipfOpnu2QA1YwgM58ExyPlhug==}
2154 peerDependencies:2163 peerDependencies:
2155 effect: 4.0.0-rc.1122164 effect: 4.0.0-rc.115
21562165
2157 '@effect/tsgo-darwin-arm64@0.41.0':2166 '@effect/tsgo-darwin-arm64@0.41.0':
2158 resolution: {integrity: sha512-3iEPtcHF72yDjv7T5YpnX+Io1LDLywJb1oGG3Fp/Fth4xmqiT1Vacyz5wnPCfEWGQ6CyrlyCZSSjUxPyJ70+DQ==}2167 resolution: {integrity: sha512-3iEPtcHF72yDjv7T5YpnX+Io1LDLywJb1oGG3Fp/Fth4xmqiT1Vacyz5wnPCfEWGQ6CyrlyCZSSjUxPyJ70+DQ==}
...@@ -2193,10 +2202,10 @@ packages:...@@ -2193,10 +2202,10 @@ packages:
2193 resolution: {integrity: sha512-C/U7lFM0AXsfpqRilDOgwu+llBhAo8bcdIlzgbRWf1LWlU4KZKB2UsUvBPL3qPnm+wmbCvQLeTQc4BjV9oJrcg==}2202 resolution: {integrity: sha512-C/U7lFM0AXsfpqRilDOgwu+llBhAo8bcdIlzgbRWf1LWlU4KZKB2UsUvBPL3qPnm+wmbCvQLeTQc4BjV9oJrcg==}
2194 hasBin: true2203 hasBin: true
21952204
2196 '@effect/vitest@4.0.0-rc.112':2205 '@effect/vitest@4.0.0-rc.115':
2197 resolution: {integrity: sha512-mEKh/FI64mt8JK1/v9mpOrJYdnp+UFZdRUBMEdZMiKz7klg6NPqVgg/oeAGH6wOOQc2iAPcfc2H9BbAv1KyzMQ==}2206 resolution: {integrity: sha512-DJR0hfdr3HNXAkzW8AzfvUz6VmrNFLrKk9tZGDURi33faMyxkc7ZewxELMMZwGpOTGN4mfqYVbX2CXgI+ZJBeQ==}
2198 peerDependencies:2207 peerDependencies:
2199 effect: 4.0.0-rc.1122208 effect: 4.0.0-rc.115
22002209
2201 '@egjs/hammerjs@2.0.17':2210 '@egjs/hammerjs@2.0.17':
2202 resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==}2211 resolution: {integrity: sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==}
...@@ -3401,36 +3410,6 @@ packages:...@@ -3401,36 +3410,6 @@ packages:
3401 resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==}3410 resolution: {integrity: sha512-XyroGQXcHrZdvmrGJvsA9KNeOOgGMg1Vg9OlheUsBOSKznLMDl+YChxbkboRHvtFYJEMRYmlV3uoo/njCw05iw==}
3402 engines: {node: '>=16'}3411 engines: {node: '>=16'}
34033412
3404 '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4':
3405 resolution: {integrity: sha512-LCkGo6JDfaBhgST7UpPWgNgLINpcpabaHfyz5OBx75nUYxBsaEPxjnyNjWpeb/xBup/682QnBfRBy2/LvPutZQ==}
3406 cpu: [arm64]
3407 os: [darwin]
3408
3409 '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4':
3410 resolution: {integrity: sha512-zExlW9zUJKZH/tOtVMttwjKa4Xm/3KcNjnE3dPN92uCktwavMxpgCA3MoJK/DOnTWsQgo224OaST27/mPNAf+w==}
3411 cpu: [x64]
3412 os: [darwin]
3413
3414 '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4':
3415 resolution: {integrity: sha512-dgX0P/9wGPJeHFBG+ZmhgE6bmtMt7NP5CRBGyyktpopdk/mW4POnrpQsSLtKI1dwpc+pPLuXHDh6vvskyQE/sw==}
3416 cpu: [arm64]
3417 os: [linux]
3418
3419 '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4':
3420 resolution: {integrity: sha512-Tg3yX65f5GbtXLkrYEHE5oibZG9epyYWas7FogTTEJeDEF9JlXJzKgXaNhT3UXlTOeA+AfZpYZYZ0uPj7Cfquw==}
3421 cpu: [arm]
3422 os: [linux]
3423
3424 '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4':
3425 resolution: {integrity: sha512-8TNXMEjJc3QEy7R/x1INhgiU+XakDAFUzBhaz7+Rbrs8NH5UQeHQxxmzsSBJGyV6I1jW79undiQm8tOI+D+8FQ==}
3426 cpu: [x64]
3427 os: [linux]
3428
3429 '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4':
3430 resolution: {integrity: sha512-CmCXPQrkbwExx3j946/PtHWHbYJiCRBRDl4BlkRQcJB/YOwQxJRTpoo7aTsortjgoJ1x7opzTSxn7C+ASSLVjQ==}
3431 cpu: [x64]
3432 os: [win32]
3433
3434 '@mswjs/interceptors@0.41.9':3413 '@mswjs/interceptors@0.41.9':
3435 resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==}3414 resolution: {integrity: sha512-VVPPgHyQ6ShqnrmDWuxjmUIsO9gWyOZFmuOfLd9LfBGQJwZfy0gvv9pbHSJuoFNIYC7ZDX9aoFwowjcdSC4E8w==}
3436 engines: {node: '>=18'}3415 engines: {node: '>=18'}
...@@ -3544,17 +3523,8 @@ packages:...@@ -3544,17 +3523,8 @@ packages:
3544 '@nodable/entities@2.1.1':3523 '@nodable/entities@2.1.1':
3545 resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==}3524 resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==}
35463525
3547 '@nodelib/fs.scandir@2.1.5':3526 '@nodable/entities@3.0.0':
3548 resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}3527 resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==}
3549 engines: {node: '>= 8'}
3550
3551 '@nodelib/fs.stat@2.0.5':
3552 resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==}
3553 engines: {node: '>= 8'}
3554
3555 '@nodelib/fs.walk@1.2.8':
3556 resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
3557 engines: {node: '>= 8'}
35583528
3559 '@nornagon/put@0.0.8':3529 '@nornagon/put@0.0.8':
3560 resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}3530 resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}
...@@ -4990,6 +4960,10 @@ packages:...@@ -4990,6 +4960,10 @@ packages:
4990 resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==}4960 resolution: {integrity: sha512-wBXDRup6UU97VKyaiRo8AssnfStPtG0oAAfpq/bC0a1YYau8pM86YB4kM6ccoVi1mS8l/UHbn9oDM+7uozr/ug==}
4991 engines: {node: '>=18.0.0'}4961 engines: {node: '>=18.0.0'}
49924962
4963 '@smithy/core@3.34.1':
4964 resolution: {integrity: sha512-dLcOUxz8YCv1RZUMKq6GbyUf95pLbrqh34bPvpCZ1+CByFF31BEAFewZjsGCnVsZTKdThNENfGyAgk2TJqVwSw==}
4965 engines: {node: '>=18.0.0'}
4966
4993 '@smithy/credential-provider-imds@4.3.8':4967 '@smithy/credential-provider-imds@4.3.8':
4994 resolution: {integrity: sha512-5cAM+KZC02sTqDt6NaLXyu50M/GNMd1eTzDVR8Lb0BBsVtu7RWHo47VPPEEv1vt3Yub6uzr+M5FHC+GtoT0USg==}4968 resolution: {integrity: sha512-5cAM+KZC02sTqDt6NaLXyu50M/GNMd1eTzDVR8Lb0BBsVtu7RWHo47VPPEEv1vt3Yub6uzr+M5FHC+GtoT0USg==}
4995 engines: {node: '>=18.0.0'}4969 engines: {node: '>=18.0.0'}
...@@ -5002,16 +4976,12 @@ packages:...@@ -5002,16 +4976,12 @@ packages:
5002 resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==}4976 resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==}
5003 engines: {node: '>=14.0.0'}4977 engines: {node: '>=14.0.0'}
50044978
5005 '@smithy/node-config-provider@4.4.6':
5006 resolution: {integrity: sha512-M+gG6eQ0y073mSmNB+erRXJvwpsqsN72ol2w6vcd8FEKeG7pqYK0JvzfVqONkPj2ElBB2pg+cU13I850b//Wag==}
5007 engines: {node: '>=18.0.0'}
5008
5009 '@smithy/node-http-handler@4.7.7':4979 '@smithy/node-http-handler@4.7.7':
5010 resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==}4980 resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==}
5011 engines: {node: '>=18.0.0'}4981 engines: {node: '>=18.0.0'}
50124982
5013 '@smithy/shared-ini-file-loader@4.5.6':4983 '@smithy/shared-ini-file-loader@4.7.2':
5014 resolution: {integrity: sha512-In8gYD2R66EKlGAq9QrNKVrMOGaGBD7LUNp2kUjeQ4V9zNktFIXBPmrCySr4YYo+jVeVL6CnWj26sOamcF0qIg==}4984 resolution: {integrity: sha512-XsIDj5gVG4YRxGS4n4TiBDAogPWRHXKZyor6JW/sEuaa/7BvKADe9j45jI2dPYCnYbKkLBmbZ4qN9ns0sH+kMQ==}
5015 engines: {node: '>=18.0.0'}4985 engines: {node: '>=18.0.0'}
50164986
5017 '@smithy/signature-v4@5.4.6':4987 '@smithy/signature-v4@5.4.6':
...@@ -5022,8 +4992,12 @@ packages:...@@ -5022,8 +4992,12 @@ packages:
5022 resolution: {integrity: sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ==}4992 resolution: {integrity: sha512-YupL0ZWmFtJexUN2cHzkvvF/b9pKrtAIfT1o7/oY/Ppu8IYeZ+lDPM5vZdQJaSeA132dJCqojjGC9NhXeF71VQ==}
5023 engines: {node: '>=18.0.0'}4993 engines: {node: '>=18.0.0'}
50244994
5025 '@smithy/util-base64@4.4.6':4995 '@smithy/types@4.18.0':
5026 resolution: {integrity: sha512-V6ApAGvCQnb7Wy1Sy60AQc+7UOEaNQxvAXBLdMi5Zzm66cmX0srvfAxDmg7BGuJ+9H9ez0PPWS/AeFgWxwGavA==}4996 resolution: {integrity: sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A==}
4997 engines: {node: '>=18.0.0'}
4998
4999 '@smithy/util-base64@4.6.2':
5000 resolution: {integrity: sha512-wTQX1hPfElIqY6AzM/s6c4UgpMxCL4MwJ5u6340ksLPq78lur6Y+keheIDk5gMX4G3KFh4MERcDt6xhRq+ie1Q==}
5027 engines: {node: '>=18.0.0'}5001 engines: {node: '>=18.0.0'}
50285002
5029 '@smithy/util-buffer-from@2.2.0':5003 '@smithy/util-buffer-from@2.2.0':
...@@ -6187,25 +6161,25 @@ packages:...@@ -6187,25 +6161,25 @@ packages:
6187 ajv@8.20.0:6161 ajv@8.20.0:
6188 resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}6162 resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
61896163
6190 alchemy@2.0.0-beta.76:6164 alchemy@2.0.0-beta.78:
6191 resolution: {integrity: sha512-XpcsXWk38YV9nO0v7s5PPjlMVtF8OQPeP8YqLu1iMzrq33bwViEOqkwQn3cgFiD7/QsnNcCju+hCXyeBwXrdtg==}6165 resolution: {integrity: sha512-Dv3IstS7W5AFPgU4T2PKe/SRrtqfKnMHYEKaWWCjVneE8VTl6Zz7M/oG/jz1YSmzdPaq3YinQlRQK3ZFzhTmkw==}
6192 hasBin: true6166 hasBin: true
6193 peerDependencies:6167 peerDependencies:
6194 '@alchemy.run/frontend-frameworks': 2.0.0-beta.766168 '@alchemy.run/frontend-frameworks': 2.0.0-beta.78
6195 '@aws/durable-execution-sdk-js': ^2.1.06169 '@aws/durable-execution-sdk-js': ^2.1.0
6196 '@effect/platform-bun': '>=4.0.0-rc.112 || >=4.0.0'6170 '@effect/platform-bun': '>=4.0.0-rc.115 || >=4.0.0'
6197 '@effect/platform-node': 4.0.0-rc.1126171 '@effect/platform-node': 4.0.0-rc.115
6198 '@effect/sql-mysql2': '>=4.0.0-rc.112 || >=4.0.0'6172 '@effect/sql-mysql2': '>=4.0.0-rc.115 || >=4.0.0'
6199 '@effect/sql-pg': 4.0.0-rc.1126173 '@effect/sql-pg': 4.0.0-rc.115
6200 '@vercel/nft': ^1.10.26174 '@vercel/nft': ^1.10.2
6201 drizzle-kit: 1.0.0-rc.5-ab785fc6175 drizzle-kit: 1.0.0-rc.5-ab785fc
6202 drizzle-orm: 1.0.0-rc.5-ab785fc6176 drizzle-orm: 1.0.0-rc.5-ab785fc
6203 effect: 4.0.0-rc.1126177 effect: 4.0.0-rc.115
6204 mongodb: ^6.10.06178 mongodb: ^6.10.0
6205 mysql2: ^3.24.26179 mysql2: ^3.24.2
6206 pg: ^8.22.06180 pg: ^8.22.0
6207 vite: ^8.0.76181 vite: ^8.0.7
6208 ws: ^8.20.06182 ws: ^8.21.0
6209 peerDependenciesMeta:6183 peerDependenciesMeta:
6210 '@alchemy.run/frontend-frameworks':6184 '@alchemy.run/frontend-frameworks':
6211 optional: true6185 optional: true
...@@ -6250,10 +6224,6 @@ packages:...@@ -6250,10 +6224,6 @@ packages:
6250 resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}6224 resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==}
6251 engines: {node: '>=8'}6225 engines: {node: '>=8'}
62526226
6253 ansi-escapes@7.3.0:
6254 resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==}
6255 engines: {node: '>=18'}
6256
6257 ansi-regex@4.1.1:6227 ansi-regex@4.1.1:
6258 resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}6228 resolution: {integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==}
6259 engines: {node: '>=6'}6229 engines: {node: '>=6'}
...@@ -6290,6 +6260,9 @@ packages:...@@ -6290,6 +6260,9 @@ packages:
6290 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}6260 resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
6291 engines: {node: '>= 8'}6261 engines: {node: '>= 8'}
62926262
6263 anynum@1.0.1:
6264 resolution: {integrity: sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==}
6265
6293 app-builder-lib@26.15.6:6266 app-builder-lib@26.15.6:
6294 resolution: {integrity: sha512-lN6BliNJLnS2ruBdYd1j1rzd2yl4ZwKqyTtAwVznIkkadOR9cFvRz/tNQ6nd824AobnFZKhcdFrpIGDnr0PRSg==}6267 resolution: {integrity: sha512-lN6BliNJLnS2ruBdYd1j1rzd2yl4ZwKqyTtAwVznIkkadOR9cFvRz/tNQ6nd824AobnFZKhcdFrpIGDnr0PRSg==}
6295 engines: {node: '>=14.0.0'}6268 engines: {node: '>=14.0.0'}
...@@ -6359,10 +6332,6 @@ packages:...@@ -6359,10 +6332,6 @@ packages:
6359 resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==}6332 resolution: {integrity: sha512-Xcz9l0z7y9yQ9rdDaxlmaI4uJHf/T8g9hOEzJcsEqX2SjCj4J20uK7+ldkDHMbpJDK76wF7xEIgxc/vSlsfw5w==}
6360 engines: {node: '>=10.12.0'}6333 engines: {node: '>=10.12.0'}
63616334
6362 auto-bind@5.0.1:
6363 resolution: {integrity: sha512-ooviqdwwgfIfNmDwo94wlshcdzfO64XV0Cg6oDsDYBJfITDz1EngD2z7DkbvCWn+XIMsIqW27sEVF6qcpJrRcg==}
6364 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6365
6366 await-lock@2.2.2:6335 await-lock@2.2.2:
6367 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}6336 resolution: {integrity: sha512-aDczADvlvTGajTDjcjpJMqRkOF6Qdz3YbPZm/PyW6tKPkx2hlYBzxMhEywM/tU72HrVZjgl5VCdRuMlA7pZ8Gw==}
63686337
...@@ -6576,17 +6545,17 @@ packages:...@@ -6576,17 +6545,17 @@ packages:
6576 caniuse-lite@1.0.30001793:6545 caniuse-lite@1.0.30001793:
6577 resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}6546 resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==}
65786547
6579 capnp-es@0.0.14:6548 capnp-es@0.0.16:
6580 resolution: {integrity: sha512-8lWj4GJISiqRSlAJGkWpI4Azib7QY5UDIkqxeHcI7aAnXVk9SFuWxl1Fme+2HhzNANV0WTJqwUZvvXvloc3sBA==}6549 resolution: {integrity: sha512-pqhhnRqGfDdgHa+rz4JVO9j1jnkyqsHRYrD4RBtIwxCknYSRG7Mjs+x3IRfd20u+ZGS0IhW2L7cDv9ZcIkCYhQ==}
6581 hasBin: true6550 hasBin: true
6582 peerDependencies:6551 peerDependencies:
6583 typescript: ^5.7.36552 typescript: ^5.7.3 || ^6.0.0
6584 peerDependenciesMeta:6553 peerDependenciesMeta:
6585 typescript:6554 typescript:
6586 optional: true6555 optional: true
65876556
6588 capnweb@0.6.1:6557 capnweb@0.12.0:
6589 resolution: {integrity: sha512-fmhV26QPd1ewf5R74h55oVZnGwIcSaRMzbfLQUy8+zOBjuTmT3KXoT8wxHvnp1m9Ht9BoUUS5ZwNLoVLfQTyBg==}6558 resolution: {integrity: sha512-jgZ/LMtMVTi+RVlooIslH78Gg23XbDTdvcLghWx3oz17D6u5GuJARt+uhZk/wcTo+f81eeabfnow4d3zLBj+JQ==}
65906559
6591 ccount@2.0.1:6560 ccount@2.0.1:
6592 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}6561 resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
...@@ -6663,18 +6632,10 @@ packages:...@@ -6663,18 +6632,10 @@ packages:
6663 class-variance-authority@0.7.1:6632 class-variance-authority@0.7.1:
6664 resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}6633 resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==}
66656634
6666 cli-boxes@3.0.0:
6667 resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
6668 engines: {node: '>=10'}
6669
6670 cli-cursor@2.1.0:6635 cli-cursor@2.1.0:
6671 resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}6636 resolution: {integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==}
6672 engines: {node: '>=4'}6637 engines: {node: '>=4'}
66736638
6674 cli-cursor@4.0.0:
6675 resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
6676 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6677
6678 cli-cursor@5.0.0:6639 cli-cursor@5.0.0:
6679 resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}6640 resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
6680 engines: {node: '>=18'}6641 engines: {node: '>=18'}
...@@ -6687,10 +6648,6 @@ packages:...@@ -6687,10 +6648,6 @@ packages:
6687 resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==}6648 resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==}
6688 engines: {node: '>=18.20'}6649 engines: {node: '>=18.20'}
66896650
6690 cli-truncate@5.2.0:
6691 resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==}
6692 engines: {node: '>=20'}
6693
6694 cli-width@4.1.0:6651 cli-width@4.1.0:
6695 resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}6652 resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
6696 engines: {node: '>= 12'}6653 engines: {node: '>= 12'}
...@@ -6722,10 +6679,6 @@ packages:...@@ -6722,10 +6679,6 @@ packages:
6722 resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}6679 resolution: {integrity: sha512-RMr0FhtfXemyinomL4hrWcYJxmX6deFdCxpJzhDttxgO1+bcCnkk+9drydLVDmAMG7NE6aN/fl4F7ucU/90gAA==}
6723 engines: {node: '>=0.10.0'}6680 engines: {node: '>=0.10.0'}
67246681
6725 code-excerpt@4.0.0:
6726 resolution: {integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==}
6727 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6728
6729 color-convert@1.9.3:6682 color-convert@1.9.3:
6730 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}6683 resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
67316684
...@@ -6822,10 +6775,6 @@ packages:...@@ -6822,10 +6775,6 @@ packages:
6822 convert-source-map@2.0.0:6775 convert-source-map@2.0.0:
6823 resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}6776 resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
68246777
6825 convert-to-spaces@2.0.1:
6826 resolution: {integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==}
6827 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
6828
6829 cookie-es@1.2.3:6778 cookie-es@1.2.3:
6830 resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==}6779 resolution: {integrity: sha512-lXVyvUvrNXblMqzIRrxHb57UUVmqsSWlxqt3XIjCkUP0wDAf6uicO6KMbEgYrMNtEvWgWHwe42CKxPu9MYAnWw==}
68316780
...@@ -7074,7 +7023,7 @@ packages:...@@ -7074,7 +7023,7 @@ packages:
7074 '@effect/sql-d1': '>=4.0.0-beta.105 || >=4.0.0'7023 '@effect/sql-d1': '>=4.0.0-beta.105 || >=4.0.0'
7075 '@effect/sql-libsql': '>=4.0.0-beta.105 || >=4.0.0'7024 '@effect/sql-libsql': '>=4.0.0-beta.105 || >=4.0.0'
7076 '@effect/sql-mysql2': '>=4.0.0-beta.105 || >=4.0.0'7025 '@effect/sql-mysql2': '>=4.0.0-beta.105 || >=4.0.0'
7077 '@effect/sql-pg': 4.0.0-rc.1127026 '@effect/sql-pg': 4.0.0-rc.115
7078 '@effect/sql-pglite': '>=4.0.0-beta.105 || >=4.0.0'7027 '@effect/sql-pglite': '>=4.0.0-beta.105 || >=4.0.0'
7079 '@effect/sql-sqlite-bun': '>=4.0.0-beta.105 || >=4.0.0'7028 '@effect/sql-sqlite-bun': '>=4.0.0-beta.105 || >=4.0.0'
7080 '@effect/sql-sqlite-do': '>=4.0.0-beta.105 || >=4.0.0'7029 '@effect/sql-sqlite-do': '>=4.0.0-beta.105 || >=4.0.0'
...@@ -7105,7 +7054,7 @@ packages:...@@ -7105,7 +7054,7 @@ packages:
7105 arktype: '>=2.0.0'7054 arktype: '>=2.0.0'
7106 better-sqlite3: '>=9.3.0'7055 better-sqlite3: '>=9.3.0'
7107 bun-types: '*'7056 bun-types: '*'
7108 effect: 4.0.0-rc.1127057 effect: 4.0.0-rc.115
7109 expo-sqlite: '>=14.0.0'7058 expo-sqlite: '>=14.0.0'
7110 minipg: '>=0.2.0'7059 minipg: '>=0.2.0'
7111 mssql: ^11.0.17060 mssql: ^11.0.1
...@@ -7232,8 +7181,8 @@ packages:...@@ -7232,8 +7181,8 @@ packages:
7232 ee-first@1.1.1:7181 ee-first@1.1.1:
7233 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}7182 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
72347183
7235 effect@4.0.0-rc.112:7184 effect@4.0.0-rc.115:
7236 resolution: {integrity: sha512-wXxwuh1Ywnv4cPRM3Wfa0vDwuOHnZ1TsTgHJkG9XgzND6inhBH9n1vBxhg3iIXOia/OrpmvVmd3lrD4vq6bF3A==}7185 resolution: {integrity: sha512-ogYulZ5ffeOzrJqQrG0XOkDO5lKn2s9KNHhoxJy/6wKUkF0i12dlVXWA9TgsgQ+zV/JzizyG0+XMPepZEQX6vw==}
72377186
7238 ejs@3.1.10:7187 ejs@3.1.10:
7239 resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}7188 resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
...@@ -7312,10 +7261,6 @@ packages:...@@ -7312,10 +7261,6 @@ packages:
7312 resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}7261 resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==}
7313 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}7262 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
73147263
7315 environment@1.1.0:
7316 resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==}
7317 engines: {node: '>=18'}
7318
7319 err-code@2.0.3:7264 err-code@2.0.3:
7320 resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}7265 resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==}
73217266
...@@ -7341,9 +7286,6 @@ packages:...@@ -7341,9 +7286,6 @@ packages:
7341 resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}7286 resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
7342 engines: {node: '>= 0.4'}7287 engines: {node: '>= 0.4'}
73437288
7344 es-toolkit@1.47.0:
7345 resolution: {integrity: sha512-n1GuoD0WEQZMBk5tttoZSqwgyLx01oqa5XsBmCHwPyNe1S9jPBEmtR2pSgp2kJuWE3ciFZ6yRHmY4pM4C3OOkw==}
7346
7347 es6-error@4.1.1:7289 es6-error@4.1.1:
7348 resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}7290 resolution: {integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==}
73497291
...@@ -7371,10 +7313,6 @@ packages:...@@ -7371,10 +7313,6 @@ packages:
7371 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}7313 resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
7372 engines: {node: '>=0.8.0'}7314 engines: {node: '>=0.8.0'}
73737315
7374 escape-string-regexp@2.0.0:
7375 resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==}
7376 engines: {node: '>=8'}
7377
7378 escape-string-regexp@4.0.0:7316 escape-string-regexp@4.0.0:
7379 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}7317 resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
7380 engines: {node: '>=10'}7318 engines: {node: '>=10'}
...@@ -7750,10 +7688,6 @@ packages:...@@ -7750,10 +7688,6 @@ packages:
7750 extend@3.0.2:7688 extend@3.0.2:
7751 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}7689 resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
77527690
7753 fast-check@4.9.0:
7754 resolution: {integrity: sha512-7ms6T7SybUev/PQITciI0yLM2pOSFy5zpG8Ty7tQofcVaQUvrMXp6CBwqF6fThLCLOrfBtuHAtwq6Yu4XPCllg==}
7755 engines: {node: '>=12.17.0'}
7756
7757 fast-deep-equal@3.1.3:7691 fast-deep-equal@3.1.3:
7758 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}7692 resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
77597693
...@@ -7761,10 +7695,6 @@ packages:...@@ -7761,10 +7695,6 @@ packages:
7761 resolution: {integrity: sha512-Ywe6jodPTWOTL9/k0bV7gdfP8twKL5Y8I8CZ933fAY5gBekICZSUQTbyH6ut2NZCNyB05mSUwAuEqdEIaOOlDQ==}7695 resolution: {integrity: sha512-Ywe6jodPTWOTL9/k0bV7gdfP8twKL5Y8I8CZ933fAY5gBekICZSUQTbyH6ut2NZCNyB05mSUwAuEqdEIaOOlDQ==}
7762 engines: {node: '>=6.0.0'}7696 engines: {node: '>=6.0.0'}
77637697
7764 fast-glob@3.3.3:
7765 resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==}
7766 engines: {node: '>=8.6.0'}
7767
7768 fast-json-stable-stringify@2.1.0:7698 fast-json-stable-stringify@2.1.0:
7769 resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}7699 resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
77707700
...@@ -7789,21 +7719,18 @@ packages:...@@ -7789,21 +7719,18 @@ packages:
7789 fast-xml-builder@1.2.0:7719 fast-xml-builder@1.2.0:
7790 resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==}7720 resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==}
77917721
7792 fast-xml-parser@5.7.3:7722 fast-xml-parser@5.11.1:
7793 resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==}7723 resolution: {integrity: sha512-TBw6K/fxoQGGjCmZDw9w/ZwP3uDcnTM4YH/g+PFRWr8sbe5idXtxNN6vITh4+1ruCZaho6uBFurElsA7F0zzgw==}
7794 hasBin: true7724 hasBin: true
77957725
7796 fast-xml-parser@5.8.0:7726 fast-xml-parser@5.7.3:
7797 resolution: {integrity: sha512-6bIM7fsJxeo3uXv7OncQYsBAMPJ7V16Slahl/6M98C/i2q+vB1+4a0MtrvYwDFEUrwDSbAmeLDRXsOBwrL7yAg==}7727 resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==}
7798 hasBin: true7728 hasBin: true
77997729
7800 fastest-levenshtein@1.0.16:7730 fastest-levenshtein@1.0.16:
7801 resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}7731 resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==}
7802 engines: {node: '>= 4.9.1'}7732 engines: {node: '>= 4.9.1'}
78037733
7804 fastq@1.20.1:
7805 resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==}
7806
7807 fb-dotslash@0.5.8:7734 fb-dotslash@0.5.8:
7808 resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==}7735 resolution: {integrity: sha512-XHYLKk9J4BupDxi9bSEhkfss0m+Vr9ChTrjhf9l2iw3jB5C7BnY4GVPoMcqbrTutsKJso6yj2nAB6BI/F2oZaA==}
7809 engines: {node: '>=20'}7736 engines: {node: '>=20'}
...@@ -7830,6 +7757,9 @@ packages:...@@ -7830,6 +7757,9 @@ packages:
7830 ffi-rs@1.3.2:7757 ffi-rs@1.3.2:
7831 resolution: {integrity: sha512-4s8dX9VbBw/jd5NOuE3EJRqXaIVdjMyiumeeDzrOhtjQRwp6Bz2za7iksWXTnvTQKV/tTdm1s1w7mObe92zPjQ==}7758 resolution: {integrity: sha512-4s8dX9VbBw/jd5NOuE3EJRqXaIVdjMyiumeeDzrOhtjQRwp6Bz2za7iksWXTnvTQKV/tTdm1s1w7mObe92zPjQ==}
78327759
7760 fflate@0.8.3:
7761 resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==}
7762
7833 filelist@1.0.6:7763 filelist@1.0.6:
7834 resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==}7764 resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==}
78357765
...@@ -7978,10 +7908,6 @@ packages:...@@ -7978,10 +7908,6 @@ packages:
7978 github-slugger@2.0.0:7908 github-slugger@2.0.0:
7979 resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}7909 resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==}
79807910
7981 glob-parent@5.1.2:
7982 resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
7983 engines: {node: '>= 6'}
7984
7985 glob-to-regexp@0.4.1:7911 glob-to-regexp@0.4.1:
7986 resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}7912 resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
79877913
...@@ -8018,6 +7944,10 @@ packages:...@@ -8018,6 +7944,10 @@ packages:
8018 graphmatch@1.1.1:7944 graphmatch@1.1.1:
8019 resolution: {integrity: sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==}7945 resolution: {integrity: sha512-5ykVn/EXM1hF0XCaWh05VbYvEiOL2lY1kBxZtaYsyvjp7cmWOU1XsAdfQBwClraEofXDT197lFbXOEVMHpvQOg==}
80207946
7947 graphql@16.11.0:
7948 resolution: {integrity: sha512-mS1lbMsxgQj6hge1XZ6p7GPhbrtFwUFYi3wRzXAC/FmYnyXMTvvI3td3rjmQ2u8ewXueaSvRPWaEcgVVOT9Jnw==}
7949 engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
7950
8021 graphql@16.14.1:7951 graphql@16.14.1:
8022 resolution: {integrity: sha512-cQOsSMS/IrDz82PVyRDvf/Q1F/bRbBVjJlh+xYOkI1qw2bWRvWGiWc+m2O0d6l4Bt1fyY+8kzJ8JFWGJqNeDBg==}7952 resolution: {integrity: sha512-cQOsSMS/IrDz82PVyRDvf/Q1F/bRbBVjJlh+xYOkI1qw2bWRvWGiWc+m2O0d6l4Bt1fyY+8kzJ8JFWGJqNeDBg==}
8023 engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}7953 engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0}
...@@ -8195,10 +8125,6 @@ packages:...@@ -8195,10 +8125,6 @@ packages:
8195 immediate@3.0.6:8125 immediate@3.0.6:
8196 resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}8126 resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==}
81978127
8198 indent-string@5.0.0:
8199 resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==}
8200 engines: {node: '>=12'}
8201
8202 inflight@1.0.6:8128 inflight@1.0.6:
8203 resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}8129 resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
8204 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.8130 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.
...@@ -8206,19 +8132,6 @@ packages:...@@ -8206,19 +8132,6 @@ packages:
8206 inherits@2.0.4:8132 inherits@2.0.4:
8207 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}8133 resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
82088134
8209 ink@6.8.0:
8210 resolution: {integrity: sha512-sbl1RdLOgkO9isK42WCZlJCFN9hb++sX9dsklOvfd1YQ3bQ2AiFu12Q6tFlr0HvEUvzraJntQCCpfEoUe9DSzA==}
8211 engines: {node: '>=20'}
8212 peerDependencies:
8213 '@types/react': '>=19.0.0'
8214 react: '>=19.0.0'
8215 react-devtools-core: '>=6.1.2'
8216 peerDependenciesMeta:
8217 '@types/react':
8218 optional: true
8219 react-devtools-core:
8220 optional: true
8221
8222 inline-style-parser@0.2.7:8135 inline-style-parser@0.2.7:
8223 resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}8136 resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==}
82248137
...@@ -8271,30 +8184,13 @@ packages:...@@ -8271,30 +8184,13 @@ packages:
8271 engines: {node: '>=20'}8184 engines: {node: '>=20'}
8272 hasBin: true8185 hasBin: true
82738186
8274 is-extglob@2.1.1:
8275 resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
8276 engines: {node: '>=0.10.0'}
8277
8278 is-fullwidth-code-point@3.0.0:8187 is-fullwidth-code-point@3.0.0:
8279 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}8188 resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==}
8280 engines: {node: '>=8'}8189 engines: {node: '>=8'}
82818190
8282 is-fullwidth-code-point@5.1.0:
8283 resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==}
8284 engines: {node: '>=18'}
8285
8286 is-glob@4.0.3:
8287 resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
8288 engines: {node: '>=0.10.0'}
8289
8290 is-hexadecimal@2.0.1:8191 is-hexadecimal@2.0.1:
8291 resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}8192 resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
82928193
8293 is-in-ci@2.0.0:
8294 resolution: {integrity: sha512-cFeerHriAnhrQSbpAxL37W1wcJKUUX07HyLWZCW1URJT/ra3GyUTzBgUnh24TMVfNTV2Hij2HLxkPHFZfOZy5w==}
8295 engines: {node: '>=20'}
8296 hasBin: true
8297
8298 is-inside-container@1.0.0:8194 is-inside-container@1.0.0:
8299 resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}8195 resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
8300 engines: {node: '>=14.16'}8196 engines: {node: '>=14.16'}
...@@ -8326,6 +8222,9 @@ packages:...@@ -8326,6 +8222,9 @@ packages:
8326 resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}8222 resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
8327 engines: {node: '>=18'}8223 engines: {node: '>=18'}
83288224
8225 is-unsafe@2.0.2:
8226 resolution: {integrity: sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==}
8227
8329 is-wsl@2.2.0:8228 is-wsl@2.2.0:
8330 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}8229 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
8331 engines: {node: '>=8'}8230 engines: {node: '>=8'}
...@@ -8771,10 +8670,6 @@ packages:...@@ -8771,10 +8670,6 @@ packages:
8771 merge-stream@2.0.0:8670 merge-stream@2.0.0:
8772 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}8671 resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
87738672
8774 merge2@1.4.1:
8775 resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
8776 engines: {node: '>= 8'}
8777
8778 metro-babel-transformer@0.84.4:8673 metro-babel-transformer@0.84.4:
8779 resolution: {integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==}8674 resolution: {integrity: sha512-rvCfz8snl9h20VcvpOHxZuHP1SlAkv4HXbzw7nyyVwu6Eqo5PRerbakQ9XmUCOsRy70spJ37O+G1TK8oMzo48g==}
8780 engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}8675 engines: {node: ^20.19.4 || ^22.13.0 || ^24.3.0 || >= 25.0.0}
...@@ -9008,11 +8903,6 @@ packages:...@@ -9008,11 +8903,6 @@ packages:
9008 engines: {node: '>=4.0.0'}8903 engines: {node: '>=4.0.0'}
9009 hasBin: true8904 hasBin: true
90108905
9011 mime@4.1.0:
9012 resolution: {integrity: sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==}
9013 engines: {node: '>=16'}
9014 hasBin: true
9015
9016 mimic-fn@1.2.0:8906 mimic-fn@1.2.0:
9017 resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}8907 resolution: {integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==}
9018 engines: {node: '>=4'}8908 engines: {node: '>=4'}
...@@ -9116,13 +9006,6 @@ packages:...@@ -9116,13 +9006,6 @@ packages:
9116 ms@2.1.3:9006 ms@2.1.3:
9117 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}9007 resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
91189008
9119 msgpackr-extract@3.0.4:
9120 resolution: {integrity: sha512-4kmO/MdyUIkLIvTPr8VHLil4AtoKIoniWPIEk5+CDy0xnWC84azhSFmuJ7PxZdsYtiP5kEeQsORAVIeMgxT+Hw==}
9121 hasBin: true
9122
9123 msgpackr@2.1.0:
9124 resolution: {integrity: sha512-p/pBCVO63CsvvpkomUnNNag6+n38rULuDA6HHe70o2gtC8ODI52foF/4ko2qQcp6OiErJXTmrZeXmsGGHsIQNQ==}
9125
9126 msw@2.12.11:9009 msw@2.12.11:
9127 resolution: {integrity: sha512-dVg20zi2I2EvnwH/+WupzsOC2mCa7qsIhyMAWtfRikn6RKtwL9+7SaF1IQ5LyZry4tlUtf6KyTVhnlQiZXozTQ==}9010 resolution: {integrity: sha512-dVg20zi2I2EvnwH/+WupzsOC2mCa7qsIhyMAWtfRikn6RKtwL9+7SaF1IQ5LyZry4tlUtf6KyTVhnlQiZXozTQ==}
9128 engines: {node: '>=18'}9011 engines: {node: '>=18'}
...@@ -9197,10 +9080,6 @@ packages:...@@ -9197,10 +9080,6 @@ packages:
9197 resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==}9080 resolution: {integrity: sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==}
9198 engines: {node: '>= 6.13.0'}9081 engines: {node: '>= 6.13.0'}
91999082
9200 node-gyp-build-optional-packages@5.2.2:
9201 resolution: {integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==}
9202 hasBin: true
9203
9204 node-gyp-build@4.8.4:9083 node-gyp-build@4.8.4:
9205 resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}9084 resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==}
9206 hasBin: true9085 hasBin: true
...@@ -9285,9 +9164,6 @@ packages:...@@ -9285,9 +9164,6 @@ packages:
9285 resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}9164 resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==}
9286 engines: {node: '>= 0.4'}9165 engines: {node: '>= 0.4'}
92879166
9288 obuf@1.1.2:
9289 resolution: {integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==}
9290
9291 obug@2.1.3:9167 obug@2.1.3:
9292 resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==}9168 resolution: {integrity: sha512-9miFgM2OFba7hB+pRgvtV84pYTBaoTHohvmIgiRt6dRIzbwEOIaNaP+dIlGs2fNFoB0SeISs0Jz5WFVRid6Xyg==}
9293 engines: {node: '>=12.20.0'}9169 engines: {node: '>=12.20.0'}
...@@ -9444,10 +9320,6 @@ packages:...@@ -9444,10 +9320,6 @@ packages:
9444 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}9320 resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
9445 engines: {node: '>= 0.8'}9321 engines: {node: '>= 0.8'}
94469322
9447 patch-console@2.0.0:
9448 resolution: {integrity: sha512-0YNdUceMdaQwoKce1gatDScmMo5pu/tfABfnzEqeG0gtTmd7mh/WcwgUjtAeOU7N8nFFlbQBnFK2gXW5fGvmMA==}
9449 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
9450
9451 path-browserify@1.0.1:9323 path-browserify@1.0.1:
9452 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}9324 resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==}
94539325
...@@ -9459,6 +9331,10 @@ packages:...@@ -9459,6 +9331,10 @@ packages:
9459 resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==}9331 resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==}
9460 engines: {node: '>=14.0.0'}9332 engines: {node: '>=14.0.0'}
94619333
9334 path-expression-matcher@1.6.2:
9335 resolution: {integrity: sha512-enSlaiat05iasnzmgNxRj8reFdj3puY2QpNgP1aPIaVfT6nn9ICuPoFlKHk8EN22HcwewshO+mN2DGbkCEOtqQ==}
9336 engines: {node: '>=14.0.0'}
9337
9462 path-is-absolute@1.0.1:9338 path-is-absolute@1.0.1:
9463 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}9339 resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
9464 engines: {node: '>=0.10.0'}9340 engines: {node: '>=0.10.0'}
...@@ -9502,19 +9378,10 @@ packages:...@@ -9502,19 +9378,10 @@ packages:
9502 pg-connection-string@2.14.0:9378 pg-connection-string@2.14.0:
9503 resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==}9379 resolution: {integrity: sha512-XwWDGcLRGCXAR8F/AM5bG7Q+A3Wm2s6QeEjlOKZLlH3UYcguiqCWKyWXVag5TLTIjR7oOJUY8kcADaZgWPyLeg==}
95049380
9505 pg-cursor@2.22.0:
9506 resolution: {integrity: sha512-knzXLKqarTjOvb3qDSW0JiGsazmxwEKXrqHfWRte7XUsOYccQRafn3BLnQobWwInkzFJSyOej8y8cQRh2z3kGw==}
9507 peerDependencies:
9508 pg: ^8
9509
9510 pg-int8@1.0.1:9381 pg-int8@1.0.1:
9511 resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}9382 resolution: {integrity: sha512-WCtabS6t3c8SkpDBUlb1kjOs7l66xsGdKpIPZsg4wR+B3+u9UAum2odSsF9tnvxg80h4ZxLWMy4pRjOsFIqQpw==}
9512 engines: {node: '>=4.0.0'}9383 engines: {node: '>=4.0.0'}
95139384
9514 pg-numeric@1.0.2:
9515 resolution: {integrity: sha512-BM/Thnrw5jm2kKLE5uJkXqqExRUY/toLHda65XgFTBTFYZyopbKjBe29Ii3RbkvlsMoFwD+tHeGaCjjv0gHlyw==}
9516 engines: {node: '>=4'}
9517
9518 pg-pool@3.14.0:9385 pg-pool@3.14.0:
9519 resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==}9386 resolution: {integrity: sha512-gKtPkFdQPU3DksooVLi9LsjZxrsBUZIpa+7aVx+LV5pNh0KzP4Zleud2po+ConrxbuXGBJ6Hfer6hdgpIBpBaw==}
9520 peerDependencies:9387 peerDependencies:
...@@ -9527,10 +9394,6 @@ packages:...@@ -9527,10 +9394,6 @@ packages:
9527 resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}9394 resolution: {integrity: sha512-qTAAlrEsl8s4OiEQY69wDvcMIdQN6wdz5ojQiOy6YRMuynxenON0O5oCpJI6lshc6scgAY8qvJ2On/p+CXY0GA==}
9528 engines: {node: '>=4'}9395 engines: {node: '>=4'}
95299396
9530 pg-types@4.1.0:
9531 resolution: {integrity: sha512-o2XFanIMy/3+mThw69O8d4n1E5zsLhdO+OPqswezu7Z5ekP4hYDqlDjlmOpYMbzY2Br0ufCwJLdDIXeNVwcWFg==}
9532 engines: {node: '>=10'}
9533
9534 pg@8.23.0:9397 pg@8.23.0:
9535 resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==}9398 resolution: {integrity: sha512-Ip2EQCngowJLGOfCwkFhPXU7/ljlhn6Rxlmy4XYfL2Y+vyRM59+8uR2xqRWKdYmbXmxCFOAmKxBuSUCdF34qLg==}
9536 engines: {node: '>= 16.0.0'}9399 engines: {node: '>= 16.0.0'}
...@@ -9602,37 +9465,18 @@ packages:...@@ -9602,37 +9465,18 @@ packages:
9602 resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}9465 resolution: {integrity: sha512-VpZrUqU5A69eQyW2c5CA1jtLecCsN2U/bD6VilrFDWq5+5UIEVO7nazS3TEcHf1zuPYO/sqGvUvW62g86RXZuA==}
9603 engines: {node: '>=4'}9466 engines: {node: '>=4'}
96049467
9605 postgres-array@3.0.4:
9606 resolution: {integrity: sha512-nAUSGfSDGOaOAEGwqsRY27GPOea7CNipJPOA7lPbdEpx5Kg3qzdP0AaWC5MlhTWV9s4hFX39nomVZ+C4tnGOJQ==}
9607 engines: {node: '>=12'}
9608
9609 postgres-bytea@1.0.1:9468 postgres-bytea@1.0.1:
9610 resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==}9469 resolution: {integrity: sha512-5+5HqXnsZPE65IJZSMkZtURARZelel2oXUEO8rH83VS/hxH5vv1uHquPg5wZs8yMAfdv971IU+kcPUczi7NVBQ==}
9611 engines: {node: '>=0.10.0'}9470 engines: {node: '>=0.10.0'}
96129471
9613 postgres-bytea@3.0.0:
9614 resolution: {integrity: sha512-CNd4jim9RFPkObHSjVHlVrxoVQXz7quwNFpz7RY1okNNme49+sVyiTvTRobiLV548Hx/hb1BG+iE7h9493WzFw==}
9615 engines: {node: '>= 6'}
9616
9617 postgres-date@1.0.7:9472 postgres-date@1.0.7:
9618 resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}9473 resolution: {integrity: sha512-suDmjLVQg78nMK2UZ454hAG+OAW+HQPZ6n++TNDUX+L0+uUlLywnoxJKDou51Zm+zTCjrCl0Nq6J9C5hP9vK/Q==}
9619 engines: {node: '>=0.10.0'}9474 engines: {node: '>=0.10.0'}
96209475
9621 postgres-date@2.1.0:
9622 resolution: {integrity: sha512-K7Juri8gtgXVcDfZttFKVmhglp7epKb1K4pgrkLxehjqkrgPhfG6OO8LHLkfaqkbpjNRnra018XwAr1yQFWGcA==}
9623 engines: {node: '>=12'}
9624
9625 postgres-interval@1.2.0:9476 postgres-interval@1.2.0:
9626 resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}9477 resolution: {integrity: sha512-9ZhXKM/rw350N1ovuWHbGxnGh/SNJ4cnxHiM0rxE4VN41wsg8P8zWn9hv/buK00RP4WvlOyr/RBDiptyxVbkZQ==}
9627 engines: {node: '>=0.10.0'}9478 engines: {node: '>=0.10.0'}
96289479
9629 postgres-interval@3.0.0:
9630 resolution: {integrity: sha512-BSNDnbyZCXSxgA+1f5UU2GmwhoI0aU5yMxRGO8CdFEcY2BQF9xm/7MqKnYoM1nJDk8nONNWDk9WeSmePFhQdlw==}
9631 engines: {node: '>=12'}
9632
9633 postgres-range@1.1.4:
9634 resolution: {integrity: sha512-i/hbxIE9803Alj/6ytL7UHQxRvZkI9O4Sy+J3HGc4F4oo/2eQAjTSNJ0bfxyse3bH0nuVesCk+3IRLaMtG3H6w==}
9635
9636 postject@1.0.0-alpha.6:9480 postject@1.0.0-alpha.6:
9637 resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==}9481 resolution: {integrity: sha512-b9Eb8h2eVqNE8edvKdwqkrY6O7kAwmI8kcnBv1NScolYJbo59XUF0noFq+lxbC1yN20bmC0WBEbDC5H/7ASb0A==}
9638 engines: {node: '>=14.0.0'}9482 engines: {node: '>=14.0.0'}
...@@ -9756,9 +9600,6 @@ packages:...@@ -9756,9 +9600,6 @@ packages:
9756 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}9600 resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
9757 engines: {node: '>=6'}9601 engines: {node: '>=6'}
97589602
9759 pure-rand@8.4.0:
9760 resolution: {integrity: sha512-IoM8YF/jY0hiugFo/wOWqfmarlE6J0wc6fDK1PhftMk7MGhVZl88sZimmqBBFomLOCSmcCCpsfj7wXASCpvK9A==}
9761
9762 pvtsutils@1.3.6:9603 pvtsutils@1.3.6:
9763 resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==}9604 resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==}
97649605
...@@ -9774,9 +9615,6 @@ packages:...@@ -9774,9 +9615,6 @@ packages:
9774 resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}9615 resolution: {integrity: sha512-hh2WYhq4fi8+b+/2Kg9CEge4fDPvHS534aOOvOZeQ3+Vf2mCFsaFBYj0i+iXcAq6I9Vzp5fjMFBlONvayDC1qg==}
9775 engines: {node: '>=6'}9616 engines: {node: '>=6'}
97769617
9777 queue-microtask@1.2.3:
9778 resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
9779
9780 queue@6.0.2:9618 queue@6.0.2:
9781 resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}9619 resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==}
97829620
...@@ -9968,12 +9806,6 @@ packages:...@@ -9968,12 +9806,6 @@ packages:
9968 '@types/react':9806 '@types/react':
9969 optional: true9807 optional: true
99709808
9971 react-reconciler@0.33.0:
9972 resolution: {integrity: sha512-KetWRytFv1epdpJc3J4G75I4WrplZE5jOL7Yq0p34+OVOKF4Se7WrdIdVC45XsSSmUTlht2FM/fM1FZb1mfQeA==}
9973 engines: {node: '>=0.10.0'}
9974 peerDependencies:
9975 react: ^19.2.0
9976
9977 react-refresh@0.14.2:9809 react-refresh@0.14.2:
9978 resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}9810 resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==}
9979 engines: {node: '>=0.10.0'}9811 engines: {node: '>=0.10.0'}
...@@ -10167,10 +9999,6 @@ packages:...@@ -10167,10 +9999,6 @@ packages:
10167 resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}9999 resolution: {integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==}
10168 engines: {node: '>=4'}10000 engines: {node: '>=4'}
1016910001
10170 restore-cursor@4.0.0:
10171 resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
10172 engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
10173
10174 restore-cursor@5.1.0:10002 restore-cursor@5.1.0:
10175 resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}10003 resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
10176 engines: {node: '>=18'}10004 engines: {node: '>=18'}
...@@ -10194,10 +10022,6 @@ packages:...@@ -10194,10 +10022,6 @@ packages:
10194 rettime@0.10.1:10022 rettime@0.10.1:
10195 resolution: {integrity: sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==}10023 resolution: {integrity: sha512-uyDrIlUEH37cinabq0AX4QbgV4HbFZ/gqoiunWQ1UqBtRvTTytwhNYjE++pO/MjPTZL5KQCf2bEoJ/BJNVQ5Kw==}
1019610024
10197 reusify@1.1.0:
10198 resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==}
10199 engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
10200
10201 rimraf@2.6.3:10025 rimraf@2.6.3:
10202 resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==}10026 resolution: {integrity: sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==}
10203 deprecated: Rimraf versions prior to v4 are no longer supported10027 deprecated: Rimraf versions prior to v4 are no longer supported
...@@ -10229,9 +10053,6 @@ packages:...@@ -10229,9 +10053,6 @@ packages:
10229 resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}10053 resolution: {integrity: sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==}
10230 engines: {node: '>= 18'}10054 engines: {node: '>= 18'}
1023110055
10232 run-parallel@1.2.0:
10233 resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
10234
10235 safe-buffer@5.1.2:10056 safe-buffer@5.1.2:
10236 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}10057 resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
1023710058
...@@ -10418,10 +10239,6 @@ packages:...@@ -10418,10 +10239,6 @@ packages:
10418 sisteransi@1.0.5:10239 sisteransi@1.0.5:
10419 resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}10240 resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
1042010241
10421 slice-ansi@8.0.0:
10422 resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==}
10423 engines: {node: '>=20'}
10424
10425 slugify@1.6.9:10242 slugify@1.6.9:
10426 resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==}10243 resolution: {integrity: sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==}
10427 engines: {node: '>=8.0.0'}10244 engines: {node: '>=8.0.0'}
...@@ -10477,10 +10294,6 @@ packages:...@@ -10477,10 +10294,6 @@ packages:
10477 sprintf-js@1.1.3:10294 sprintf-js@1.1.3:
10478 resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}10295 resolution: {integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==}
1047910296
10480 stack-utils@2.0.6:
10481 resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==}
10482 engines: {node: '>=10'}
10483
10484 stackback@0.0.2:10297 stackback@0.0.2:
10485 resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}10298 resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
1048610299
...@@ -10580,6 +10393,9 @@ packages:...@@ -10580,6 +10393,9 @@ packages:
10580 strnum@2.3.0:10393 strnum@2.3.0:
10581 resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==}10394 resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==}
1058210395
10396 strnum@2.4.2:
10397 resolution: {integrity: sha512-rDG3Ah4TV0k1hWvLSzkZtMmLN9+eS+h3knq4MP6A42Y3Yh5qGNnOUs1jJkoSr8FG5dsL28c7KgkIBzSEykqtuw==}
10398
10583 structured-headers@0.4.1:10399 structured-headers@0.4.1:
10584 resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==}10400 resolution: {integrity: sha512-0MP/Cxx5SzeeZ10p/bZI0S6MpgD+yxAhi1BOQ34jgnMXsCq3j1t6tQnZu+KdlL7dvJTLT3g9xN8tl10TqgFMcg==}
1058510401
...@@ -10651,10 +10467,6 @@ packages:...@@ -10651,10 +10467,6 @@ packages:
10651 resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}10467 resolution: {integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==}
10652 engines: {node: '>=8'}10468 engines: {node: '>=8'}
1065310469
10654 terminal-size@4.0.1:
10655 resolution: {integrity: sha512-avMLDQpUI9I5XFrklECw1ZEUPJhqzcwSWsyyI8blhRLT+8N1jLJWLWWYQpB2q2xthq8xDvjZPISVh53T/+CLYQ==}
10656 engines: {node: '>=18'}
10657
10658 terser@5.48.0:10470 terser@5.48.0:
10659 resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==}10471 resolution: {integrity: sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==}
10660 engines: {node: '>=10'}10472 engines: {node: '>=10'}
...@@ -11313,12 +11125,8 @@ packages:...@@ -11313,12 +11125,8 @@ packages:
11313 engines: {node: '>=8'}11125 engines: {node: '>=8'}
11314 hasBin: true11126 hasBin: true
1131511127
11316 widest-line@6.0.0:11128 workerd@1.20260901.1:
11317 resolution: {integrity: sha512-U89AsyEeAsyoF0zVJBkG9zBgekjgjK7yk9sje3F4IQpXBJ10TF6ByLlIfjMhcmHMJgHZI4KHt4rdNfktzxIAMA==}11129 resolution: {integrity: sha512-Z5PVprrPRlV70+RzgbFpzoPpjCLGtErhsQ9Ahe96pe7hJGMsmexTU4+rhUPH+2Sguf7vRAxFFsqXpkIleRFSPA==}
11318 engines: {node: '>=20'}
11319
11320 workerd@1.20260704.1:
11321 resolution: {integrity: sha512-GDZ0jzIYDYfN7rCt/oFJv4BG3QJ+4IS2kfRvxEMY9VKIfPhzo63PH69Ir7ug8LfORCgCtmfkiQVXrqbot7pZTQ==}
11322 engines: {node: '>=16'}11130 engines: {node: '>=16'}
11323 hasBin: true11131 hasBin: true
1132411132
...@@ -11349,18 +11157,6 @@ packages:...@@ -11349,18 +11157,6 @@ packages:
11349 utf-8-validate:11157 utf-8-validate:
11350 optional: true11158 optional: true
1135111159
11352 ws@8.21.0:
11353 resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==}
11354 engines: {node: '>=10.0.0'}
11355 peerDependencies:
11356 bufferutil: ^4.0.1
11357 utf-8-validate: '>=5.0.2'
11358 peerDependenciesMeta:
11359 bufferutil:
11360 optional: true
11361 utf-8-validate:
11362 optional: true
11363
11364 ws@8.21.3:11160 ws@8.21.3:
11365 resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==}11161 resolution: {integrity: sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==}
11366 engines: {node: '>=10.0.0'}11162 engines: {node: '>=10.0.0'}
...@@ -11381,6 +11177,10 @@ packages:...@@ -11381,6 +11177,10 @@ packages:
11381 resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==}11177 resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==}
11382 engines: {node: '>=16.0.0'}11178 engines: {node: '>=16.0.0'}
1138311179
11180 xml-naming@0.3.0:
11181 resolution: {integrity: sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==}
11182 engines: {node: '>=16.0.0'}
11183
11384 xml2js@0.4.23:11184 xml2js@0.4.23:
11385 resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}11185 resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}
11386 engines: {node: '>=4.0.0'}11186 engines: {node: '>=4.0.0'}
...@@ -11463,9 +11263,6 @@ packages:...@@ -11463,9 +11263,6 @@ packages:
11463 resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}11263 resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==}
11464 engines: {node: '>=18'}11264 engines: {node: '>=18'}
1146511265
11466 yoga-layout@3.2.1:
11467 resolution: {integrity: sha512-0LPOt3AxKqMdFBZA3HBAt/t/8vIKq7VaQYbuA8WxCgung+p9TVyKRYdpvCb80HcdTN2NkbIKbhNwKUfm3tQywQ==}
11468
11469 yuku-codegen@0.5.48:11266 yuku-codegen@0.5.48:
11470 resolution: {integrity: sha512-p7HxD5Xl4jzDzqMrGePAOeSHmRY4g58h4HuGq15weQFPxuPWd/W6e7nqp/+Lea6JfpOdBwJOAyXFqIZ/J9Zfnw==}11267 resolution: {integrity: sha512-p7HxD5Xl4jzDzqMrGePAOeSHmRY4g58h4HuGq15weQFPxuPWd/W6e7nqp/+Lea6JfpOdBwJOAyXFqIZ/J9Zfnw==}
1147111268
...@@ -11526,27 +11323,21 @@ snapshots:...@@ -11526,27 +11323,21 @@ snapshots:
11526 dependencies:11323 dependencies:
11527 json-schema: 0.4.011324 json-schema: 0.4.0
1152811325
11529 '@alcalzone/ansi-tokenize@0.2.5':11326 '@alchemy.run/cloudflare-runtime@2.0.0-beta.78(@distilled.cloud/cloudflare@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@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)':
11530 dependencies:11327 dependencies:
11531 ansi-styles: 6.2.311328 '@alchemy.run/node-utils': 2.0.0-beta.78
11532 is-fullwidth-code-point: 5.1.011329 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1)
1153311330 '@distilled.cloud/cloudflare': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
11534 '@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)':
11535 dependencies:
11536 '@alchemy.run/node-utils': 2.0.0-beta.76
11537 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1)
11538 '@distilled.cloud/cloudflare': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))
11539 '@puppeteer/browsers': 3.2.2(yauzl@3.4.0)11331 '@puppeteer/browsers': 3.2.2(yauzl@3.4.0)
11540 capnp-es: 0.0.14(typescript@7.0.2)11332 capnp-es: 0.0.16(typescript@6.0.3)
11541 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)11333 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
11542 magic-string: 0.30.2111334 magic-string: 0.30.21
11543 sharp: 0.35.4(@types/node@24.12.4)11335 sharp: 0.35.4(@types/node@24.12.4)
11544 unenv: 2.0.0-rc.2411336 unenv: 2.0.0-rc.24
11545 workerd: 1.20260704.111337 workerd: 1.20260901.1
11546 yauzl: 3.4.011338 yauzl: 3.4.0
11547 optionalDependencies:11339 optionalDependencies:
11548 '@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)11340 '@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)
11549 '@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)
11550 rolldown: 1.2.511341 rolldown: 1.2.5
11551 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)'11342 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)'
11552 transitivePeerDependencies:11343 transitivePeerDependencies:
...@@ -11554,11 +11345,19 @@ snapshots:...@@ -11554,11 +11345,19 @@ snapshots:
11554 - proxy-agent11345 - proxy-agent
11555 - typescript11346 - typescript
1155611347
11557 '@alchemy.run/floci@2.0.0-beta.76(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':11348 '@alchemy.run/floci@2.0.0-beta.78(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
11349 dependencies:
11350 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
11351
11352 '@alchemy.run/node-utils@2.0.0-beta.78':
11558 dependencies:11353 dependencies:
11559 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)11354 chokidar: 5.0.0
11355 rolldown: 1.2.5
1156011356
11561 '@alchemy.run/node-utils@2.0.0-beta.76': {}11357 '@alchemy.run/sigil@0.0.0-alpha.11(@types/react@19.2.16)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))':
11358 optionalDependencies:
11359 '@types/react': 19.2.16
11360 react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)
1156211361
11563 '@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)':11362 '@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)':
11564 dependencies:11363 dependencies:
...@@ -11923,6 +11722,11 @@ snapshots:...@@ -11923,6 +11722,11 @@ snapshots:
11923 '@smithy/types': 4.14.311722 '@smithy/types': 4.14.3
11924 tslib: 2.8.111723 tslib: 2.8.1
1192511724
11725 '@aws-sdk/types@3.974.5':
11726 dependencies:
11727 '@smithy/types': 4.18.0
11728 tslib: 2.8.1
11729
11926 '@aws-sdk/util-locate-window@3.965.5':11730 '@aws-sdk/util-locate-window@3.965.5':
11927 dependencies:11731 dependencies:
11928 tslib: 2.8.111732 tslib: 2.8.1
...@@ -12512,11 +12316,6 @@ snapshots:...@@ -12512,11 +12316,6 @@ snapshots:
12512 fast-wrap-ansi: 0.2.212316 fast-wrap-ansi: 0.2.2
12513 sisteransi: 1.0.512317 sisteransi: 1.0.5
1251412318
12515 '@clack/core@1.4.3':
12516 dependencies:
12517 fast-wrap-ansi: 0.2.2
12518 sisteransi: 1.0.5
12519
12520 '@clack/prompts@1.6.0':12319 '@clack/prompts@1.6.0':
12521 dependencies:12320 dependencies:
12522 '@clack/core': 1.4.212321 '@clack/core': 1.4.2
...@@ -12524,13 +12323,6 @@ snapshots:...@@ -12524,13 +12323,6 @@ snapshots:
12524 fast-wrap-ansi: 0.2.212323 fast-wrap-ansi: 0.2.2
12525 sisteransi: 1.0.512324 sisteransi: 1.0.5
1252612325
12527 '@clack/prompts@1.7.0':
12528 dependencies:
12529 '@clack/core': 1.4.3
12530 fast-string-width: 3.0.2
12531 fast-wrap-ansi: 0.2.2
12532 sisteransi: 1.0.5
12533
12534 '@clerk/backend@3.18.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':12326 '@clerk/backend@3.18.1(react-dom@19.2.6(react@19.2.6))(react@19.2.6)':
12535 dependencies:12327 dependencies:
12536 '@clerk/shared': 4.33.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)12328 '@clerk/shared': 4.33.0(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
...@@ -12663,25 +12455,25 @@ snapshots:...@@ -12663,25 +12455,25 @@ snapshots:
12663 react: 19.2.612455 react: 19.2.6
12664 react-dom: 19.2.6(react@19.2.6)12456 react-dom: 19.2.6(react@19.2.6)
1266512457
12666 '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260704.1)':12458 '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1)':
12667 dependencies:12459 dependencies:
12668 unenv: 2.0.0-rc.2412460 unenv: 2.0.0-rc.24
12669 optionalDependencies:12461 optionalDependencies:
12670 workerd: 1.20260704.112462 workerd: 1.20260901.1
1267112463
12672 '@cloudflare/workerd-darwin-64@1.20260704.1':12464 '@cloudflare/workerd-darwin-64@1.20260901.1':
12673 optional: true12465 optional: true
1267412466
12675 '@cloudflare/workerd-darwin-arm64@1.20260704.1':12467 '@cloudflare/workerd-darwin-arm64@1.20260901.1':
12676 optional: true12468 optional: true
1267712469
12678 '@cloudflare/workerd-linux-64@1.20260704.1':12470 '@cloudflare/workerd-linux-64@1.20260901.1':
12679 optional: true12471 optional: true
1268012472
12681 '@cloudflare/workerd-linux-arm64@1.20260704.1':12473 '@cloudflare/workerd-linux-arm64@1.20260901.1':
12682 optional: true12474 optional: true
1268312475
12684 '@cloudflare/workerd-windows-64@1.20260704.1':12476 '@cloudflare/workerd-windows-64@1.20260901.1':
12685 optional: true12477 optional: true
1268612478
12687 '@cloudflare/workers-types@4.20260604.1': {}12479 '@cloudflare/workers-types@4.20260604.1': {}
...@@ -12724,58 +12516,65 @@ snapshots:...@@ -12724,58 +12516,65 @@ snapshots:
12724 optionalDependencies:12516 optionalDependencies:
12725 '@types/react': 19.2.1612517 '@types/react': 19.2.16
1272612518
12727 '@distilled.cloud/aws@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12519 '@distilled.cloud/aws@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12728 dependencies:12520 dependencies:
12729 '@aws-crypto/crc32': 5.2.012521 '@aws-sdk/types': 3.974.5
12730 '@aws-crypto/util': 5.2.012522 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12731 '@aws-sdk/credential-providers': 3.1062.012523 '@smithy/shared-ini-file-loader': 4.7.2
12732 '@aws-sdk/types': 3.973.1012524 '@smithy/types': 4.18.0
12733 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12525 '@smithy/util-base64': 4.6.2
12734 '@smithy/shared-ini-file-loader': 4.5.612526 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12735 '@smithy/types': 4.14.312527 fast-xml-parser: 5.11.1
12736 '@smithy/util-base64': 4.4.612528
12737 aws4fetch: 1.0.2012529 '@distilled.cloud/axiom@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12738 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12530 dependencies:
12739 fast-xml-parser: 5.8.012531 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12532 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12533
12534 '@distilled.cloud/cloudflare@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12535 dependencies:
12536 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12537 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1274012538
12741 '@distilled.cloud/axiom@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12539 '@distilled.cloud/core@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12742 dependencies:12540 dependencies:
12743 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12541 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12744 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12542 graphql: 16.11.0
1274512543
12746 '@distilled.cloud/cloudflare@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12544 '@distilled.cloud/fly-io@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12747 dependencies:12545 dependencies:
12748 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12546 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12749 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12547 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1275012548
12751 '@distilled.cloud/core@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12549 '@distilled.cloud/hetzner@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12752 dependencies:12550 dependencies:
12753 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12551 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12552 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1275412553
12755 '@distilled.cloud/fly-io@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12554 '@distilled.cloud/neon@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12756 dependencies:12555 dependencies:
12757 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12556 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12758 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12557 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1275912558
12760 '@distilled.cloud/hetzner@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12559 '@distilled.cloud/planetscale@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12761 dependencies:12560 dependencies:
12762 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12561 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12763 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12562 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1276412563
12765 '@distilled.cloud/neon@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12564 '@distilled.cloud/prisma@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12766 dependencies:12565 dependencies:
12767 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12566 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12768 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12567 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1276912568
12770 '@distilled.cloud/planetscale@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12569 '@distilled.cloud/railway@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12771 dependencies:12570 dependencies:
12772 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12571 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12773 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12572 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1277412573
12775 '@distilled.cloud/railway@1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12574 '@distilled.cloud/stripe@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12776 dependencies:12575 dependencies:
12777 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))12576 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
12778 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12577 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1277912578
12780 '@dnd-kit/accessibility@3.1.1(react@19.2.6)':12579 '@dnd-kit/accessibility@3.1.1(react@19.2.6)':
12781 dependencies:12580 dependencies:
...@@ -12811,79 +12610,62 @@ snapshots:...@@ -12811,79 +12610,62 @@ snapshots:
1281112610
12812 '@drizzle-team/brocli@0.12.0': {}12611 '@drizzle-team/brocli@0.12.0': {}
1281312612
12814 '@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)':12613 '@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)':
12815 dependencies:12614 dependencies:
12816 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12615 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12817 react: 19.2.312616 react: 19.2.3
12818 scheduler: 0.27.012617 scheduler: 0.27.0
1281912618
12820 '@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)':12619 '@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)':
12821 dependencies:12620 dependencies:
12822 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12621 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12823 react: 19.2.612622 react: 19.2.6
12824 scheduler: 0.27.012623 scheduler: 0.27.0
1282512624
12826 '@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)':12625 '@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)':
12827 dependencies:12626 dependencies:
12828 '@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)12627 '@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)
12829 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12628 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12830 swagger2openapi: 7.0.8(encoding@0.1.13)12629 swagger2openapi: 7.0.8(encoding@0.1.13)
12831 transitivePeerDependencies:12630 transitivePeerDependencies:
12832 - encoding12631 - encoding
1283312632
12834 '@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)':12633 '@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)':
12835 dependencies:
12836 '@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)
12837 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)
12838 transitivePeerDependencies:
12839 - bufferutil
12840 - utf-8-validate
12841 optional: true
12842
12843 '@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)':
12844 dependencies:12634 dependencies:
12845 '@types/ws': 8.18.112635 '@types/ws': 8.18.1
12846 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12636 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12847 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)12637 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
12848 transitivePeerDependencies:12638 transitivePeerDependencies:
12849 - bufferutil12639 - bufferutil
12850 - utf-8-validate12640 - utf-8-validate
1285112641
12852 '@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)':12642 '@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)':
12853 dependencies:12643 dependencies:
12854 '@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)12644 '@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)
12855 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12645 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12856 mime: 4.1.0
12857 redis: 6.2.112646 redis: 6.2.1
12858 undici: 8.10.212647 undici: 8.10.2
12859 transitivePeerDependencies:12648 transitivePeerDependencies:
12860 - bufferutil12649 - bufferutil
12861 - utf-8-validate12650 - utf-8-validate
1286212651
12863 '@effect/sql-d1@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12652 '@effect/sql-d1@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12864 dependencies:12653 dependencies:
12865 '@cloudflare/workers-types': 5.20260907.112654 '@cloudflare/workers-types': 5.20260907.1
12866 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12655 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1286712656
12868 '@effect/sql-pg@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12657 '@effect/sql-pg@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12869 dependencies:12658 dependencies:
12870 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12659 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12871 pg: 8.23.0
12872 pg-connection-string: 2.14.0
12873 pg-cursor: 2.22.0(pg@8.23.0)
12874 pg-pool: 3.14.0(pg@8.23.0)
12875 pg-types: 4.1.0
12876 transitivePeerDependencies:
12877 - pg-native
1287812660
12879 '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12661 '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12880 dependencies:12662 dependencies:
12881 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12663 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
12882 optional: true12664 optional: true
1288312665
12884 '@effect/sql-sqlite-do@4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12666 '@effect/sql-sqlite-do@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12885 dependencies:12667 dependencies:
12886 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12668 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1288712669
12888 '@effect/tsgo-darwin-arm64@0.41.0':12670 '@effect/tsgo-darwin-arm64@0.41.0':
12889 optional: true12671 optional: true
...@@ -12916,9 +12698,9 @@ snapshots:...@@ -12916,9 +12698,9 @@ snapshots:
12916 '@effect/tsgo-win32-arm64': 0.41.012698 '@effect/tsgo-win32-arm64': 0.41.0
12917 '@effect/tsgo-win32-x64': 0.41.012699 '@effect/tsgo-win32-x64': 0.41.0
1291812700
12919 '@effect/vitest@4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))':12701 '@effect/vitest@4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))':
12920 dependencies:12702 dependencies:
12921 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)12703 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
1292212704
12923 '@egjs/hammerjs@2.0.17':12705 '@egjs/hammerjs@2.0.17':
12924 dependencies:12706 dependencies:
...@@ -13294,7 +13076,7 @@ snapshots:...@@ -13294,7 +13076,7 @@ snapshots:
13294 '@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.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.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)13076 '@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.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.3)(utf-8-validate@6.0.6))(react@19.2.3))(expo-server@57.0.3)(expo@57.0.18)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)
13295 '@expo/schema-utils': 57.0.213077 '@expo/schema-utils': 57.0.2
13296 '@expo/spawn-async': 1.8.013078 '@expo/spawn-async': 1.8.0
13297 '@expo/ws-tunnel': 2.0.0(ws@8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))13079 '@expo/ws-tunnel': 2.0.0(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))
13298 '@expo/xcpretty': 4.4.413080 '@expo/xcpretty': 4.4.4
13299 '@react-native/dev-middleware': 0.86.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)13081 '@react-native/dev-middleware': 0.86.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
13300 accepts: 1.3.813082 accepts: 1.3.8
...@@ -13318,7 +13100,7 @@ snapshots:...@@ -13318,7 +13100,7 @@ snapshots:
13318 node-forge: 1.4.013100 node-forge: 1.4.0
13319 npm-package-arg: 11.0.313101 npm-package-arg: 11.0.3
13320 ora: 3.4.013102 ora: 3.4.0
13321 picomatch: 4.0.413103 picomatch: 4.0.7
13322 pretty-format: 29.7.013104 pretty-format: 29.7.0
13323 progress: 2.0.313105 progress: 2.0.3
13324 prompts: 2.4.213106 prompts: 2.4.2
...@@ -13332,7 +13114,7 @@ snapshots:...@@ -13332,7 +13114,7 @@ snapshots:
13332 terminal-link: 2.1.113114 terminal-link: 2.1.1
13333 toqr: 0.1.113115 toqr: 0.1.1
13334 wrap-ansi: 7.0.013116 wrap-ansi: 7.0.0
13335 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)13117 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
13336 zod: 3.25.7613118 zod: 3.25.76
13337 optionalDependencies:13119 optionalDependencies:
13338 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)13120 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
...@@ -13349,29 +13131,29 @@ snapshots:...@@ -13349,29 +13131,29 @@ snapshots:
13349 - typescript13131 - typescript
13350 - utf-8-validate13132 - utf-8-validate
1335113133
13352 '@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)':13134 '@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@6.0.3)(utf-8-validate@6.0.6)':
13353 dependencies:13135 dependencies:
13354 '@expo/code-signing-certificates': 0.0.613136 '@expo/code-signing-certificates': 0.0.6
13355 '@expo/config': 57.0.9(typescript@7.0.2)13137 '@expo/config': 57.0.9(typescript@6.0.3)
13356 '@expo/config-plugins': 57.0.9(typescript@7.0.2)13138 '@expo/config-plugins': 57.0.9(typescript@6.0.3)
13357 '@expo/devcert': 1.2.113139 '@expo/devcert': 1.2.1
13358 '@expo/env': 2.4.313140 '@expo/env': 2.4.3
13359 '@expo/image-utils': 0.11.5(typescript@7.0.2)13141 '@expo/image-utils': 0.11.5(typescript@6.0.3)
13360 '@expo/inline-modules': 0.1.7(typescript@7.0.2)13142 '@expo/inline-modules': 0.1.7(typescript@6.0.3)
13361 '@expo/json-file': 11.0.113143 '@expo/json-file': 11.0.1
13362 '@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)13144 '@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)
13363 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)13145 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
13364 '@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)13146 '@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)
13365 '@expo/metro-file-map': 57.0.213147 '@expo/metro-file-map': 57.0.2
13366 '@expo/osascript': 2.7.113148 '@expo/osascript': 2.7.1
13367 '@expo/package-manager': 1.13.113149 '@expo/package-manager': 1.13.1
13368 '@expo/plist': 0.8.113150 '@expo/plist': 0.8.1
13369 '@expo/prebuild-config': 57.0.15(typescript@7.0.2)13151 '@expo/prebuild-config': 57.0.15(typescript@6.0.3)
13370 '@expo/require-utils': 57.0.5(typescript@7.0.2)13152 '@expo/require-utils': 57.0.5(typescript@6.0.3)
13371 '@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)13153 '@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)
13372 '@expo/schema-utils': 57.0.213154 '@expo/schema-utils': 57.0.2
13373 '@expo/spawn-async': 1.8.013155 '@expo/spawn-async': 1.8.0
13374 '@expo/ws-tunnel': 2.0.0(ws@8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))13156 '@expo/ws-tunnel': 2.0.0(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))
13375 '@expo/xcpretty': 4.4.413157 '@expo/xcpretty': 4.4.4
13376 '@react-native/dev-middleware': 0.86.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)13158 '@react-native/dev-middleware': 0.86.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
13377 accepts: 1.3.813159 accepts: 1.3.8
...@@ -13385,7 +13167,7 @@ snapshots:...@@ -13385,7 +13167,7 @@ snapshots:
13385 connect: 3.7.013167 connect: 3.7.0
13386 debug: 4.4.313168 debug: 4.4.3
13387 dnssd-advertise: 1.1.413169 dnssd-advertise: 1.1.4
13388 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)13170 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
13389 expo-server: 57.0.313171 expo-server: 57.0.3
13390 fetch-nodeshim: 0.4.1013172 fetch-nodeshim: 0.4.10
13391 getenv: 2.0.013173 getenv: 2.0.0
...@@ -13395,7 +13177,7 @@ snapshots:...@@ -13395,7 +13177,7 @@ snapshots:
13395 node-forge: 1.4.013177 node-forge: 1.4.0
13396 npm-package-arg: 11.0.313178 npm-package-arg: 11.0.3
13397 ora: 3.4.013179 ora: 3.4.0
13398 picomatch: 4.0.413180 picomatch: 4.0.7
13399 pretty-format: 29.7.013181 pretty-format: 29.7.0
13400 progress: 2.0.313182 progress: 2.0.3
13401 prompts: 2.4.213183 prompts: 2.4.2
...@@ -13409,7 +13191,7 @@ snapshots:...@@ -13409,7 +13191,7 @@ snapshots:
13409 terminal-link: 2.1.113191 terminal-link: 2.1.1
13410 toqr: 0.1.113192 toqr: 0.1.1
13411 wrap-ansi: 7.0.013193 wrap-ansi: 7.0.0
13412 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)13194 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
13413 zod: 3.25.7613195 zod: 3.25.76
13414 optionalDependencies:13196 optionalDependencies:
13415 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)13197 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
...@@ -13431,6 +13213,26 @@ snapshots:...@@ -13431,6 +13213,26 @@ snapshots:
13431 dependencies:13213 dependencies:
13432 node-forge: 1.4.013214 node-forge: 1.4.0
1343313215
13216 '@expo/config-plugins@57.0.9(typescript@6.0.3)':
13217 dependencies:
13218 '@expo/config-types': 57.0.2
13219 '@expo/json-file': 11.0.1
13220 '@expo/plist': 0.8.1
13221 '@expo/require-utils': 57.0.5(typescript@6.0.3)
13222 '@expo/sdk-runtime-versions': 1.0.0
13223 chalk: 4.1.2
13224 debug: 4.4.3
13225 getenv: 2.0.0
13226 glob: 13.0.6
13227 semver: 7.8.5
13228 slugify: 1.6.9
13229 xcode: 3.0.1
13230 xml2js: 0.6.0
13231 transitivePeerDependencies:
13232 - supports-color
13233 - typescript
13234 optional: true
13235
13434 '@expo/config-plugins@57.0.9(typescript@7.0.2)':13236 '@expo/config-plugins@57.0.9(typescript@7.0.2)':
13435 dependencies:13237 dependencies:
13436 '@expo/config-types': 57.0.213238 '@expo/config-types': 57.0.2
...@@ -13452,6 +13254,23 @@ snapshots:...@@ -13452,6 +13254,23 @@ snapshots:
1345213254
13453 '@expo/config-types@57.0.2': {}13255 '@expo/config-types@57.0.2': {}
1345413256
13257 '@expo/config@57.0.9(typescript@6.0.3)':
13258 dependencies:
13259 '@expo/config-plugins': 57.0.9(typescript@6.0.3)
13260 '@expo/config-types': 57.0.2
13261 '@expo/json-file': 11.0.1
13262 '@expo/require-utils': 57.0.5(typescript@6.0.3)
13263 deepmerge: 4.3.1
13264 getenv: 2.0.0
13265 glob: 13.0.6
13266 resolve-workspace-root: 2.0.1
13267 semver: 7.8.5
13268 slugify: 1.6.9
13269 transitivePeerDependencies:
13270 - supports-color
13271 - typescript
13272 optional: true
13273
13455 '@expo/config@57.0.9(typescript@7.0.2)':13274 '@expo/config@57.0.9(typescript@7.0.2)':
13456 dependencies:13275 dependencies:
13457 '@expo/config-plugins': 57.0.9(typescript@7.0.2)13276 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
...@@ -13498,7 +13317,7 @@ snapshots:...@@ -13498,7 +13317,7 @@ snapshots:
1349813317
13499 '@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)':13318 '@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)':
13500 dependencies:13319 dependencies:
13501 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)13320 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
13502 react: 19.2.613321 react: 19.2.6
13503 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)13322 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
13504 optional: true13323 optional: true
...@@ -13529,7 +13348,21 @@ snapshots:...@@ -13529,7 +13348,21 @@ snapshots:
13529 transitivePeerDependencies:13348 transitivePeerDependencies:
13530 - supports-color13349 - supports-color
1353113350
13532 '@expo/image-utils@0.11.5(typescript@7.0.2)':13351 '@expo/image-utils@0.11.5(typescript@6.0.3)':
13352 dependencies:
13353 '@expo/require-utils': 57.0.5(typescript@6.0.3)
13354 '@expo/spawn-async': 1.8.0
13355 chalk: 4.1.2
13356 getenv: 2.0.0
13357 jimp-compact: 0.16.1
13358 parse-png: 2.1.0
13359 semver: 7.8.5
13360 transitivePeerDependencies:
13361 - supports-color
13362 - typescript
13363 optional: true
13364
13365 '@expo/image-utils@0.11.5(typescript@7.0.2)':
13533 dependencies:13366 dependencies:
13534 '@expo/require-utils': 57.0.5(typescript@7.0.2)13367 '@expo/require-utils': 57.0.5(typescript@7.0.2)
13535 '@expo/spawn-async': 1.8.013368 '@expo/spawn-async': 1.8.0
...@@ -13555,6 +13388,14 @@ snapshots:...@@ -13555,6 +13388,14 @@ snapshots:
13555 - supports-color13388 - supports-color
13556 - typescript13389 - typescript
1355713390
13391 '@expo/inline-modules@0.1.7(typescript@6.0.3)':
13392 dependencies:
13393 '@expo/config-plugins': 57.0.9(typescript@6.0.3)
13394 transitivePeerDependencies:
13395 - supports-color
13396 - typescript
13397 optional: true
13398
13558 '@expo/inline-modules@0.1.7(typescript@7.0.2)':13399 '@expo/inline-modules@0.1.7(typescript@7.0.2)':
13559 dependencies:13400 dependencies:
13560 '@expo/config-plugins': 57.0.9(typescript@7.0.2)13401 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
...@@ -13567,6 +13408,15 @@ snapshots:...@@ -13567,6 +13408,15 @@ snapshots:
13567 '@babel/code-frame': 7.29.713408 '@babel/code-frame': 7.29.7
13568 json5: 2.2.313409 json5: 2.2.3
1356913410
13411 '@expo/local-build-cache-provider@57.0.8(typescript@6.0.3)':
13412 dependencies:
13413 '@expo/config': 57.0.9(typescript@6.0.3)
13414 chalk: 4.1.2
13415 transitivePeerDependencies:
13416 - supports-color
13417 - typescript
13418 optional: true
13419
13570 '@expo/local-build-cache-provider@57.0.8(typescript@7.0.2)':13420 '@expo/local-build-cache-provider@57.0.8(typescript@7.0.2)':
13571 dependencies:13421 dependencies:
13572 '@expo/config': 57.0.9(typescript@7.0.2)13422 '@expo/config': 57.0.9(typescript@7.0.2)
...@@ -13588,12 +13438,46 @@ snapshots:...@@ -13588,12 +13438,46 @@ snapshots:
13588 dependencies:13438 dependencies:
13589 '@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)13439 '@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)
13590 anser: 1.4.1013440 anser: 1.4.10
13591 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)13441 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
13592 react: 19.2.613442 react: 19.2.6
13593 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)13443 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
13594 stacktrace-parser: 0.1.1113444 stacktrace-parser: 0.1.11
13595 optional: true13445 optional: true
1359613446
13447 '@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)':
13448 dependencies:
13449 '@babel/code-frame': 7.29.7
13450 '@babel/core': 7.29.7
13451 '@babel/generator': 7.29.7
13452 '@expo/config': 57.0.9(typescript@6.0.3)
13453 '@expo/env': 2.4.3
13454 '@expo/json-file': 11.0.1
13455 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
13456 '@expo/require-utils': 57.0.5(typescript@6.0.3)
13457 '@expo/spawn-async': 1.8.0
13458 '@jridgewell/gen-mapping': 0.3.13
13459 '@jridgewell/remapping': 2.3.5
13460 '@jridgewell/sourcemap-codec': 1.5.5
13461 browserslist: 4.28.2
13462 chalk: 4.1.2
13463 debug: 4.4.3
13464 getenv: 2.0.0
13465 glob: 13.0.6
13466 hermes-parser: 0.36.1
13467 jsc-safe-url: 0.2.4
13468 lightningcss: 1.33.0
13469 picomatch: 4.0.7
13470 postcss: 8.5.15
13471 resolve-from: 5.0.0
13472 optionalDependencies:
13473 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
13474 transitivePeerDependencies:
13475 - bufferutil
13476 - supports-color
13477 - typescript
13478 - utf-8-validate
13479 optional: true
13480
13597 '@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)':13481 '@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)':
13598 dependencies:13482 dependencies:
13599 '@babel/code-frame': 7.29.713483 '@babel/code-frame': 7.29.7
...@@ -13655,7 +13539,7 @@ snapshots:...@@ -13655,7 +13539,7 @@ snapshots:
13655 dependencies:13539 dependencies:
13656 '@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)13540 '@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)
13657 anser: 1.4.1013541 anser: 1.4.10
13658 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)13542 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
13659 pretty-format: 29.7.013543 pretty-format: 29.7.0
13660 react: 19.2.613544 react: 19.2.6
13661 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)13545 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
...@@ -13705,6 +13589,23 @@ snapshots:...@@ -13705,6 +13589,23 @@ snapshots:
13705 base64-js: 1.5.113589 base64-js: 1.5.1
13706 xmlbuilder: 15.1.113590 xmlbuilder: 15.1.1
1370713591
13592 '@expo/prebuild-config@57.0.15(typescript@6.0.3)':
13593 dependencies:
13594 '@expo/config': 57.0.9(typescript@6.0.3)
13595 '@expo/config-plugins': 57.0.9(typescript@6.0.3)
13596 '@expo/config-types': 57.0.2
13597 '@expo/image-utils': 0.11.5(typescript@6.0.3)
13598 '@expo/json-file': 11.0.1
13599 '@react-native/normalize-colors': 0.86.3
13600 debug: 4.4.3
13601 expo-modules-autolinking: 57.0.12(typescript@6.0.3)
13602 resolve-from: 5.0.0
13603 semver: 7.8.5
13604 transitivePeerDependencies:
13605 - supports-color
13606 - typescript
13607 optional: true
13608
13708 '@expo/prebuild-config@57.0.15(typescript@7.0.2)':13609 '@expo/prebuild-config@57.0.15(typescript@7.0.2)':
13709 dependencies:13610 dependencies:
13710 '@expo/config': 57.0.9(typescript@7.0.2)13611 '@expo/config': 57.0.9(typescript@7.0.2)
...@@ -13731,6 +13632,17 @@ snapshots:...@@ -13731,6 +13632,17 @@ snapshots:
13731 transitivePeerDependencies:13632 transitivePeerDependencies:
13732 - supports-color13633 - supports-color
1373313634
13635 '@expo/require-utils@57.0.5(typescript@6.0.3)':
13636 dependencies:
13637 '@babel/code-frame': 7.29.7
13638 '@babel/core': 7.29.7
13639 '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@7.29.7)
13640 optionalDependencies:
13641 typescript: 6.0.3
13642 transitivePeerDependencies:
13643 - supports-color
13644 optional: true
13645
13734 '@expo/require-utils@57.0.5(typescript@7.0.2)':13646 '@expo/require-utils@57.0.5(typescript@7.0.2)':
13735 dependencies:13647 dependencies:
13736 '@babel/code-frame': 7.29.713648 '@babel/code-frame': 7.29.7
...@@ -13758,7 +13670,7 @@ snapshots:...@@ -13758,7 +13670,7 @@ snapshots:
13758 '@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)':13670 '@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)':
13759 dependencies:13671 dependencies:
13760 debug: 4.4.313672 debug: 4.4.3
13761 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)13673 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
13762 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))13674 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))
13763 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)13675 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)
13764 expo-server: 57.0.313676 expo-server: 57.0.3
...@@ -13795,9 +13707,9 @@ snapshots:...@@ -13795,9 +13707,9 @@ snapshots:
13795 - '@types/react'13707 - '@types/react'
13796 - '@types/react-dom'13708 - '@types/react-dom'
1379713709
13798 '@expo/ws-tunnel@2.0.0(ws@8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6))':13710 '@expo/ws-tunnel@2.0.0(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))':
13799 dependencies:13711 dependencies:
13800 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)13712 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
1380113713
13802 '@expo/xcpretty@4.4.4':13714 '@expo/xcpretty@4.4.4':
13803 dependencies:13715 dependencies:
...@@ -14274,24 +14186,6 @@ snapshots:...@@ -14274,24 +14186,6 @@ snapshots:
14274 chevrotain: 10.5.014186 chevrotain: 10.5.0
14275 lilconfig: 2.1.014187 lilconfig: 2.1.0
1427614188
14277 '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.4':
14278 optional: true
14279
14280 '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.4':
14281 optional: true
14282
14283 '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.4':
14284 optional: true
14285
14286 '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.4':
14287 optional: true
14288
14289 '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.4':
14290 optional: true
14291
14292 '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.4':
14293 optional: true
14294
14295 '@mswjs/interceptors@0.41.9':14189 '@mswjs/interceptors@0.41.9':
14296 dependencies:14190 dependencies:
14297 '@open-draft/deferred-promise': 2.2.014191 '@open-draft/deferred-promise': 2.2.0
...@@ -14388,17 +14282,7 @@ snapshots:...@@ -14388,17 +14282,7 @@ snapshots:
1438814282
14389 '@nodable/entities@2.1.1': {}14283 '@nodable/entities@2.1.1': {}
1439014284
14391 '@nodelib/fs.scandir@2.1.5':14285 '@nodable/entities@3.0.0': {}
14392 dependencies:
14393 '@nodelib/fs.stat': 2.0.5
14394 run-parallel: 1.2.0
14395
14396 '@nodelib/fs.stat@2.0.5': {}
14397
14398 '@nodelib/fs.walk@1.2.8':
14399 dependencies:
14400 '@nodelib/fs.scandir': 2.1.5
14401 fastq: 1.20.1
1440214286
14403 '@nornagon/put@0.0.8': {}14287 '@nornagon/put@0.0.8': {}
1440414288
...@@ -15384,7 +15268,7 @@ snapshots:...@@ -15384,7 +15268,7 @@ snapshots:
15384 dependencies:15268 dependencies:
15385 '@types/estree': 1.0.915269 '@types/estree': 1.0.9
15386 estree-walker: 2.0.215270 estree-walker: 2.0.2
15387 picomatch: 4.0.415271 picomatch: 4.0.7
15388 optionalDependencies:15272 optionalDependencies:
15389 rollup: 4.61.015273 rollup: 4.61.0
1539015274
...@@ -15528,6 +15412,11 @@ snapshots:...@@ -15528,6 +15412,11 @@ snapshots:
15528 '@smithy/types': 4.14.315412 '@smithy/types': 4.14.3
15529 tslib: 2.8.115413 tslib: 2.8.1
1553015414
15415 '@smithy/core@3.34.1':
15416 dependencies:
15417 '@smithy/types': 4.18.0
15418 tslib: 2.8.1
15419
15531 '@smithy/credential-provider-imds@4.3.8':15420 '@smithy/credential-provider-imds@4.3.8':
15532 dependencies:15421 dependencies:
15533 '@smithy/core': 3.24.615422 '@smithy/core': 3.24.6
...@@ -15544,20 +15433,15 @@ snapshots:...@@ -15544,20 +15433,15 @@ snapshots:
15544 dependencies:15433 dependencies:
15545 tslib: 2.8.115434 tslib: 2.8.1
1554615435
15547 '@smithy/node-config-provider@4.4.6':
15548 dependencies:
15549 '@smithy/core': 3.24.6
15550 tslib: 2.8.1
15551
15552 '@smithy/node-http-handler@4.7.7':15436 '@smithy/node-http-handler@4.7.7':
15553 dependencies:15437 dependencies:
15554 '@smithy/core': 3.24.615438 '@smithy/core': 3.24.6
15555 '@smithy/types': 4.14.315439 '@smithy/types': 4.14.3
15556 tslib: 2.8.115440 tslib: 2.8.1
1555715441
15558 '@smithy/shared-ini-file-loader@4.5.6':15442 '@smithy/shared-ini-file-loader@4.7.2':
15559 dependencies:15443 dependencies:
15560 '@smithy/core': 3.24.615444 '@smithy/core': 3.34.1
15561 tslib: 2.8.115445 tslib: 2.8.1
1556215446
15563 '@smithy/signature-v4@5.4.6':15447 '@smithy/signature-v4@5.4.6':
...@@ -15570,9 +15454,13 @@ snapshots:...@@ -15570,9 +15454,13 @@ snapshots:
15570 dependencies:15454 dependencies:
15571 tslib: 2.8.115455 tslib: 2.8.1
1557215456
15573 '@smithy/util-base64@4.4.6':15457 '@smithy/types@4.18.0':
15574 dependencies:15458 dependencies:
15575 '@smithy/core': 3.24.615459 tslib: 2.8.1
15460
15461 '@smithy/util-base64@4.6.2':
15462 dependencies:
15463 '@smithy/core': 3.34.1
15576 tslib: 2.8.115464 tslib: 2.8.1
1557715465
15578 '@smithy/util-buffer-from@2.2.0':15466 '@smithy/util-buffer-from@2.2.0':
...@@ -16266,6 +16154,18 @@ snapshots:...@@ -16266,6 +16154,18 @@ snapshots:
16266 '@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)16154 '@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)
16267 babel-plugin-react-compiler: 1.0.016155 babel-plugin-react-compiler: 1.0.0
1626816156
16157 '@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)))':
16158 dependencies:
16159 '@testing-library/dom': 10.4.1
16160 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
16161 '@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)))
16162 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))
16163 transitivePeerDependencies:
16164 - bufferutil
16165 - msw
16166 - utf-8-validate
16167 - vite
16168
16269 '@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)':16169 '@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)':
16270 dependencies:16170 dependencies:
16271 '@testing-library/dom': 10.4.116171 '@testing-library/dom': 10.4.1
...@@ -16278,6 +16178,23 @@ snapshots:...@@ -16278,6 +16178,23 @@ snapshots:
16278 - utf-8-validate16178 - utf-8-validate
16279 - vite16179 - vite
1628016180
16181 '@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)))':
16182 dependencies:
16183 '@blazediff/core': 1.9.1
16184 '@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))
16185 '@vitest/utils': 4.1.11
16186 magic-string: 0.30.21
16187 pngjs: 7.0.0
16188 sirv: 3.0.2
16189 tinyrainbow: 3.1.0
16190 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))
16191 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
16192 transitivePeerDependencies:
16193 - bufferutil
16194 - msw
16195 - utf-8-validate
16196 - vite
16197
16281 '@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)':16198 '@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)':
16282 dependencies:16199 dependencies:
16283 '@blazediff/core': 1.9.116200 '@blazediff/core': 1.9.1
...@@ -16288,7 +16205,7 @@ snapshots:...@@ -16288,7 +16205,7 @@ snapshots:
16288 sirv: 3.0.216205 sirv: 3.0.2
16289 tinyrainbow: 3.1.016206 tinyrainbow: 3.1.0
16290 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))16207 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))
16291 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)16208 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
16292 transitivePeerDependencies:16209 transitivePeerDependencies:
16293 - bufferutil16210 - bufferutil
16294 - msw16211 - msw
...@@ -16304,6 +16221,15 @@ snapshots:...@@ -16304,6 +16221,15 @@ snapshots:
16304 chai: 6.2.216221 chai: 6.2.2
16305 tinyrainbow: 3.1.016222 tinyrainbow: 3.1.0
1630616223
16224 '@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))':
16225 dependencies:
16226 '@vitest/spy': 4.1.11
16227 estree-walker: 3.0.3
16228 magic-string: 0.30.21
16229 optionalDependencies:
16230 msw: 2.12.11(@types/node@24.12.4)(typescript@6.0.3)
16231 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)'
16232
16307 '@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))':16233 '@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))':
16308 dependencies:16234 dependencies:
16309 '@vitest/spy': 4.1.1116235 '@vitest/spy': 4.1.11
...@@ -16637,53 +16563,48 @@ snapshots:...@@ -16637,53 +16563,48 @@ snapshots:
16637 json-schema-traverse: 1.0.016563 json-schema-traverse: 1.0.0
16638 require-from-string: 2.0.216564 require-from-string: 2.0.2
1663916565
16640 alchemy@2.0.0-beta.76(197b68e0d20fdf20cf352009eca17c9f):16566 alchemy@2.0.0-beta.78(@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)))(@types/node@24.12.4)(@types/react@19.2.16)(@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)(drizzle-kit@1.0.0-rc.5-ab785fc)(drizzle-orm@1.0.0-rc.5-ab785fc(04a2b37736bdb04e55e63e86c7865f24))(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9))(pg@8.23.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typescript@6.0.3)(utf-8-validate@6.0.6)(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)):
16641 dependencies:16567 dependencies:
16642 '@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)16568 '@alchemy.run/cloudflare-runtime': 2.0.0-beta.78(@distilled.cloud/cloudflare@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)))(@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)
16643 '@alchemy.run/floci': 2.0.0-beta.76(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16569 '@alchemy.run/floci': 2.0.0-beta.78(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16644 '@alchemy.run/node-utils': 2.0.0-beta.7616570 '@alchemy.run/node-utils': 2.0.0-beta.78
16571 '@alchemy.run/sigil': 0.0.0-alpha.11(@types/react@19.2.16)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))
16645 '@aws-sdk/credential-providers': 3.1062.016572 '@aws-sdk/credential-providers': 3.1062.0
16646 '@clack/prompts': 1.7.016573 '@distilled.cloud/aws': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16647 '@distilled.cloud/aws': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16574 '@distilled.cloud/axiom': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16648 '@distilled.cloud/axiom': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16575 '@distilled.cloud/cloudflare': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16649 '@distilled.cloud/cloudflare': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16576 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16650 '@distilled.cloud/core': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16577 '@distilled.cloud/fly-io': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16651 '@distilled.cloud/fly-io': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16578 '@distilled.cloud/hetzner': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16652 '@distilled.cloud/hetzner': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16579 '@distilled.cloud/neon': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16653 '@distilled.cloud/neon': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16580 '@distilled.cloud/planetscale': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16654 '@distilled.cloud/planetscale': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16581 '@distilled.cloud/prisma': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16655 '@distilled.cloud/railway': 1.0.0-rc.8(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16582 '@distilled.cloud/railway': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16656 '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16583 '@distilled.cloud/stripe': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16657 '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16584 '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16658 '@effect/vitest': 4.0.0-rc.112(patch_hash=a16b1e870d8c29e4a98b17cc4c638a4ff471753d8ca3487f78a22b759caf951b)(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))16585 '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16586 '@effect/vitest': 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16659 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)16587 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
16660 '@octokit/rest': 22.0.116588 '@octokit/rest': 22.0.1
16661 '@octokit/webhooks': 14.2.016589 '@octokit/webhooks': 14.2.0
16662 '@prisma/dev': 0.20.0(typescript@6.0.3)16590 '@prisma/dev': 0.20.0(typescript@6.0.3)
16663 '@smithy/node-config-provider': 4.4.6
16664 '@smithy/shared-ini-file-loader': 4.5.6
16665 '@smithy/types': 4.14.3
16666 '@types/aws-lambda': 8.10.16116591 '@types/aws-lambda': 8.10.161
16667 aws4fetch: 1.0.2016592 aws4fetch: 1.0.20
16668 capnweb: 0.6.116593 capnweb: 0.12.0
16669 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)16594 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
16670 fast-glob: 3.3.316595 fflate: 0.8.3
16671 fast-xml-parser: 5.8.0
16672 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)
16673 jszip: 3.10.1
16674 libsodium-wrappers: 0.8.416596 libsodium-wrappers: 0.8.4
16675 pathe: 2.0.316597 pathe: 2.0.3
16676 picomatch: 4.0.716598 picomatch: 4.0.7
16677 react: 19.2.6
16678 rolldown: 1.2.516599 rolldown: 1.2.5
16600 tinyglobby: 0.2.17
16679 undici: 7.27.116601 undici: 7.27.1
16680 yaml: 2.9.016602 yaml: 2.9.0
16681 optionalDependencies:16603 optionalDependencies:
16682 '@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)16604 '@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)
16683 '@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)16605 '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
16684 '@effect/sql-pg': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))
16685 drizzle-kit: 1.0.0-rc.5-ab785fc16606 drizzle-kit: 1.0.0-rc.5-ab785fc
16686 drizzle-orm: 1.0.0-rc.5-ab785fc(8ab70e2706da13c78d64d8a92fef1884)16607 drizzle-orm: 1.0.0-rc.5-ab785fc(04a2b37736bdb04e55e63e86c7865f24)
16687 mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9)16608 mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9)
16688 pg: 8.23.016609 pg: 8.23.0
16689 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)'16610 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)'
...@@ -16709,10 +16630,6 @@ snapshots:...@@ -16709,10 +16630,6 @@ snapshots:
16709 dependencies:16630 dependencies:
16710 type-fest: 0.21.316631 type-fest: 0.21.3
1671116632
16712 ansi-escapes@7.3.0:
16713 dependencies:
16714 environment: 1.1.0
16715
16716 ansi-regex@4.1.1: {}16633 ansi-regex@4.1.1: {}
1671716634
16718 ansi-regex@5.0.1: {}16635 ansi-regex@5.0.1: {}
...@@ -16738,6 +16655,8 @@ snapshots:...@@ -16738,6 +16655,8 @@ snapshots:
16738 normalize-path: 3.0.016655 normalize-path: 3.0.0
16739 picomatch: 2.3.216656 picomatch: 2.3.2
1674016657
16658 anynum@1.0.1: {}
16659
16741 app-builder-lib@26.15.6(dmg-builder@26.15.6)(electron-builder-squirrel-windows@26.15.6):16660 app-builder-lib@26.15.6(dmg-builder@26.15.6)(electron-builder-squirrel-windows@26.15.6):
16742 dependencies:16661 dependencies:
16743 '@electron/asar': 3.4.116662 '@electron/asar': 3.4.1
...@@ -16926,8 +16845,6 @@ snapshots:...@@ -16926,8 +16845,6 @@ snapshots:
1692616845
16927 atomically@1.7.0: {}16846 atomically@1.7.0: {}
1692816847
16929 auto-bind@5.0.1: {}
16930
16931 await-lock@2.2.2: {}16848 await-lock@2.2.2: {}
1693216849
16933 aws4@1.13.2: {}16850 aws4@1.13.2: {}
...@@ -17218,11 +17135,11 @@ snapshots:...@@ -17218,11 +17135,11 @@ snapshots:
1721817135
17219 caniuse-lite@1.0.30001793: {}17136 caniuse-lite@1.0.30001793: {}
1722017137
17221 capnp-es@0.0.14(typescript@7.0.2):17138 capnp-es@0.0.16(typescript@6.0.3):
17222 optionalDependencies:17139 optionalDependencies:
17223 typescript: 7.0.217140 typescript: 6.0.3
1722417141
17225 capnweb@0.6.1: {}17142 capnweb@0.12.0: {}
1722617143
17227 ccount@2.0.1: {}17144 ccount@2.0.1: {}
1722817145
...@@ -17301,16 +17218,10 @@ snapshots:...@@ -17301,16 +17218,10 @@ snapshots:
17301 dependencies:17218 dependencies:
17302 clsx: 2.1.117219 clsx: 2.1.1
1730317220
17304 cli-boxes@3.0.0: {}
17305
17306 cli-cursor@2.1.0:17221 cli-cursor@2.1.0:
17307 dependencies:17222 dependencies:
17308 restore-cursor: 2.0.017223 restore-cursor: 2.0.0
1730917224
17310 cli-cursor@4.0.0:
17311 dependencies:
17312 restore-cursor: 4.0.0
17313
17314 cli-cursor@5.0.0:17225 cli-cursor@5.0.0:
17315 dependencies:17226 dependencies:
17316 restore-cursor: 5.1.017227 restore-cursor: 5.1.0
...@@ -17319,11 +17230,6 @@ snapshots:...@@ -17319,11 +17230,6 @@ snapshots:
1731917230
17320 cli-spinners@3.4.0: {}17231 cli-spinners@3.4.0: {}
1732117232
17322 cli-truncate@5.2.0:
17323 dependencies:
17324 slice-ansi: 8.0.0
17325 string-width: 8.2.1
17326
17327 cli-width@4.1.0:17233 cli-width@4.1.0:
17328 optional: true17234 optional: true
1732917235
...@@ -17352,10 +17258,6 @@ snapshots:...@@ -17352,10 +17258,6 @@ snapshots:
1735217258
17353 cluster-key-slot@1.1.2: {}17259 cluster-key-slot@1.1.2: {}
1735417260
17355 code-excerpt@4.0.0:
17356 dependencies:
17357 convert-to-spaces: 2.0.1
17358
17359 color-convert@1.9.3:17261 color-convert@1.9.3:
17360 dependencies:17262 dependencies:
17361 color-name: 1.1.317263 color-name: 1.1.3
...@@ -17451,8 +17353,6 @@ snapshots:...@@ -17451,8 +17353,6 @@ snapshots:
1745117353
17452 convert-source-map@2.0.0: {}17354 convert-source-map@2.0.0: {}
1745317355
17454 convert-to-spaces@2.0.1: {}
17455
17456 cookie-es@1.2.3: {}17356 cookie-es@1.2.3: {}
1745717357
17458 cookie-es@3.1.1: {}17358 cookie-es@3.1.1: {}
...@@ -17678,20 +17578,20 @@ snapshots:...@@ -17678,20 +17578,20 @@ snapshots:
17678 get-tsconfig: 4.14.317578 get-tsconfig: 4.14.3
17679 jiti: 2.7.017579 jiti: 2.7.0
1768017580
17681 drizzle-orm@1.0.0-rc.5-ab785fc(8ab70e2706da13c78d64d8a92fef1884):17581 drizzle-orm@1.0.0-rc.5-ab785fc(04a2b37736bdb04e55e63e86c7865f24):
17682 optionalDependencies:17582 optionalDependencies:
17683 '@cloudflare/workers-types': 4.20260604.117583 '@cloudflare/workers-types': 4.20260604.1
17684 '@effect/sql-d1': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))17584 '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
17685 '@effect/sql-pg': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))17585 '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
17686 '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))17586 '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
17687 '@effect/sql-sqlite-do': 4.0.0-rc.112(effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2))17587 '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5))
17688 '@electric-sql/pglite': 0.3.1517588 '@electric-sql/pglite': 0.3.15
17689 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)17589 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
17690 bun-types: 1.3.1417590 bun-types: 1.3.14
17691 effect: 4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2)17591 effect: 4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5)
17692 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)17592 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)
17693 pg: 8.23.017593 pg: 8.23.0
17694 valibot: 1.2.0(typescript@7.0.2)17594 valibot: 1.2.0(typescript@6.0.3)
17695 zod: 4.4.317595 zod: 4.4.3
1769617596
17697 dset@3.1.4: {}17597 dset@3.1.4: {}
...@@ -17710,10 +17610,7 @@ snapshots:...@@ -17710,10 +17610,7 @@ snapshots:
1771017610
17711 ee-first@1.1.1: {}17611 ee-first@1.1.1: {}
1771217612
17713 effect@4.0.0-rc.112(patch_hash=8bef799f35729cf3465eb428196f617b434a7c9f658d56acb2874d74b21b98b2):17613 effect@4.0.0-rc.115(patch_hash=0dfc4bb8ebd80fb3e06b91ef61346f5259517ab0f2437644fe95ae531084b1f5): {}
17714 dependencies:
17715 fast-check: 4.9.0
17716 msgpackr: 2.1.0
1771717614
17718 ejs@3.1.10:17615 ejs@3.1.10:
17719 dependencies:17616 dependencies:
...@@ -17833,8 +17730,6 @@ snapshots:...@@ -17833,8 +17730,6 @@ snapshots:
1783317730
17834 env-paths@3.0.0: {}17731 env-paths@3.0.0: {}
1783517732
17836 environment@1.1.0: {}
17837
17838 err-code@2.0.3: {}17733 err-code@2.0.3: {}
1783917734
17840 error-stack-parser@2.1.4:17735 error-stack-parser@2.1.4:
...@@ -17858,8 +17753,6 @@ snapshots:...@@ -17858,8 +17753,6 @@ snapshots:
17858 has-tostringtag: 1.0.217753 has-tostringtag: 1.0.2
17859 hasown: 2.0.417754 hasown: 2.0.4
1786017755
17861 es-toolkit@1.47.0: {}
17862
17863 es6-error@4.1.1:17756 es6-error@4.1.1:
17864 optional: true17757 optional: true
1786517758
...@@ -17929,8 +17822,6 @@ snapshots:...@@ -17929,8 +17822,6 @@ snapshots:
1792917822
17930 escape-string-regexp@1.0.5: {}17823 escape-string-regexp@1.0.5: {}
1793117824
17932 escape-string-regexp@2.0.0: {}
17933
17934 escape-string-regexp@4.0.0: {}17825 escape-string-regexp@4.0.0: {}
1793517826
17936 escape-string-regexp@5.0.0: {}17827 escape-string-regexp@5.0.0: {}
...@@ -17982,10 +17873,10 @@ snapshots:...@@ -17982,10 +17873,10 @@ snapshots:
17982 - supports-color17873 - supports-color
17983 - typescript17874 - typescript
1798417875
17985 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):17876 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@6.0.3):
17986 dependencies:17877 dependencies:
17987 '@expo/image-utils': 0.11.5(typescript@7.0.2)17878 '@expo/image-utils': 0.11.5(typescript@6.0.3)
17988 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)17879 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
17989 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))17880 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))
17990 react: 19.2.617881 react: 19.2.6
17991 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)17882 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
...@@ -18054,7 +17945,7 @@ snapshots:...@@ -18054,7 +17945,7 @@ snapshots:
18054 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)):17945 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)):
18055 dependencies:17946 dependencies:
18056 '@expo/env': 2.4.317947 '@expo/env': 2.4.3
18057 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)17948 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
18058 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)17949 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
18059 transitivePeerDependencies:17950 transitivePeerDependencies:
18060 - supports-color17951 - supports-color
...@@ -18111,7 +18002,7 @@ snapshots:...@@ -18111,7 +18002,7 @@ snapshots:
1811118002
18112 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)):18003 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)):
18113 dependencies:18004 dependencies:
18114 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)18005 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
18115 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)18006 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
18116 optional: true18007 optional: true
1811718008
...@@ -18124,7 +18015,7 @@ snapshots:...@@ -18124,7 +18015,7 @@ snapshots:
1812418015
18125 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):18016 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):
18126 dependencies:18017 dependencies:
18127 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)18018 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
18128 fontfaceobserver: 2.3.018019 fontfaceobserver: 2.3.0
18129 react: 19.2.618020 react: 19.2.6
18130 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)18021 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
...@@ -18170,7 +18061,7 @@ snapshots:...@@ -18170,7 +18061,7 @@ snapshots:
1817018061
18171 expo-keep-awake@57.0.2(expo@57.0.18)(react@19.2.6):18062 expo-keep-awake@57.0.2(expo@57.0.18)(react@19.2.6):
18172 dependencies:18063 dependencies:
18173 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)18064 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
18174 react: 19.2.618065 react: 19.2.6
18175 optional: true18066 optional: true
1817618067
...@@ -18189,6 +18080,17 @@ snapshots:...@@ -18189,6 +18080,17 @@ snapshots:
18189 expo: 57.0.18(41fd11498a34454c91128cdad32f22f8)18080 expo: 57.0.18(41fd11498a34454c91128cdad32f22f8)
18190 expo-json-utils: 57.0.118081 expo-json-utils: 57.0.1
1819118082
18083 expo-modules-autolinking@57.0.12(typescript@6.0.3):
18084 dependencies:
18085 '@expo/require-utils': 57.0.5(typescript@6.0.3)
18086 '@expo/spawn-async': 1.8.0
18087 chalk: 4.1.2
18088 commander: 7.2.0
18089 transitivePeerDependencies:
18090 - supports-color
18091 - typescript
18092 optional: true
18093
18192 expo-modules-autolinking@57.0.12(typescript@7.0.2):18094 expo-modules-autolinking@57.0.12(typescript@7.0.2):
18193 dependencies:18095 dependencies:
18194 '@expo/require-utils': 57.0.5(typescript@7.0.2)18096 '@expo/require-utils': 57.0.5(typescript@7.0.2)
...@@ -18302,7 +18204,7 @@ snapshots:...@@ -18302,7 +18204,7 @@ snapshots:
18302 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):18204 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):
18303 dependencies:18205 dependencies:
18304 await-lock: 2.2.218206 await-lock: 2.2.2
18305 expo: 57.0.18(0bf40d5ad6281d8f1e92517b24812edb)18207 expo: 57.0.18(ecb3896f1dbe5154a21ddc585503f306)
18306 react: 19.2.618208 react: 19.2.6
18307 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)18209 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
18308 optional: true18210 optional: true
...@@ -18372,37 +18274,37 @@ snapshots:...@@ -18372,37 +18274,37 @@ snapshots:
18372 - react-dom18274 - react-dom
18373 - react-native-worklets18275 - react-native-worklets
1837418276
18375 expo@57.0.18(0bf40d5ad6281d8f1e92517b24812edb):18277 expo@57.0.18(41fd11498a34454c91128cdad32f22f8):
18376 dependencies:18278 dependencies:
18377 '@babel/runtime': 7.29.718279 '@babel/runtime': 7.29.7
18378 '@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)18280 '@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.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.3)(utf-8-validate@6.0.6))(react@19.2.3))(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)(typescript@7.0.2)(utf-8-validate@6.0.6)
18379 '@expo/config': 57.0.9(typescript@7.0.2)18281 '@expo/config': 57.0.9(typescript@7.0.2)
18380 '@expo/config-plugins': 57.0.9(typescript@7.0.2)18282 '@expo/config-plugins': 57.0.9(typescript@7.0.2)
18381 '@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)18283 '@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.3)(utf-8-validate@6.0.6))(react@19.2.3)
18382 '@expo/fingerprint': 0.20.1118284 '@expo/fingerprint': 0.20.11
18383 '@expo/local-build-cache-provider': 57.0.8(typescript@7.0.2)18285 '@expo/local-build-cache-provider': 57.0.8(typescript@7.0.2)
18384 '@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)18286 '@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.3)(utf-8-validate@6.0.6))(react@19.2.3)
18385 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)18287 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
18386 '@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)18288 '@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)
18387 '@ungap/structured-clone': 1.3.118289 '@ungap/structured-clone': 1.3.1
18388 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)18290 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)
18389 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)18291 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.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)
18390 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))18292 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.3)(utf-8-validate@6.0.6))
18391 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))18293 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.3)(utf-8-validate@6.0.6))
18392 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)18294 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)
18393 expo-keep-awake: 57.0.2(expo@57.0.18)(react@19.2.6)18295 expo-keep-awake: 57.0.2(expo@57.0.18)(react@19.2.3)
18394 expo-modules-autolinking: 57.0.12(typescript@7.0.2)18296 expo-modules-autolinking: 57.0.12(typescript@7.0.2)
18395 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)18297 expo-modules-core: 57.0.14(react-native-worklets@0.11.4(@babel/core@7.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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
18396 pretty-format: 29.7.018298 pretty-format: 29.7.0
18397 react: 19.2.618299 react: 19.2.3
18398 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)18300 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
18399 react-refresh: 0.14.218301 react-refresh: 0.14.2
18400 whatwg-url-minimum: 0.1.218302 whatwg-url-minimum: 0.1.2
18401 optionalDependencies:18303 optionalDependencies:
18402 '@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)18304 '@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)
18403 '@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)18305 '@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)
18404 react-dom: 19.2.6(react@19.2.6)18306 react-dom: 19.2.3(react@19.2.3)
18405 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)18307 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.3)(utf-8-validate@6.0.6))(react@19.2.3)
18406 transitivePeerDependencies:18308 transitivePeerDependencies:
18407 - '@babel/core'18309 - '@babel/core'
18408 - bufferutil18310 - bufferutil
...@@ -18413,39 +18315,38 @@ snapshots:...@@ -18413,39 +18315,38 @@ snapshots:
18413 - supports-color18315 - supports-color
18414 - typescript18316 - typescript
18415 - utf-8-validate18317 - utf-8-validate
18416 optional: true
1841718318
18418 expo@57.0.18(41fd11498a34454c91128cdad32f22f8):18319 expo@57.0.18(ecb3896f1dbe5154a21ddc585503f306):
18419 dependencies:18320 dependencies:
18420 '@babel/runtime': 7.29.718321 '@babel/runtime': 7.29.7
18421 '@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.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.3)(utf-8-validate@6.0.6))(react@19.2.3))(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)(typescript@7.0.2)(utf-8-validate@6.0.6)18322 '@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@6.0.3)(utf-8-validate@6.0.6)
18422 '@expo/config': 57.0.9(typescript@7.0.2)18323 '@expo/config': 57.0.9(typescript@6.0.3)
18423 '@expo/config-plugins': 57.0.9(typescript@7.0.2)18324 '@expo/config-plugins': 57.0.9(typescript@6.0.3)
18424 '@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.3)(utf-8-validate@6.0.6))(react@19.2.3)18325 '@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)
18425 '@expo/fingerprint': 0.20.1118326 '@expo/fingerprint': 0.20.11
18426 '@expo/local-build-cache-provider': 57.0.8(typescript@7.0.2)18327 '@expo/local-build-cache-provider': 57.0.8(typescript@6.0.3)
18427 '@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.3)(utf-8-validate@6.0.6))(react@19.2.3)18328 '@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)
18428 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)18329 '@expo/metro': 56.0.2(bufferutil@4.1.0)(utf-8-validate@6.0.6)
18429 '@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)18330 '@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)
18430 '@ungap/structured-clone': 1.3.118331 '@ungap/structured-clone': 1.3.1
18431 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)18332 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)
18432 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.3)(utf-8-validate@6.0.6))(react@19.2.3)(typescript@7.0.2)18333 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@6.0.3)
18433 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.3)(utf-8-validate@6.0.6))18334 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))
18434 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.3)(utf-8-validate@6.0.6))18335 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))
18435 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)18336 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)
18436 expo-keep-awake: 57.0.2(expo@57.0.18)(react@19.2.3)18337 expo-keep-awake: 57.0.2(expo@57.0.18)(react@19.2.6)
18437 expo-modules-autolinking: 57.0.12(typescript@7.0.2)18338 expo-modules-autolinking: 57.0.12(typescript@6.0.3)
18438 expo-modules-core: 57.0.14(react-native-worklets@0.11.4(@babel/core@7.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))(react-native@0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)18339 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)
18439 pretty-format: 29.7.018340 pretty-format: 29.7.0
18440 react: 19.2.318341 react: 19.2.6
18441 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)18342 react-native: 0.86.3(@babel/core@7.29.7)(@react-native/metro-config@0.86.3(@babel/core@7.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)
18442 react-refresh: 0.14.218343 react-refresh: 0.14.2
18443 whatwg-url-minimum: 0.1.218344 whatwg-url-minimum: 0.1.2
18444 optionalDependencies:18345 optionalDependencies:
18445 '@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)18346 '@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)
18446 '@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)18347 '@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)
18447 react-dom: 19.2.3(react@19.2.3)18348 react-dom: 19.2.6(react@19.2.6)
18448 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.3)(utf-8-validate@6.0.6))(react@19.2.3)18349 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)
18449 transitivePeerDependencies:18350 transitivePeerDependencies:
18450 - '@babel/core'18351 - '@babel/core'
18451 - bufferutil18352 - bufferutil
...@@ -18456,6 +18357,7 @@ snapshots:...@@ -18456,6 +18357,7 @@ snapshots:
18456 - supports-color18357 - supports-color
18457 - typescript18358 - typescript
18458 - utf-8-validate18359 - utf-8-validate
18360 optional: true
1845918361
18460 exponential-backoff@3.1.3: {}18362 exponential-backoff@3.1.3: {}
1846118363
...@@ -18499,22 +18401,10 @@ snapshots:...@@ -18499,22 +18401,10 @@ snapshots:
1849918401
18500 extend@3.0.2: {}18402 extend@3.0.2: {}
1850118403
18502 fast-check@4.9.0:
18503 dependencies:
18504 pure-rand: 8.4.0
18505
18506 fast-deep-equal@3.1.3: {}18404 fast-deep-equal@3.1.3: {}
1850718405
18508 fast-equals@5.4.2: {}18406 fast-equals@5.4.2: {}
1850918407
18510 fast-glob@3.3.3:
18511 dependencies:
18512 '@nodelib/fs.stat': 2.0.5
18513 '@nodelib/fs.walk': 1.2.8
18514 glob-parent: 5.1.2
18515 merge2: 1.4.1
18516 micromatch: 4.0.8
18517
18518 fast-json-stable-stringify@2.1.0:18408 fast-json-stable-stringify@2.1.0:
18519 optional: true18409 optional: true
1852018410
...@@ -18539,27 +18429,24 @@ snapshots:...@@ -18539,27 +18429,24 @@ snapshots:
18539 path-expression-matcher: 1.5.018429 path-expression-matcher: 1.5.0
18540 xml-naming: 0.1.018430 xml-naming: 0.1.0
1854118431
18542 fast-xml-parser@5.7.3:18432 fast-xml-parser@5.11.1:
18543 dependencies:18433 dependencies:
18544 '@nodable/entities': 2.1.118434 '@nodable/entities': 3.0.0
18545 fast-xml-builder: 1.2.018435 fast-xml-builder: 1.2.0
18546 path-expression-matcher: 1.5.018436 is-unsafe: 2.0.2
18547 strnum: 2.3.018437 path-expression-matcher: 1.6.2
18438 strnum: 2.4.2
18439 xml-naming: 0.3.0
1854818440
18549 fast-xml-parser@5.8.0:18441 fast-xml-parser@5.7.3:
18550 dependencies:18442 dependencies:
18551 '@nodable/entities': 2.1.118443 '@nodable/entities': 2.1.1
18552 fast-xml-builder: 1.2.018444 fast-xml-builder: 1.2.0
18553 path-expression-matcher: 1.5.018445 path-expression-matcher: 1.5.0
18554 strnum: 2.3.018446 strnum: 2.3.0
18555 xml-naming: 0.1.0
1855618447
18557 fastest-levenshtein@1.0.16: {}18448 fastest-levenshtein@1.0.16: {}
1855818449
18559 fastq@1.20.1:
18560 dependencies:
18561 reusify: 1.1.0
18562
18563 fb-dotslash@0.5.8: {}18450 fb-dotslash@0.5.8: {}
1856418451
18565 fb-watchman@2.0.2:18452 fb-watchman@2.0.2:
...@@ -18594,6 +18481,8 @@ snapshots:...@@ -18594,6 +18481,8 @@ snapshots:
18594 '@yuuang/ffi-rs-win32-ia32-msvc': 1.3.218481 '@yuuang/ffi-rs-win32-ia32-msvc': 1.3.2
18595 '@yuuang/ffi-rs-win32-x64-msvc': 1.3.218482 '@yuuang/ffi-rs-win32-x64-msvc': 1.3.2
1859618483
18484 fflate@0.8.3: {}
18485
18597 filelist@1.0.6:18486 filelist@1.0.6:
18598 dependencies:18487 dependencies:
18599 minimatch: 5.1.918488 minimatch: 5.1.9
...@@ -18759,10 +18648,6 @@ snapshots:...@@ -18759,10 +18648,6 @@ snapshots:
1875918648
18760 github-slugger@2.0.0: {}18649 github-slugger@2.0.0: {}
1876118650
18762 glob-parent@5.1.2:
18763 dependencies:
18764 is-glob: 4.0.3
18765
18766 glob-to-regexp@0.4.1: {}18651 glob-to-regexp@0.4.1: {}
1876718652
18768 glob@13.0.6:18653 glob@13.0.6:
...@@ -18818,6 +18703,8 @@ snapshots:...@@ -18818,6 +18703,8 @@ snapshots:
1881818703
18819 graphmatch@1.1.1: {}18704 graphmatch@1.1.1: {}
1882018705
18706 graphql@16.11.0: {}
18707
18821 graphql@16.14.1:18708 graphql@16.14.1:
18822 optional: true18709 optional: true
1882318710
...@@ -19071,8 +18958,6 @@ snapshots:...@@ -19071,8 +18958,6 @@ snapshots:
1907118958
19072 immediate@3.0.6: {}18959 immediate@3.0.6: {}
1907318960
19074 indent-string@5.0.0: {}
19075
19076 inflight@1.0.6:18961 inflight@1.0.6:
19077 dependencies:18962 dependencies:
19078 once: 1.4.018963 once: 1.4.0
...@@ -19080,41 +18965,6 @@ snapshots:...@@ -19080,41 +18965,6 @@ snapshots:
1908018965
19081 inherits@2.0.4: {}18966 inherits@2.0.4: {}
1908218967
19083 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):
19084 dependencies:
19085 '@alcalzone/ansi-tokenize': 0.2.5
19086 ansi-escapes: 7.3.0
19087 ansi-styles: 6.2.3
19088 auto-bind: 5.0.1
19089 chalk: 5.6.2
19090 cli-boxes: 3.0.0
19091 cli-cursor: 4.0.0
19092 cli-truncate: 5.2.0
19093 code-excerpt: 4.0.0
19094 es-toolkit: 1.47.0
19095 indent-string: 5.0.0
19096 is-in-ci: 2.0.0
19097 patch-console: 2.0.0
19098 react: 19.2.6
19099 react-reconciler: 0.33.0(react@19.2.6)
19100 scheduler: 0.27.0
19101 signal-exit: 3.0.7
19102 slice-ansi: 8.0.0
19103 stack-utils: 2.0.6
19104 string-width: 8.2.1
19105 terminal-size: 4.0.1
19106 type-fest: 5.7.0
19107 widest-line: 6.0.0
19108 wrap-ansi: 9.0.2
19109 ws: 8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
19110 yoga-layout: 3.2.1
19111 optionalDependencies:
19112 '@types/react': 19.2.16
19113 react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)
19114 transitivePeerDependencies:
19115 - bufferutil
19116 - utf-8-validate
19117
19118 inline-style-parser@0.2.7: {}18968 inline-style-parser@0.2.7: {}
1911918969
19120 invariant@2.2.4:18970 invariant@2.2.4:
...@@ -19161,22 +19011,10 @@ snapshots:...@@ -19161,22 +19011,10 @@ snapshots:
1916119011
19162 is-docker@4.0.0: {}19012 is-docker@4.0.0: {}
1916319013
19164 is-extglob@2.1.1: {}
19165
19166 is-fullwidth-code-point@3.0.0: {}19014 is-fullwidth-code-point@3.0.0: {}
1916719015
19168 is-fullwidth-code-point@5.1.0:
19169 dependencies:
19170 get-east-asian-width: 1.6.0
19171
19172 is-glob@4.0.3:
19173 dependencies:
19174 is-extglob: 2.1.1
19175
19176 is-hexadecimal@2.0.1: {}19016 is-hexadecimal@2.0.1: {}
1917719017
19178 is-in-ci@2.0.0: {}
19179
19180 is-inside-container@1.0.0:19018 is-inside-container@1.0.0:
19181 dependencies:19019 dependencies:
19182 is-docker: 3.0.019020 is-docker: 3.0.0
...@@ -19196,6 +19034,8 @@ snapshots:...@@ -19196,6 +19034,8 @@ snapshots:
1919619034
19197 is-unicode-supported@2.1.0: {}19035 is-unicode-supported@2.1.0: {}
1919819036
19037 is-unsafe@2.0.2: {}
19038
19199 is-wsl@2.2.0:19039 is-wsl@2.2.0:
19200 dependencies:19040 dependencies:
19201 is-docker: 2.2.119041 is-docker: 2.2.1
...@@ -19717,8 +19557,6 @@ snapshots:...@@ -19717,8 +19557,6 @@ snapshots:
1971719557
19718 merge-stream@2.0.0: {}19558 merge-stream@2.0.0: {}
1971919559
19720 merge2@1.4.1: {}
19721
19722 metro-babel-transformer@0.84.4:19560 metro-babel-transformer@0.84.4:
19723 dependencies:19561 dependencies:
19724 '@babel/core': 7.29.719562 '@babel/core': 7.29.7
...@@ -20288,8 +20126,6 @@ snapshots:...@@ -20288,8 +20126,6 @@ snapshots:
2028820126
20289 mime@2.6.0: {}20127 mime@2.6.0: {}
2029020128
20291 mime@4.1.0: {}
20292
20293 mimic-fn@1.2.0: {}20129 mimic-fn@1.2.0: {}
2029420130
20295 mimic-fn@2.1.0: {}20131 mimic-fn@2.1.0: {}
...@@ -20356,20 +20192,31 @@ snapshots:...@@ -20356,20 +20192,31 @@ snapshots:
2035620192
20357 ms@2.1.3: {}20193 ms@2.1.3: {}
2035820194
20359 msgpackr-extract@3.0.4:20195 msw@2.12.11(@types/node@24.12.4)(typescript@6.0.3):
20360 dependencies:20196 dependencies:
20361 node-gyp-build-optional-packages: 5.2.220197 '@inquirer/confirm': 5.1.21(@types/node@24.12.4)
20362 optionalDependencies:20198 '@mswjs/interceptors': 0.41.9
20363 '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.420199 '@open-draft/deferred-promise': 2.2.0
20364 '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.420200 '@types/statuses': 2.0.6
20365 '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.420201 cookie: 1.1.1
20366 '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.420202 graphql: 16.14.1
20367 '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.420203 headers-polyfill: 4.0.3
20368 '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.420204 is-node-process: 1.2.0
2036920205 outvariant: 1.4.3
20370 msgpackr@2.1.0:20206 path-to-regexp: 6.3.0
20207 picocolors: 1.1.1
20208 rettime: 0.10.1
20209 statuses: 2.0.2
20210 strict-event-emitter: 0.5.1
20211 tough-cookie: 6.0.1
20212 type-fest: 5.7.0
20213 until-async: 3.0.2
20214 yargs: 17.7.2
20371 optionalDependencies:20215 optionalDependencies:
20372 msgpackr-extract: 3.0.420216 typescript: 6.0.3
20217 transitivePeerDependencies:
20218 - '@types/node'
20219 optional: true
2037320220
20374 msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2):20221 msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2):
20375 dependencies:20222 dependencies:
...@@ -20442,10 +20289,6 @@ snapshots:...@@ -20442,10 +20289,6 @@ snapshots:
2044220289
20443 node-forge@1.4.0: {}20290 node-forge@1.4.0: {}
2044420291
20445 node-gyp-build-optional-packages@5.2.2:
20446 dependencies:
20447 detect-libc: 2.1.2
20448
20449 node-gyp-build@4.8.4:20292 node-gyp-build@4.8.4:
20450 optional: true20293 optional: true
2045120294
...@@ -20543,8 +20386,6 @@ snapshots:...@@ -20543,8 +20386,6 @@ snapshots:
20543 object-keys@1.1.1:20386 object-keys@1.1.1:
20544 optional: true20387 optional: true
2054520388
20546 obuf@1.1.2: {}
20547
20548 obug@2.1.3: {}20389 obug@2.1.3: {}
2054920390
20550 ofetch@1.5.1:20391 ofetch@1.5.1:
...@@ -20665,6 +20506,31 @@ snapshots:...@@ -20665,6 +20506,31 @@ snapshots:
20665 '@oxc-resolver/binding-win32-arm64-msvc': 11.24.220506 '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
20666 '@oxc-resolver/binding-win32-x64-msvc': 11.24.220507 '@oxc-resolver/binding-win32-x64-msvc': 11.24.2
2066720508
20509 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)):
20510 dependencies:
20511 tinypool: 2.1.0
20512 optionalDependencies:
20513 '@oxfmt/binding-android-arm-eabi': 0.64.0
20514 '@oxfmt/binding-android-arm64': 0.64.0
20515 '@oxfmt/binding-darwin-arm64': 0.64.0
20516 '@oxfmt/binding-darwin-x64': 0.64.0
20517 '@oxfmt/binding-freebsd-x64': 0.64.0
20518 '@oxfmt/binding-linux-arm-gnueabihf': 0.64.0
20519 '@oxfmt/binding-linux-arm-musleabihf': 0.64.0
20520 '@oxfmt/binding-linux-arm64-gnu': 0.64.0
20521 '@oxfmt/binding-linux-arm64-musl': 0.64.0
20522 '@oxfmt/binding-linux-ppc64-gnu': 0.64.0
20523 '@oxfmt/binding-linux-riscv64-gnu': 0.64.0
20524 '@oxfmt/binding-linux-riscv64-musl': 0.64.0
20525 '@oxfmt/binding-linux-s390x-gnu': 0.64.0
20526 '@oxfmt/binding-linux-x64-gnu': 0.64.0
20527 '@oxfmt/binding-linux-x64-musl': 0.64.0
20528 '@oxfmt/binding-openharmony-arm64': 0.64.0
20529 '@oxfmt/binding-win32-arm64-msvc': 0.64.0
20530 '@oxfmt/binding-win32-ia32-msvc': 0.64.0
20531 '@oxfmt/binding-win32-x64-msvc': 0.64.0
20532 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)
20533
20668 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)):20534 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)):
20669 dependencies:20535 dependencies:
20670 tinypool: 2.1.020536 tinypool: 2.1.0
...@@ -20699,6 +20565,30 @@ snapshots:...@@ -20699,6 +20565,30 @@ snapshots:
20699 '@oxlint-tsgolint/win32-arm64': 7.0.200120565 '@oxlint-tsgolint/win32-arm64': 7.0.2001
20700 '@oxlint-tsgolint/win32-x64': 7.0.200120566 '@oxlint-tsgolint/win32-x64': 7.0.2001
2070120567
20568 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)):
20569 optionalDependencies:
20570 '@oxlint/binding-android-arm-eabi': 1.79.0
20571 '@oxlint/binding-android-arm64': 1.79.0
20572 '@oxlint/binding-darwin-arm64': 1.79.0
20573 '@oxlint/binding-darwin-x64': 1.79.0
20574 '@oxlint/binding-freebsd-x64': 1.79.0
20575 '@oxlint/binding-linux-arm-gnueabihf': 1.79.0
20576 '@oxlint/binding-linux-arm-musleabihf': 1.79.0
20577 '@oxlint/binding-linux-arm64-gnu': 1.79.0
20578 '@oxlint/binding-linux-arm64-musl': 1.79.0
20579 '@oxlint/binding-linux-ppc64-gnu': 1.79.0
20580 '@oxlint/binding-linux-riscv64-gnu': 1.79.0
20581 '@oxlint/binding-linux-riscv64-musl': 1.79.0
20582 '@oxlint/binding-linux-s390x-gnu': 1.79.0
20583 '@oxlint/binding-linux-x64-gnu': 1.79.0
20584 '@oxlint/binding-linux-x64-musl': 1.79.0
20585 '@oxlint/binding-openharmony-arm64': 1.79.0
20586 '@oxlint/binding-win32-arm64-msvc': 1.79.0
20587 '@oxlint/binding-win32-ia32-msvc': 1.79.0
20588 '@oxlint/binding-win32-x64-msvc': 1.79.0
20589 oxlint-tsgolint: 7.0.2001
20590 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)
20591
20702 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)):20592 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)):
20703 optionalDependencies:20593 optionalDependencies:
20704 '@oxlint/binding-android-arm-eabi': 1.79.020594 '@oxlint/binding-android-arm-eabi': 1.79.0
...@@ -20786,14 +20676,14 @@ snapshots:...@@ -20786,14 +20676,14 @@ snapshots:
2078620676
20787 parseurl@1.3.3: {}20677 parseurl@1.3.3: {}
2078820678
20789 patch-console@2.0.0: {}
20790
20791 path-browserify@1.0.1: {}20679 path-browserify@1.0.1: {}
2079220680
20793 path-exists@3.0.0: {}20681 path-exists@3.0.0: {}
2079420682
20795 path-expression-matcher@1.5.0: {}20683 path-expression-matcher@1.5.0: {}
2079620684
20685 path-expression-matcher@1.6.2: {}
20686
20797 path-is-absolute@1.0.1: {}20687 path-is-absolute@1.0.1: {}
2079820688
20799 path-key@3.1.1: {}20689 path-key@3.1.1: {}
...@@ -20824,21 +20714,19 @@ snapshots:...@@ -20824,21 +20714,19 @@ snapshots:
20824 pg-cloudflare@1.4.0:20714 pg-cloudflare@1.4.0:
20825 optional: true20715 optional: true
2082620716
20827 pg-connection-string@2.14.0: {}20717 pg-connection-string@2.14.0:
2082820718 optional: true
20829 pg-cursor@2.22.0(pg@8.23.0):
20830 dependencies:
20831 pg: 8.23.0
20832
20833 pg-int8@1.0.1: {}
2083420719
20835 pg-numeric@1.0.2: {}20720 pg-int8@1.0.1:
20721 optional: true
2083620722
20837 pg-pool@3.14.0(pg@8.23.0):20723 pg-pool@3.14.0(pg@8.23.0):
20838 dependencies:20724 dependencies:
20839 pg: 8.23.020725 pg: 8.23.0
20726 optional: true
2084020727
20841 pg-protocol@1.16.0: {}20728 pg-protocol@1.16.0:
20729 optional: true
2084220730
20843 pg-types@2.2.0:20731 pg-types@2.2.0:
20844 dependencies:20732 dependencies:
...@@ -20847,16 +20735,7 @@ snapshots:...@@ -20847,16 +20735,7 @@ snapshots:
20847 postgres-bytea: 1.0.120735 postgres-bytea: 1.0.1
20848 postgres-date: 1.0.720736 postgres-date: 1.0.7
20849 postgres-interval: 1.2.020737 postgres-interval: 1.2.0
2085020738 optional: true
20851 pg-types@4.1.0:
20852 dependencies:
20853 pg-int8: 1.0.1
20854 pg-numeric: 1.0.2
20855 postgres-array: 3.0.4
20856 postgres-bytea: 3.0.0
20857 postgres-date: 2.1.0
20858 postgres-interval: 3.0.0
20859 postgres-range: 1.1.4
2086020739
20861 pg@8.23.0:20740 pg@8.23.0:
20862 dependencies:20741 dependencies:
...@@ -20867,10 +20746,12 @@ snapshots:...@@ -20867,10 +20746,12 @@ snapshots:
20867 pgpass: 1.0.520746 pgpass: 1.0.5
20868 optionalDependencies:20747 optionalDependencies:
20869 pg-cloudflare: 1.4.020748 pg-cloudflare: 1.4.0
20749 optional: true
2087020750
20871 pgpass@1.0.5:20751 pgpass@1.0.5:
20872 dependencies:20752 dependencies:
20873 split2: 4.2.020753 split2: 4.2.0
20754 optional: true
2087420755
20875 piccolore@0.1.3: {}20756 piccolore@0.1.3: {}
2087620757
...@@ -20921,27 +20802,19 @@ snapshots:...@@ -20921,27 +20802,19 @@ snapshots:
20921 picocolors: 1.1.120802 picocolors: 1.1.1
20922 source-map-js: 1.2.120803 source-map-js: 1.2.1
2092320804
20924 postgres-array@2.0.0: {}20805 postgres-array@2.0.0:
2092520806 optional: true
20926 postgres-array@3.0.4: {}
20927
20928 postgres-bytea@1.0.1: {}
20929
20930 postgres-bytea@3.0.0:
20931 dependencies:
20932 obuf: 1.1.2
2093320807
20934 postgres-date@1.0.7: {}20808 postgres-bytea@1.0.1:
20809 optional: true
2093520810
20936 postgres-date@2.1.0: {}20811 postgres-date@1.0.7:
20812 optional: true
2093720813
20938 postgres-interval@1.2.0:20814 postgres-interval@1.2.0:
20939 dependencies:20815 dependencies:
20940 xtend: 4.0.220816 xtend: 4.0.2
2094120817 optional: true
20942 postgres-interval@3.0.0: {}
20943
20944 postgres-range@1.1.4: {}
2094520818
20946 postject@1.0.0-alpha.6:20819 postject@1.0.0-alpha.6:
20947 dependencies:20820 dependencies:
...@@ -21095,8 +20968,6 @@ snapshots:...@@ -21095,8 +20968,6 @@ snapshots:
21095 punycode@2.3.1:20968 punycode@2.3.1:
21096 optional: true20969 optional: true
2109720970
21098 pure-rand@8.4.0: {}
21099
21100 pvtsutils@1.3.6:20971 pvtsutils@1.3.6:
21101 dependencies:20972 dependencies:
21102 tslib: 2.8.120973 tslib: 2.8.1
...@@ -21115,8 +20986,6 @@ snapshots:...@@ -21115,8 +20986,6 @@ snapshots:
21115 split-on-first: 1.1.020986 split-on-first: 1.1.0
21116 strict-uri-encode: 2.0.020987 strict-uri-encode: 2.0.0
2111720988
21118 queue-microtask@1.2.3: {}
21119
21120 queue@6.0.2:20989 queue@6.0.2:
21121 dependencies:20990 dependencies:
21122 inherits: 2.0.420991 inherits: 2.0.4
...@@ -21426,11 +21295,6 @@ snapshots:...@@ -21426,11 +21295,6 @@ snapshots:
21426 - utf-8-validate21295 - utf-8-validate
21427 optional: true21296 optional: true
2142821297
21429 react-reconciler@0.33.0(react@19.2.6):
21430 dependencies:
21431 react: 19.2.6
21432 scheduler: 0.27.0
21433
21434 react-refresh@0.14.2: {}21298 react-refresh@0.14.2: {}
2143521299
21436 react-remove-scroll-bar@2.3.8(@types/react@19.2.16)(react@19.2.3):21300 react-remove-scroll-bar@2.3.8(@types/react@19.2.16)(react@19.2.3):
...@@ -21664,11 +21528,6 @@ snapshots:...@@ -21664,11 +21528,6 @@ snapshots:
21664 onetime: 2.0.121528 onetime: 2.0.1
21665 signal-exit: 3.0.721529 signal-exit: 3.0.7
2166621530
21667 restore-cursor@4.0.0:
21668 dependencies:
21669 onetime: 5.1.2
21670 signal-exit: 3.0.7
21671
21672 restore-cursor@5.1.0:21531 restore-cursor@5.1.0:
21673 dependencies:21532 dependencies:
21674 onetime: 7.0.021533 onetime: 7.0.0
...@@ -21707,8 +21566,6 @@ snapshots:...@@ -21707,8 +21566,6 @@ snapshots:
21707 rettime@0.10.1:21566 rettime@0.10.1:
21708 optional: true21567 optional: true
2170921568
21710 reusify@1.1.0: {}
21711
21712 rimraf@2.6.3:21569 rimraf@2.6.3:
21713 dependencies:21570 dependencies:
21714 glob: 7.2.321571 glob: 7.2.3
...@@ -21810,10 +21667,6 @@ snapshots:...@@ -21810,10 +21667,6 @@ snapshots:
21810 transitivePeerDependencies:21667 transitivePeerDependencies:
21811 - supports-color21668 - supports-color
2181221669
21813 run-parallel@1.2.0:
21814 dependencies:
21815 queue-microtask: 1.2.3
21816
21817 safe-buffer@5.1.2: {}21670 safe-buffer@5.1.2: {}
2181821671
21819 safe-buffer@5.2.1: {}21672 safe-buffer@5.2.1: {}
...@@ -22101,11 +21954,6 @@ snapshots:...@@ -22101,11 +21954,6 @@ snapshots:
2210121954
22102 sisteransi@1.0.5: {}21955 sisteransi@1.0.5: {}
2210321956
22104 slice-ansi@8.0.0:
22105 dependencies:
22106 ansi-styles: 6.2.3
22107 is-fullwidth-code-point: 5.1.0
22108
22109 slugify@1.6.9: {}21957 slugify@1.6.9: {}
2211021958
22111 smart-buffer@4.2.0:21959 smart-buffer@4.2.0:
...@@ -22141,7 +21989,8 @@ snapshots:...@@ -22141,7 +21989,8 @@ snapshots:
2214121989
22142 split-on-first@1.1.0: {}21990 split-on-first@1.1.0: {}
2214321991
22144 split2@4.2.0: {}21992 split2@4.2.0:
21993 optional: true
2214521994
22146 split@0.3.3:21995 split@0.3.3:
22147 dependencies:21996 dependencies:
...@@ -22150,10 +21999,6 @@ snapshots:...@@ -22150,10 +21999,6 @@ snapshots:
22150 sprintf-js@1.1.3:21999 sprintf-js@1.1.3:
22151 optional: true22000 optional: true
2215222001
22153 stack-utils@2.0.6:
22154 dependencies:
22155 escape-string-regexp: 2.0.0
22156
22157 stackback@0.0.2: {}22002 stackback@0.0.2: {}
2215822003
22159 stackframe@1.3.4: {}22004 stackframe@1.3.4: {}
...@@ -22243,6 +22088,10 @@ snapshots:...@@ -22243,6 +22088,10 @@ snapshots:
2224322088
22244 strnum@2.3.0: {}22089 strnum@2.3.0: {}
2224522090
22091 strnum@2.4.2:
22092 dependencies:
22093 anynum: 1.0.1
22094
22246 structured-headers@0.4.1: {}22095 structured-headers@0.4.1: {}
2224722096
22248 style-to-js@1.1.21:22097 style-to-js@1.1.21:
...@@ -22335,8 +22184,6 @@ snapshots:...@@ -22335,8 +22184,6 @@ snapshots:
22335 ansi-escapes: 4.3.222184 ansi-escapes: 4.3.2
22336 supports-hyperlinks: 2.3.022185 supports-hyperlinks: 2.3.0
2233722186
22338 terminal-size@4.0.1: {}
22339
22340 terser@5.48.0:22187 terser@5.48.0:
22341 dependencies:22188 dependencies:
22342 '@jridgewell/source-map': 0.3.1122189 '@jridgewell/source-map': 0.3.11
...@@ -22594,7 +22441,7 @@ snapshots:...@@ -22594,7 +22441,7 @@ snapshots:
22594 unplugin@3.0.0:22441 unplugin@3.0.0:
22595 dependencies:22442 dependencies:
22596 '@jridgewell/remapping': 2.3.522443 '@jridgewell/remapping': 2.3.5
22597 picomatch: 4.0.422444 picomatch: 4.0.7
22598 webpack-virtual-modules: 0.6.222445 webpack-virtual-modules: 0.6.2
2259922446
22600 unrun@0.2.39:22447 unrun@0.2.39:
...@@ -22683,11 +22530,6 @@ snapshots:...@@ -22683,11 +22530,6 @@ snapshots:
22683 optionalDependencies:22530 optionalDependencies:
22684 typescript: 6.0.322531 typescript: 6.0.3
2268522532
22686 valibot@1.2.0(typescript@7.0.2):
22687 optionalDependencies:
22688 typescript: 7.0.2
22689 optional: true
22690
22691 validate-npm-package-name@5.0.1: {}22533 validate-npm-package-name@5.0.1: {}
2269222534
22693 vary@1.1.2: {}22535 vary@1.1.2: {}
...@@ -22716,6 +22558,64 @@ snapshots:...@@ -22716,6 +22558,64 @@ snapshots:
22716 '@types/unist': 3.0.322558 '@types/unist': 3.0.3
22717 vfile-message: 4.0.322559 vfile-message: 4.0.3
2271822560
22561 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):
22562 dependencies:
22563 '@oxc-project/types': 0.146.0
22564 '@oxlint/plugins': 1.79.0
22565 '@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)))
22566 '@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)))
22567 '@vitest/expect': 4.1.11
22568 '@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))
22569 '@vitest/pretty-format': 4.1.11
22570 '@vitest/runner': 4.1.11
22571 '@vitest/snapshot': 4.1.11
22572 '@vitest/spy': 4.1.11
22573 '@vitest/utils': 4.1.11
22574 '@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)
22575 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))
22576 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))
22577 oxlint-tsgolint: 7.0.2001
22578 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)'
22579 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))
22580 optionalDependencies:
22581 '@voidzero-dev/vite-plus-darwin-arm64': 0.3.0
22582 '@voidzero-dev/vite-plus-darwin-x64': 0.3.0
22583 '@voidzero-dev/vite-plus-linux-arm64-gnu': 0.3.0
22584 '@voidzero-dev/vite-plus-linux-arm64-musl': 0.3.0
22585 '@voidzero-dev/vite-plus-linux-x64-gnu': 0.3.0
22586 '@voidzero-dev/vite-plus-linux-x64-musl': 0.3.0
22587 '@voidzero-dev/vite-plus-win32-arm64-msvc': 0.3.0
22588 '@voidzero-dev/vite-plus-win32-x64-msvc': 0.3.0
22589 transitivePeerDependencies:
22590 - '@arethetypeswrong/core'
22591 - '@edge-runtime/vm'
22592 - '@opentelemetry/api'
22593 - '@types/node'
22594 - '@vitejs/devtools'
22595 - '@vitest/coverage-istanbul'
22596 - '@vitest/coverage-v8'
22597 - '@vitest/ui'
22598 - bufferutil
22599 - esbuild
22600 - happy-dom
22601 - jiti
22602 - jsdom
22603 - less
22604 - msw
22605 - publint
22606 - sass
22607 - sass-embedded
22608 - stylus
22609 - sugarss
22610 - svelte
22611 - terser
22612 - tsx
22613 - typescript
22614 - unplugin-unused
22615 - unrun
22616 - utf-8-validate
22617 - yaml
22618
22719 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):22619 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):
22720 dependencies:22620 dependencies:
22721 '@oxc-project/types': 0.146.022621 '@oxc-project/types': 0.146.0
...@@ -22778,6 +22678,34 @@ snapshots:...@@ -22778,6 +22678,34 @@ snapshots:
22778 optionalDependencies:22678 optionalDependencies:
22779 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)'22679 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)'
2278022680
22681 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)):
22682 dependencies:
22683 '@vitest/expect': 4.1.11
22684 '@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))
22685 '@vitest/pretty-format': 4.1.11
22686 '@vitest/runner': 4.1.11
22687 '@vitest/snapshot': 4.1.11
22688 '@vitest/spy': 4.1.11
22689 '@vitest/utils': 4.1.11
22690 es-module-lexer: 2.1.0
22691 expect-type: 1.4.0
22692 magic-string: 0.30.21
22693 obug: 2.1.3
22694 pathe: 2.0.3
22695 picomatch: 4.0.7
22696 std-env: 4.1.0
22697 tinybench: 2.9.0
22698 tinyexec: 1.2.4
22699 tinyglobby: 0.2.17
22700 tinyrainbow: 3.1.0
22701 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)'
22702 why-is-node-running: 2.3.0
22703 optionalDependencies:
22704 '@types/node': 24.12.4
22705 '@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)
22706 transitivePeerDependencies:
22707 - msw
22708
22781 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)):22709 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)):
22782 dependencies:22710 dependencies:
22783 '@vitest/expect': 4.1.1122711 '@vitest/expect': 4.1.11
...@@ -22792,7 +22720,7 @@ snapshots:...@@ -22792,7 +22720,7 @@ snapshots:
22792 magic-string: 0.30.2122720 magic-string: 0.30.21
22793 obug: 2.1.322721 obug: 2.1.3
22794 pathe: 2.0.322722 pathe: 2.0.3
22795 picomatch: 4.0.422723 picomatch: 4.0.7
22796 std-env: 4.1.022724 std-env: 4.1.0
22797 tinybench: 2.9.022725 tinybench: 2.9.0
22798 tinyexec: 1.2.422726 tinyexec: 1.2.4
...@@ -22970,17 +22898,13 @@ snapshots:...@@ -22970,17 +22898,13 @@ snapshots:
22970 siginfo: 2.0.022898 siginfo: 2.0.0
22971 stackback: 0.0.222899 stackback: 0.0.2
2297222900
22973 widest-line@6.0.0:22901 workerd@1.20260901.1:
22974 dependencies:
22975 string-width: 8.2.1
22976
22977 workerd@1.20260704.1:
22978 optionalDependencies:22902 optionalDependencies:
22979 '@cloudflare/workerd-darwin-64': 1.20260704.122903 '@cloudflare/workerd-darwin-64': 1.20260901.1
22980 '@cloudflare/workerd-darwin-arm64': 1.20260704.122904 '@cloudflare/workerd-darwin-arm64': 1.20260901.1
22981 '@cloudflare/workerd-linux-64': 1.20260704.122905 '@cloudflare/workerd-linux-64': 1.20260901.1
22982 '@cloudflare/workerd-linux-arm64': 1.20260704.122906 '@cloudflare/workerd-linux-arm64': 1.20260901.1
22983 '@cloudflare/workerd-windows-64': 1.20260704.122907 '@cloudflare/workerd-windows-64': 1.20260901.1
2298422908
22985 wrap-ansi@6.2.0:22909 wrap-ansi@6.2.0:
22986 dependencies:22910 dependencies:
...@@ -23008,11 +22932,6 @@ snapshots:...@@ -23008,11 +22932,6 @@ snapshots:
23008 bufferutil: 4.1.022932 bufferutil: 4.1.0
23009 utf-8-validate: 6.0.622933 utf-8-validate: 6.0.6
2301022934
23011 ws@8.21.0(bufferutil@4.1.0)(utf-8-validate@6.0.6):
23012 optionalDependencies:
23013 bufferutil: 4.1.0
23014 utf-8-validate: 6.0.6
23015
23016 ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6):22935 ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6):
23017 optionalDependencies:22936 optionalDependencies:
23018 bufferutil: 4.1.022937 bufferutil: 4.1.0
...@@ -23025,6 +22944,8 @@ snapshots:...@@ -23025,6 +22944,8 @@ snapshots:
2302522944
23026 xml-naming@0.1.0: {}22945 xml-naming@0.1.0: {}
2302722946
22947 xml-naming@0.3.0: {}
22948
23028 xml2js@0.4.23:22949 xml2js@0.4.23:
23029 dependencies:22950 dependencies:
23030 sax: 1.6.022951 sax: 1.6.0
...@@ -23039,7 +22960,8 @@ snapshots:...@@ -23039,7 +22960,8 @@ snapshots:
2303922960
23040 xmlbuilder@15.1.1: {}22961 xmlbuilder@15.1.1: {}
2304122962
23042 xtend@4.0.2: {}22963 xtend@4.0.2:
22964 optional: true
2304322965
23044 xxhash-wasm@1.1.0: {}22966 xxhash-wasm@1.1.0: {}
2304522967
...@@ -23103,8 +23025,6 @@ snapshots:...@@ -23103,8 +23025,6 @@ snapshots:
2310323025
23104 yoctocolors@2.1.2: {}23026 yoctocolors@2.1.2: {}
2310523027
23106 yoga-layout@3.2.1: {}
23107
23108 yuku-codegen@0.5.48:23028 yuku-codegen@0.5.48:
23109 dependencies:23029 dependencies:
23110 '@yuku-toolchain/types': 0.5.4323030 '@yuku-toolchain/types': 0.5.43
pnpm-workspace.yaml+38-24
...@@ -15,7 +15,7 @@ allowBuilds:...@@ -15,7 +15,7 @@ allowBuilds:
15 electron: true15 electron: true
16 electron-winstaller: false16 electron-winstaller: false
17 esbuild: true17 esbuild: true
18 msgpackr-extract: true18 msgpackr-extract: set this to true or false
19 msw: false19 msw: false
20 node-pty: true20 node-pty: true
21 sharp: true21 sharp: true
...@@ -30,13 +30,13 @@ catalog:...@@ -30,13 +30,13 @@ catalog:
30 "@clerk/expo": 4.6.830 "@clerk/expo": 4.6.8
31 "@clerk/react": 6.16.131 "@clerk/react": 6.16.1
32 "@clerk/shared": 4.33.032 "@clerk/shared": 4.33.0
33 "@effect/atom-react": 4.0.0-rc.11233 "@effect/atom-react": 4.0.0-rc.115
34 "@effect/openapi-generator": 4.0.0-rc.11234 "@effect/openapi-generator": 4.0.0-rc.115
35 "@effect/platform-node": 4.0.0-rc.11235 "@effect/platform-node": 4.0.0-rc.115
36 "@effect/platform-node-shared": 4.0.0-rc.11236 "@effect/platform-node-shared": 4.0.0-rc.115
37 "@effect/sql-pg": 4.0.0-rc.11237 "@effect/sql-pg": 4.0.0-rc.115
38 "@effect/tsgo": 0.41.038 "@effect/tsgo": 0.41.0
39 "@effect/vitest": 4.0.0-rc.11239 "@effect/vitest": 4.0.0-rc.115
40 "@legendapp/list": 3.3.540 "@legendapp/list": 3.3.5
41 "@noble/curves": 1.9.141 "@noble/curves": 1.9.1
42 "@noble/hashes": 1.8.042 "@noble/hashes": 1.8.0
...@@ -45,7 +45,7 @@ catalog:...@@ -45,7 +45,7 @@ catalog:
45 "@tailwindcss/oxide": 4.3.345 "@tailwindcss/oxide": 4.3.3
46 "@tailwindcss/vite": 4.3.346 "@tailwindcss/vite": 4.3.3
47 "@types/node": 24.12.447 "@types/node": 24.12.4
48 effect: 4.0.0-rc.11248 effect: 4.0.0-rc.115
49 jose: 6.2.249 jose: 6.2.2
50 lightningcss: 1.33.050 lightningcss: 1.33.0
51 tailwindcss: 4.3.351 tailwindcss: 4.3.3
...@@ -61,20 +61,20 @@ minimumReleaseAgeExclude:...@@ -61,20 +61,20 @@ minimumReleaseAgeExclude:
61 - "@clerk/expo@4.6.8"61 - "@clerk/expo@4.6.8"
62 - "@clerk/react@6.16.1"62 - "@clerk/react@6.16.1"
63 - "@clerk/shared@4.33.0"63 - "@clerk/shared@4.33.0"
64 - "@distilled.cloud/aws@0.30.2"64 - "@distilled.cloud/aws@1.0.0-rc.12"
65 - "@distilled.cloud/axiom@0.30.2"65 - "@distilled.cloud/axiom@1.0.0-rc.12"
66 - "@distilled.cloud/cloudflare@0.30.2"66 - "@distilled.cloud/cloudflare@1.0.0-rc.12"
67 - "@distilled.cloud/core@0.30.2"67 - "@distilled.cloud/core@1.0.0-rc.12"
68 - "@distilled.cloud/neon@0.30.2"68 - "@distilled.cloud/neon@1.0.0-rc.12"
69 - "@distilled.cloud/planetscale@0.30.2"69 - "@distilled.cloud/planetscale@1.0.0-rc.12"
70 - "@effect/atom-react@4.0.0-rc.112"70 - "@effect/atom-react@4.0.0-rc.115"
71 - "@effect/openapi-generator@4.0.0-rc.112"71 - "@effect/openapi-generator@4.0.0-rc.115"
72 - "@effect/platform-node-shared@4.0.0-rc.112"72 - "@effect/platform-node-shared@4.0.0-rc.115"
73 - "@effect/platform-node@4.0.0-rc.112"73 - "@effect/platform-node@4.0.0-rc.115"
74 - "@effect/sql-pg@4.0.0-rc.112"74 - "@effect/sql-pg@4.0.0-rc.115"
75 - "@effect/vitest@4.0.0-rc.112"75 - "@effect/vitest@4.0.0-rc.115"
76 - alchemy@2.0.0-beta.7676 - alchemy@2.0.0-beta.78
77 - effect@4.0.0-rc.11277 - effect@4.0.0-rc.115
78 - "@legendapp/list@3.3.5"78 - "@legendapp/list@3.3.5"
79 - "@expo/cli@57.0.20"79 - "@expo/cli@57.0.20"
80 - "@expo/env@2.4.3"80 - "@expo/env@2.4.3"
...@@ -87,6 +87,14 @@ minimumReleaseAgeExclude:...@@ -87,6 +87,14 @@ minimumReleaseAgeExclude:
87 - expo-widgets@57.0.1587 - expo-widgets@57.0.15
88 - electron@44.1.088 - electron@44.1.0
89 - "@anthropic-ai/claude-agent-sdk@0.3.260"89 - "@anthropic-ai/claude-agent-sdk@0.3.260"
90 - "@alchemy.run/cloudflare-runtime@2.0.0-beta.78"
91 - "@alchemy.run/floci@2.0.0-beta.78"
92 - "@alchemy.run/node-utils@2.0.0-beta.78"
93 - "@distilled.cloud/fly-io@1.0.0-rc.12"
94 - "@distilled.cloud/hetzner@1.0.0-rc.12"
95 - "@distilled.cloud/prisma@1.0.0-rc.12"
96 - "@distilled.cloud/railway@1.0.0-rc.12"
97 - "@distilled.cloud/stripe@1.0.0-rc.12"
9098
91overrides:99overrides:
92 # Earlier React Navigation declarations create a circular type alias in TypeScript 7.100 # Earlier React Navigation declarations create a circular type alias in TypeScript 7.
...@@ -103,6 +111,12 @@ overrides:...@@ -103,6 +111,12 @@ overrides:
103 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-x64-musl": "-"111 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-linux-x64-musl": "-"
104 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-arm64": "-"112 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-arm64": "-"
105 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-x64": "-"113 "@anthropic-ai/claude-agent-sdk>@anthropic-ai/claude-agent-sdk-win32-x64": "-"
114 # Alchemy's Ink fork declares React as a hard dependency, but the relay only
115 # reaches its terminal-capability helpers; the TUI is never imported, so the
116 # extra React copy is pure install weight.
117 "@alchemy.run/sigil>react": "-"
118 "@alchemy.run/sigil>react-reconciler": "-"
119 "@alchemy.run/sigil>scheduler": "-"
106 "@clerk/backend": "catalog:"120 "@clerk/backend": "catalog:"
107 "@clerk/clerk-js": "catalog:"121 "@clerk/clerk-js": "catalog:"
108 "@clerk/clerk-js>@base-org/account": "-"122 "@clerk/clerk-js>@base-org/account": "-"
...@@ -158,7 +172,7 @@ packageExtensions:...@@ -158,7 +172,7 @@ packageExtensions:
158172
159patchedDependencies:173patchedDependencies:
160 "@clerk/expo@4.6.8": patches/@clerk__expo@4.6.8.patch174 "@clerk/expo@4.6.8": patches/@clerk__expo@4.6.8.patch
161 "@effect/vitest@4.0.0-rc.112": patches/@effect__vitest@4.0.0-rc.112.patch175 "@effect/vitest@4.0.0-rc.115": patches/@effect__vitest@4.0.0-rc.115.patch
162 "@expo/metro-config@57.0.12": patches/@expo__metro-config@57.0.12.patch176 "@expo/metro-config@57.0.12": patches/@expo__metro-config@57.0.12.patch
163 "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch177 "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch
164 "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch178 "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch
...@@ -167,7 +181,7 @@ patchedDependencies:...@@ -167,7 +181,7 @@ patchedDependencies:
167 "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch181 "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch
168 "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch182 "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch
169 dbus-next@0.10.2: patches/dbus-next@0.10.2.patch183 dbus-next@0.10.2: patches/dbus-next@0.10.2.patch
170 effect@4.0.0-rc.112: patches/effect@4.0.0-rc.112.patch184 effect@4.0.0-rc.115: patches/effect@4.0.0-rc.115.patch
171 expo-audio@57.0.4: patches/expo-audio@57.0.4.patch185 expo-audio@57.0.4: patches/expo-audio@57.0.4.patch
172 expo-sharing@57.0.17: patches/expo-sharing@57.0.17.patch186 expo-sharing@57.0.17: patches/expo-sharing@57.0.17.patch
173 expo-widgets@57.0.15: patches/expo-widgets@57.0.15.patch187 expo-widgets@57.0.15: patches/expo-widgets@57.0.15.patch
scripts/apply-web-brand-assets.ts+3-3
...@@ -42,15 +42,15 @@ export const applyWebBrandAssets = Effect.fn("applyWebBrandAssets")(function* (...@@ -42,15 +42,15 @@ export const applyWebBrandAssets = Effect.fn("applyWebBrandAssets")(function* (
42export const applyWebBrandAssetsCommand = Command.make(42export const applyWebBrandAssetsCommand = Command.make(
43 "apply-web-brand-assets",43 "apply-web-brand-assets",
44 {44 {
45 brand: Argument.choice("brand", WEB_ASSET_BRANDS).pipe(45 brand: Argument.Literals("brand", WEB_ASSET_BRANDS).pipe(
46 Argument.withDescription("Asset brand to copy into the hosted web output directory."),46 Argument.withDescription("Asset brand to copy into the hosted web output directory."),
47 Argument.optional,47 Argument.optional,
48 ),48 ),
49 channel: Flag.choice("channel", WEB_ASSET_CHANNELS).pipe(49 channel: Flag.Literals("channel", WEB_ASSET_CHANNELS).pipe(
50 Flag.withDescription("Hosted release channel to map to a web asset brand."),50 Flag.withDescription("Hosted release channel to map to a web asset brand."),
51 Flag.optional,51 Flag.optional,
52 ),52 ),
53 targetDirectory: Argument.string("target-directory").pipe(53 targetDirectory: Argument.String("target-directory").pipe(
54 Argument.withDescription("Output directory that contains the hosted web build assets."),54 Argument.withDescription("Output directory that contains the hosted web build assets."),
55 Argument.optional,55 Argument.optional,
56 ),56 ),
scripts/build-cli-archive.ts+12-12
...@@ -283,10 +283,10 @@ const stageWebClient = Effect.fn("stageWebClient")(function* (source: string, ta...@@ -283,10 +283,10 @@ const stageWebClient = Effect.fn("stageWebClient")(function* (source: string, ta
283});283});
284284
285const MacSigningConfig = Config.all({285const MacSigningConfig = Config.all({
286 identity: Config.string("T3CODE_CLI_MAC_SIGN_IDENTITY").pipe(Config.option),286 identity: Config.String("T3CODE_CLI_MAC_SIGN_IDENTITY").pipe(Config.option),
287 appleApiKey: Config.string("APPLE_API_KEY").pipe(Config.option),287 appleApiKey: Config.String("APPLE_API_KEY").pipe(Config.option),
288 appleApiKeyId: Config.string("APPLE_API_KEY_ID").pipe(Config.option),288 appleApiKeyId: Config.String("APPLE_API_KEY_ID").pipe(Config.option),
289 appleApiIssuer: Config.string("APPLE_API_ISSUER").pipe(Config.option),289 appleApiIssuer: Config.String("APPLE_API_ISSUER").pipe(Config.option),
290});290});
291291
292/**292/**
...@@ -370,9 +370,9 @@ const signMacArchiveContents = Effect.fn("signMacArchiveContents")(function* (in...@@ -370,9 +370,9 @@ const signMacArchiveContents = Effect.fn("signMacArchiveContents")(function* (in
370});370});
371371
372const WindowsSigningConfig = Config.all({372const WindowsSigningConfig = Config.all({
373 endpoint: Config.string("AZURE_TRUSTED_SIGNING_ENDPOINT").pipe(Config.option),373 endpoint: Config.String("AZURE_TRUSTED_SIGNING_ENDPOINT").pipe(Config.option),
374 accountName: Config.string("AZURE_TRUSTED_SIGNING_ACCOUNT_NAME").pipe(Config.option),374 accountName: Config.String("AZURE_TRUSTED_SIGNING_ACCOUNT_NAME").pipe(Config.option),
375 certificateProfileName: Config.string("AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_NAME").pipe(375 certificateProfileName: Config.String("AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_NAME").pipe(
376 Config.option,376 Config.option,
377 ),377 ),
378});378});
...@@ -567,13 +567,13 @@ const buildCliArchive = Effect.fn("buildCliArchive")(function* (input: {...@@ -567,13 +567,13 @@ const buildCliArchive = Effect.fn("buildCliArchive")(function* (input: {
567const command = Command.make(567const command = Command.make(
568 "build-cli-archive",568 "build-cli-archive",
569 {569 {
570 platform: Flag.choice("platform", BuildPlatform.literals),570 platform: Flag.Literals("platform", BuildPlatform.literals),
571 arch: Flag.choice("arch", BuildArch.literals),571 arch: Flag.Literals("arch", BuildArch.literals),
572 version: Flag.string("version").pipe(572 version: Flag.String("version").pipe(
573 Flag.withDescription("Release version for the archive name."),573 Flag.withDescription("Release version for the archive name."),
574 ),574 ),
575 outputDir: Flag.string("output-dir").pipe(Flag.withDefault("release-cli")),575 outputDir: Flag.String("output-dir").pipe(Flag.withDefault("release-cli")),
576 resourceMonitorDir: Flag.string("resource-monitor-dir").pipe(576 resourceMonitorDir: Flag.String("resource-monitor-dir").pipe(
577 Flag.withDescription(577 Flag.withDescription(
578 "Directory laid out like dist/resource-monitor (defaults to apps/server/dist/resource-monitor).",578 "Directory laid out like dist/resource-monitor (defaults to apps/server/dist/resource-monitor).",
579 ),579 ),
scripts/build-desktop-artifact.test.ts-2
...@@ -733,7 +733,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => {...@@ -733,7 +733,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => {
733 "@ff-labs/fff-node": "0.9.4",733 "@ff-labs/fff-node": "0.9.4",
734 "@opencode-ai/sdk": "^1.3.15",734 "@opencode-ai/sdk": "^1.3.15",
735 "@pierre/diffs": "1.3.0",735 "@pierre/diffs": "1.3.0",
736 "msgpackr-extract": "3.0.4",
737 "node-pty": "1.1.0",736 "node-pty": "1.1.0",
738 },737 },
739 desktopDependencies: {738 desktopDependencies: {
...@@ -745,7 +744,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => {...@@ -745,7 +744,6 @@ it.layer(NodeServices.layer)("build-desktop-artifact", (it) => {
745 }),744 }),
746 {745 {
747 "@ff-labs/fff-node": "0.9.4",746 "@ff-labs/fff-node": "0.9.4",
748 "msgpackr-extract": "3.0.4",
749 "node-pty": "1.1.0",747 "node-pty": "1.1.0",
750 "@napi-rs/keyring": "1.3.0",748 "@napi-rs/keyring": "1.3.0",
751 "playwright-core": "1.60.0",749 "playwright-core": "1.60.0",
scripts/build-desktop-artifact.ts+45-44
...@@ -851,11 +851,11 @@ const resolvePythonForNodeGyp = Effect.fn("resolvePythonForNodeGyp")(function* (...@@ -851,11 +851,11 @@ const resolvePythonForNodeGyp = Effect.fn("resolvePythonForNodeGyp")(function* (
851 const path = yield* Path.Path;851 const path = yield* Path.Path;
852 const hostPlatform = yield* HostProcessPlatform;852 const hostPlatform = yield* HostProcessPlatform;
853 const env = yield* Config.all({853 const env = yield* Config.all({
854 configuredPython: Config.string("npm_config_python").pipe(854 configuredPython: Config.String("npm_config_python").pipe(
855 Config.orElse(() => Config.string("PYTHON")),855 Config.orElse(() => Config.String("PYTHON")),
856 Config.option,856 Config.option,
857 ),857 ),
858 localAppData: Config.string("LOCALAPPDATA").pipe(Config.option),858 localAppData: Config.String("LOCALAPPDATA").pipe(Config.option),
859 });859 });
860 const isPython3 = (candidate: string) =>860 const isPython3 = (candidate: string) =>
861 spawnAndCollectOutput(861 spawnAndCollectOutput(
...@@ -1524,35 +1524,35 @@ function getPatchedDependencyPackageName(patchKey: string): string {...@@ -1524,35 +1524,35 @@ function getPatchedDependencyPackageName(patchKey: string): string {
1524}1524}
15251525
1526const AzureTrustedSigningOptionsConfig = Config.all({1526const AzureTrustedSigningOptionsConfig = Config.all({
1527 publisherName: Config.string("AZURE_TRUSTED_SIGNING_PUBLISHER_NAME"),1527 publisherName: Config.String("AZURE_TRUSTED_SIGNING_PUBLISHER_NAME"),
1528 endpoint: Config.string("AZURE_TRUSTED_SIGNING_ENDPOINT"),1528 endpoint: Config.String("AZURE_TRUSTED_SIGNING_ENDPOINT"),
1529 certificateProfileName: Config.string("AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_NAME"),1529 certificateProfileName: Config.String("AZURE_TRUSTED_SIGNING_CERTIFICATE_PROFILE_NAME"),
1530 codeSigningAccountName: Config.string("AZURE_TRUSTED_SIGNING_ACCOUNT_NAME"),1530 codeSigningAccountName: Config.String("AZURE_TRUSTED_SIGNING_ACCOUNT_NAME"),
1531 fileDigest: Config.string("AZURE_TRUSTED_SIGNING_FILE_DIGEST").pipe(Config.withDefault("SHA256")),1531 fileDigest: Config.String("AZURE_TRUSTED_SIGNING_FILE_DIGEST").pipe(Config.withDefault("SHA256")),
1532 timestampDigest: Config.string("AZURE_TRUSTED_SIGNING_TIMESTAMP_DIGEST").pipe(1532 timestampDigest: Config.String("AZURE_TRUSTED_SIGNING_TIMESTAMP_DIGEST").pipe(
1533 Config.withDefault("SHA256"),1533 Config.withDefault("SHA256"),
1534 ),1534 ),
1535 timestampRfc3161: Config.string("AZURE_TRUSTED_SIGNING_TIMESTAMP_RFC3161").pipe(1535 timestampRfc3161: Config.String("AZURE_TRUSTED_SIGNING_TIMESTAMP_RFC3161").pipe(
1536 Config.withDefault("http://timestamp.acs.microsoft.com"),1536 Config.withDefault("http://timestamp.acs.microsoft.com"),
1537 ),1537 ),
1538});1538});
15391539
1540const BuildEnvConfig = Config.all({1540const BuildEnvConfig = Config.all({
1541 platform: Config.schema(BuildPlatform, "T3CODE_DESKTOP_PLATFORM").pipe(Config.option),1541 platform: Config.schema(BuildPlatform, "T3CODE_DESKTOP_PLATFORM").pipe(Config.option),
1542 target: Config.string("T3CODE_DESKTOP_TARGET").pipe(Config.option),1542 target: Config.String("T3CODE_DESKTOP_TARGET").pipe(Config.option),
1543 arch: Config.schema(BuildArch, "T3CODE_DESKTOP_ARCH").pipe(Config.option),1543 arch: Config.schema(BuildArch, "T3CODE_DESKTOP_ARCH").pipe(Config.option),
1544 version: Config.string("T3CODE_DESKTOP_VERSION").pipe(Config.option),1544 version: Config.String("T3CODE_DESKTOP_VERSION").pipe(Config.option),
1545 outputDir: Config.string("T3CODE_DESKTOP_OUTPUT_DIR").pipe(Config.option),1545 outputDir: Config.String("T3CODE_DESKTOP_OUTPUT_DIR").pipe(Config.option),
1546 skipBuild: Config.boolean("T3CODE_DESKTOP_SKIP_BUILD").pipe(Config.withDefault(false)),1546 skipBuild: Config.Boolean("T3CODE_DESKTOP_SKIP_BUILD").pipe(Config.withDefault(false)),
1547 keepStage: Config.boolean("T3CODE_DESKTOP_KEEP_STAGE").pipe(Config.withDefault(false)),1547 keepStage: Config.Boolean("T3CODE_DESKTOP_KEEP_STAGE").pipe(Config.withDefault(false)),
1548 signed: Config.boolean("T3CODE_DESKTOP_SIGNED").pipe(Config.withDefault(false)),1548 signed: Config.Boolean("T3CODE_DESKTOP_SIGNED").pipe(Config.withDefault(false)),
1549 verbose: Config.boolean("T3CODE_DESKTOP_VERBOSE").pipe(Config.withDefault(false)),1549 verbose: Config.Boolean("T3CODE_DESKTOP_VERBOSE").pipe(Config.withDefault(false)),
1550 mockUpdates: Config.boolean("T3CODE_DESKTOP_MOCK_UPDATES").pipe(Config.withDefault(false)),1550 mockUpdates: Config.Boolean("T3CODE_DESKTOP_MOCK_UPDATES").pipe(Config.withDefault(false)),
1551 mockUpdateServerPort: Config.string("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.option),1551 mockUpdateServerPort: Config.String("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.option),
1552 // Path to the Linux CLI release archive (t3-<version>-linux-x64.tar.gz) built1552 // Path to the Linux CLI release archive (t3-<version>-linux-x64.tar.gz) built
1553 // by the build_linux_cli CI job. The Windows build embeds it verbatim as the1553 // by the build_linux_cli CI job. The Windows build embeds it verbatim as the
1554 // WSL runtime.1554 // WSL runtime.
1555 wslRuntime: Config.string("T3CODE_DESKTOP_WSL_RUNTIME").pipe(Config.option),1555 wslRuntime: Config.String("T3CODE_DESKTOP_WSL_RUNTIME").pipe(Config.option),
1556});1556});
15571557
1558const MockUpdateServerPortSchema = Schema.NumberFromString.check(1558const MockUpdateServerPortSchema = Schema.NumberFromString.check(
...@@ -1717,10 +1717,10 @@ const rustTargetIsInstalled = Effect.fn("rustTargetIsInstalled")(function* (targ...@@ -1717,10 +1717,10 @@ const rustTargetIsInstalled = Effect.fn("rustTargetIsInstalled")(function* (targ
1717export const preflightLinuxDesktopBuild = Effect.fn("preflightLinuxDesktopBuild")(function* (1717export const preflightLinuxDesktopBuild = Effect.fn("preflightLinuxDesktopBuild")(function* (
1718 arch: typeof BuildArch.Type = "x64",1718 arch: typeof BuildArch.Type = "x64",
1719) {1719) {
1720 const reuseResourceMonitor = yield* Config.boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe(1720 const reuseResourceMonitor = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe(
1721 Config.withDefault(false),1721 Config.withDefault(false),
1722 );1722 );
1723 const reuseCaptureHelpers = yield* Config.boolean(1723 const reuseCaptureHelpers = yield* Config.Boolean(
1724 "T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS",1724 "T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS",
1725 ).pipe(Config.withDefault(false));1725 ).pipe(Config.withDefault(false));
1726 // Rust is only optional when every Linux Rust artifact comes from a cache.1726 // Rust is only optional when every Linux Rust artifact comes from a cache.
...@@ -1759,7 +1759,7 @@ export const preflightMacDesktopBuild = Effect.fn("preflightMacDesktopBuild")(fu...@@ -1759,7 +1759,7 @@ export const preflightMacDesktopBuild = Effect.fn("preflightMacDesktopBuild")(fu
1759 arch: typeof BuildArch.Type,1759 arch: typeof BuildArch.Type,
1760) {1760) {
1761 const rustTargets = resolveResourceMonitorRustTargets("mac", arch);1761 const rustTargets = resolveResourceMonitorRustTargets("mac", arch);
1762 const reuseResourceMonitor = yield* Config.boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe(1762 const reuseResourceMonitor = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe(
1763 Config.withDefault(false),1763 Config.withDefault(false),
1764 );1764 );
1765 const checks = yield* Effect.all(1765 const checks = yield* Effect.all(
...@@ -1816,7 +1816,7 @@ function windowsVswherePrerequisiteScript(arch: typeof BuildArch.Type): string {...@@ -1816,7 +1816,7 @@ function windowsVswherePrerequisiteScript(arch: typeof BuildArch.Type): string {
1816export const preflightWindowsDesktopBuild = Effect.fn("preflightWindowsDesktopBuild")(1816export const preflightWindowsDesktopBuild = Effect.fn("preflightWindowsDesktopBuild")(
1817 function* (input: { readonly arch: typeof BuildArch.Type; readonly bundlesWslRuntime: boolean }) {1817 function* (input: { readonly arch: typeof BuildArch.Type; readonly bundlesWslRuntime: boolean }) {
1818 const rustTarget = resolveResourceMonitorRustTargets("win", input.arch)[0]!;1818 const rustTarget = resolveResourceMonitorRustTargets("win", input.arch)[0]!;
1819 const reuseResourceMonitor = yield* Config.boolean(1819 const reuseResourceMonitor = yield* Config.Boolean(
1820 "T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR",1820 "T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR",
1821 ).pipe(Config.withDefault(false));1821 ).pipe(Config.withDefault(false));
1822 const python = yield* resolvePythonForNodeGyp();1822 const python = yield* resolvePythonForNodeGyp();
...@@ -2134,7 +2134,7 @@ export const stageLinuxCaptureHelper = Effect.fn("stageLinuxCaptureHelper")(func...@@ -2134,7 +2134,7 @@ export const stageLinuxCaptureHelper = Effect.fn("stageLinuxCaptureHelper")(func
2134 const [rustTarget] = resolveResourceMonitorRustTargets("linux", input.arch);2134 const [rustTarget] = resolveResourceMonitorRustTargets("linux", input.arch);
2135 // Release CI restores these binaries from a cache keyed on the crate sources and2135 // Release CI restores these binaries from a cache keyed on the crate sources and
2136 // skips the Rust toolchain on a hit, so the build must be skippable too.2136 // skips the Rust toolchain on a hit, so the build must be skippable too.
2137 const reuseHelpers = yield* Config.boolean("T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS").pipe(2137 const reuseHelpers = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_LINUX_CAPTURE_HELPERS").pipe(
2138 Config.withDefault(false),2138 Config.withDefault(false),
2139 );2139 );
2140 const binaryPath = path.join(2140 const binaryPath = path.join(
...@@ -2197,7 +2197,7 @@ export const stageResourceMonitor = Effect.fn("stageResourceMonitor")(function*...@@ -2197,7 +2197,7 @@ export const stageResourceMonitor = Effect.fn("stageResourceMonitor")(function*
2197 const manifestPath = path.join(input.repoRoot, "native/resource-monitor/Cargo.toml");2197 const manifestPath = path.join(input.repoRoot, "native/resource-monitor/Cargo.toml");
2198 const executableName = resourceMonitorExecutableName(input.platform);2198 const executableName = resourceMonitorExecutableName(input.platform);
2199 const rustTargets = resolveResourceMonitorRustTargets(input.platform, input.arch);2199 const rustTargets = resolveResourceMonitorRustTargets(input.platform, input.arch);
2200 const reuseResourceMonitor = yield* Config.boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe(2200 const reuseResourceMonitor = yield* Config.Boolean("T3CODE_DESKTOP_REUSE_RESOURCE_MONITOR").pipe(
2201 Config.withDefault(false),2201 Config.withDefault(false),
2202 );2202 );
2203 const builtBinaries: string[] = [];2203 const builtBinaries: string[] = [];
...@@ -2538,8 +2538,8 @@ export const resolveGitHubPublishConfig = Effect.fn("resolveGitHubPublishConfig"...@@ -2538,8 +2538,8 @@ export const resolveGitHubPublishConfig = Effect.fn("resolveGitHubPublishConfig"
2538 updateChannel: "latest" | "nightly",2538 updateChannel: "latest" | "nightly",
2539) {2539) {
2540 const env = yield* Config.all({2540 const env = yield* Config.all({
2541 updateRepository: Config.string("T3CODE_DESKTOP_UPDATE_REPOSITORY").pipe(Config.option),2541 updateRepository: Config.String("T3CODE_DESKTOP_UPDATE_REPOSITORY").pipe(Config.option),
2542 githubRepository: Config.string("GITHUB_REPOSITORY").pipe(Config.option),2542 githubRepository: Config.String("GITHUB_REPOSITORY").pipe(Config.option),
2543 });2543 });
2544 const rawRepo = (2544 const rawRepo = (
2545 Option.getOrUndefined(env.updateRepository)?.trim() ||2545 Option.getOrUndefined(env.updateRepository)?.trim() ||
...@@ -3451,10 +3451,11 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (...@@ -3451,10 +3451,11 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (
3451 // Assert against the emitted bundle, not the bundler config. `alwaysBundle`3451 // Assert against the emitted bundle, not the bundler config. `alwaysBundle`
3452 // only forces packages IN, so a transitive dependency of an external package3452 // only forces packages IN, so a transitive dependency of an external package
3453 // is bundled by default however the predicate is written — that silently3453 // is bundled by default however the predicate is written — that silently
3454 // inlined msgpackr-extract and its native loader while every list-based test3454 // inlined a native loader (node-gyp-build-optional-packages) while every
3455 // still passed. An inlined native loader resolves its prebuilds relative to3455 // list-based test still passed. An inlined native loader resolves its
3456 // the bundle and quietly falls back to a slower pure-JS path, so this fails3456 // prebuilds relative to the bundle and quietly falls back to a slower
3457 // the build rather than shipping a silent regression.3457 // pure-JS path, so this fails the build rather than shipping a silent
3458 // regression.
3458 {3459 {
3459 const chunkNames = (yield* fs.readDirectory(distDirs.serverDist)).filter((entry) =>3460 const chunkNames = (yield* fs.readDirectory(distDirs.serverDist)).filter((entry) =>
3460 entry.endsWith(".mjs"),3461 entry.endsWith(".mjs"),
...@@ -3866,58 +3867,58 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (...@@ -3866,58 +3867,58 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (
3866});3867});
38673868
3868const buildDesktopArtifactCli = Command.make("build-desktop-artifact", {3869const buildDesktopArtifactCli = Command.make("build-desktop-artifact", {
3869 platform: Flag.choice("platform", BuildPlatform.literals).pipe(3870 platform: Flag.Literals("platform", BuildPlatform.literals).pipe(
3870 Flag.withDescription("Build platform (env: T3CODE_DESKTOP_PLATFORM)."),3871 Flag.withDescription("Build platform (env: T3CODE_DESKTOP_PLATFORM)."),
3871 Flag.optional,3872 Flag.optional,
3872 ),3873 ),
3873 target: Flag.string("target").pipe(3874 target: Flag.String("target").pipe(
3874 Flag.withDescription(3875 Flag.withDescription(
3875 "Artifact target, for example dmg/AppImage/nsis (env: T3CODE_DESKTOP_TARGET).",3876 "Artifact target, for example dmg/AppImage/nsis (env: T3CODE_DESKTOP_TARGET).",
3876 ),3877 ),
3877 Flag.optional,3878 Flag.optional,
3878 ),3879 ),
3879 arch: Flag.choice("arch", BuildArch.literals).pipe(3880 arch: Flag.Literals("arch", BuildArch.literals).pipe(
3880 Flag.withDescription("Build arch, for example arm64/x64/universal (env: T3CODE_DESKTOP_ARCH)."),3881 Flag.withDescription("Build arch, for example arm64/x64/universal (env: T3CODE_DESKTOP_ARCH)."),
3881 Flag.optional,3882 Flag.optional,
3882 ),3883 ),
3883 buildVersion: Flag.string("build-version").pipe(3884 buildVersion: Flag.String("build-version").pipe(
3884 Flag.withDescription("Artifact version metadata (env: T3CODE_DESKTOP_VERSION)."),3885 Flag.withDescription("Artifact version metadata (env: T3CODE_DESKTOP_VERSION)."),
3885 Flag.optional,3886 Flag.optional,
3886 ),3887 ),
3887 outputDir: Flag.string("output-dir").pipe(3888 outputDir: Flag.String("output-dir").pipe(
3888 Flag.withDescription("Output directory for artifacts (env: T3CODE_DESKTOP_OUTPUT_DIR)."),3889 Flag.withDescription("Output directory for artifacts (env: T3CODE_DESKTOP_OUTPUT_DIR)."),
3889 Flag.optional,3890 Flag.optional,
3890 ),3891 ),
3891 skipBuild: Flag.boolean("skip-build").pipe(3892 skipBuild: Flag.Boolean("skip-build").pipe(
3892 Flag.withDescription(3893 Flag.withDescription(
3893 "Skip `vp run build:desktop` and use existing dist artifacts (env: T3CODE_DESKTOP_SKIP_BUILD).",3894 "Skip `vp run build:desktop` and use existing dist artifacts (env: T3CODE_DESKTOP_SKIP_BUILD).",
3894 ),3895 ),
3895 Flag.optional,3896 Flag.optional,
3896 ),3897 ),
3897 keepStage: Flag.boolean("keep-stage").pipe(3898 keepStage: Flag.Boolean("keep-stage").pipe(
3898 Flag.withDescription("Keep temporary staging files (env: T3CODE_DESKTOP_KEEP_STAGE)."),3899 Flag.withDescription("Keep temporary staging files (env: T3CODE_DESKTOP_KEEP_STAGE)."),
3899 Flag.optional,3900 Flag.optional,
3900 ),3901 ),
3901 signed: Flag.boolean("signed").pipe(3902 signed: Flag.Boolean("signed").pipe(
3902 Flag.withDescription(3903 Flag.withDescription(
3903 "Enable signing/notarization discovery; Windows uses Azure Trusted Signing (env: T3CODE_DESKTOP_SIGNED).",3904 "Enable signing/notarization discovery; Windows uses Azure Trusted Signing (env: T3CODE_DESKTOP_SIGNED).",
3904 ),3905 ),
3905 Flag.optional,3906 Flag.optional,
3906 ),3907 ),
3907 verbose: Flag.boolean("verbose").pipe(3908 verbose: Flag.Boolean("verbose").pipe(
3908 Flag.withDescription("Stream subprocess stdout (env: T3CODE_DESKTOP_VERBOSE)."),3909 Flag.withDescription("Stream subprocess stdout (env: T3CODE_DESKTOP_VERBOSE)."),
3909 Flag.optional,3910 Flag.optional,
3910 ),3911 ),
3911 mockUpdates: Flag.boolean("mock-updates").pipe(3912 mockUpdates: Flag.Boolean("mock-updates").pipe(
3912 Flag.withDescription("Enable mock updates (env: T3CODE_DESKTOP_MOCK_UPDATES)."),3913 Flag.withDescription("Enable mock updates (env: T3CODE_DESKTOP_MOCK_UPDATES)."),
3913 Flag.optional,3914 Flag.optional,
3914 ),3915 ),
3915 mockUpdateServerPort: Flag.integer("mock-update-server-port").pipe(3916 mockUpdateServerPort: Flag.Int("mock-update-server-port").pipe(
3916 Flag.withSchema(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))),3917 Flag.withSchema(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))),
3917 Flag.withDescription("Mock update server port (env: T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT)."),3918 Flag.withDescription("Mock update server port (env: T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT)."),
3918 Flag.optional,3919 Flag.optional,
3919 ),3920 ),
3920 wslRuntime: Flag.string("wsl-runtime").pipe(3921 wslRuntime: Flag.String("wsl-runtime").pipe(
3921 Flag.withDescription(3922 Flag.withDescription(
3922 "Path to the Linux CLI release archive (t3-<version>-linux-x64.tar.gz) to embed as the WSL runtime of a Windows build (env: T3CODE_DESKTOP_WSL_RUNTIME).",3923 "Path to the Linux CLI release archive (t3-<version>-linux-x64.tar.gz) to embed as the WSL runtime of a Windows build (env: T3CODE_DESKTOP_WSL_RUNTIME).",
3923 ),3924 ),
scripts/build-npm-platform-packages.ts+4-4
...@@ -462,16 +462,16 @@ export const buildNpmPlatformPackages = Effect.fn("buildNpmPlatformPackages")(fu...@@ -462,16 +462,16 @@ export const buildNpmPlatformPackages = Effect.fn("buildNpmPlatformPackages")(fu
462const command = Command.make(462const command = Command.make(
463 "build-npm-platform-packages",463 "build-npm-platform-packages",
464 {464 {
465 archivesDir: Flag.string("archives-dir").pipe(465 archivesDir: Flag.String("archives-dir").pipe(
466 Flag.withDescription("Directory holding the release's t3-<version>-<platform> archives."),466 Flag.withDescription("Directory holding the release's t3-<version>-<platform> archives."),
467 ),467 ),
468 version: Flag.string("version").pipe(468 version: Flag.String("version").pipe(
469 Flag.withDescription(469 Flag.withDescription(
470 "Exact release version; selects the archives and versions the packages.",470 "Exact release version; selects the archives and versions the packages.",
471 ),471 ),
472 ),472 ),
473 outputDir: Flag.string("output-dir").pipe(Flag.withDefault("npm-packages")),473 outputDir: Flag.String("output-dir").pipe(Flag.withDefault("npm-packages")),
474 allowMissing: Flag.boolean("allow-missing").pipe(474 allowMissing: Flag.Boolean("allow-missing").pipe(
475 Flag.withDefault(false),475 Flag.withDefault(false),
476 Flag.withDescription("Build a launcher that lists only the platforms present."),476 Flag.withDescription("Build a launcher that lists only the platforms present."),
477 ),477 ),
scripts/dev-runner.ts+15-15
...@@ -202,22 +202,22 @@ export type DevRunnerError = typeof DevRunnerError.Type;...@@ -202,22 +202,22 @@ export type DevRunnerError = typeof DevRunnerError.Type;
202export const isDevRunnerError = Schema.is(DevRunnerError);202export const isDevRunnerError = Schema.is(DevRunnerError);
203203
204const optionalStringConfig = (name: string): Config.Config<string | undefined> =>204const optionalStringConfig = (name: string): Config.Config<string | undefined> =>
205 Config.string(name).pipe(205 Config.String(name).pipe(
206 Config.option,206 Config.option,
207 Config.map((value) => Option.getOrUndefined(value)),207 Config.map((value) => Option.getOrUndefined(value)),
208 );208 );
209const optionalBooleanConfig = (name: string): Config.Config<boolean | undefined> =>209const optionalBooleanConfig = (name: string): Config.Config<boolean | undefined> =>
210 Config.boolean(name).pipe(210 Config.Boolean(name).pipe(
211 Config.option,211 Config.option,
212 Config.map((value) => Option.getOrUndefined(value)),212 Config.map((value) => Option.getOrUndefined(value)),
213 );213 );
214const optionalPortConfig = (name: string): Config.Config<number | undefined> =>214const optionalPortConfig = (name: string): Config.Config<number | undefined> =>
215 Config.port(name).pipe(215 Config.Port(name).pipe(
216 Config.option,216 Config.option,
217 Config.map((value) => Option.getOrUndefined(value)),217 Config.map((value) => Option.getOrUndefined(value)),
218 );218 );
219const optionalIntegerConfig = (name: string): Config.Config<number | undefined> =>219const optionalIntegerConfig = (name: string): Config.Config<number | undefined> =>
220 Config.int(name).pipe(220 Config.Int(name).pipe(
221 Config.option,221 Config.option,
222 Config.map((value) => Option.getOrUndefined(value)),222 Config.map((value) => Option.getOrUndefined(value)),
223 );223 );
...@@ -856,41 +856,41 @@ export function runDevRunnerWithInput(input: DevRunnerCliInput) {...@@ -856,41 +856,41 @@ export function runDevRunnerWithInput(input: DevRunnerCliInput) {
856}856}
857857
858const devRunnerCli = Command.make("dev-runner", {858const devRunnerCli = Command.make("dev-runner", {
859 mode: Argument.choice("mode", DEV_RUNNER_MODES).pipe(859 mode: Argument.Literals("mode", DEV_RUNNER_MODES).pipe(
860 Argument.withDescription("Development mode to run."),860 Argument.withDescription("Development mode to run."),
861 ),861 ),
862 t3Home: Flag.string("home-dir").pipe(862 t3Home: Flag.String("home-dir").pipe(
863 Flag.withDescription(863 Flag.withDescription(
864 "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.",864 "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.",
865 ),865 ),
866 Flag.optional,866 Flag.optional,
867 Flag.map(Option.getOrUndefined),867 Flag.map(Option.getOrUndefined),
868 ),868 ),
869 browser: Flag.boolean("browser").pipe(869 browser: Flag.Boolean("browser").pipe(
870 Flag.withDescription("Open a browser automatically (disabled by default for web dev)."),870 Flag.withDescription("Open a browser automatically (disabled by default for web dev)."),
871 Flag.withDefault(false),871 Flag.withDefault(false),
872 ),872 ),
873 autoBootstrapProjectFromCwd: Flag.boolean("auto-bootstrap-project-from-cwd").pipe(873 autoBootstrapProjectFromCwd: Flag.Boolean("auto-bootstrap-project-from-cwd").pipe(
874 Flag.withDescription(874 Flag.withDescription(
875 "Auto-bootstrap toggle (equivalent to T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD).",875 "Auto-bootstrap toggle (equivalent to T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD).",
876 ),876 ),
877 Flag.withFallbackConfig(optionalBooleanConfig("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD")),877 Flag.withFallbackConfig(optionalBooleanConfig("T3CODE_AUTO_BOOTSTRAP_PROJECT_FROM_CWD")),
878 ),878 ),
879 logWebSocketEvents: Flag.boolean("log-websocket-events").pipe(879 logWebSocketEvents: Flag.Boolean("log-websocket-events").pipe(
880 Flag.withDescription("WebSocket event logging toggle (equivalent to T3CODE_LOG_WS_EVENTS)."),880 Flag.withDescription("WebSocket event logging toggle (equivalent to T3CODE_LOG_WS_EVENTS)."),
881 Flag.withAlias("log-ws-events"),881 Flag.withAlias("log-ws-events"),
882 Flag.withFallbackConfig(optionalBooleanConfig("T3CODE_LOG_WS_EVENTS")),882 Flag.withFallbackConfig(optionalBooleanConfig("T3CODE_LOG_WS_EVENTS")),
883 ),883 ),
884 host: Flag.string("host").pipe(884 host: Flag.String("host").pipe(
885 Flag.withDescription("Server host/interface override (forwards to T3CODE_HOST)."),885 Flag.withDescription("Server host/interface override (forwards to T3CODE_HOST)."),
886 Flag.withFallbackConfig(optionalStringConfig("T3CODE_HOST")),886 Flag.withFallbackConfig(optionalStringConfig("T3CODE_HOST")),
887 ),887 ),
888 port: Flag.integer("port").pipe(888 port: Flag.Int("port").pipe(
889 Flag.withSchema(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))),889 Flag.withSchema(Schema.Int.check(Schema.isBetween({ minimum: 1, maximum: 65535 }))),
890 Flag.withDescription("Server port override (forwards to T3CODE_PORT)."),890 Flag.withDescription("Server port override (forwards to T3CODE_PORT)."),
891 Flag.withFallbackConfig(optionalPortConfig("T3CODE_PORT")),891 Flag.withFallbackConfig(optionalPortConfig("T3CODE_PORT")),
892 ),892 ),
893 devUrl: Flag.string("dev-url").pipe(893 devUrl: Flag.String("dev-url").pipe(
894 Flag.withSchema(Schema.URLFromString),894 Flag.withSchema(Schema.URLFromString),
895 Flag.withDescription(895 Flag.withDescription(
896 "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.",896 "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.",
...@@ -898,17 +898,17 @@ const devRunnerCli = Command.make("dev-runner", {...@@ -898,17 +898,17 @@ const devRunnerCli = Command.make("dev-runner", {
898 Flag.optional,898 Flag.optional,
899 Flag.map(Option.getOrUndefined),899 Flag.map(Option.getOrUndefined),
900 ),900 ),
901 dryRun: Flag.boolean("dry-run").pipe(901 dryRun: Flag.Boolean("dry-run").pipe(
902 Flag.withDescription("Resolve mode/ports/env and print, but do not spawn Vite+."),902 Flag.withDescription("Resolve mode/ports/env and print, but do not spawn Vite+."),
903 Flag.withDefault(false),903 Flag.withDefault(false),
904 ),904 ),
905 share: Flag.boolean("share").pipe(905 share: Flag.Boolean("share").pipe(
906 Flag.withDescription(906 Flag.withDescription(
907 "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.",907 "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.",
908 ),908 ),
909 Flag.withDefault(false),909 Flag.withDefault(false),
910 ),910 ),
911 runArgs: Argument.string("run-arg").pipe(911 runArgs: Argument.String("run-arg").pipe(
912 Argument.withDescription("Additional Vite+ run args (pass after `--`)."),912 Argument.withDescription("Additional Vite+ run args (pass after `--`)."),
913 Argument.variadic(),913 Argument.variadic(),
914 ),914 ),
scripts/export-brand-icons.ts+1-1
...@@ -790,7 +790,7 @@ export const exportBrandIcons = Effect.fn("exportBrandIcons")(function* (checkOn...@@ -790,7 +790,7 @@ export const exportBrandIcons = Effect.fn("exportBrandIcons")(function* (checkOn
790export const exportBrandIconsCommand = Command.make(790export const exportBrandIconsCommand = Command.make(
791 "export-brand-icons",791 "export-brand-icons",
792 {792 {
793 check: Flag.boolean("check").pipe(793 check: Flag.Boolean("check").pipe(
794 Flag.withDescription("Verify generated icon assets without modifying files."),794 Flag.withDescription("Verify generated icon assets without modifying files."),
795 Flag.withDefault(false),795 Flag.withDefault(false),
796 ),796 ),
scripts/lib/build-target-arch.ts+2-2
...@@ -11,8 +11,8 @@ interface PlatformConfig {...@@ -11,8 +11,8 @@ interface PlatformConfig {
11}11}
1212
13const WindowsProcessorArchitectureConfig = Config.all({13const WindowsProcessorArchitectureConfig = Config.all({
14 processorArchitecture: Config.string("PROCESSOR_ARCHITECTURE").pipe(Config.option),14 processorArchitecture: Config.String("PROCESSOR_ARCHITECTURE").pipe(Config.option),
15 processorArchitectureW6432: Config.string("PROCESSOR_ARCHITEW6432").pipe(Config.option),15 processorArchitectureW6432: Config.String("PROCESSOR_ARCHITEW6432").pipe(Config.option),
16});16});
1717
18function normalizeWindowsArch(value: string | undefined): BuildArch | undefined {18function normalizeWindowsArch(value: string | undefined): BuildArch | undefined {
scripts/lib/cli-external-packages.test.ts+16-15
...@@ -20,8 +20,8 @@ import {...@@ -20,8 +20,8 @@ import {
20// Only the field this test cares about; decoding ignores everything else.20// Only the field this test cares about; decoding ignores everything else.
21// optionalDependencies matter as much as dependencies here: every native family21// optionalDependencies matter as much as dependencies here: every native family
22// in the list declares its actual platform bindings there (ffi-rs -> @yuuang/*,22// in the list declares its actual platform bindings there (ffi-rs -> @yuuang/*,
23// msgpackr-extract -> @msgpackr-extract/*, fff-node -> @ff-labs/fff-bin-*), so23// fff-node -> @ff-labs/fff-bin-*), so reading only `dependencies` would check
24// reading only `dependencies` would check nothing for exactly those packages.24// nothing for exactly those packages.
25const PackageManifest = Schema.Struct({25const PackageManifest = Schema.Struct({
26 dependencies: Schema.optional(Schema.Record(Schema.String, Schema.String)),26 dependencies: Schema.optional(Schema.Record(Schema.String, Schema.String)),
27 optionalDependencies: Schema.optional(Schema.Record(Schema.String, Schema.String)),27 optionalDependencies: Schema.optional(Schema.Record(Schema.String, Schema.String)),
...@@ -49,8 +49,7 @@ describe("shouldBundleCliDependency", () => {...@@ -49,8 +49,7 @@ describe("shouldBundleCliDependency", () => {
49 "@yuuang/ffi-rs-win32-x64-msvc",49 "@yuuang/ffi-rs-win32-x64-msvc",
50 "@ff-labs/fff-node",50 "@ff-labs/fff-node",
51 "@clerk/electron-passkeys",51 "@clerk/electron-passkeys",
52 "msgpackr-extract",52 "node-addon-api",
53 "@msgpackr-extract/msgpackr-extract-win32-x64",
54 ]) {53 ]) {
55 assert.strictEqual(shouldBundleCliDependency(id), false, id);54 assert.strictEqual(shouldBundleCliDependency(id), false, id);
56 }55 }
...@@ -82,7 +81,7 @@ describe("selectCliRuntimeExternalDependencies", () => {...@@ -82,7 +81,7 @@ describe("selectCliRuntimeExternalDependencies", () => {
82 it("selects every external root declared by the server", () => {81 it("selects every external root declared by the server", () => {
83 assert.deepStrictEqual(82 assert.deepStrictEqual(
84 Object.keys(selectCliRuntimeExternalDependencies(serverPackageJson.dependencies)).sort(),83 Object.keys(selectCliRuntimeExternalDependencies(serverPackageJson.dependencies)).sort(),
85 ["@ff-labs/fff-node", "msgpackr-extract", "node-pty"],84 ["@ff-labs/fff-node", "node-pty"],
86 );85 );
87 });86 });
88});87});
...@@ -92,12 +91,13 @@ describe("selectCliRuntimeExternalDependencies", () => {...@@ -92,12 +91,13 @@ describe("selectCliRuntimeExternalDependencies", () => {
92// bundled away instead of left external, that dependency does not follow the91// bundled away instead of left external, that dependency does not follow the
93// selected root into the sidecar.92// selected root into the sidecar.
94//93//
95// Found the hard way: node-gyp-build-optional-packages requires detect-libc,94// Found the hard way: msgpackr-extract's node-gyp-build-optional-packages
96// which was bundled. Windows was fine; WSL got MODULE_NOT_FOUND.95// required detect-libc, which was bundled. Windows was fine; WSL got
96// MODULE_NOT_FOUND.
97it.layer(NodeServices.layer)("external package dependency closure", (it) => {97it.layer(NodeServices.layer)("external package dependency closure", (it) => {
98 // Read manifests off disk from the pnpm store rather than resolving them.98 // Read manifests off disk from the pnpm store rather than resolving them.
99 // `require("<name>/package.json")` cannot do this job: under pnpm isolation a99 // `require("<name>/package.json")` cannot do this job: under pnpm isolation a
100 // transitive package (detect-libc, msgpackr-extract, ffi-rs) is not reachable100 // transitive package (node-addon-api, ffi-rs) is not reachable
101 // by name from this file at all, and an `exports` map can refuse the101 // by name from this file at all, and an `exports` map can refuse the
102 // `/package.json` subpath outright (@ff-labs/fff-node). Both surface as "not102 // `/package.json` subpath outright (@ff-labs/fff-node). Both surface as "not
103 // installed", which would let this test skip everything and pass while103 // installed", which would let this test skip everything and pass while
...@@ -158,9 +158,10 @@ it.layer(NodeServices.layer)("external package dependency closure", (it) => {...@@ -158,9 +158,10 @@ it.layer(NodeServices.layer)("external package dependency closure", (it) => {
158 const found = [...installed.keys()].filter(isRuntimeExternal);158 const found = [...installed.keys()].filter(isRuntimeExternal);
159159
160 // Without this the closure check below can pass vacuously: if nothing is160 // Without this the closure check below can pass vacuously: if nothing is
161 // read, nothing is checked. These are the packages whose closure actually161 // read, nothing is checked. node-pty is the one native root every
162 // broke WSL, so require them by name.162 // platform ships, and node-addon-api is its transitive runtime
163 for (const required of ["node-pty", "node-gyp-build-optional-packages", "detect-libc"]) {163 // dependency, so require them by name.
164 for (const required of ["node-pty", "node-addon-api"]) {
164 assert.ok(165 assert.ok(
165 found.includes(required),166 found.includes(required),
166 `expected ${required} in the pnpm store; the closure check is only meaningful if it can read these (found ${found.length})`,167 `expected ${required} in the pnpm store; the closure check is only meaningful if it can read these (found ${found.length})`,
...@@ -220,13 +221,13 @@ var x = 1;...@@ -220,13 +221,13 @@ var x = 1;
220221
221 it("flags an external package that was inlined", () => {222 it("flags an external package that was inlined", () => {
222 const source =223 const source =
223 region("../../node_modules/.pnpm/detect-libc@2.1.2/node_modules/detect-libc/lib/process.js") +224 region("../../node_modules/.pnpm/node-addon-api@7.1.1/node_modules/node-addon-api/index.js") +
224 region(225 region(
225 "../../node_modules/.pnpm/msgpackr-extract@3.0.4/node_modules/msgpackr-extract/index.js",226 "../../node_modules/.pnpm/node-gyp-build-optional-packages@5.2.2/node_modules/node-gyp-build-optional-packages/index.js",
226 );227 );
227 const result = findInlinedExternalPackages(source);228 const result = findInlinedExternalPackages(source);
228229
229 assert.deepStrictEqual(result.inlined, ["detect-libc", "msgpackr-extract"]);230 assert.deepStrictEqual(result.inlined, ["node-addon-api", "node-gyp-build-optional-packages"]);
230 assert.strictEqual(result.regionCount, 2);231 assert.strictEqual(result.regionCount, 2);
231 });232 });
232233
...@@ -271,7 +272,7 @@ var x = 1;...@@ -271,7 +272,7 @@ var x = 1;
271 });272 });
272273
273 it("reports no regions when the marker format is absent", () => {274 it("reports no regions when the marker format is absent", () => {
274 const result = findInlinedExternalPackages("var x = 1; // node_modules/detect-libc/lib.js");275 const result = findInlinedExternalPackages("var x = 1; // node_modules/node-pty/lib.js");
275 assert.strictEqual(result.regionCount, 0);276 assert.strictEqual(result.regionCount, 0);
276 assert.deepStrictEqual(result.inlined, []);277 assert.deepStrictEqual(result.inlined, []);
277 });278 });
scripts/lib/cli-external-packages.ts+7-11
...@@ -34,13 +34,8 @@ export const CLI_RUNTIME_EXTERNAL_PREFIXES = [...@@ -34,13 +34,8 @@ export const CLI_RUNTIME_EXTERNAL_PREFIXES = [
34 "@yuuang/",34 "@yuuang/",
35 "@ff-labs/",35 "@ff-labs/",
36 "@clerk/electron-passkeys",36 "@clerk/electron-passkeys",
37 "@msgpackr-extract/",
38 "msgpackr-extract",
39 "node-gyp-build",37 "node-gyp-build",
40 "node-addon-api",38 "node-addon-api",
41 // Required by node-gyp-build-optional-packages. Not native, but in the
42 // closure: without it, WSL gets MODULE_NOT_FOUND while Windows is fine.
43 "detect-libc",
44 // ws's optional accelerators. Nothing in this repo declares them, so they are39 // ws's optional accelerators. Nothing in this repo declares them, so they are
45 // not in the staged production install and the packaged app does not ship40 // not in the staged production install and the packaged app does not ship
46 // them either way -- ws wraps the require in try/catch and falls back to its41 // them either way -- ws wraps the require in try/catch and falls back to its
...@@ -63,9 +58,9 @@ export function isRuntimeExternalCliDependency(id: string): boolean {...@@ -63,9 +58,9 @@ export function isRuntimeExternalCliDependency(id: string): boolean {
63 * This has to be wired to the bundler's `neverBundle`, not just to58 * This has to be wired to the bundler's `neverBundle`, not just to
64 * `alwaysBundle`. `alwaysBundle` only forces packages IN — returning false from59 * `alwaysBundle`. `alwaysBundle` only forces packages IN — returning false from
65 * it means "no opinion", and the default then applies: a declared dependency60 * it means "no opinion", and the default then applies: a declared dependency
66 * stays external, but a transitive one gets bundled. That is how61 * stays external, but a transitive one gets bundled. That is how a native
67 * msgpackr-extract, node-gyp-build-optional-packages and detect-libc ended up62 * loader such as node-gyp-build ended up inlined while node-pty (a declared
68 * inlined while node-pty (a declared dependency) stayed external.63 * dependency) stayed external.
69 */64 */
70export function isExternalCliDependency(id: string): boolean {65export function isExternalCliDependency(id: string): boolean {
71 return isRuntimeExternalCliDependency(id);66 return isRuntimeExternalCliDependency(id);
...@@ -126,9 +121,10 @@ export function findEsmImportsOfExternalPackages(source: string): ReadonlyArray<...@@ -126,9 +121,10 @@ export function findEsmImportsOfExternalPackages(source: string): ReadonlyArray<
126 * Configuring the bundler is not the same as checking what it produced. The121 * Configuring the bundler is not the same as checking what it produced. The
127 * `alwaysBundle` predicate only forces packages IN; returning false from it122 * `alwaysBundle` predicate only forces packages IN; returning false from it
128 * means "no opinion", so a transitive dependency still gets bundled by default.123 * means "no opinion", so a transitive dependency still gets bundled by default.
129 * msgpackr-extract, node-gyp-build-optional-packages and detect-libc were124 * A native loader and its helper (node-gyp-build-optional-packages and
130 * inlined that way while every list-based test passed, which is why this reads125 * detect-libc, when msgpackr-extract was still a dependency) were inlined that
131 * the artifact instead.126 * way while every list-based test passed, which is why this reads the artifact
127 * instead.
132 *128 *
133 * `regionCount` is reported so the caller can tell "nothing was inlined" apart129 * `regionCount` is reported so the caller can tell "nothing was inlined" apart
134 * from "the marker format changed and this scan no longer sees anything".130 * from "the marker format changed and this scan no longer sees anything".
scripts/merge-update-manifests.ts+4-4
...@@ -79,18 +79,18 @@ export const mergeUpdateManifestFiles = Effect.fn("mergeUpdateManifestFiles")(fu...@@ -79,18 +79,18 @@ export const mergeUpdateManifestFiles = Effect.fn("mergeUpdateManifestFiles")(fu
79export const mergeUpdateManifestsCommand = Command.make(79export const mergeUpdateManifestsCommand = Command.make(
80 "merge-update-manifests",80 "merge-update-manifests",
81 {81 {
82 platform: Flag.choice("platform", UpdateManifestPlatform.literals).pipe(82 platform: Flag.Literals("platform", UpdateManifestPlatform.literals).pipe(
83 Flag.withDescription("Update manifest platform."),83 Flag.withDescription("Update manifest platform."),
84 ),84 ),
85 primaryPath: Argument.string("primary-path").pipe(85 primaryPath: Argument.String("primary-path").pipe(
86 Argument.withDescription("Primary update manifest path. Defaults to the output path."),86 Argument.withDescription("Primary update manifest path. Defaults to the output path."),
87 ),87 ),
88 secondaryPath: Argument.string("secondary-path").pipe(88 secondaryPath: Argument.String("secondary-path").pipe(
89 Argument.withDescription(89 Argument.withDescription(
90 "Secondary update manifest path to merge into the primary manifest.",90 "Secondary update manifest path to merge into the primary manifest.",
91 ),91 ),
92 ),92 ),
93 outputPath: Argument.string("output-path").pipe(93 outputPath: Argument.String("output-path").pipe(
94 Argument.withDescription("Optional output path for the merged manifest."),94 Argument.withDescription("Optional output path for the merged manifest."),
95 Argument.optional,95 Argument.optional,
96 ),96 ),
scripts/mobile-native-client.ts+4-4
...@@ -126,7 +126,7 @@ export const hashBundle = Effect.fn("hashBundle")(function* (root: string) {...@@ -126,7 +126,7 @@ export const hashBundle = Effect.fn("hashBundle")(function* (root: string) {
126 entries.push(`directory:${key}`);126 entries.push(`directory:${key}`);
127 yield* visit(key);127 yield* visit(key);
128 } else {128 } else {
129 const chunks = yield* fs.stream(absolute, { chunkSize: FileSystem.Size(65536) }).pipe(129 const chunks = yield* fs.stream(absolute, { chunkSize: 65536 }).pipe(
130 Stream.mapEffect((chunk) => digest(chunk)),130 Stream.mapEffect((chunk) => digest(chunk)),
131 Stream.runCollect,131 Stream.runCollect,
132 );132 );
...@@ -291,9 +291,9 @@ export const installedBinary = Effect.fn("installedBinary")(function* (...@@ -291,9 +291,9 @@ export const installedBinary = Effect.fn("installedBinary")(function* (
291const main = Command.make(291const main = Command.make(
292 "mobile-native-client",292 "mobile-native-client",
293 {293 {
294 mode: Argument.choice("mode", ["check", "ensure"]),294 mode: Argument.Literals("mode", ["check", "ensure"]),
295 platform: Argument.choice("platform", ["ios", "android"]),295 platform: Argument.Literals("platform", ["ios", "android"]),
296 device: Argument.string("device"),296 device: Argument.String("device"),
297 },297 },
298 Effect.fn("nativeClient.main")(function* ({ mode, platform, device }) {298 Effect.fn("nativeClient.main")(function* ({ mode, platform, device }) {
299 yield* validateDevice(platform, device);299 yield* validateDevice(platform, device);
scripts/mock-update-server.ts+2-2
...@@ -18,8 +18,8 @@ const resolveMockUpdateServerConfig = Effect.gen(function* () {...@@ -18,8 +18,8 @@ const resolveMockUpdateServerConfig = Effect.gen(function* () {
18 const fileSystem = yield* FileSystem.FileSystem;18 const fileSystem = yield* FileSystem.FileSystem;
19 const path = yield* Path.Path;19 const path = yield* Path.Path;
20 const config = yield* Config.all({20 const config = yield* Config.all({
21 port: Config.port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.withDefault(3000)),21 port: Config.Port("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_PORT").pipe(Config.withDefault(3000)),
22 root: Config.string("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_ROOT").pipe(22 root: Config.String("T3CODE_DESKTOP_MOCK_UPDATE_SERVER_ROOT").pipe(
23 Config.withDefault("../release-mock"),23 Config.withDefault("../release-mock"),
24 ),24 ),
25 });25 });
scripts/notify-discord-release.ts+7-7
...@@ -49,7 +49,7 @@ interface DiscordWebhookPayload {...@@ -49,7 +49,7 @@ interface DiscordWebhookPayload {
4949
50const DISCORD_RELEASE_TARGETS = ["prerelease", "latest"] as const;50const DISCORD_RELEASE_TARGETS = ["prerelease", "latest"] as const;
51const DiscordRoleIdSchema = Schema.String.check(Schema.isPattern(/^\d+$/));51const DiscordRoleIdSchema = Schema.String.check(Schema.isPattern(/^\d+$/));
52const DiscordWebhookUrl = Config.url("DISCORD_WEBHOOK_URL");52const DiscordWebhookUrl = Config.URL("DISCORD_WEBHOOK_URL");
5353
54const discordReleaseErrorContext = {54const discordReleaseErrorContext = {
55 target: Schema.Literals(["prerelease", "latest"]),55 target: Schema.Literals(["prerelease", "latest"]),
...@@ -221,26 +221,26 @@ export const postDiscordWebhook = Effect.fn("postDiscordWebhook")(function* (...@@ -221,26 +221,26 @@ export const postDiscordWebhook = Effect.fn("postDiscordWebhook")(function* (
221export const notifyDiscordReleaseCommand = Command.make(221export const notifyDiscordReleaseCommand = Command.make(
222 "notify-discord-release",222 "notify-discord-release",
223 {223 {
224 target: Argument.choice("target", DISCORD_RELEASE_TARGETS).pipe(224 target: Argument.Literals("target", DISCORD_RELEASE_TARGETS).pipe(
225 Argument.withDescription("Discord announcement target: prerelease or latest."),225 Argument.withDescription("Discord announcement target: prerelease or latest."),
226 ),226 ),
227 roleId: Flag.string("role-id").pipe(227 roleId: Flag.String("role-id").pipe(
228 Flag.withSchema(DiscordRoleIdSchema),228 Flag.withSchema(DiscordRoleIdSchema),
229 Flag.withDescription("Discord role ID to mention in the release announcement."),229 Flag.withDescription("Discord role ID to mention in the release announcement."),
230 ),230 ),
231 releaseName: Flag.string("release-name").pipe(231 releaseName: Flag.String("release-name").pipe(
232 Flag.withSchema(Schema.NonEmptyString),232 Flag.withSchema(Schema.NonEmptyString),
233 Flag.withDescription("Human-readable release name."),233 Flag.withDescription("Human-readable release name."),
234 ),234 ),
235 releaseVersion: Flag.string("release-version").pipe(235 releaseVersion: Flag.String("release-version").pipe(
236 Flag.withSchema(Schema.NonEmptyString),236 Flag.withSchema(Schema.NonEmptyString),
237 Flag.withDescription("Release version."),237 Flag.withDescription("Release version."),
238 ),238 ),
239 tag: Flag.string("tag").pipe(239 tag: Flag.String("tag").pipe(
240 Flag.withSchema(Schema.NonEmptyString),240 Flag.withSchema(Schema.NonEmptyString),
241 Flag.withDescription("Git tag for the release."),241 Flag.withDescription("Git tag for the release."),
242 ),242 ),
243 releaseUrl: Flag.string("release-url").pipe(243 releaseUrl: Flag.String("release-url").pipe(
244 Flag.withSchema(Schema.URLFromString),244 Flag.withSchema(Schema.URLFromString),
245 Flag.withDescription("Public GitHub release URL."),245 Flag.withDescription("Public GitHub release URL."),
246 ),246 ),
scripts/resolve-nightly-release.ts+7-7
...@@ -171,7 +171,7 @@ export const writeNightlyReleaseOutput = Effect.fn("writeNightlyReleaseOutput")(...@@ -171,7 +171,7 @@ export const writeNightlyReleaseOutput = Effect.fn("writeNightlyReleaseOutput")(
171 ] as const;171 ] as const;
172172
173 if (writeGithubOutput) {173 if (writeGithubOutput) {
174 const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT").pipe(174 const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT").pipe(
175 Effect.mapError(175 Effect.mapError(
176 (cause) =>176 (cause) =>
177 new NightlyReleaseGitHubOutputConfigError({177 new NightlyReleaseGitHubOutputConfigError({
...@@ -199,27 +199,27 @@ export const writeNightlyReleaseOutput = Effect.fn("writeNightlyReleaseOutput")(...@@ -199,27 +199,27 @@ export const writeNightlyReleaseOutput = Effect.fn("writeNightlyReleaseOutput")(
199const command = Command.make(199const command = Command.make(
200 "resolve-nightly-release",200 "resolve-nightly-release",
201 {201 {
202 date: Flag.string("date").pipe(202 date: Flag.String("date").pipe(
203 Flag.withSchema(DateSchema),203 Flag.withSchema(DateSchema),
204 Flag.withDescription("Nightly build date in YYYYMMDD."),204 Flag.withDescription("Nightly build date in YYYYMMDD."),
205 ),205 ),
206 runNumber: Flag.string("run-number").pipe(206 runNumber: Flag.String("run-number").pipe(
207 Flag.withSchema(RunNumberSchema),207 Flag.withSchema(RunNumberSchema),
208 Flag.withDescription("GitHub Actions run number."),208 Flag.withDescription("GitHub Actions run number."),
209 ),209 ),
210 sha: Flag.string("sha").pipe(210 sha: Flag.String("sha").pipe(
211 Flag.withSchema(ShaSchema),211 Flag.withSchema(ShaSchema),
212 Flag.withDescription("Commit sha for the nightly build."),212 Flag.withDescription("Commit sha for the nightly build."),
213 ),213 ),
214 channel: Flag.choice("channel", PrereleaseChannel.literals).pipe(214 channel: Flag.Literals("channel", PrereleaseChannel.literals).pipe(
215 Flag.withDescription("Prerelease channel whose identifier the version carries."),215 Flag.withDescription("Prerelease channel whose identifier the version carries."),
216 Flag.withDefault("nightly" as const),216 Flag.withDefault("nightly" as const),
217 ),217 ),
218 githubOutput: Flag.boolean("github-output").pipe(218 githubOutput: Flag.Boolean("github-output").pipe(
219 Flag.withDescription("Write values to GITHUB_OUTPUT instead of stdout."),219 Flag.withDescription("Write values to GITHUB_OUTPUT instead of stdout."),
220 Flag.withDefault(false),220 Flag.withDefault(false),
221 ),221 ),
222 root: Flag.string("root").pipe(222 root: Flag.String("root").pipe(
223 Flag.withDescription("Workspace root used to resolve apps/desktop/package.json."),223 Flag.withDescription("Workspace root used to resolve apps/desktop/package.json."),
224 Flag.optional,224 Flag.optional,
225 ),225 ),
scripts/resolve-previous-release-tag.ts+4-4
...@@ -320,7 +320,7 @@ export const writePreviousReleaseTagOutput = Effect.fn("writePreviousReleaseTagO...@@ -320,7 +320,7 @@ export const writePreviousReleaseTagOutput = Effect.fn("writePreviousReleaseTagO
320320
321 if (writeGithubOutput) {321 if (writeGithubOutput) {
322 const fs = yield* FileSystem.FileSystem;322 const fs = yield* FileSystem.FileSystem;
323 const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT").pipe(323 const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT").pipe(
324 Effect.mapError(324 Effect.mapError(
325 (cause) =>325 (cause) =>
326 new PreviousReleaseTagGitHubOutputConfigError({326 new PreviousReleaseTagGitHubOutputConfigError({
...@@ -346,13 +346,13 @@ export const writePreviousReleaseTagOutput = Effect.fn("writePreviousReleaseTagO...@@ -346,13 +346,13 @@ export const writePreviousReleaseTagOutput = Effect.fn("writePreviousReleaseTagO
346const command = Command.make(346const command = Command.make(
347 "resolve-previous-release-tag",347 "resolve-previous-release-tag",
348 {348 {
349 channel: Flag.choice("channel", ReleaseChannel.literals).pipe(349 channel: Flag.Literals("channel", ReleaseChannel.literals).pipe(
350 Flag.withDescription("Release channel whose previous tag should be resolved."),350 Flag.withDescription("Release channel whose previous tag should be resolved."),
351 ),351 ),
352 currentTag: Flag.string("current-tag").pipe(352 currentTag: Flag.String("current-tag").pipe(
353 Flag.withDescription("Current release tag to compare against."),353 Flag.withDescription("Current release tag to compare against."),
354 ),354 ),
355 githubOutput: Flag.boolean("github-output").pipe(355 githubOutput: Flag.Boolean("github-output").pipe(
356 Flag.withDescription("Write values to GITHUB_OUTPUT instead of stdout."),356 Flag.withDescription("Write values to GITHUB_OUTPUT instead of stdout."),
357 Flag.withDefault(false),357 Flag.withDefault(false),
358 ),358 ),
scripts/smoke-cli-archive.ts+2-2
...@@ -177,8 +177,8 @@ const smokeCliArchive = Effect.fn("smokeCliArchive")(function* (input: {...@@ -177,8 +177,8 @@ const smokeCliArchive = Effect.fn("smokeCliArchive")(function* (input: {
177const command = Command.make(177const command = Command.make(
178 "smoke-cli-archive",178 "smoke-cli-archive",
179 {179 {
180 archive: Flag.string("archive"),180 archive: Flag.String("archive"),
181 expectVersion: Flag.string("expect-version"),181 expectVersion: Flag.String("expect-version"),
182 },182 },
183 (input) => smokeCliArchive(input).pipe(Effect.scoped),183 (input) => smokeCliArchive(input).pipe(Effect.scoped),
184).pipe(Command.withDescription("Extract a CLI archive and run its executable."));184).pipe(Command.withDescription("Extract a CLI archive and run its executable."));
scripts/sync-reference-repos.ts+4-4
...@@ -296,21 +296,21 @@ export const syncReferenceRepos = Effect.fn("syncReferenceRepos")(function* (...@@ -296,21 +296,21 @@ export const syncReferenceRepos = Effect.fn("syncReferenceRepos")(function* (
296export const syncReferenceReposCommand = Command.make(296export const syncReferenceReposCommand = Command.make(
297 "sync-reference-repos",297 "sync-reference-repos",
298 {298 {
299 repo: Flag.string("repo").pipe(299 repo: Flag.String("repo").pipe(
300 Flag.withDescription("Sync only the named reference repo. Defaults to all configured repos."),300 Flag.withDescription("Sync only the named reference repo. Defaults to all configured repos."),
301 Flag.optional,301 Flag.optional,
302 ),302 ),
303 latest: Flag.boolean("latest").pipe(303 latest: Flag.Boolean("latest").pipe(
304 Flag.withDescription(304 Flag.withDescription(
305 "Sync each repo from its latest branch instead of the installed version.",305 "Sync each repo from its latest branch instead of the installed version.",
306 ),306 ),
307 Flag.withDefault(false),307 Flag.withDefault(false),
308 ),308 ),
309 root: Flag.string("root").pipe(309 root: Flag.String("root").pipe(
310 Flag.withDescription("Workspace root used to resolve versions and subtree prefixes."),310 Flag.withDescription("Workspace root used to resolve versions and subtree prefixes."),
311 Flag.optional,311 Flag.optional,
312 ),312 ),
313 dryRun: Flag.boolean("dry-run").pipe(313 dryRun: Flag.Boolean("dry-run").pipe(
314 Flag.withDescription("Print planned subtree operations without running git."),314 Flag.withDescription("Print planned subtree operations without running git."),
315 Flag.withDefault(false),315 Flag.withDefault(false),
316 ),316 ),
scripts/update-release-package-versions.ts+4-4
...@@ -125,7 +125,7 @@ export const updateReleasePackageVersions = Effect.fn("updateReleasePackageVersi...@@ -125,7 +125,7 @@ export const updateReleasePackageVersions = Effect.fn("updateReleasePackageVersi
125125
126const writeGithubOutput = Effect.fn("writeGithubOutput")(function* (changed: boolean) {126const writeGithubOutput = Effect.fn("writeGithubOutput")(function* (changed: boolean) {
127 const fs = yield* FileSystem.FileSystem;127 const fs = yield* FileSystem.FileSystem;
128 const githubOutputPath = yield* Config.nonEmptyString("GITHUB_OUTPUT").pipe(128 const githubOutputPath = yield* Config.NonEmptyString("GITHUB_OUTPUT").pipe(
129 Effect.mapError(129 Effect.mapError(
130 (cause) =>130 (cause) =>
131 new ReleaseGitHubOutputConfigurationError({131 new ReleaseGitHubOutputConfigurationError({
...@@ -147,14 +147,14 @@ const writeGithubOutput = Effect.fn("writeGithubOutput")(function* (changed: boo...@@ -147,14 +147,14 @@ const writeGithubOutput = Effect.fn("writeGithubOutput")(function* (changed: boo
147export const updateReleasePackageVersionsCommand = Command.make(147export const updateReleasePackageVersionsCommand = Command.make(
148 "update-release-package-versions",148 "update-release-package-versions",
149 {149 {
150 version: Argument.string("version").pipe(150 version: Argument.String("version").pipe(
151 Argument.withDescription("Release version to write into each releasable package.json."),151 Argument.withDescription("Release version to write into each releasable package.json."),
152 ),152 ),
153 root: Flag.string("root").pipe(153 root: Flag.String("root").pipe(
154 Flag.withDescription("Workspace root used to resolve the release package manifests."),154 Flag.withDescription("Workspace root used to resolve the release package manifests."),
155 Flag.optional,155 Flag.optional,
156 ),156 ),
157 githubOutput: Flag.boolean("github-output").pipe(157 githubOutput: Flag.Boolean("github-output").pipe(
158 Flag.withDescription("Append changed=<boolean> to GITHUB_OUTPUT."),158 Flag.withDescription("Append changed=<boolean> to GITHUB_OUTPUT."),
159 Flag.withDefault(false),159 Flag.withDefault(false),
160 ),160 ),