From cb65643b076c79cfe39a5197553b143889da64ab Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Tue, 13 Oct 2026 21:48:43 -0700 Subject: [PATCH] chore(deps): Effect 4.0.4 and OpenCode 2.0.28, dropping the patches they made unnecessary (#19213) Co-authored-by: Claude Opus 5.5 --- apps/desktop/src/app/DesktopApp.ts | 2 +- .../src/app/DesktopConnectionCatalogStore.ts | 2 +- apps/desktop/src/preview/Manager.ts | 2 +- .../src/settings/DesktopAppSettings.ts | 2 +- .../src/settings/DesktopClientSettings.ts | 2 +- apps/desktop/src/snapShot/DesktopSnapShot.ts | 2 +- .../src/ssh/DesktopSshPasswordPrompts.ts | 2 +- apps/mobile/src/features/cloud/dpop.ts | 2 +- apps/server/src/assets/AttachmentUpload.ts | 2 +- .../src/assets/NativeAppIconResolver.ts | 2 +- apps/server/src/auth/PairingGrantStore.ts | 13 +- apps/server/src/auth/ServerSecretStore.ts | 2 +- apps/server/src/auth/SessionStore.ts | 6 +- apps/server/src/cli/app.ts | 2 +- apps/server/src/cli/project.ts | 2 +- apps/server/src/cloud/CloudLink.ts | 8 +- .../src/desktopUpdate/DesktopAppUpdate.ts | 12 +- .../src/environment/ServerEnvironment.test.ts | 17 +- .../src/environment/ServerEnvironment.ts | 2 +- apps/server/src/git/GitManager.ts | 2 +- apps/server/src/mcp/McpHttpServer.ts | 2 +- apps/server/src/mcp/McpSessionRegistry.ts | 2 +- apps/server/src/mcp/OrchestratorMcpService.ts | 2 +- .../server/src/mcp/PreviewAutomationBroker.ts | 2 +- .../src/mcp/ThreadMetadataMcpService.ts | 2 +- apps/server/src/mcp/WorktreeMcpService.ts | 2 +- apps/server/src/mcp/threadAccess.ts | 2 +- .../src/mcp/toolkits/pullRequests/handlers.ts | 2 +- .../Adapters/ClaudeAdapterV2.testkit.ts | 2 +- .../Adapters/ClaudeAdapterV2.ts | 8 +- .../PullRequestSyncReactor.ts | 4 +- .../PullRequestWatchReactor.ts | 2 +- .../ThreadPullRequestService.ts | 2 +- .../ThreadSettlementService.ts | 2 +- apps/server/src/preview/Manager.ts | 4 +- .../src/project/ManagedProjectFolders.ts | 14 +- .../src/project/ProjectSetupScriptRunner.ts | 4 +- apps/server/src/provider/AntigravityAuth.ts | 12 +- .../src/provider/AntigravityInstallation.ts | 2 +- apps/server/src/provider/CodexInstallation.ts | 2 +- .../src/provider/resetCreditCoordinator.ts | 2 +- .../src/pullRequest/PullRequestReadCache.ts | 2 +- apps/server/src/relay/AgentAwarenessRelay.ts | 2 +- .../NativeTelemetryClient.ts | 16 +- .../scheduledTasks/ScheduledTaskService.ts | 22 +- apps/server/src/serverRuntimeStartup.ts | 2 +- apps/server/src/telemetry/AnalyticsService.ts | 2 +- apps/server/src/telemetry/Identify.ts | 2 +- apps/server/src/vcs/GitVcsDriver.ts | 2 +- apps/server/src/ws.ts | 4 +- apps/web/src/cloud/dpop.ts | 2 +- .../src/agentActivity/ApnsDeliveryQueue.ts | 4 +- .../src/agentActivity/DeliveryAttempts.ts | 4 +- .../src/environments/EnvironmentConnector.ts | 8 +- .../environments/EnvironmentCredentials.ts | 5 +- infra/relay/src/hooks/HookForwarder.ts | 4 +- infra/relay/src/http/Api.ts | 12 +- .../client-runtime/src/operations/commands.ts | 2 +- packages/client-runtime/src/rpc/session.ts | 2 +- .../src/server/AcpRegistrySupport.ts | 2 +- .../src/server/AcpSessionRuntime.ts | 2 +- packages/provider-acp/src/server/adapter.ts | 2 +- .../provider-acp/src/server/nativeLogging.ts | 2 +- .../src/server/maintenanceResolver.test.ts | 2 +- .../src/server/providerAuthFlow.ts | 2 +- packages/provider-cursor/src/server/auth.ts | 2 +- packages/provider-opencode/package.json | 6 +- .../server/v2/OpenCode2Client.live.test.ts | 2 +- packages/shared/src/relayClient.ts | 2 +- .../@effect__platform-node-shared@4.0.2.patch | 60 -- ....0.2.patch => @effect__vitest@4.0.4.patch} | 4 +- patches/@opencode__client@2.0.23.patch | 439 --------- patches/@opencode__protocol@2.0.23.patch | 844 ------------------ patches/@opencode__schema@2.0.23.patch | 155 ---- patches/effect@4.0.2.patch | 31 - pnpm-lock.yaml | 749 ++++++++-------- pnpm-workspace.yaml | 50 +- 77 files changed, 545 insertions(+), 2070 deletions(-) delete mode 100644 patches/@effect__platform-node-shared@4.0.2.patch rename patches/{@effect__vitest@4.0.2.patch => @effect__vitest@4.0.4.patch} (98%) delete mode 100644 patches/@opencode__client@2.0.23.patch delete mode 100644 patches/@opencode__protocol@2.0.23.patch delete mode 100644 patches/@opencode__schema@2.0.23.patch delete mode 100644 patches/effect@4.0.2.patch diff --git a/apps/desktop/src/app/DesktopApp.ts b/apps/desktop/src/app/DesktopApp.ts index a6906099dbd5f275c2be94a75b72f61e04953025..24dbf2232f0050acc421b38b61af36cd622956df 100644 --- a/apps/desktop/src/app/DesktopApp.ts +++ b/apps/desktop/src/app/DesktopApp.ts @@ -42,7 +42,7 @@ const MAX_TCP_PORT = 65_535; const DESKTOP_BACKEND_PORT_PROBE_HOSTS = ["127.0.0.1", "0.0.0.0", "::"] as const; const makeDesktopRunId = Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.map((value) => value.replaceAll("-", "").slice(0, 12)), ); diff --git a/apps/desktop/src/app/DesktopConnectionCatalogStore.ts b/apps/desktop/src/app/DesktopConnectionCatalogStore.ts index e9edcab88dcd22d4e1492b9cc91e6fcf59933496..d20bdf95dd31668ddda055c2e8ab7b1a90eedbb9 100644 --- a/apps/desktop/src/app/DesktopConnectionCatalogStore.ts +++ b/apps/desktop/src/app/DesktopConnectionCatalogStore.ts @@ -411,7 +411,7 @@ export const make = Effect.gen(function* () { ), ), ); - const suffix = (yield* crypto.randomUUIDv4.pipe( + const suffix = (yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new DesktopConnectionCatalogStoreWriteError({ diff --git a/apps/desktop/src/preview/Manager.ts b/apps/desktop/src/preview/Manager.ts index aa36055452eb87a9616377eb96bbdefad8979118..2d26ce591a93c6d1ecb7ce21e07b0b44af1e555a 100644 --- a/apps/desktop/src/preview/Manager.ts +++ b/apps/desktop/src/preview/Manager.ts @@ -2501,7 +2501,7 @@ const makeNativeOperations = Effect.fn("PreviewManager.makeOperations")(function wc, ), ]); - const uuid = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const uuid = yield* crypto.randomUUIDv4().pipe(Effect.orDie); const id = `browser-screenshot-${artifactSiteSlug(wc.getURL())}-${millis.toString(36)}-${uuid.slice(0, 8)}`; const artifactPath = path.join(resolvedArtifactDirectory, `${id}.png`); const data = image.toPNG(); diff --git a/apps/desktop/src/settings/DesktopAppSettings.ts b/apps/desktop/src/settings/DesktopAppSettings.ts index efd9fbfbfd3bd72b4e4d8af05dc9fc9f31457917..a8dbc8e63f059093e6b026650dd68e05d4516d7d 100644 --- a/apps/desktop/src/settings/DesktopAppSettings.ts +++ b/apps/desktop/src/settings/DesktopAppSettings.ts @@ -504,7 +504,7 @@ export const make = Effect.gen(function* () { return Effect.succeed([settingsChange(settings, false), settings] as const); } - return crypto.randomUUIDv4.pipe( + return crypto.randomUUIDv4().pipe( Effect.map((uuid) => uuid.replace(/-/g, "")), Effect.mapError( (cause) => diff --git a/apps/desktop/src/settings/DesktopClientSettings.ts b/apps/desktop/src/settings/DesktopClientSettings.ts index 50b1e09aacee6f413881979d1f4782cf334765b3..7c65c35cf0439c59a9a3d69fff2040f6b332abe3 100644 --- a/apps/desktop/src/settings/DesktopClientSettings.ts +++ b/apps/desktop/src/settings/DesktopClientSettings.ts @@ -195,7 +195,7 @@ export const make = Effect.gen(function* () { Effect.withSpan("desktop.clientSettings.get"), ), set: (settings) => - crypto.randomUUIDv4.pipe( + crypto.randomUUIDv4().pipe( Effect.map((uuid) => uuid.replace(/-/g, "")), Effect.mapError( (cause) => diff --git a/apps/desktop/src/snapShot/DesktopSnapShot.ts b/apps/desktop/src/snapShot/DesktopSnapShot.ts index 71fe47d3f6ca0b4caf4f0721fd3dbc8ef2d9f43c..7585c1c188795c298e59efb5ea99a96593dfa3ee 100644 --- a/apps/desktop/src/snapShot/DesktopSnapShot.ts +++ b/apps/desktop/src/snapShot/DesktopSnapShot.ts @@ -858,7 +858,7 @@ export const make = Effect.gen(function* () { const prepareCapture = Effect.fn("desktop.snapShot.prepareCapture")(function* ( settings: ClientSettings, ) { - const id = yield* crypto.randomUUIDv4.pipe(Effect.mapError((cause) => captureFailure(cause))); + const id = yield* crypto.randomUUIDv4().pipe(Effect.mapError((cause) => captureFailure(cause))); const mode = captureMode(environment.platform); if (mode === "unavailable") { return yield* new DesktopSnapShotError({ operation: "unsupported", captureId: id }); diff --git a/apps/desktop/src/ssh/DesktopSshPasswordPrompts.ts b/apps/desktop/src/ssh/DesktopSshPasswordPrompts.ts index 5c0bf0998f40d29889761bec18b2139c9dcb9050..296b81339e80eb4ef6b228ca9accf42e89edc9c1 100644 --- a/apps/desktop/src/ssh/DesktopSshPasswordPrompts.ts +++ b/apps/desktop/src/ssh/DesktopSshPasswordPrompts.ts @@ -307,7 +307,7 @@ export const make = Effect.fn("desktop.sshPasswordPrompts.make")(function* ( }); } - const requestId = yield* crypto.randomUUIDv4.pipe( + const requestId = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new DesktopSshPromptRequestIdGenerationError({ diff --git a/apps/mobile/src/features/cloud/dpop.ts b/apps/mobile/src/features/cloud/dpop.ts index f258a6376e5bf6e13adf1f55cd5d2e0e4ee33fe8..da2e6187c1d48a3cba5093e4f574dba698d985e7 100644 --- a/apps/mobile/src/features/cloud/dpop.ts +++ b/apps/mobile/src/features/cloud/dpop.ts @@ -261,7 +261,7 @@ export function createDpopProof(input: { }); const nowMs = yield* Clock.currentTimeMillis; const jti = yield* Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.mapError(cloudDpopError("Could not generate DPoP proof identifier.")), ); const htu = yield* normalizeHtu(input.url); diff --git a/apps/server/src/assets/AttachmentUpload.ts b/apps/server/src/assets/AttachmentUpload.ts index 071f6313b68f15509a7aa42e1841bf6eee8bbcd0..1a466e7327c09bc0de952eab628e31198b24ac5a 100644 --- a/apps/server/src/assets/AttachmentUpload.ts +++ b/apps/server/src/assets/AttachmentUpload.ts @@ -170,7 +170,7 @@ export const storeAttachmentUpload = Effect.fn("AttachmentUpload.store")(functio relativePath, }); const crypto = yield* Crypto.Crypto; - const partId = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const partId = yield* crypto.randomUUIDv4().pipe(Effect.orDie); const partPath = resolveAttachmentRelativePath({ attachmentsDir: config.attachmentsDir, relativePath: `${relativePath}.${partId}.part`, diff --git a/apps/server/src/assets/NativeAppIconResolver.ts b/apps/server/src/assets/NativeAppIconResolver.ts index e25610e5223ad7d765801919b953e2451741b826..f70a81022f6f6f7314c1c7fa25a35570d56decb4 100644 --- a/apps/server/src/assets/NativeAppIconResolver.ts +++ b/apps/server/src/assets/NativeAppIconResolver.ts @@ -190,7 +190,7 @@ const resolveNativeAppIconUncached = Effect.fn("NativeAppIconResolver.resolveUnc yield* fileSystem.makeDirectory(cacheDirectory, { recursive: true }); const temporaryPath = path.join( cacheDirectory, - `.${cacheKey}-${process.pid}-${(yield* Clock.currentTimeMillis).toString(36)}-${yield* crypto.randomUUIDv4.pipe(Effect.orDie)}.png`, + `.${cacheKey}-${process.pid}-${(yield* Clock.currentTimeMillis).toString(36)}-${yield* crypto.randomUUIDv4().pipe(Effect.orDie)}.png`, ); yield* commandOutput("/usr/bin/sips", [ "-z", diff --git a/apps/server/src/auth/PairingGrantStore.ts b/apps/server/src/auth/PairingGrantStore.ts index d3f5bf7ef8e5e126b9d80dd138166f34b5c741e5..9bf613be9fdb08f0e58963d1f671b4674b6b819e 100644 --- a/apps/server/src/auth/PairingGrantStore.ts +++ b/apps/server/src/auth/PairingGrantStore.ts @@ -398,11 +398,14 @@ export const make = Effect.gen(function* () { const issueOneTimeToken: PairingGrantStore["Service"]["issueOneTimeToken"] = Effect.fn( "PairingGrantStore.issueOneTimeToken", )(function* (input) { - const id = yield* crypto.randomUUIDv4.pipe( - Effect.mapError( - (cause) => new PairingCredentialRandomGenerationError({ operation: "generate-id", cause }), - ), - ); + const id = yield* crypto + .randomUUIDv4() + .pipe( + Effect.mapError( + (cause) => + new PairingCredentialRandomGenerationError({ operation: "generate-id", cause }), + ), + ); const credential = yield* generatePairingToken; const isDevStartupToken = config.devUrl !== undefined && input?.purpose === "startup"; const ttl = diff --git a/apps/server/src/auth/ServerSecretStore.ts b/apps/server/src/auth/ServerSecretStore.ts index 1ee11d3e198e934e2489d70d51151ac5746e7a1a..7493c043c2ca74682ad808da7975543f89e42072 100644 --- a/apps/server/src/auth/ServerSecretStore.ts +++ b/apps/server/src/auth/ServerSecretStore.ts @@ -189,7 +189,7 @@ export const make = Effect.gen(function* () { const set: ServerSecretStore["Service"]["set"] = (name, value) => { const secretPath = resolveSecretPath(name); - return crypto.randomUUIDv4.pipe( + return crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new SecretStoreTemporaryPathError({ diff --git a/apps/server/src/auth/SessionStore.ts b/apps/server/src/auth/SessionStore.ts index 9570785d9f93d1c21efb4885b1185deb601b0e1e..169ce5597f1496420d0a5fb73070fa5c4cd70152 100644 --- a/apps/server/src/auth/SessionStore.ts +++ b/apps/server/src/auth/SessionStore.ts @@ -660,9 +660,9 @@ export const make = Effect.gen(function* () { const issue: SessionStore["Service"]["issue"] = Effect.fn("SessionStore.issue")( function* (input) { const sessionId = AuthSessionId.make( - yield* crypto.randomUUIDv4.pipe( - Effect.mapError((cause) => new SessionCredentialIssueError({ cause })), - ), + yield* crypto + .randomUUIDv4() + .pipe(Effect.mapError((cause) => new SessionCredentialIssueError({ cause }))), ); const issuedAt = yield* DateTime.now; const expiresAt = DateTime.add(issuedAt, { diff --git a/apps/server/src/cli/app.ts b/apps/server/src/cli/app.ts index eade5887c6c16bf6833aab9c049f30e688260d13..003a95af95973d77a73205fa132df12644517b05 100644 --- a/apps/server/src/cli/app.ts +++ b/apps/server/src/cli/app.ts @@ -209,7 +209,7 @@ const runAppCommand = Effect.fn("cli.app")(function* (flags: { joinPath: path.join, }).address; const crypto = yield* Crypto.Crypto; - const requestId = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const requestId = yield* crypto.randomUUIDv4().pipe(Effect.orDie); const request: DesktopAppActivationRequest = { version: DESKTOP_APP_ACTIVATION_PROTOCOL_VERSION, requestId, diff --git a/apps/server/src/cli/project.ts b/apps/server/src/cli/project.ts index ae5d84fa63916a11e7feaca0fbf55f1e139e21ab..c3fa9e98c5230c67cb84f9f51f5cd02022a02aa7 100644 --- a/apps/server/src/cli/project.ts +++ b/apps/server/src/cli/project.ts @@ -188,7 +188,7 @@ export function projectCommandErrorFromLiveServerRequest(cause: unknown): Projec } const projectCommandUuid = Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.mapError( (cause) => new ProjectCommandIdGenerationError({ diff --git a/apps/server/src/cloud/CloudLink.ts b/apps/server/src/cloud/CloudLink.ts index 6d6d137deda16be6fc24654665f663d271cd9bec..6f8f9429b9050c0f4d9cfcf27c74e1da10266b78 100644 --- a/apps/server/src/cloud/CloudLink.ts +++ b/apps/server/src/cloud/CloudLink.ts @@ -647,7 +647,7 @@ const make = Effect.gen(function* () { iss: `t3-env:${descriptor.environmentId}`, aud: normalizeRelayIssuer(request.relayIssuer), sub: descriptor.environmentId, - jti: yield* crypto.randomUUIDv4, + jti: yield* crypto.randomUUIDv4(), iat: nowSeconds, exp: Math.floor(expiresAt.epochMilliseconds / 1_000), challenge: request.challenge, @@ -984,7 +984,7 @@ const make = Effect.gen(function* () { Option.isSome(configuredIssuer) ? bytesToString(configuredIssuer.value) : input.relayUrl, ), sub: input.environmentId, - jti: yield* crypto.randomUUIDv4, + jti: yield* crypto.randomUUIDv4(), iat: issuedAt, exp: issuedAt + 60, environmentId: input.environmentId, @@ -1517,7 +1517,7 @@ const make = Effect.gen(function* () { iss: `t3-env:${environmentId}`, aud: normalizeRelayIssuer(relayIssuer), sub: environmentId, - jti: yield* crypto.randomUUIDv4, + jti: yield* crypto.randomUUIDv4(), iat: nowSeconds, exp: Math.floor(responseExpiresAt.epochMilliseconds / 1_000), environmentId, @@ -1627,7 +1627,7 @@ const make = Effect.gen(function* () { iss: `t3-env:${environmentId}`, aud: normalizeRelayIssuer(relayIssuer), sub: environmentId, - jti: yield* crypto.randomUUIDv4, + jti: yield* crypto.randomUUIDv4(), iat: nowSeconds, exp: Math.floor(issued.expiresAt.epochMilliseconds / 1_000), environmentId, diff --git a/apps/server/src/desktopUpdate/DesktopAppUpdate.ts b/apps/server/src/desktopUpdate/DesktopAppUpdate.ts index d3c82fd1831562a754716a12292a6d5ab4480a55..a1b2d30fdc8a55e444764da231903950bff1cfc0 100644 --- a/apps/server/src/desktopUpdate/DesktopAppUpdate.ts +++ b/apps/server/src/desktopUpdate/DesktopAppUpdate.ts @@ -156,11 +156,13 @@ export const make = Effect.fn("desktopUpdate.desktopAppUpdate.make")(function* ( return yield* Effect.scoped( Effect.gen(function* () { - const requestId = yield* crypto.randomUUIDv4.pipe( - Effect.mapError((error) => - failWith("Could not generate a desktop update request id.", error), - ), - ); + const requestId = yield* crypto + .randomUUIDv4() + .pipe( + Effect.mapError((error) => + failWith("Could not generate a desktop update request id.", error), + ), + ); // Subscribe before sending the request so a fast first report // cannot be missed. const { changes } = yield* receiver.desktopUpdates; diff --git a/apps/server/src/environment/ServerEnvironment.test.ts b/apps/server/src/environment/ServerEnvironment.test.ts index 1d2258b18ab196a3596bb8eb975839fb5d576f3e..1e6490bdd46a5f6024146cd41872cec05de8969e 100644 --- a/apps/server/src/environment/ServerEnvironment.test.ts +++ b/apps/server/src/environment/ServerEnvironment.test.ts @@ -171,14 +171,15 @@ it.layer(NodeServices.layer)("ServerEnvironmentLive", (it) => { }), Effect.provideService(Crypto.Crypto, { ...crypto, - randomUUIDv4: Effect.gen(function* () { - const id = yield* crypto.randomUUIDv4; - if (--remaining === 0) { - yield* Deferred.succeed(bothGenerated, undefined); - } - yield* Deferred.await(bothGenerated); - return id; - }), + randomUUIDv4: (() => + Effect.gen(function* () { + const id = yield* crypto.randomUUIDv4(); + if (--remaining === 0) { + yield* Deferred.succeed(bothGenerated, undefined); + } + yield* Deferred.await(bothGenerated); + return id; + })) as Crypto.Crypto["randomUUIDv4"], }), ); diff --git a/apps/server/src/environment/ServerEnvironment.ts b/apps/server/src/environment/ServerEnvironment.ts index a55b1098d5f0274ba1228316baf8bbc1756730cb..b2667a9edd3fd2940b2265f8be80d2efb0d88049 100644 --- a/apps/server/src/environment/ServerEnvironment.ts +++ b/apps/server/src/environment/ServerEnvironment.ts @@ -158,7 +158,7 @@ const makeIdentity = Effect.gen(function* () { return persisted; } - const generated = yield* crypto.randomUUIDv4; + const generated = yield* crypto.randomUUIDv4(); yield* persistEnvironmentId(generated, "create"); let winner = yield* readPersistedEnvironmentId; if (winner === null) { diff --git a/apps/server/src/git/GitManager.ts b/apps/server/src/git/GitManager.ts index 08a41257ce4e9c32f0d68845e8946cd6041ad658..c4ab7bb9f4b1452955f8b07a6771b14e2df1b5da 100644 --- a/apps/server/src/git/GitManager.ts +++ b/apps/server/src/git/GitManager.ts @@ -852,7 +852,7 @@ export const make = Effect.gen(function* () { } }); const randomUUIDv4 = (cwd: string) => - crypto.randomUUIDv4.pipe( + crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new GitManagerError({ diff --git a/apps/server/src/mcp/McpHttpServer.ts b/apps/server/src/mcp/McpHttpServer.ts index 0e2b52696712959f07bf920146dfb58e859141b1..64e8a344cde359cb2b884eb9f4f16a8826ab9e54 100644 --- a/apps/server/src/mcp/McpHttpServer.ts +++ b/apps/server/src/mcp/McpHttpServer.ts @@ -401,7 +401,7 @@ const saveScreenshot = Effect.fn("McpHttpServer.saveScreenshot")(function* ( const millis = yield* Clock.currentTimeMillis; const crypto = yield* Crypto.Crypto; // Two saves in the same millisecond must not overwrite each other. - const unique = (yield* crypto.randomUUIDv4.pipe(Effect.orDie)).slice(0, 8); + const unique = (yield* crypto.randomUUIDv4().pipe(Effect.orDie)).slice(0, 8); const fileName = `browser-screenshot-${screenshotSiteSlug(pageUrl)}-${millis.toString(36)}-${unique}.png`; const screenshotPath = path.join(config.browserArtifactsDir, fileName); yield* fileSystem.makeDirectory(config.browserArtifactsDir, { recursive: true }).pipe( diff --git a/apps/server/src/mcp/McpSessionRegistry.ts b/apps/server/src/mcp/McpSessionRegistry.ts index f1e027f9eb85f51e8f7b40a15aeb90cb7f3b786d..8bc478cd310cb7eb3da0ef27ca4a8ca48be194e6 100644 --- a/apps/server/src/mcp/McpSessionRegistry.ts +++ b/apps/server/src/mcp/McpSessionRegistry.ts @@ -124,7 +124,7 @@ const makeWithOptions = Effect.fn("McpSessionRegistry.make")(function* ( const issue: McpSessionRegistryShape["issue"] = Effect.fn("McpSessionRegistry.issue")( function* (request) { const issuedAt = yield* currentTimeMillis; - const providerSessionId = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const providerSessionId = yield* crypto.randomUUIDv4().pipe(Effect.orDie); const rawToken = yield* crypto.randomBytes(32).pipe(Effect.map(tokenFromBytes), Effect.orDie); const tokenHash = yield* hashToken(rawToken); const browserToolsAvailable = request.browserToolsAvailable ?? true; diff --git a/apps/server/src/mcp/OrchestratorMcpService.ts b/apps/server/src/mcp/OrchestratorMcpService.ts index 9a0575a85e302cf9da10800edf7862d0718f35e2..20607c8292aa5d4540391d1c4aac149c62c3a929 100644 --- a/apps/server/src/mcp/OrchestratorMcpService.ts +++ b/apps/server/src/mcp/OrchestratorMcpService.ts @@ -1322,7 +1322,7 @@ const make = Effect.gen(function* () { const requestKey = (clientRequestId: string | undefined): Effect.Effect => clientRequestId === undefined - ? crypto.randomUUIDv4.pipe(Effect.orDie) + ? crypto.randomUUIDv4().pipe(Effect.orDie) : Effect.succeed(clientRequestId); const readTask = ( diff --git a/apps/server/src/mcp/PreviewAutomationBroker.ts b/apps/server/src/mcp/PreviewAutomationBroker.ts index 478632422152c5a05100ca0604fdcacb03b8fa17..c3d17ffad2fc6462f804073c5defd732a176a35f 100644 --- a/apps/server/src/mcp/PreviewAutomationBroker.ts +++ b/apps/server/src/mcp/PreviewAutomationBroker.ts @@ -403,7 +403,7 @@ export const make = Effect.gen(function* PreviewAutomationBrokerMake() { ) { const clientId = host.clientId; const queue = yield* Queue.unbounded(); - const connectionId = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const connectionId = yield* crypto.randomUUIDv4().pipe(Effect.orDie); yield* Queue.offer(queue, { type: "connected", connectionId }); const connection: ClientConnection = { clientId, diff --git a/apps/server/src/mcp/ThreadMetadataMcpService.ts b/apps/server/src/mcp/ThreadMetadataMcpService.ts index 22402b65394602fc6307695fb784377b5d150168..a997e2ede472a9605e03b0b449e52974ad476ef7 100644 --- a/apps/server/src/mcp/ThreadMetadataMcpService.ts +++ b/apps/server/src/mcp/ThreadMetadataMcpService.ts @@ -171,7 +171,7 @@ const make = Effect.gen(function* () { .pipe(Effect.mapError(threadLookupFailure)); const requestKey = input.clientRequestId === undefined - ? yield* crypto.randomUUIDv4.pipe(Effect.orDie) + ? yield* crypto.randomUUIDv4().pipe(Effect.orDie) : input.clientRequestId; const updateCommandId = commandId({ scope, diff --git a/apps/server/src/mcp/WorktreeMcpService.ts b/apps/server/src/mcp/WorktreeMcpService.ts index 06eb43f41e6cdefd8d5efa6cb6e96c1a312fd9d6..6c471249c323f04d9edbd943ba8b801bee245d5c 100644 --- a/apps/server/src/mcp/WorktreeMcpService.ts +++ b/apps/server/src/mcp/WorktreeMcpService.ts @@ -127,7 +127,7 @@ const make = Effect.gen(function* () { ); const handoffIds = (scope: McpThreadInvocationScope) => - crypto.randomUUIDv4.pipe( + crypto.randomUUIDv4().pipe( Effect.map((uuid) => { const part = (kind: string, operation: string) => [kind, "mcp", encodeURIComponent(scope.thread.providerSessionId), operation, uuid].join( diff --git a/apps/server/src/mcp/threadAccess.ts b/apps/server/src/mcp/threadAccess.ts index 93a8f107bd27336c6751b1da4be9f991ee45fba4..ca9d8d8a320954105b02c4025f6218e52bc4e1d1 100644 --- a/apps/server/src/mcp/threadAccess.ts +++ b/apps/server/src/mcp/threadAccess.ts @@ -204,5 +204,5 @@ export const readThread = Effect.fn("mcp.readThread")(function* < export const newCommandId = Effect.fn("mcp.newCommandId")(function* () { const crypto = yield* Crypto.Crypto; - return CommandId.make(`mcp:${yield* crypto.randomUUIDv4.pipe(Effect.orDie)}`); + return CommandId.make(`mcp:${yield* crypto.randomUUIDv4().pipe(Effect.orDie)}`); }); diff --git a/apps/server/src/mcp/toolkits/pullRequests/handlers.ts b/apps/server/src/mcp/toolkits/pullRequests/handlers.ts index c7213e782c813099756bdd3f2b855813f541826e..3f790d8b4fa53b561f194b3f68d48d23dd3b637c 100644 --- a/apps/server/src/mcp/toolkits/pullRequests/handlers.ts +++ b/apps/server/src/mcp/toolkits/pullRequests/handlers.ts @@ -205,7 +205,7 @@ const make = Effect.gen(function* () { const crypto = yield* Crypto.Crypto; const commandId = (tag: string, threadId: ThreadId) => - crypto.randomUUIDv4.pipe( + crypto.randomUUIDv4().pipe( Effect.orDie, Effect.map((uuid) => CommandId.make(`server:${tag}:${threadId}:${uuid}`)), ); diff --git a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts index de9254aeaf71c65a49192b675557df102eacd54e..7680b250bb508873860b94da132dd5a5c83bab1c 100644 --- a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts +++ b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.testkit.ts @@ -1588,7 +1588,7 @@ async function recordClaudeStreamingQuery(input: { text: prompt, uuid: await Effect.runPromise( Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.filterOrFail(ClaudeAdapterV2.isClaudePromptUuid), Effect.provide(NodeServices.layer), ), diff --git a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts index 7aff6b96eb5d7ac4bc79cf6529b31f97565db136..b27e060fb4b32d7f7cfcfcddd05715fa8c46502f 100644 --- a/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts +++ b/apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts @@ -663,9 +663,9 @@ export const layerQueryRunner: Layer.Layer< const agentScope = yield* AgentScope; return ClaudeAgentSdkQueryRunner.of({ - allocateSessionId: crypto.randomUUIDv4.pipe( - Effect.mapError((cause) => queryRunnerError(cause, "allocateSessionId")), - ), + allocateSessionId: crypto + .randomUUIDv4() + .pipe(Effect.mapError((cause) => queryRunnerError(cause, "allocateSessionId"))), open: Effect.fn("ClaudeAgentSdkQueryRunner.open")(function* ( input: ClaudeAgentSdkQueryOpenInput, ) { @@ -8499,7 +8499,7 @@ export const makeClaudeAdapterV2 = Effect.fn("makeClaudeAdapterV2")(function* ( // a uuid derived from run ids can repeat. const promptUuid = isClaudeProviderContinuationTurn(turnInput) ? null - : yield* crypto.randomUUIDv4.pipe( + : yield* crypto.randomUUIDv4().pipe( Effect.filterOrFail(isClaudePromptUuid), Effect.mapError( (cause) => diff --git a/apps/server/src/orchestration-v2/PullRequestSyncReactor.ts b/apps/server/src/orchestration-v2/PullRequestSyncReactor.ts index a966cbd954561dac945e572e4c9d8f290242279f..b1fe998c229608a49519a5d3c3e56d9e32203022 100644 --- a/apps/server/src/orchestration-v2/PullRequestSyncReactor.ts +++ b/apps/server/src/orchestration-v2/PullRequestSyncReactor.ts @@ -247,7 +247,7 @@ export const make = Effect.gen(function* () { } const url = siblingPullRequestUrl(link.url, layer.number); if (url === null) continue; - const uuid = yield* crypto.randomUUIDv4; + const uuid = yield* crypto.randomUUIDv4(); yield* engine.dispatch({ type: "thread.pull-request.link", commandId: CommandId.make(`server:pr-stack-link:${thread.id}:${uuid}`), @@ -259,7 +259,7 @@ export const make = Effect.gen(function* () { linkedThisSweep.add(dedupeKey); } if (changed) { - const uuid = yield* crypto.randomUUIDv4; + const uuid = yield* crypto.randomUUIDv4(); yield* engine.dispatch({ type: "thread.pull-request-link.sync", commandId: CommandId.make(`server:pr-sync:${thread.id}:${uuid}`), diff --git a/apps/server/src/orchestration-v2/PullRequestWatchReactor.ts b/apps/server/src/orchestration-v2/PullRequestWatchReactor.ts index 5a5f61ae3c4da8ca89eca2bd8988710d58e02508..4bbfbb27eb62b1ad76a33ea5af9e49333853c210 100644 --- a/apps/server/src/orchestration-v2/PullRequestWatchReactor.ts +++ b/apps/server/src/orchestration-v2/PullRequestWatchReactor.ts @@ -309,7 +309,7 @@ export const make = Effect.gen(function* () { wake?: { readonly text: string; readonly notification: OrchestrationV2Notification }, ) => Effect.gen(function* () { - const uuid = yield* crypto.randomUUIDv4; + const uuid = yield* crypto.randomUUIDv4(); yield* engine.dispatch({ type: "thread.pull-request-watch.sync", commandId: CommandId.make(`server:pr-watch:${target.thread.id}:${uuid}`), diff --git a/apps/server/src/orchestration-v2/ThreadPullRequestService.ts b/apps/server/src/orchestration-v2/ThreadPullRequestService.ts index 7385f3ff5d25cf97ad6d591579751cfc531efc79..71d884fc1819185f62dc56297a2018b0be22a5d3 100644 --- a/apps/server/src/orchestration-v2/ThreadPullRequestService.ts +++ b/apps/server/src/orchestration-v2/ThreadPullRequestService.ts @@ -308,7 +308,7 @@ export const make = Effect.gen(function* () { if (!projectWorkspaceMatchesSnapshot(currentProject, project.workspaceRoot)) { return failBackfill([thread]); } - const uuid = yield* crypto.randomUUIDv4; + const uuid = yield* crypto.randomUUIDv4(); yield* orchestrator.dispatch({ type: "thread.pull-request.sync", commandId: CommandId.make(`server:thread-pull-request:${thread.id}:${uuid}`), diff --git a/apps/server/src/orchestration-v2/ThreadSettlementService.ts b/apps/server/src/orchestration-v2/ThreadSettlementService.ts index 8b55e25cdc393f9b65a50428964b31b736b9fadd..0eb779639116b0fa67d991f047d8637d262159e3 100644 --- a/apps/server/src/orchestration-v2/ThreadSettlementService.ts +++ b/apps/server/src/orchestration-v2/ThreadSettlementService.ts @@ -345,7 +345,7 @@ export const make = Effect.gen(function* () { autoSettleOnMerge: currentSettings.sidebarAutoSettleOnMerge, }); if (settledAt === null) return thread; - const uuid = yield* crypto.randomUUIDv4; + const uuid = yield* crypto.randomUUIDv4(); yield* orchestrator.dispatch({ type: "thread.auto-settle", commandId: CommandId.make(`server:auto-settle:${thread.id}:${uuid}`), diff --git a/apps/server/src/preview/Manager.ts b/apps/server/src/preview/Manager.ts index 9420e07a5a3a7b31fd46b14b81058d7a73986edb..c5124a1442e5cb5c7a8ace5d0b6ea390addc0de6 100644 --- a/apps/server/src/preview/Manager.ts +++ b/apps/server/src/preview/Manager.ts @@ -140,7 +140,7 @@ const currentIsoTimestamp = DateTime.now.pipe(Effect.map(DateTime.formatIso)); /** @public Service construction is part of the canonical Effect module API. */ export const make = Effect.gen(function* PreviewManagerMake() { const crypto = yield* Crypto.Crypto; - const serverEpoch = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const serverEpoch = yield* crypto.randomUUIDv4().pipe(Effect.orDie); const stateRef = yield* SynchronizedRef.make(initialState); // Unbounded PubSub is fine here — events are tiny and we don't want to // block publishers if a subscriber is slow. WS clients backpressure on @@ -479,7 +479,7 @@ export const make = Effect.gen(function* PreviewManagerMake() { ...session.snapshot, reveal: true, revealRequest: { - id: yield* crypto.randomUUIDv4.pipe(Effect.orDie), + id: yield* crypto.randomUUIDv4().pipe(Effect.orDie), force: input.force, }, updatedAt: yield* currentIsoTimestamp, diff --git a/apps/server/src/project/ManagedProjectFolders.ts b/apps/server/src/project/ManagedProjectFolders.ts index 912f2dbda702985e383494815c7f73f8b3fc5315..5a394b8206c2cbfe699fd872abd5daf0917b8d25 100644 --- a/apps/server/src/project/ManagedProjectFolders.ts +++ b/apps/server/src/project/ManagedProjectFolders.ts @@ -308,9 +308,9 @@ const make = Effect.gen(function* () { ); // Re-made on every call, so a deleted Scratch folder still runs threads. yield* makeScratchFolder(workspaceRoot); - const id = yield* crypto.randomUUIDv4.pipe( - Effect.mapError((cause) => new ScratchProjectError({ workspaceRoot, cause })), - ); + const id = yield* crypto + .randomUUIDv4() + .pipe(Effect.mapError((cause) => new ScratchProjectError({ workspaceRoot, cause }))); const bootstrapped = yield* projects .bootstrap({ commandId: CommandId.make(`scratch-project:${id}`), @@ -379,7 +379,7 @@ const make = Effect.gen(function* () { ? Effect.succeed(Option.some(folderFor(id.slice(-8)))) : attempt === 2 ? Effect.succeed(Option.some(fullFolder)) - : crypto.randomUUIDv4.pipe( + : crypto.randomUUIDv4().pipe( Effect.map((uuid) => Option.some(`${fullFolder}-${uuid.slice(0, 8)}`)), Effect.mapError((cause) => new ScratchFolderError({ folder: fullFolder, cause })), ), @@ -480,9 +480,9 @@ const make = Effect.gen(function* () { scaffoldRepository(workspaceRoot, input.name).pipe( Effect.mapError((cause) => new NamedProjectFolderError({ folder: workspaceRoot, cause })), ), - crypto.randomUUIDv4.pipe( - Effect.mapError((cause) => new NamedProjectCreateError({ workspaceRoot, cause })), - ), + crypto + .randomUUIDv4() + .pipe(Effect.mapError((cause) => new NamedProjectCreateError({ workspaceRoot, cause }))), ]).pipe(Effect.onExit((exit) => (Exit.isSuccess(exit) ? Effect.void : removeFolder))); const [commitError, id] = prepared; const project = yield* projects diff --git a/apps/server/src/project/ProjectSetupScriptRunner.ts b/apps/server/src/project/ProjectSetupScriptRunner.ts index c96f88087865b5aa663de1654d949007b58619f0..724b542f526dddaf68c9690cfdaf69a2fda0521a 100644 --- a/apps/server/src/project/ProjectSetupScriptRunner.ts +++ b/apps/server/src/project/ProjectSetupScriptRunner.ts @@ -380,7 +380,7 @@ export const make = Effect.gen(function* () { const terminalId = input.preferredTerminalId ?? (trigger === "settle" - ? `settle-${script.id}-${(yield* crypto.randomUUIDv4.pipe(Effect.orDie)).slice(0, 8)}` + ? `settle-${script.id}-${(yield* crypto.randomUUIDv4().pipe(Effect.orDie)).slice(0, 8)}` : `setup-${script.id}`); const cwd = input.worktreePath; const env = { @@ -395,7 +395,7 @@ export const make = Effect.gen(function* () { }; const observe = input.observeCompletion; const completionToken = observe - ? (yield* crypto.randomUUIDv4.pipe(Effect.orDie)).replaceAll("-", "") + ? (yield* crypto.randomUUIDv4().pipe(Effect.orDie)).replaceAll("-", "") : null; const commandLine = observe && completionToken diff --git a/apps/server/src/provider/AntigravityAuth.ts b/apps/server/src/provider/AntigravityAuth.ts index d711abe7c1dc5118e9fd0dbf170eade9bfa0d4ee..426bca64bc8a925c65c7170ba35a9375e780e933 100644 --- a/apps/server/src/provider/AntigravityAuth.ts +++ b/apps/server/src/provider/AntigravityAuth.ts @@ -349,11 +349,13 @@ export const makeAntigravityAuth = Effect.fn("makeAntigravityAuth")(function* < if (operation !== "idle") { return yield* setupError("start", "Antigravity setup is already in progress."); } - const flowId = yield* crypto.randomUUIDv4.pipe( - Effect.mapError(() => - setupError("start", "Could not start Google sign-in. Try again."), - ), - ); + const flowId = yield* crypto + .randomUUIDv4() + .pipe( + Effect.mapError(() => + setupError("start", "Could not start Google sign-in. Try again."), + ), + ); const expiresAtMillis = (yield* Clock.currentTimeMillis) + AUTH_TIMEOUT_MS; const state: ProviderAuthState = { ...emptyState, diff --git a/apps/server/src/provider/AntigravityInstallation.ts b/apps/server/src/provider/AntigravityInstallation.ts index c57200f4afdadd85705e1eb3a5ac3468cbb933d7..b985f0f2b0442c55e737052686e47285c9449ba7 100644 --- a/apps/server/src/provider/AntigravityInstallation.ts +++ b/apps/server/src/provider/AntigravityInstallation.ts @@ -688,7 +688,7 @@ export const makeAntigravityInstallation = Effect.fn("AntigravityInstallation.ma `Google does not publish an Antigravity runtime for ${platform}-${arch}. Use a supported remote environment or a custom executable.`, ); } - const operationId = yield* crypto.randomUUIDv4; + const operationId = yield* crypto.randomUUIDv4(); const next: ProviderInstallState = { driver: DRIVER, operationId, diff --git a/apps/server/src/provider/CodexInstallation.ts b/apps/server/src/provider/CodexInstallation.ts index ecc06e6796ecca73ba11a157561b9f2c28e2a5fb..9bd746c608ae61b344d9ecd4169e539f2653b519 100644 --- a/apps/server/src/provider/CodexInstallation.ts +++ b/apps/server/src/provider/CodexInstallation.ts @@ -576,7 +576,7 @@ export const makeCodexInstallation = Effect.fn("makeCodexInstallation")(function `OpenAI does not publish a Codex runtime for ${platform}-${arch}. Use a supported remote environment or a custom executable.`, ); } - const operationId = yield* crypto.randomUUIDv4; + const operationId = yield* crypto.randomUUIDv4(); const next: ProviderInstallState = { driver: DRIVER, operationId, diff --git a/apps/server/src/provider/resetCreditCoordinator.ts b/apps/server/src/provider/resetCreditCoordinator.ts index f7a772e0c6f2b00baa5cdc0699dc833e6a588be5..94a14efd5af71bb72f3d22c633712d893c1b411f 100644 --- a/apps/server/src/provider/resetCreditCoordinator.ts +++ b/apps/server/src/provider/resetCreditCoordinator.ts @@ -69,7 +69,7 @@ export const make = Effect.gen(function* () { return yield* state.lock.withPermits(1)( Effect.gen(function* () { const existing = yield* Ref.get(state.pendingKey); - const idempotencyKey = existing ?? (yield* crypto.randomUUIDv4); + const idempotencyKey = existing ?? (yield* crypto.randomUUIDv4()); yield* Ref.set(state.pendingKey, idempotencyKey); const outcome = yield* consume(idempotencyKey).pipe( Effect.tapError((error) => diff --git a/apps/server/src/pullRequest/PullRequestReadCache.ts b/apps/server/src/pullRequest/PullRequestReadCache.ts index a749a14031fd36c8b675809af9264be158d38bb3..b668567722029ea48816063168ef684715c9e02a 100644 --- a/apps/server/src/pullRequest/PullRequestReadCache.ts +++ b/apps/server/src/pullRequest/PullRequestReadCache.ts @@ -162,7 +162,7 @@ export const make = Effect.gen(function* () { const next = Object.fromEntries( Object.entries(current).filter(([, value]) => value.expiresAt > now), ); - next[scope] = { revision: yield* crypto.randomUUIDv4, expiresAt: now + 60_000 }; + next[scope] = { revision: yield* crypto.randomUUIDv4(), expiresAt: now + 60_000 }; const encoded = yield* Schema.encodeEffect(revisionCodec)(next); yield* backing.set("revisions", encoded); yield* Cache.set(revisions, undefined, next); diff --git a/apps/server/src/relay/AgentAwarenessRelay.ts b/apps/server/src/relay/AgentAwarenessRelay.ts index f4d3e7b5772380634e84bbb8b6b15f0fee3ea1e1..55ddeac252c256ca7433a89e0d1cd8d959a91f82 100644 --- a/apps/server/src/relay/AgentAwarenessRelay.ts +++ b/apps/server/src/relay/AgentAwarenessRelay.ts @@ -489,7 +489,7 @@ export const make = Effect.gen(function* () { environmentId, threadId, state: input.state, - jti: yield* crypto.randomUUIDv4, + jti: yield* crypto.randomUUIDv4(), }); yield* Effect.logInfo("publishing agent activity for thread", { diff --git a/apps/server/src/resourceTelemetry/NativeTelemetryClient.ts b/apps/server/src/resourceTelemetry/NativeTelemetryClient.ts index 5630467655f8d8b5b34862d35b3935617bf94135..ec8168a69cd4f474a8ee36c77f4385342c3fa476 100644 --- a/apps/server/src/resourceTelemetry/NativeTelemetryClient.ts +++ b/apps/server/src/resourceTelemetry/NativeTelemetryClient.ts @@ -862,7 +862,7 @@ export const make = Effect.fn("resourceTelemetry.nativeTelemetryClient.make")(fu reason: Option.getOrElse(current.lastError, () => "sidecar is not running"), }); } - const requestId = yield* crypto.randomUUIDv4.pipe( + const requestId = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new NativeTelemetryCommandFailed({ @@ -921,7 +921,7 @@ export const make = Effect.fn("resourceTelemetry.nativeTelemetryClient.make")(fu }); } - const requestId = yield* crypto.randomUUIDv4.pipe( + const requestId = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new NativeTelemetryCommandFailed({ @@ -976,11 +976,13 @@ export const make = Effect.fn("resourceTelemetry.nativeTelemetryClient.make")(fu }); } - const requestId = yield* crypto.randomUUIDv4.pipe( - Effect.mapError( - (cause) => new NativeTelemetryCommandFailed({ operation: "createRequestId", cause }), - ), - ); + const requestId = yield* crypto + .randomUUIDv4() + .pipe( + Effect.mapError( + (cause) => new NativeTelemetryCommandFailed({ operation: "createRequestId", cause }), + ), + ); const deferred = yield* Deferred.make< ReadonlyArray, NativeTelemetryClientError diff --git a/apps/server/src/scheduledTasks/ScheduledTaskService.ts b/apps/server/src/scheduledTasks/ScheduledTaskService.ts index 51403c124a982bb2eac2bcaba7bce5c0e3aeae2f..086de6ee925837b01ba625de1a4d5f24d40cf55f 100644 --- a/apps/server/src/scheduledTasks/ScheduledTaskService.ts +++ b/apps/server/src/scheduledTasks/ScheduledTaskService.ts @@ -1003,11 +1003,13 @@ export const layer = Layer.effect( const now = yield* localNow; const uuid = input.commandId === undefined - ? yield* crypto.randomUUIDv4.pipe( - Effect.mapError((cause) => - taskError("Could not generate schedule task id.", { cause }), - ), - ) + ? yield* crypto + .randomUUIDv4() + .pipe( + Effect.mapError((cause) => + taskError("Could not generate schedule task id.", { cause }), + ), + ) : null; const id = input.id ?? @@ -1457,9 +1459,13 @@ export const layer = Layer.effect( observeDelivery(request, outcome, receivedAt, now); const deliveryId = ScheduledTaskWebhookDeliveryId.make( request.relayDeliveryId === undefined - ? `delivery:${yield* crypto.randomUUIDv4.pipe( - Effect.mapError((cause) => taskError("Could not generate delivery id.", { cause })), - )}` + ? `delivery:${yield* crypto + .randomUUIDv4() + .pipe( + Effect.mapError((cause) => + taskError("Could not generate delivery id.", { cause }), + ), + )}` : `delivery:relay:${request.relayDeliveryId}`, ); // A held request may already have reached this environment directly diff --git a/apps/server/src/serverRuntimeStartup.ts b/apps/server/src/serverRuntimeStartup.ts index 88aa4298c5961411a64b67ca82a3ff03591a57ea..db17bcecde649628d7b463e0353c0eb868476c64 100644 --- a/apps/server/src/serverRuntimeStartup.ts +++ b/apps/server/src/serverRuntimeStartup.ts @@ -257,7 +257,7 @@ export const resolveWelcomeBase = Effect.gen(function* () { const resolveAutoBootstrapWelcomeTargets = Effect.gen(function* () { const crypto = yield* Crypto.Crypto; - const randomUUID = crypto.randomUUIDv4; + const randomUUID = crypto.randomUUIDv4(); const serverConfig = yield* ServerConfig.ServerConfig; const projects = yield* ProjectService.ProjectService; const threads = yield* ThreadManagement.ThreadManagementService; diff --git a/apps/server/src/telemetry/AnalyticsService.ts b/apps/server/src/telemetry/AnalyticsService.ts index 86497975958880765662ad841fb29ec2bea8eae6..752cf6f7ebae158615bc16c1c5b4063de59e7072 100644 --- a/apps/server/src/telemetry/AnalyticsService.ts +++ b/apps/server/src/telemetry/AnalyticsService.ts @@ -263,7 +263,7 @@ export const make = Effect.gen(function* () { // Telemetry is best effort: an event without a uuid is not sent. The // Node implementation throws (a defect) rather than failing, so catch both. - const uuid = yield* Effect.exit(crypto.randomUUIDv7); + const uuid = yield* Effect.exit(crypto.randomUUIDv7()); if (Exit.isFailure(uuid)) return; const enqueueResult = yield* enqueueBufferedEvent(uuid.value, event, properties); diff --git a/apps/server/src/telemetry/Identify.ts b/apps/server/src/telemetry/Identify.ts index 6704300f87a4dec88f45e8aafd77bc7487137e95..6fd75eb25231644d553c4e5d28bae97cda81c853 100644 --- a/apps/server/src/telemetry/Identify.ts +++ b/apps/server/src/telemetry/Identify.ts @@ -231,7 +231,7 @@ const upsertAnonymousId = Effect.gen(function* () { } const anonymousId = yield* Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.mapError( (cause) => new TelemetryAnonymousIdGenerationError({ diff --git a/apps/server/src/vcs/GitVcsDriver.ts b/apps/server/src/vcs/GitVcsDriver.ts index 61f8c824031a397cd597cb6cc5b22fa8f792886f..05f265cd79bb27020827b174b7118aeafe7a8b05 100644 --- a/apps/server/src/vcs/GitVcsDriver.ts +++ b/apps/server/src/vcs/GitVcsDriver.ts @@ -822,7 +822,7 @@ export const makeVcsDriverShape = Effect.fn("makeGitVcsDriverShape")(function* ( "sparse.expectFilesOutsideOfPatterns=false", ]; const gitCommonDir = yield* resolveGitCommonDir(input.cwd); - const indexId = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const indexId = yield* crypto.randomUUIDv4().pipe(Effect.orDie); const tempIndexPath = path.join(gitCommonDir, `t3-checkpoint-index-${indexId}`); const commitEnv: NodeJS.ProcessEnv = { ...process.env, diff --git a/apps/server/src/ws.ts b/apps/server/src/ws.ts index e6bb4cab906aa9b324932dfcb0cf7090130f52b2..96994ee37c1301a99e59e3ba026871340b1a2a1a 100644 --- a/apps/server/src/ws.ts +++ b/apps/server/src/ws.ts @@ -1250,7 +1250,7 @@ const layerWsRpc = ( const orchestrationEngine = yield* Orchestrator.OrchestratorV2; const crypto = yield* Crypto.Crypto; const serverCommandId = (tag: string) => - crypto.randomUUIDv4.pipe( + crypto.randomUUIDv4().pipe( Effect.orDie, Effect.map((id) => CommandId.make(`server:${tag}:${id}`)), ); @@ -1494,7 +1494,7 @@ const layerWsRpc = ( provider?.models.find((candidate) => candidate.isDefault)?.slug ?? provider?.models[0]?.slug ?? "default"; - const commandId = CommandId.make(yield* crypto.randomUUIDv4.pipe(Effect.orDie)); + const commandId = CommandId.make(yield* crypto.randomUUIDv4().pipe(Effect.orDie)); const launched = yield* Effect.result( startup.enqueueCommand( threadLaunch.launch({ diff --git a/apps/web/src/cloud/dpop.ts b/apps/web/src/cloud/dpop.ts index cf5d4a68fb23b4936dbae179d49ec52751b267ec..2569108563b3a1a5048c448037337f1b4e6cd179 100644 --- a/apps/web/src/cloud/dpop.ts +++ b/apps/web/src/cloud/dpop.ts @@ -160,7 +160,7 @@ export function createBrowserDpopProof(input: { normalizedUrl.search = ""; normalizedUrl.hash = ""; const jti = yield* Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.mapError((cause) => dpopError("Could not generate DPoP proof identifier.", cause)), ); const proof = yield* Effect.tryPromise({ diff --git a/infra/relay/src/agentActivity/ApnsDeliveryQueue.ts b/infra/relay/src/agentActivity/ApnsDeliveryQueue.ts index 3ca6873dddab9d9c12e1170a553910d5eee5aa51..ed75b3a877c93db351d68cffde1bf6eb89c153c5 100644 --- a/infra/relay/src/agentActivity/ApnsDeliveryQueue.ts +++ b/infra/relay/src/agentActivity/ApnsDeliveryQueue.ts @@ -89,7 +89,7 @@ export const make = Effect.gen(function* () { "relay.delivery.kind": input.kind, }); const now = yield* DateTime.now; - const jobId = yield* crypto.randomUUIDv4.pipe( + const jobId = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new ApnsDeliveryQueueSendError({ @@ -148,7 +148,7 @@ export const make = Effect.gen(function* () { "relay.thread_id": input.notification.threadId, }); const now = yield* DateTime.now; - const jobId = yield* crypto.randomUUIDv4.pipe( + const jobId = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new ApnsDeliveryQueueSendError({ diff --git a/infra/relay/src/agentActivity/DeliveryAttempts.ts b/infra/relay/src/agentActivity/DeliveryAttempts.ts index bcd9b37420fbcca053084e8691e4ab0feddacb48..3e938617a5bed6bf970da6b10312a51aa479036d 100644 --- a/infra/relay/src/agentActivity/DeliveryAttempts.ts +++ b/infra/relay/src/agentActivity/DeliveryAttempts.ts @@ -117,7 +117,7 @@ export const make = Effect.gen(function* () { ...(input.threadId ? { "relay.thread_id": input.threadId } : {}), }); yield* Effect.gen(function* () { - const id = yield* crypto.randomUUIDv4; + const id = yield* crypto.randomUUIDv4(); const createdAt = DateTime.formatIso(yield* DateTime.now); yield* db.insert(relayDeliveryAttempts).values(insertValues(input, id, createdAt)); }).pipe( @@ -145,7 +145,7 @@ export const make = Effect.gen(function* () { ...(input.threadId ? { "relay.thread_id": input.threadId } : {}), }); return yield* Effect.gen(function* () { - const id = yield* crypto.randomUUIDv4; + const id = yield* crypto.randomUUIDv4(); const now = yield* DateTime.now; const createdAt = DateTime.formatIso(now); const inserted = yield* db diff --git a/infra/relay/src/environments/EnvironmentConnector.ts b/infra/relay/src/environments/EnvironmentConnector.ts index 9d06b8b074a9843c79be6c0b7d9aa45cf28d97a0..6a41bcdde02651e96d1c20d97a8204ac445165ea 100644 --- a/infra/relay/src/environments/EnvironmentConnector.ts +++ b/infra/relay/src/environments/EnvironmentConnector.ts @@ -449,7 +449,7 @@ const make = Effect.gen(function* () { }); const now = yield* DateTime.now; const expiresAt = DateTime.add(now, { minutes: 2 }); - const nonce = yield* crypto.randomUUIDv4.pipe( + const nonce = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new EnvironmentMintRequestFailed({ @@ -463,7 +463,7 @@ const make = Effect.gen(function* () { iss: relayIssuer, aud: `t3-env:${link.environmentId}`, sub: input.userId, - jti: yield* crypto.randomUUIDv4.pipe( + jti: yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new EnvironmentMintRequestFailed({ @@ -606,7 +606,7 @@ const make = Effect.gen(function* () { }); const now = yield* DateTime.now; const expiresAt = DateTime.add(now, { minutes: 2 }); - const nonce = yield* crypto.randomUUIDv4.pipe( + const nonce = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new EnvironmentMintRequestFailed({ @@ -620,7 +620,7 @@ const make = Effect.gen(function* () { iss: relayIssuer, aud: `t3-env:${link.environmentId}`, sub: input.userId, - jti: yield* crypto.randomUUIDv4.pipe( + jti: yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new EnvironmentMintRequestFailed({ diff --git a/infra/relay/src/environments/EnvironmentCredentials.ts b/infra/relay/src/environments/EnvironmentCredentials.ts index aa8a8a179083853adfabce79e7fffc6aff4022f0..86938a47eb8de518a6f13132872767ff44db1a43 100644 --- a/infra/relay/src/environments/EnvironmentCredentials.ts +++ b/infra/relay/src/environments/EnvironmentCredentials.ts @@ -87,8 +87,9 @@ const make = Effect.gen(function* () { const hashToken = (token: string) => crypto.digest("SHA-256", new TextEncoder().encode(token)).pipe(Effect.map(Base64Url.encode)); const randomTokenPart = (segments: number) => - Effect.map(Effect.all(Array.from({ length: segments }, () => crypto.randomUUIDv4)), (values) => - values.join("").replaceAll("-", ""), + Effect.map( + Effect.all(Array.from({ length: segments }, () => crypto.randomUUIDv4())), + (values) => values.join("").replaceAll("-", ""), ); const makeCredential = Effect.fnUntraced(function* () { const credentialId = yield* randomTokenPart(2); diff --git a/infra/relay/src/hooks/HookForwarder.ts b/infra/relay/src/hooks/HookForwarder.ts index 1114063a12aaacc214ef9137862fc1289c13b210..5fffd86cda95568ac81fee79856e4d2690d2e5d9 100644 --- a/infra/relay/src/hooks/HookForwarder.ts +++ b/infra/relay/src/hooks/HookForwarder.ts @@ -342,7 +342,7 @@ const make = Effect.gen(function* () { // One id per request, so a request that reached the environment before a // timeout and is later delivered from the inbox runs only once. yield* Effect.annotateCurrentSpan({ "relay.hook.body_bytes": body.success.byteLength }); - const deliveryId = yield* crypto.randomUUIDv4.pipe(Effect.orDie); + const deliveryId = yield* crypto.randomUUIDv4().pipe(Effect.orDie); // Proves to the environment that this delivery id, receive time and // trace context came from the relay. Signed once here and stored with a // held request, so the inbox never needs the signing key. @@ -351,7 +351,7 @@ const make = Effect.gen(function* () { deliveryId, receivedAt, hookId: parsed.hookId, - jti: yield* crypto.randomUUIDv4.pipe(Effect.orDie), + jti: yield* crypto.randomUUIDv4().pipe(Effect.orDie), }); const hook = { id: deliveryId, diff --git a/infra/relay/src/http/Api.ts b/infra/relay/src/http/Api.ts index 69a48f8f6b810eeeaf2ca22132f36e52b9425220..6a4ec0ce4e23db0a9f497a340c86fe4f348db254 100644 --- a/infra/relay/src/http/Api.ts +++ b/infra/relay/src/http/Api.ts @@ -937,9 +937,9 @@ export const layerClientApi = HttpApiBuilder.group( const { userId } = yield* RelayClientPrincipal; const now = yield* DateTime.now; const expiresAt = DateTime.add(now, { minutes: 5 }); - const jti = yield* crypto.randomUUIDv4.pipe( - Effect.catch(() => relayInternalErrorResponse("internal_error")), - ); + const jti = yield* crypto + .randomUUIDv4() + .pipe(Effect.catch(() => relayInternalErrorResponse("internal_error"))); const challenge = yield* relayTokens .issueLinkChallenge({ userId, @@ -1028,9 +1028,9 @@ export const layerTokenApi = HttpApiBuilder.group( ); const now = yield* DateTime.now; const expiresAt = DateTime.addDuration(now, RelayTokens.RELAY_DPOP_ACCESS_TOKEN_TTL); - const jti = yield* crypto.randomUUIDv4.pipe( - Effect.catch(() => relayInternalErrorResponse("internal_error")), - ); + const jti = yield* crypto + .randomUUIDv4() + .pipe(Effect.catch(() => relayInternalErrorResponse("internal_error"))); return { access_token: yield* relayTokens .issueDpopAccessToken({ diff --git a/packages/client-runtime/src/operations/commands.ts b/packages/client-runtime/src/operations/commands.ts index 08047638c1d5fe099c7ab51190f8ccd678f2a574..83ca6b4f663a823374e6d7f84cfc9a359e7d0b58 100644 --- a/packages/client-runtime/src/operations/commands.ts +++ b/packages/client-runtime/src/operations/commands.ts @@ -267,7 +267,7 @@ const allocateCommandId = Effect.fn("EnvironmentCommands.allocateCommandId")(fun ) { if (input.commandId !== undefined) return input.commandId; const crypto = yield* Crypto.Crypto; - return CommandId.make(yield* crypto.randomUUIDv4.pipe(Effect.orDie)); + return CommandId.make(yield* crypto.randomUUIDv4().pipe(Effect.orDie)); }); const dispatch = (command: OrchestrationV2Command) => diff --git a/packages/client-runtime/src/rpc/session.ts b/packages/client-runtime/src/rpc/session.ts index 9f83e7c6019dcffc8af7b81747637f2451cf2b53..62410d7c6c5b80f23011aff49ba4adbe26cff512 100644 --- a/packages/client-runtime/src/rpc/session.ts +++ b/packages/client-runtime/src/rpc/session.ts @@ -175,7 +175,6 @@ export const make = Effect.fn("RpcSessionFactory.make")(function* ( const pingTimedOut = yield* Ref.make(false); const hooks = RpcClient.ConnectionHooks.of({ onConnect: Deferred.succeed(connected, undefined).pipe(Effect.asVoid), - onPingTimeout: Ref.set(pingTimedOut, true), onDisconnect: Effect.all([Deferred.isDone(connected), Ref.get(pingTimedOut)]).pipe( Effect.flatMap(([wasConnected, timedOut]) => Deferred.fail( @@ -204,6 +203,7 @@ export const make = Effect.fn("RpcSessionFactory.make")(function* ( pingTimeout: PING_TIMEOUT, retryTransientErrors: false, retryPolicy: Schedule.recurs(0), + onPingTimeout: Ref.set(pingTimedOut, true), }), ).pipe( Layer.provide( diff --git a/packages/provider-acp-registry/src/server/AcpRegistrySupport.ts b/packages/provider-acp-registry/src/server/AcpRegistrySupport.ts index aeb792b08ca83d32d155dbb518577165bb4fd4e0..f569f62ef64c03bc457d2800ffff2225b8164f68 100644 --- a/packages/provider-acp-registry/src/server/AcpRegistrySupport.ts +++ b/packages/provider-acp-registry/src/server/AcpRegistrySupport.ts @@ -758,7 +758,7 @@ export const makeAcpRegistryCatalog = Effect.fn("AcpRegistryCatalog.make")(funct .pipe(Effect.flatMap(decodeRegistryText), Effect.option); const writeRegistryCache = (text: string) => - crypto.randomUUIDv4.pipe( + crypto.randomUUIDv4().pipe( Effect.flatMap((id) => { const temporaryPath = `${registryCachePath}.${process.pid}-${id}.tmp`; return fileSystem diff --git a/packages/provider-acp/src/server/AcpSessionRuntime.ts b/packages/provider-acp/src/server/AcpSessionRuntime.ts index e40b0c555e5411f19854fb873b8cb1806c753e74..3ae4f8da03e650d888003c2663cc0a9be1c79262 100644 --- a/packages/provider-acp/src/server/AcpSessionRuntime.ts +++ b/packages/provider-acp/src/server/AcpSessionRuntime.ts @@ -1394,7 +1394,7 @@ export const make = ( // Recently shown tool calls. A late update to a finished call is not a new // boundary in the answer, although its progress state is gone. const shownToolCallIds = new Set(); - const assistantItemRuntimeId = yield* crypto.randomUUIDv4.pipe( + const assistantItemRuntimeId = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new EffectAcpErrors.AcpTransportError({ diff --git a/packages/provider-acp/src/server/adapter.ts b/packages/provider-acp/src/server/adapter.ts index 6e125b2318cfc34d8d6d63696e44f9aab649e434..4c748b8a479027bda8a5797171b34d69c8c8643d 100644 --- a/packages/provider-acp/src/server/adapter.ts +++ b/packages/provider-acp/src/server/adapter.ts @@ -6001,7 +6001,7 @@ export const makeAcpAdapterV2 = Effect.fn("makeAcpAdapterV2")(function* ( const mcpBridge = yield* makeAcpMcpOverAcpBridge({ endpoint: mcpContext.endpoint, authorization: mcpContext.authorization, - allocateConnectionId: crypto.randomUUIDv4.pipe(Effect.orDie), + allocateConnectionId: crypto.randomUUIDv4().pipe(Effect.orDie), }); yield* Scope.addFinalizer(scope, mcpBridge.dispose); return mcpBridge; diff --git a/packages/provider-acp/src/server/nativeLogging.ts b/packages/provider-acp/src/server/nativeLogging.ts index b869efe47259670d835443da012c11f1eae4b125..48188838f2b9d78a97f8567b0888ffd6b819758b 100644 --- a/packages/provider-acp/src/server/nativeLogging.ts +++ b/packages/provider-acp/src/server/nativeLogging.ts @@ -137,7 +137,7 @@ export const makeAcpNativeLoggerFactory = Effect.fn("makeAcpNativeLoggerFactory" { observedAt, event: { - id: yield* crypto.randomUUIDv4, + id: yield* crypto.randomUUIDv4(), kind: logInput.kind, provider: input.provider, createdAt: observedAt, diff --git a/packages/provider-core/src/server/maintenanceResolver.test.ts b/packages/provider-core/src/server/maintenanceResolver.test.ts index b0b1be74ee8873695681e864c66075239d03a8e8..c0e3a71b1451d65b7cb68fe61b474ea3d312f2ea 100644 --- a/packages/provider-core/src/server/maintenanceResolver.test.ts +++ b/packages/provider-core/src/server/maintenanceResolver.test.ts @@ -40,7 +40,7 @@ const driver = (value: string) => ProviderDriverKind.make(value); const windowsHost = HostProcess.Platform.defaultValue() === "win32"; const makeTempDir = (name: string) => Crypto.Crypto.pipe( - Effect.flatMap((crypto) => crypto.randomUUIDv4), + Effect.flatMap((crypto) => crypto.randomUUIDv4()), Effect.map((id) => NodePath.join(NodeFS.realpathSync(NodeOS.tmpdir()), `${name}-${id}`)), ); const isNativeTestCommandPath = diff --git a/packages/provider-core/src/server/providerAuthFlow.ts b/packages/provider-core/src/server/providerAuthFlow.ts index b1cdde7637a7da1ba671e3243f5dbaa0390a9594..9f4716a09cd1b4962df5dbb61a81545b237670c5 100644 --- a/packages/provider-core/src/server/providerAuthFlow.ts +++ b/packages/provider-core/src/server/providerAuthFlow.ts @@ -241,7 +241,7 @@ export const make = Effect.fn("ProviderAuthFlow.make")(function* (options: { operation: "start", detail: "Provider setup is already in progress.", }); - const id = yield* crypto.randomUUIDv4.pipe( + const id = yield* crypto.randomUUIDv4().pipe( Effect.mapError( () => new ProviderSetupError({ diff --git a/packages/provider-cursor/src/server/auth.ts b/packages/provider-cursor/src/server/auth.ts index ca1c64d9b2c0d49ac515930cc47ff4952ba64443..514c4a3928905d62a666f4f7ed5a72c2df75886e 100644 --- a/packages/provider-cursor/src/server/auth.ts +++ b/packages/provider-cursor/src/server/auth.ts @@ -320,7 +320,7 @@ export const makeCursorAuth = Effect.fn("makeCursorAuth")(function* (options: Cu operation: "start", detail: "Cursor setup is already in progress.", }); - const id = yield* crypto.randomUUIDv4.pipe( + const id = yield* crypto.randomUUIDv4().pipe( Effect.mapError( (cause) => new ProviderSetupError({ diff --git a/packages/provider-opencode/package.json b/packages/provider-opencode/package.json index 8834800fd6377d4c8658a897f376f878897adbd7..a9553691acae735f2067090d2b46b922f145d75b 100644 --- a/packages/provider-opencode/package.json +++ b/packages/provider-opencode/package.json @@ -50,9 +50,9 @@ }, "dependencies": { "@opencode-ai/sdk": "^1.3.15", - "@opencode/client": "2.0.23", - "@opencode/protocol": "2.0.23", - "@opencode/schema": "2.0.23", + "@opencode/client": "2.0.28", + "@opencode/protocol": "2.0.28", + "@opencode/schema": "2.0.28", "@t3tools/contracts": "workspace:*", "@t3tools/provider-core": "workspace:*", "@t3tools/shared": "workspace:*", diff --git a/packages/provider-opencode/src/server/v2/OpenCode2Client.live.test.ts b/packages/provider-opencode/src/server/v2/OpenCode2Client.live.test.ts index a1d83d3d8eecee995671387844effa22660d34c9..95d399de05df317ef1826368c505ab37e8ff965c 100644 --- a/packages/provider-opencode/src/server/v2/OpenCode2Client.live.test.ts +++ b/packages/provider-opencode/src/server/v2/OpenCode2Client.live.test.ts @@ -91,7 +91,7 @@ describe.runIf(binaryPath !== undefined)("OpenCode2Client live", () => { }); const info = yield* client.server.info(); - assert.strictEqual(info.version, "2.0.23"); + assert.strictEqual(info.version, "2.0.28"); assert.strictEqual(info.pid, server.pid); const session = yield* client.session.create({ diff --git a/packages/shared/src/relayClient.ts b/packages/shared/src/relayClient.ts index 44a2429d42311e6783e34923affaa3cf9533d0df..8dd0a6e3eaecb42debbf8b9edf52b4eccf44e389 100644 --- a/packages/shared/src/relayClient.ts +++ b/packages/shared/src/relayClient.ts @@ -603,7 +603,7 @@ export const makeCloudflaredRelayClient = Effect.fn("cloudflared.make")(function }); } - const stagedPath = `${managedPath}.${yield* crypto.randomUUIDv4}.tmp`; + const stagedPath = `${managedPath}.${yield* crypto.randomUUIDv4()}.tmp`; yield* report("activating"); yield* renameWhenUnlocked(executablePath, stagedPath).pipe( wrapInstallFailure("write_failed", "Could not stage the relay client."), diff --git a/patches/@effect__platform-node-shared@4.0.2.patch b/patches/@effect__platform-node-shared@4.0.2.patch deleted file mode 100644 index f08c7d096bc281ca93d98b7dd4206a13cacb74a1..0000000000000000000000000000000000000000 --- a/patches/@effect__platform-node-shared@4.0.2.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/dist/NodeChildProcessSpawner.js b/dist/NodeChildProcessSpawner.js ---- a/dist/NodeChildProcessSpawner.js -+++ b/dist/NodeChildProcessSpawner.js -@@ -44,9 +44,17 @@ - return false; - } - }; --const taskkill = (childProcess, onExit = () => {}) => NodeChildProcess.execFile("taskkill", ["/pid", String(childProcess.pid), "/T", "/F"], { -- windowsHide: true --}, onExit); -+const taskkill = (childProcess, onExit = () => {}) => { -+ // Once Node observes the leader's exit, taskkill /T cannot reclaim orphaned -+ // descendants through its PID, which may be reused. Skip stale-PID cleanup. -+ if (childProcess.exitCode !== null || childProcess.signalCode !== null) { -+ onExit(null); -+ return; -+ } -+ NodeChildProcess.execFile("taskkill", ["/pid", String(childProcess.pid), "/T", "/F"], { -+ windowsHide: true -+ }, onExit); -+}; - const make = /*#__PURE__*/Effect.gen(function* () { - const fs = yield* FileSystem.FileSystem; - const path = yield* Path.Path; -diff --git a/src/NodeChildProcessSpawner.ts b/src/NodeChildProcessSpawner.ts ---- a/src/NodeChildProcessSpawner.ts -+++ b/src/NodeChildProcessSpawner.ts -@@ -19,7 +19,9 @@ - * `forceKillAfter`, the wait is limited to one second and never escalates. - * With it, cleanup may take the configured duration plus a final one-second - * wait after `SIGKILL`. Zombie descendants can consume either full bound. On -- * Windows, `taskkill` terminates the tree and only the leader's exit is awaited. -+ * Windows, `taskkill` terminates the tree while the leader is running and only -+ * the leader's exit is awaited. Descendants that outlive the leader are not -+ * reclaimed by PID-based cleanup. - * - * POSIX cleanup targets a numeric process-group ID. If the group disappears - * and its ID is reused before cleanup, an unrelated group may be signalled. -@@ -99,13 +101,20 @@ - const taskkill = ( - childProcess: NodeChildProcess.ChildProcess, - onExit: (error: NodeChildProcess.ExecException | null) => void = () => {} --) => -+) => { -+ // Once Node observes the leader's exit, taskkill /T cannot reclaim orphaned -+ // descendants through its PID, which may be reused. Skip stale-PID cleanup. -+ if (childProcess.exitCode !== null || childProcess.signalCode !== null) { -+ onExit(null) -+ return -+ } - NodeChildProcess.execFile( - "taskkill", - ["/pid", String(childProcess.pid!), "/T", "/F"], - { windowsHide: true }, - onExit - ) -+} - - const make = Effect.gen(function*() { - const fs = yield* FileSystem.FileSystem diff --git a/patches/@effect__vitest@4.0.2.patch b/patches/@effect__vitest@4.0.4.patch similarity index 98% rename from patches/@effect__vitest@4.0.2.patch rename to patches/@effect__vitest@4.0.4.patch index 4057b3ffb89bafdec389c337b52bdab3795fe760..8eb3df039746ba8c9399b728e741730a02940bcd 100644 --- a/patches/@effect__vitest@4.0.2.patch +++ b/patches/@effect__vitest@4.0.4.patch @@ -59,7 +59,7 @@ index b97edbe..7dfd64a 100644 // Primitives // ---------------------------- diff --git a/package.json b/package.json -index 7dbb505..38d13cb 100644 +index b78f4d6..8c43672 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,6 @@ @@ -67,7 +67,7 @@ index 7dbb505..38d13cb 100644 }, "peerDependencies": { - "vitest": ">=5.0.0 <6.0.0", - "effect": "^4.0.2" + "effect": "^4.0.4" }, "devDependencies": { diff --git a/src/index.ts b/src/index.ts diff --git a/patches/@opencode__client@2.0.23.patch b/patches/@opencode__client@2.0.23.patch deleted file mode 100644 index c63b6ca08a9cdaf6b54ec99a0f717310cb3e8fda..0000000000000000000000000000000000000000 --- a/patches/@opencode__client@2.0.23.patch +++ /dev/null @@ -1,439 +0,0 @@ -diff --git a/dist/chunks/service-version-21favj1f.js b/dist/chunks/service-version-21favj1f.js -index 3e26e34..56068ac 100644 ---- a/dist/chunks/service-version-21favj1f.js -+++ b/dist/chunks/service-version-21favj1f.js -@@ -22,7 +22,7 @@ __export(exports_client, { - make: () => make2 - }); - import { Cause, Context, Effect, Stream } from "effect"; --import { HttpClient, HttpClientRequest } from "effect/unstable/http"; -+import { HttpClient, HttpClientRequest } from "effect/http"; - var CurrentHeaders = Context.Reference("@opencode/client/effect/rpc/headers", { - defaultValue: () => { - return; -diff --git a/dist/chunks/service-version-7yt87z36.js b/dist/chunks/service-version-7yt87z36.js -index 3559e55..aa2ace8 100644 ---- a/dist/chunks/service-version-7yt87z36.js -+++ b/dist/chunks/service-version-7yt87z36.js -@@ -14,9 +14,9 @@ __export(exports_client2, { - make: () => make3 - }); - import { Effect, Stream, Schema } from "effect"; --import { Sse } from "effect/unstable/encoding"; --import { HttpClientError } from "effect/unstable/http"; --import { HttpApiClient } from "effect/unstable/httpapi"; -+import { Sse } from "effect/encoding"; -+import { HttpClientError } from "effect/http"; -+import { HttpApiClient } from "effect/http-api"; - var mapClientError = (error) => HttpClientError.isHttpClientError(error) || Schema.isSchemaError(error) || Sse.Retry.is(error) ? new ClientError2({ cause: error }) : error; - var preserveEffect = () => (effect) => effect; - var preserveStream = () => (stream) => stream; -diff --git a/dist/effect/client.d.ts b/dist/effect/client.d.ts -index b6ccbb5..98ab36b 100644 ---- a/dist/effect/client.d.ts -+++ b/dist/effect/client.d.ts -@@ -1,6 +1,6 @@ - export * as OpenCode from "./client.js"; - import { Effect, Stream } from "effect"; --import { HttpClient } from "effect/unstable/http"; -+import { HttpClient } from "effect/http"; - import { ClientError } from "./generated/index.js"; - import { RpcClientRuntime } from "./rpc.js"; - import type { RpcCallOptions } from "../promise/rpc.js"; -@@ -2290,239 +2290,239 @@ export declare const make: (options?: { - readonly metadata?: { - readonly [x: string]: unknown; - } | undefined; -- }, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError | import("effect/unstable/encoding/Sse").Retry | import("effect/unstable/encoding/Sse").SseError, never>; -+ }, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError | import("effect/encoding/Sse").Retry | import("effect/encoding/Sse").SseError, never>; - }; -- rpc: RpcClientRuntime.RpcApi & { -- call: (input: import("./api.js").RpcCallInput) => Effect.Effect; -+ rpc: RpcClientRuntime.RpcApi & { -+ call: (input: import("./api.js").RpcCallInput) => Effect.Effect; - }; - server: { -- info: () => Effect.Effect; -- pair: () => Effect.Effect; -- connect: (input: import("./api.js").ServerConnectInput) => Effect.Effect; -+ info: () => Effect.Effect; -+ pair: () => Effect.Effect; -+ connect: (input: import("./api.js").ServerConnectInput) => Effect.Effect; - }; - location: { -- get: (input?: import("./api.js").LocationGetInput) => Effect.Effect; -- reload: () => Effect.Effect; -+ get: (input?: import("./api.js").LocationGetInput) => Effect.Effect; -+ reload: () => Effect.Effect; - }; - agent: { -- list: (input?: import("./api.js").AgentListInput) => Effect.Effect; -- get: (input: import("./api.js").AgentGetInput) => Effect.Effect; -+ list: (input?: import("./api.js").AgentListInput) => Effect.Effect; -+ get: (input: import("./api.js").AgentGetInput) => Effect.Effect; - }; - plugin: { -- list: (input?: import("./api.js").PluginListInput) => Effect.Effect; -- check: (input?: import("./api.js").PluginCheckInput) => Effect.Effect; -- update: (input: import("./api.js").PluginUpdateInput) => Effect.Effect; -+ list: (input?: import("./api.js").PluginListInput) => Effect.Effect; -+ check: (input?: import("./api.js").PluginCheckInput) => Effect.Effect; -+ update: (input: import("./api.js").PluginUpdateInput) => Effect.Effect; - }; - session: { -- list: (input?: import("./api.js").SessionListInput) => Effect.Effect; -- stats: (input?: import("./api.js").SessionStatsInput) => Effect.Effect; -- create: (input?: import("./api.js").SessionCreateInput) => Effect.Effect; -- import: (input: import("./api.js").SessionImportInput) => Effect.Effect; -- export: (input: import("./api.js").SessionExportInput) => Effect.Effect; -- active: () => Effect.Effect; -- get: (input: import("./api.js").SessionGetInput) => Effect.Effect; -- remove: (input: import("./api.js").SessionRemoveInput) => Effect.Effect; -- fork: (input: import("./api.js").SessionForkInput) => Effect.Effect; -- switchAgent: (input: import("./api.js").SessionSwitchAgentInput) => Effect.Effect; -- switchModel: (input: import("./api.js").SessionSwitchModelInput) => Effect.Effect; -- update: (input: import("./api.js").SessionUpdateInput) => Effect.Effect; -- move: (input: import("./api.js").SessionMoveInput) => Effect.Effect; -- prompt: (input: import("./api.js").SessionPromptInput) => Effect.Effect; -- command: (input: import("./api.js").SessionCommandInput) => Effect.Effect; -- skill: (input: import("./api.js").SessionSkillInput) => Effect.Effect; -- synthetic: (input: import("./api.js").SessionSyntheticInput) => Effect.Effect; -- shell: (input: import("./api.js").SessionShellInput) => Effect.Effect; -- compact: (input: import("./api.js").SessionCompactInput) => Effect.Effect; -- wait: (input: import("./api.js").SessionWaitInput) => Effect.Effect; -+ list: (input?: import("./api.js").SessionListInput) => Effect.Effect; -+ stats: (input?: import("./api.js").SessionStatsInput) => Effect.Effect; -+ create: (input?: import("./api.js").SessionCreateInput) => Effect.Effect; -+ import: (input: import("./api.js").SessionImportInput) => Effect.Effect; -+ export: (input: import("./api.js").SessionExportInput) => Effect.Effect; -+ active: () => Effect.Effect; -+ get: (input: import("./api.js").SessionGetInput) => Effect.Effect; -+ remove: (input: import("./api.js").SessionRemoveInput) => Effect.Effect; -+ fork: (input: import("./api.js").SessionForkInput) => Effect.Effect; -+ switchAgent: (input: import("./api.js").SessionSwitchAgentInput) => Effect.Effect; -+ switchModel: (input: import("./api.js").SessionSwitchModelInput) => Effect.Effect; -+ update: (input: import("./api.js").SessionUpdateInput) => Effect.Effect; -+ move: (input: import("./api.js").SessionMoveInput) => Effect.Effect; -+ prompt: (input: import("./api.js").SessionPromptInput) => Effect.Effect; -+ command: (input: import("./api.js").SessionCommandInput) => Effect.Effect; -+ skill: (input: import("./api.js").SessionSkillInput) => Effect.Effect; -+ synthetic: (input: import("./api.js").SessionSyntheticInput) => Effect.Effect; -+ shell: (input: import("./api.js").SessionShellInput) => Effect.Effect; -+ compact: (input: import("./api.js").SessionCompactInput) => Effect.Effect; -+ wait: (input: import("./api.js").SessionWaitInput) => Effect.Effect; - revert: { -- stage: (input: import("./api.js").SessionRevertStageInput) => Effect.Effect; -- clear: (input: import("./api.js").SessionRevertClearInput) => Effect.Effect; -- commit: (input: import("./api.js").SessionRevertCommitInput) => Effect.Effect; -+ stage: (input: import("./api.js").SessionRevertStageInput) => Effect.Effect; -+ clear: (input: import("./api.js").SessionRevertClearInput) => Effect.Effect; -+ commit: (input: import("./api.js").SessionRevertCommitInput) => Effect.Effect; - }; -- context: (input: import("./api.js").SessionContextInput) => Effect.Effect; -- diff: (input: import("./api.js").SessionDiffInput) => Effect.Effect; -+ context: (input: import("./api.js").SessionContextInput) => Effect.Effect; -+ diff: (input: import("./api.js").SessionDiffInput) => Effect.Effect; - inbox: { -- list: (input: import("./api.js").SessionInboxListInput) => Effect.Effect; -- cancel: (input: import("./api.js").SessionInboxCancelInput) => Effect.Effect; -- update: (input: import("./api.js").SessionInboxUpdateInput) => Effect.Effect; -+ list: (input: import("./api.js").SessionInboxListInput) => Effect.Effect; -+ cancel: (input: import("./api.js").SessionInboxCancelInput) => Effect.Effect; -+ update: (input: import("./api.js").SessionInboxUpdateInput) => Effect.Effect; - }; - instructions: { - entry: { -- list: (input: import("./api.js").SessionInstructionsEntryListInput) => Effect.Effect; -- put: (input: import("./api.js").SessionInstructionsEntryPutInput) => Effect.Effect; -- remove: (input: import("./api.js").SessionInstructionsEntryRemoveInput) => Effect.Effect; -+ list: (input: import("./api.js").SessionInstructionsEntryListInput) => Effect.Effect; -+ put: (input: import("./api.js").SessionInstructionsEntryPutInput) => Effect.Effect; -+ remove: (input: import("./api.js").SessionInstructionsEntryRemoveInput) => Effect.Effect; - }; - }; -- generate: (input: import("./api.js").SessionGenerateInput) => Effect.Effect; -- log: (input: import("./api.js").SessionLogInput) => Stream.Stream; -- interrupt: (input: import("./api.js").SessionInterruptInput) => Effect.Effect; -- background: (input: import("./api.js").SessionBackgroundInput) => Effect.Effect; -+ generate: (input: import("./api.js").SessionGenerateInput) => Effect.Effect; -+ log: (input: import("./api.js").SessionLogInput) => Stream.Stream; -+ interrupt: (input: import("./api.js").SessionInterruptInput) => Effect.Effect; -+ background: (input: import("./api.js").SessionBackgroundInput) => Effect.Effect; - message: { -- get: (input: import("./api.js").SessionMessageGetInput) => Effect.Effect; -+ get: (input: import("./api.js").SessionMessageGetInput) => Effect.Effect; - }; - form: { -- list: (input: import("./api.js").SessionFormListInput) => Effect.Effect; -- create: (input: import("./api.js").SessionFormCreateInput) => Effect.Effect; -- get: (input: import("./api.js").SessionFormGetInput) => Effect.Effect; -- reply: (input: import("./api.js").SessionFormReplyInput) => Effect.Effect; -- cancel: (input: import("./api.js").SessionFormCancelInput) => Effect.Effect; -+ list: (input: import("./api.js").SessionFormListInput) => Effect.Effect; -+ create: (input: import("./api.js").SessionFormCreateInput) => Effect.Effect; -+ get: (input: import("./api.js").SessionFormGetInput) => Effect.Effect; -+ reply: (input: import("./api.js").SessionFormReplyInput) => Effect.Effect; -+ cancel: (input: import("./api.js").SessionFormCancelInput) => Effect.Effect; - }; -- environment: (input: import("./api.js").SessionEnvironmentInput) => Effect.Effect; -- view: (input: import("./api.js").SessionViewInput) => Effect.Effect; -+ environment: (input: import("./api.js").SessionEnvironmentInput) => Effect.Effect; -+ view: (input: import("./api.js").SessionViewInput) => Effect.Effect; - }; - message: { -- list: (input: import("./api.js").MessageListInput) => Effect.Effect; -+ list: (input: import("./api.js").MessageListInput) => Effect.Effect; - }; - model: { -- list: (input?: import("./api.js").ModelListInput) => Effect.Effect; -- default: (input?: import("./api.js").ModelDefaultInput) => Effect.Effect; -+ list: (input?: import("./api.js").ModelListInput) => Effect.Effect; -+ default: (input?: import("./api.js").ModelDefaultInput) => Effect.Effect; - }; - generate: { -- text: (input: import("./api.js").GenerateTextInput) => Effect.Effect; -+ text: (input: import("./api.js").GenerateTextInput) => Effect.Effect; - }; - provider: { -- list: (input?: import("./api.js").ProviderListInput) => Effect.Effect; -- get: (input: import("./api.js").ProviderGetInput) => Effect.Effect; -+ list: (input?: import("./api.js").ProviderListInput) => Effect.Effect; -+ get: (input: import("./api.js").ProviderGetInput) => Effect.Effect; - }; - integration: { -- list: (input?: import("./api.js").IntegrationListInput) => Effect.Effect; -- get: (input: import("./api.js").IntegrationGetInput) => Effect.Effect; -+ list: (input?: import("./api.js").IntegrationListInput) => Effect.Effect; -+ get: (input: import("./api.js").IntegrationGetInput) => Effect.Effect; - wellknown: { -- add: (input: import("./api.js").IntegrationWellknownAddInput) => Effect.Effect; -+ add: (input: import("./api.js").IntegrationWellknownAddInput) => Effect.Effect; - }; - connect: { -- key: (input: import("./api.js").IntegrationConnectKeyInput) => Effect.Effect; -+ key: (input: import("./api.js").IntegrationConnectKeyInput) => Effect.Effect; - }; - oauth: { -- connect: (input: import("./api.js").IntegrationOauthConnectInput) => Effect.Effect; -- status: (input: import("./api.js").IntegrationOauthStatusInput) => Effect.Effect; -- complete: (input: import("./api.js").IntegrationOauthCompleteInput) => Effect.Effect; -- cancel: (input: import("./api.js").IntegrationOauthCancelInput) => Effect.Effect; -+ connect: (input: import("./api.js").IntegrationOauthConnectInput) => Effect.Effect; -+ status: (input: import("./api.js").IntegrationOauthStatusInput) => Effect.Effect; -+ complete: (input: import("./api.js").IntegrationOauthCompleteInput) => Effect.Effect; -+ cancel: (input: import("./api.js").IntegrationOauthCancelInput) => Effect.Effect; - }; - command: { -- connect: (input: import("./api.js").IntegrationCommandConnectInput) => Effect.Effect; -- status: (input: import("./api.js").IntegrationCommandStatusInput) => Effect.Effect; -- cancel: (input: import("./api.js").IntegrationCommandCancelInput) => Effect.Effect; -+ connect: (input: import("./api.js").IntegrationCommandConnectInput) => Effect.Effect; -+ status: (input: import("./api.js").IntegrationCommandStatusInput) => Effect.Effect; -+ cancel: (input: import("./api.js").IntegrationCommandCancelInput) => Effect.Effect; - }; - }; - mcp: { -- list: (input?: import("./api.js").McpListInput) => Effect.Effect; -- add: (input: import("./api.js").McpAddInput) => Effect.Effect; -- remove: (input: import("./api.js").McpRemoveInput) => Effect.Effect; -- connect: (input: import("./api.js").McpConnectInput) => Effect.Effect; -- disconnect: (input: import("./api.js").McpDisconnectInput) => Effect.Effect; -+ list: (input?: import("./api.js").McpListInput) => Effect.Effect; -+ add: (input: import("./api.js").McpAddInput) => Effect.Effect; -+ remove: (input: import("./api.js").McpRemoveInput) => Effect.Effect; -+ connect: (input: import("./api.js").McpConnectInput) => Effect.Effect; -+ disconnect: (input: import("./api.js").McpDisconnectInput) => Effect.Effect; - resource: { -- catalog: (input?: import("./api.js").McpResourceCatalogInput) => Effect.Effect; -+ catalog: (input?: import("./api.js").McpResourceCatalogInput) => Effect.Effect; - }; - }; - credential: { -- list: () => Effect.Effect; -- create: (input: import("./api.js").CredentialCreateInput) => Effect.Effect; -- update: (input: import("./api.js").CredentialUpdateInput) => Effect.Effect; -- activate: (input: import("./api.js").CredentialActivateInput) => Effect.Effect; -- remove: (input: import("./api.js").CredentialRemoveInput) => Effect.Effect; -+ list: () => Effect.Effect; -+ create: (input: import("./api.js").CredentialCreateInput) => Effect.Effect; -+ update: (input: import("./api.js").CredentialUpdateInput) => Effect.Effect; -+ activate: (input: import("./api.js").CredentialActivateInput) => Effect.Effect; -+ remove: (input: import("./api.js").CredentialRemoveInput) => Effect.Effect; - }; - project: { -- list: () => Effect.Effect; -- update: (input: import("./api.js").ProjectUpdateInput) => Effect.Effect; -+ list: () => Effect.Effect; -+ update: (input: import("./api.js").ProjectUpdateInput) => Effect.Effect; - }; - form: { -- list: (input?: import("./api.js").FormListInput) => Effect.Effect; -+ list: (input?: import("./api.js").FormListInput) => Effect.Effect; - }; - permission: { - request: { -- list: (input?: import("./api.js").PermissionRequestListInput) => Effect.Effect; -+ list: (input?: import("./api.js").PermissionRequestListInput) => Effect.Effect; - }; - saved: { -- list: (input?: import("./api.js").PermissionSavedListInput) => Effect.Effect; -- remove: (input: import("./api.js").PermissionSavedRemoveInput) => Effect.Effect; -+ list: (input?: import("./api.js").PermissionSavedListInput) => Effect.Effect; -+ remove: (input: import("./api.js").PermissionSavedRemoveInput) => Effect.Effect; - }; -- create: (input: import("./api.js").PermissionCreateInput) => Effect.Effect; -- list: (input: import("./api.js").PermissionListInput) => Effect.Effect; -- get: (input: import("./api.js").PermissionGetInput) => Effect.Effect; -- reply: (input: import("./api.js").PermissionReplyInput) => Effect.Effect; -+ create: (input: import("./api.js").PermissionCreateInput) => Effect.Effect; -+ list: (input: import("./api.js").PermissionListInput) => Effect.Effect; -+ get: (input: import("./api.js").PermissionGetInput) => Effect.Effect; -+ reply: (input: import("./api.js").PermissionReplyInput) => Effect.Effect; - }; - file: { -- list: (input?: import("./api.js").FileListInput) => Effect.Effect; -- find: (input: import("./api.js").FileFindInput) => Effect.Effect; -+ list: (input?: import("./api.js").FileListInput) => Effect.Effect; -+ find: (input: import("./api.js").FileFindInput) => Effect.Effect; - }; - command: { -- list: (input?: import("./api.js").CommandListInput) => Effect.Effect; -+ list: (input?: import("./api.js").CommandListInput) => Effect.Effect; - }; - skill: { -- list: (input?: import("./api.js").SkillListInput) => Effect.Effect; -+ list: (input?: import("./api.js").SkillListInput) => Effect.Effect; - }; - pty: { -- list: (input?: import("./api.js").PtyListInput) => Effect.Effect; -- create: (input?: import("./api.js").PtyCreateInput) => Effect.Effect; -- get: (input: import("./api.js").PtyGetInput) => Effect.Effect; -- update: (input: import("./api.js").PtyUpdateInput) => Effect.Effect; -- remove: (input: import("./api.js").PtyRemoveInput) => Effect.Effect; -+ list: (input?: import("./api.js").PtyListInput) => Effect.Effect; -+ create: (input?: import("./api.js").PtyCreateInput) => Effect.Effect; -+ get: (input: import("./api.js").PtyGetInput) => Effect.Effect; -+ update: (input: import("./api.js").PtyUpdateInput) => Effect.Effect; -+ remove: (input: import("./api.js").PtyRemoveInput) => Effect.Effect; - connect: { -- token: (input: import("./api.js").PtyConnectTokenInput) => Effect.Effect; -+ token: (input: import("./api.js").PtyConnectTokenInput) => Effect.Effect; - }; - }; - experimental: { - persistentPty: { -- read: (input: import("./api.js").ExperimentalPersistentPtyReadInput) => Effect.Effect; -- list: (input: import("./api.js").ExperimentalPersistentPtyListInput) => Effect.Effect; -- create: (input: import("./api.js").ExperimentalPersistentPtyCreateInput) => Effect.Effect; -- shutdown: () => Effect.Effect; -- handoff: () => Effect.Effect; -- get: (input: import("./api.js").ExperimentalPersistentPtyGetInput) => Effect.Effect; -- update: (input: import("./api.js").ExperimentalPersistentPtyUpdateInput) => Effect.Effect; -- snapshot: (input: import("./api.js").ExperimentalPersistentPtySnapshotInput) => Effect.Effect; -- remove: (input: import("./api.js").ExperimentalPersistentPtyRemoveInput) => Effect.Effect; -- connectToken: (input: import("./api.js").ExperimentalPersistentPtyConnectTokenInput) => Effect.Effect; -+ read: (input: import("./api.js").ExperimentalPersistentPtyReadInput) => Effect.Effect; -+ list: (input: import("./api.js").ExperimentalPersistentPtyListInput) => Effect.Effect; -+ create: (input: import("./api.js").ExperimentalPersistentPtyCreateInput) => Effect.Effect; -+ shutdown: () => Effect.Effect; -+ handoff: () => Effect.Effect; -+ get: (input: import("./api.js").ExperimentalPersistentPtyGetInput) => Effect.Effect; -+ update: (input: import("./api.js").ExperimentalPersistentPtyUpdateInput) => Effect.Effect; -+ snapshot: (input: import("./api.js").ExperimentalPersistentPtySnapshotInput) => Effect.Effect; -+ remove: (input: import("./api.js").ExperimentalPersistentPtyRemoveInput) => Effect.Effect; -+ connectToken: (input: import("./api.js").ExperimentalPersistentPtyConnectTokenInput) => Effect.Effect; - }; - }; - shell: { -- list: (input?: import("./api.js").ShellListInput) => Effect.Effect; -- create: (input: import("./api.js").ShellCreateInput) => Effect.Effect; -- get: (input: import("./api.js").ShellGetInput) => Effect.Effect; -- output: (input: import("./api.js").ShellOutputInput) => Effect.Effect; -- remove: (input: import("./api.js").ShellRemoveInput) => Effect.Effect; -+ list: (input?: import("./api.js").ShellListInput) => Effect.Effect; -+ create: (input: import("./api.js").ShellCreateInput) => Effect.Effect; -+ get: (input: import("./api.js").ShellGetInput) => Effect.Effect; -+ output: (input: import("./api.js").ShellOutputInput) => Effect.Effect; -+ remove: (input: import("./api.js").ShellRemoveInput) => Effect.Effect; - }; - reference: { -- list: (input?: import("./api.js").ReferenceListInput) => Effect.Effect; -+ list: (input?: import("./api.js").ReferenceListInput) => Effect.Effect; - }; - worktree: { - list: (input: import("./api.js").WorktreeListInput) => Effect.Effect; - readonly strategy?: string | undefined; -- }[], import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>; -- create: (input: import("./api.js").WorktreeCreateInput) => Effect.Effect; -- remove: (input: import("./api.js").WorktreeRemoveInput) => Effect.Effect; -- refresh: (input: import("./api.js").WorktreeRefreshInput) => Effect.Effect; -+ }[], import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>; -+ create: (input: import("./api.js").WorktreeCreateInput) => Effect.Effect; -+ remove: (input: import("./api.js").WorktreeRemoveInput) => Effect.Effect; -+ refresh: (input: import("./api.js").WorktreeRefreshInput) => Effect.Effect; - }; - vcs: { -- init: (input?: import("./api.js").VcsInitInput) => Effect.Effect; -- get: (input?: import("./api.js").VcsGetInput) => Effect.Effect; -- base: (input?: import("./api.js").VcsBaseInput) => Effect.Effect; -- status: (input?: import("./api.js").VcsStatusInput) => Effect.Effect; -+ init: (input?: import("./api.js").VcsInitInput) => Effect.Effect; -+ get: (input?: import("./api.js").VcsGetInput) => Effect.Effect; -+ base: (input?: import("./api.js").VcsBaseInput) => Effect.Effect; -+ status: (input?: import("./api.js").VcsStatusInput) => Effect.Effect; - branch: { -- list: (input?: import("./api.js").VcsBranchListInput) => Effect.Effect; -+ list: (input?: import("./api.js").VcsBranchListInput) => Effect.Effect; - }; -- diff: (input: import("./api.js").VcsDiffInput) => Effect.Effect; -+ diff: (input: import("./api.js").VcsDiffInput) => Effect.Effect; - }; - debug: { - location: { -- list: () => Effect.Effect; -- evict: (input?: import("./api.js").DebugLocationEvictInput) => Effect.Effect; -+ list: () => Effect.Effect; -+ evict: (input?: import("./api.js").DebugLocationEvictInput) => Effect.Effect; - }; - }; - migration: { - v1: { -- status: () => Effect.Effect; -+ status: () => Effect.Effect; - }; - }; - websearch: { -- providers: (input?: import("./api.js").WebsearchProvidersInput) => Effect.Effect; -- query: (input: import("./api.js").WebsearchQueryInput) => Effect.Effect; -+ providers: (input?: import("./api.js").WebsearchProvidersInput) => Effect.Effect; -+ query: (input: import("./api.js").WebsearchQueryInput) => Effect.Effect; - }; - config: { -- get: (input?: import("./api.js").ConfigGetInput) => Effect.Effect; -- shells: () => Effect.Effect; -- update: (input: import("./api.js").ConfigUpdateInput) => Effect.Effect; -+ get: (input?: import("./api.js").ConfigGetInput) => Effect.Effect; -+ shells: () => Effect.Effect; -+ update: (input: import("./api.js").ConfigUpdateInput) => Effect.Effect; - }; - }, never, HttpClient.HttpClient>; -diff --git a/dist/effect/generated/client.d.ts b/dist/effect/generated/client.d.ts -index 0261a21..278f3fb 100644 ---- a/dist/effect/generated/client.d.ts -+++ b/dist/effect/generated/client.d.ts -@@ -1,6 +1,6 @@ - import { Effect, Stream, Schema } from "effect"; --import { Sse } from "effect/unstable/encoding"; --import { HttpClientError } from "effect/unstable/http"; -+import { Sse } from "effect/encoding"; -+import { HttpClientError } from "effect/http"; - import type { ServerInfoOutput, ServerPairOutput, ServerConnectInput, ServerConnectOutput, LocationGetInput, AgentListInput, AgentListOutput, AgentGetInput, AgentGetOutput, PluginListInput, PluginListOutput, PluginCheckInput, PluginCheckOutput, PluginUpdateInput, SessionListInput, SessionListOutput, SessionStatsInput, SessionStatsOutput, SessionCreateInput, SessionImportInput, SessionExportInput, SessionExportOutput, SessionActiveOutput, SessionGetInput, SessionRemoveInput, SessionForkInput, SessionSwitchAgentInput, SessionSwitchModelInput, SessionUpdateInput, SessionMoveInput, SessionPromptInput, SessionCommandInput, SessionSkillInput, SessionSyntheticInput, SessionShellInput, SessionCompactInput, SessionWaitInput, SessionRevertStageInput, SessionRevertClearInput, SessionRevertCommitInput, SessionContextInput, SessionContextOutput, SessionDiffInput, SessionDiffOutput, SessionInboxListInput, SessionInboxListOutput, SessionInboxCancelInput, SessionInboxUpdateInput, SessionInstructionsEntryListInput, SessionInstructionsEntryListOutput, SessionInstructionsEntryPutInput, SessionInstructionsEntryRemoveInput, SessionGenerateInput, SessionGenerateOutput, SessionLogInput, SessionLogOutput, SessionInterruptInput, SessionInterruptOutput, SessionBackgroundInput, SessionMessageGetInput, SessionFormListInput, SessionFormListOutput, SessionFormCreateInput, SessionFormGetInput, SessionFormReplyInput, SessionFormCancelInput, SessionEnvironmentInput, SessionViewInput, MessageListInput, MessageListOutput, ModelListInput, ModelListOutput, ModelDefaultInput, ModelDefaultOutput, GenerateTextInput, GenerateTextOutput, ProviderListInput, ProviderListOutput, ProviderGetInput, ProviderGetOutput, IntegrationListInput, IntegrationListOutput, IntegrationGetInput, IntegrationGetOutput, IntegrationWellknownAddInput, IntegrationConnectKeyInput, IntegrationOauthConnectInput, IntegrationOauthConnectOutput, IntegrationOauthStatusInput, IntegrationOauthStatusOutput, IntegrationOauthCompleteInput, IntegrationOauthCancelInput, IntegrationCommandConnectInput, IntegrationCommandConnectOutput, IntegrationCommandStatusInput, IntegrationCommandStatusOutput, IntegrationCommandCancelInput, McpListInput, McpListOutput, McpAddInput, McpRemoveInput, McpConnectInput, McpDisconnectInput, McpResourceCatalogInput, McpResourceCatalogOutput, CredentialListOutput, CredentialCreateInput, CredentialUpdateInput, CredentialActivateInput, CredentialRemoveInput, ProjectListOutput, ProjectUpdateInput, FormListInput, FormListOutput, PermissionRequestListInput, PermissionRequestListOutput, PermissionSavedListInput, PermissionSavedListOutput, PermissionSavedRemoveInput, PermissionCreateInput, PermissionCreateOutput, PermissionListInput, PermissionListOutput, PermissionGetInput, PermissionReplyInput, FileListInput, FileListOutput, FileFindInput, FileFindOutput, CommandListInput, CommandListOutput, SkillListInput, SkillListOutput, RpcCallInput, RpcCallOutput, PtyListInput, PtyListOutput, PtyCreateInput, PtyCreateOutput, PtyGetInput, PtyGetOutput, PtyUpdateInput, PtyUpdateOutput, PtyRemoveInput, PtyConnectTokenInput, PtyConnectTokenOutput, ExperimentalPersistentPtyReadInput, ExperimentalPersistentPtyReadOutput, ExperimentalPersistentPtyListInput, ExperimentalPersistentPtyListOutput, ExperimentalPersistentPtyCreateInput, ExperimentalPersistentPtyCreateOutput, ExperimentalPersistentPtyHandoffOutput, ExperimentalPersistentPtyGetInput, ExperimentalPersistentPtyGetOutput, ExperimentalPersistentPtyUpdateInput, ExperimentalPersistentPtyUpdateOutput, ExperimentalPersistentPtySnapshotInput, ExperimentalPersistentPtySnapshotOutput, ExperimentalPersistentPtyRemoveInput, ExperimentalPersistentPtyConnectTokenInput, ShellListInput, ShellListOutput, ShellCreateInput, ShellCreateOutput, ShellGetInput, ShellGetOutput, ShellOutputInput, ShellOutputOutput, ShellRemoveInput, ReferenceListInput, ReferenceListOutput, WorktreeListInput, WorktreeCreateInput, WorktreeRemoveInput, WorktreeRefreshInput, VcsInitInput, VcsGetInput, VcsGetOutput, VcsBaseInput, VcsBaseOutput, VcsStatusInput, VcsStatusOutput, VcsBranchListInput, VcsBranchListOutput, VcsDiffInput, VcsDiffOutput, DebugLocationListOutput, DebugLocationEvictInput, MigrationV1StatusOutput, WebsearchProvidersInput, WebsearchProvidersOutput, WebsearchQueryInput, WebsearchQueryOutput, ConfigGetInput, ConfigGetOutput, ConfigShellsOutput, ConfigUpdateInput } from "../api/api.js"; - import { ClientError } from "./client-error.js"; - export declare const make: (options?: { -@@ -2524,4 +2524,4 @@ export declare const make: (options?: { - shells: () => Effect.Effect; - update: (input: ConfigUpdateInput) => Effect.Effect; - }; --}, never, import("effect/unstable/http/HttpClient").HttpClient>; -+}, never, import("effect/http/HttpClient").HttpClient>; diff --git a/patches/@opencode__protocol@2.0.23.patch b/patches/@opencode__protocol@2.0.23.patch deleted file mode 100644 index a96921ed6a58fa5455c2723127887dbf703a48a0..0000000000000000000000000000000000000000 --- a/patches/@opencode__protocol@2.0.23.patch +++ /dev/null @@ -1,844 +0,0 @@ -diff --git a/dist/api.d.ts b/dist/api.d.ts -index 68fe350..7c8f3f5 100644 ---- a/dist/api.d.ts -+++ b/dist/api.d.ts -@@ -1,5 +1,5 @@ - import { Context } from "effect"; --import { HttpApi, HttpApiGroup, HttpApiMiddleware } from "effect/unstable/httpapi"; -+import { HttpApi, HttpApiGroup, HttpApiMiddleware } from "effect/http-api"; - import { SchemaErrorMiddleware } from "./middleware/schema-error.js"; - import { GenerateGroup } from "./groups/generate.js"; - import { MessageGroup } from "./groups/message.js"; -diff --git a/dist/api.js b/dist/api.js -index c68e3ea..0ed6447 100644 ---- a/dist/api.js -+++ b/dist/api.js -@@ -1,5 +1,5 @@ - import { Context } from "effect"; --import { HttpApi, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApi, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/http-api"; - import { SchemaErrorMiddleware } from "./middleware/schema-error.js"; - import { GenerateGroup } from "./groups/generate.js"; - import { MessageGroup } from "./groups/message.js"; -diff --git a/dist/client.d.ts b/dist/client.d.ts -index 8a7bdec..d1fc694 100644 ---- a/dist/client.d.ts -+++ b/dist/client.d.ts -@@ -1,7 +1,7 @@ - import { LocationNotFoundError, InvalidRequestError, SessionNotFoundError } from "./errors.js"; - import type { Api } from "./api.js"; - import type { Context } from "effect"; --import { HttpApiMiddleware } from "effect/unstable/httpapi"; -+import { HttpApiMiddleware } from "effect/http-api"; - import type { EventGroup } from "./groups/event.js"; - declare const LocationMiddleware_base: HttpApiMiddleware.ServiceClass; -diff --git a/dist/groups/command.js b/dist/groups/command.js -index cd89b47..341eb23 100644 ---- a/dist/groups/command.js -+++ b/dist/groups/command.js -@@ -1,7 +1,7 @@ - import { Command } from "@opencode/schema/command"; - import { Location } from "@opencode/schema/location"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { LocationQuery, locationQueryOpenApi } from "./location.js"; - export const CommandGroup = HttpApiGroup.make("server.command") - .add(HttpApiEndpoint.get("command.list", "/api/command", { -diff --git a/dist/groups/config.d.ts b/dist/groups/config.d.ts -index 31f1042..0432fc2 100644 ---- a/dist/groups/config.d.ts -+++ b/dist/groups/config.d.ts -@@ -1,6 +1,6 @@ - import { Config } from "@opencode/schema/config"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api"; - export declare const ConfigGroup: HttpApiGroup.HttpApiGroup<"server.config", HttpApiEndpoint.HttpApiEndpoint<"config.get", "GET", "/api/config", never, Schema.toCodecStringTree; -diff --git a/dist/groups/config.js b/dist/groups/config.js -index 228002a..14748f6 100644 ---- a/dist/groups/config.js -+++ b/dist/groups/config.js -@@ -1,7 +1,7 @@ - import { Config } from "@opencode/schema/config"; - import { ConfigShell } from "@opencode/schema/config/shell"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api"; - import { LocationQuery, locationQueryOpenApi } from "./location.js"; - export const ConfigGroup = HttpApiGroup.make("server.config") - .add(HttpApiEndpoint.get("config.get", "/api/config", { -diff --git a/dist/groups/credential.d.ts b/dist/groups/credential.d.ts -index 12de0a3..a4c616e 100644 ---- a/dist/groups/credential.d.ts -+++ b/dist/groups/credential.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api"; - import { ConflictError } from "../errors.js"; - export declare const CredentialGroup: HttpApiGroup.HttpApiGroup<"server.credential", HttpApiEndpoint.HttpApiEndpoint<"credential.list", "GET", "/api/credential", never, never, never, never, Schema.toCodecJson; - }>>>, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"debug.location.evict", "DELETE", "/api/debug/location", never, Schema.toCodecStringTree>(definitions: Definitions) => HttpApiGroup.HttpApiGroup<"server.event", HttpApiEndpoint.HttpApiEndpoint<"event.subscribe", "GET", "/api/event", never, never, never, never, HttpApiSchema.StreamSse & { - create: () => string & import("effect/Brand").Brand<"Event.ID">; -diff --git a/dist/groups/event.js b/dist/groups/event.js -index 7d086fe..667e078 100644 ---- a/dist/groups/event.js -+++ b/dist/groups/event.js -@@ -2,7 +2,7 @@ import { Event } from "@opencode/schema/event"; - import { EventManifest } from "@opencode/schema/event-manifest"; - import { Location } from "@opencode/schema/location"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api"; - const fields = { - id: Event.ID, - metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)), -diff --git a/dist/groups/form.d.ts b/dist/groups/form.d.ts -index ef9289e..efff3f0 100644 ---- a/dist/groups/form.d.ts -+++ b/dist/groups/form.d.ts -@@ -1,5 +1,5 @@ - import { Context, Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware } from "effect/http-api"; - export declare const makeFormGroup: (locationMiddleware: Context.Key) => HttpApiGroup.HttpApiGroup<"server.form", HttpApiEndpoint.HttpApiEndpoint<"form.list", "GET", "/api/form", never, Schema.toCodecStringTree; -diff --git a/dist/groups/form.js b/dist/groups/form.js -index 7b97820..d68d534 100644 ---- a/dist/groups/form.js -+++ b/dist/groups/form.js -@@ -1,7 +1,7 @@ - import { Form } from "@opencode/schema/form"; - import { Location } from "@opencode/schema/location"; - import { Context, Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/http-api"; - import { LocationQuery, locationQueryOpenApi } from "./location.js"; - export const makeFormGroup = (locationMiddleware) => HttpApiGroup.make("server.form") - .add(HttpApiEndpoint.get("form.list", "/api/form", { -diff --git a/dist/groups/fs.d.ts b/dist/groups/fs.d.ts -index c8294ac..af3ac60 100644 ---- a/dist/groups/fs.d.ts -+++ b/dist/groups/fs.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api"; - import { FileNotFoundError } from "../errors.js"; - export declare const FileSystemGroup: HttpApiGroup.HttpApiGroup<"server.fs", HttpApiEndpoint.HttpApiEndpoint<"fs.read", "GET", "/api/fs/read/*", never, Schema.toCodecStringTree; -diff --git a/dist/groups/message.js b/dist/groups/message.js -index 135878a..9c546b0 100644 ---- a/dist/groups/message.js -+++ b/dist/groups/message.js -@@ -2,7 +2,7 @@ import { Session } from "@opencode/schema/session"; - import { SessionMessage } from "@opencode/schema/session-message"; - import { Location } from "@opencode/schema/location"; - import { Schema, Struct } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { InvalidCursorError, SessionNotFoundError, UnknownError } from "../errors.js"; - export const SessionMessagesQuery = Schema.Struct({ - limit: Schema.optional(Schema.NumberFromString.check(Schema.isInt(), Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(200))).annotate({ -diff --git a/dist/groups/migration.d.ts b/dist/groups/migration.d.ts -index 627b223..4a9323d 100644 ---- a/dist/groups/migration.d.ts -+++ b/dist/groups/migration.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api"; - export declare const V1MigrationStatus: Schema.Union; - }>, Schema.Struct<{ -diff --git a/dist/groups/migration.js b/dist/groups/migration.js -index 20cf324..ef048e9 100644 ---- a/dist/groups/migration.js -+++ b/dist/groups/migration.js -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - const V1MigrationProgress = Schema.Struct({ - label: Schema.String, - numerator: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))), -diff --git a/dist/groups/model.d.ts b/dist/groups/model.d.ts -index 8bb1daa..787fe05 100644 ---- a/dist/groups/model.d.ts -+++ b/dist/groups/model.d.ts -@@ -1,6 +1,6 @@ - import { Model } from "@opencode/schema/model"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api"; - import { ServiceUnavailableError } from "../errors.js"; - export declare const ModelGroup: HttpApiGroup.HttpApiGroup<"server.model", HttpApiEndpoint.HttpApiEndpoint<"model.list", "GET", "/api/model", never, Schema.toCodecStringTree(locationMiddleware: Context.Key, sessionLocationMiddleware: Context.Key) => HttpApiGroup.HttpApiGroup<"server.permission", HttpApiEndpoint.HttpApiEndpoint<"permission.request.list", "GET", "/api/permission/request", never, Schema.toCodecStringTree HttpApiGroup.make("server.permission") -diff --git a/dist/groups/persistent-pty.d.ts b/dist/groups/persistent-pty.d.ts -index efb7472..b6b786b 100644 ---- a/dist/groups/persistent-pty.d.ts -+++ b/dist/groups/persistent-pty.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api"; - import { ForbiddenError, InvalidRequestError, PtyNotFoundError, ServiceUnavailableError } from "../errors.js"; - import { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE } from "./pty.js"; - export { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE }; -diff --git a/dist/groups/persistent-pty.js b/dist/groups/persistent-pty.js -index 85ad02f..b64c896 100644 ---- a/dist/groups/persistent-pty.js -+++ b/dist/groups/persistent-pty.js -@@ -3,7 +3,7 @@ import { Pty } from "@opencode/schema/pty"; - import { PtyTicket } from "@opencode/schema/pty-ticket"; - import { Session } from "@opencode/schema/session"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api"; - import { ForbiddenError, InvalidRequestError, PtyNotFoundError, ServiceUnavailableError } from "../errors.js"; - import { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE } from "./pty.js"; - export { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE }; -diff --git a/dist/groups/plugin.d.ts b/dist/groups/plugin.d.ts -index 30d0f78..8bd4ecd 100644 ---- a/dist/groups/plugin.d.ts -+++ b/dist/groups/plugin.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api"; - import { InvalidRequestError, ServiceUnavailableError } from "../errors.js"; - export declare const PluginGroup: HttpApiGroup.HttpApiGroup<"server.plugin", HttpApiEndpoint.HttpApiEndpoint<"plugin.list", "GET", "/api/plugin", never, Schema.toCodecStringTree & { -diff --git a/dist/groups/project.js b/dist/groups/project.js -index 7424c4e..b67f839 100644 ---- a/dist/groups/project.js -+++ b/dist/groups/project.js -@@ -1,6 +1,6 @@ - import { Project } from "@opencode/schema/project"; - import { Schema, Struct } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { ProjectNotFoundError } from "../errors.js"; - const root = "/api/project"; - const UpdatePayload = Schema.Struct(Struct.omit(Project.UpdateInput.fields, ["projectID"])); -diff --git a/dist/groups/provider.d.ts b/dist/groups/provider.d.ts -index 2671555..89118fe 100644 ---- a/dist/groups/provider.d.ts -+++ b/dist/groups/provider.d.ts -@@ -1,6 +1,6 @@ - import { Provider } from "@opencode/schema/provider"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api"; - import { ProviderNotFoundError, ServiceUnavailableError } from "../errors.js"; - export declare const ProviderGroup: HttpApiGroup.HttpApiGroup<"server.provider", HttpApiEndpoint.HttpApiEndpoint<"provider.list", "GET", "/api/provider", never, Schema.toCodecStringTree; -diff --git a/dist/groups/reference.js b/dist/groups/reference.js -index e96827b..e615fd1 100644 ---- a/dist/groups/reference.js -+++ b/dist/groups/reference.js -@@ -1,7 +1,7 @@ - import { Location } from "@opencode/schema/location"; - import { Reference } from "@opencode/schema/reference"; - import { Schema, Struct } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { LocationQuery, locationQueryOpenApi } from "./location.js"; - const PublicLocalSource = Schema.Struct(Struct.omit(Reference.LocalSource.fields, ["description", "hidden"])).annotate({ - identifier: "Reference.LocalSource", -diff --git a/dist/groups/rpc.d.ts b/dist/groups/rpc.d.ts -index 3790115..08e86ec 100644 ---- a/dist/groups/rpc.d.ts -+++ b/dist/groups/rpc.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api"; - import { RpcError, RpcInternalError } from "../errors.js"; - export declare const RpcInput: Schema.Struct<{ - readonly input: Schema.decodeTo>, Schema.optionalKey, never, never>; -diff --git a/dist/groups/rpc.js b/dist/groups/rpc.js -index c12866c..36dadc6 100644 ---- a/dist/groups/rpc.js -+++ b/dist/groups/rpc.js -@@ -1,6 +1,6 @@ - import { optional } from "@opencode/schema/schema"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { RpcError, RpcInternalError } from "../errors.js"; - import { LocationQuery, locationQueryOpenApi } from "./location.js"; - export const RpcInput = Schema.Struct({ input: optional(Schema.Unknown) }).annotate({ identifier: "Rpc.Input" }); -diff --git a/dist/groups/server.d.ts b/dist/groups/server.d.ts -index b02cf39..5e605d6 100644 ---- a/dist/groups/server.d.ts -+++ b/dist/groups/server.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api"; - import { UnauthorizedError } from "../errors.js"; - export declare const ServerInfo: Schema.Struct<{ - readonly version: Schema.String; -diff --git a/dist/groups/server.js b/dist/groups/server.js -index c2415ec..ab9fef3 100644 ---- a/dist/groups/server.js -+++ b/dist/groups/server.js -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { UnauthorizedError } from "../errors.js"; - export const ServerInfo = Schema.Struct({ - version: Schema.String, -diff --git a/dist/groups/session.d.ts b/dist/groups/session.d.ts -index 316bfb1..adbea93 100644 ---- a/dist/groups/session.d.ts -+++ b/dist/groups/session.d.ts -@@ -2,7 +2,7 @@ import { PromptInput } from "@opencode/schema/prompt-input"; - import { InstructionEntry } from "@opencode/schema/instruction-entry"; - import { Event } from "@opencode/schema/event"; - import { Context, Effect, Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/http-api"; - import { ConflictError, LocationNotFoundError, CommandExecutionError, CommandNotFoundError, FormAlreadySettledError, FormInvalidAnswerError, FormNotFoundError, InvalidCursorError, InvalidRequestError, MessageNotFoundError, ServiceUnavailableError, SessionBusyError, SessionNotFoundError, SkillNotFoundError, UnknownError } from "../errors.js"; - declare const SessionsCursorInput: Schema.Union; -diff --git a/dist/groups/session.js b/dist/groups/session.js -index 64fe213..c835084 100644 ---- a/dist/groups/session.js -+++ b/dist/groups/session.js -@@ -7,8 +7,9 @@ import { InstructionEntry } from "@opencode/schema/instruction-entry"; - import { Project } from "@opencode/schema/project"; - import { AbsolutePath, DateTimeUtcFromMillis, NonNegativeInt, PositiveInt, RelativePath, statics, } from "@opencode/schema/schema"; - import { Event } from "@opencode/schema/event"; --import { Context, Effect, Encoding, Result, Schema, SchemaGetter, Struct } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"; -+import * as Base64Url from "effect/encoding/Base64Url"; -+import { Context, Effect, Result, Schema, SchemaGetter, Struct } from "effect"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/http-api"; - import { ConflictError, LocationNotFoundError, CommandExecutionError, CommandNotFoundError, FormAlreadySettledError, FormInvalidAnswerError, FormNotFoundError, InvalidCursorError, InvalidRequestError, MessageNotFoundError, ServiceUnavailableError, SessionBusyError, SessionNotFoundError, SkillNotFoundError, UnknownError, } from "../errors.js"; - import { Agent } from "@opencode/schema/agent"; - import { Skill } from "@opencode/schema/skill"; -@@ -65,9 +66,9 @@ const invalidCursor = "Invalid cursor"; - export const SessionsCursor = Schema.String.pipe(Schema.brand("SessionsCursor"), statics((schema) => { - const make = schema.make.bind(schema); - return { -- make: (input) => make(Encoding.encodeBase64Url(encodeSessionsCursor(input))), -+ make: (input) => make(Base64Url.encode(encodeSessionsCursor(input))), - parse: (input) => Effect.suspend(() => { -- const result = Encoding.decodeBase64UrlString(input); -+ const result = Base64Url.decodeString(input); - return Result.isFailure(result) - ? Effect.fail(invalidCursor) - : decodeSessionsCursor(result.success).pipe(Effect.mapError(() => invalidCursor)); -diff --git a/dist/groups/shell.d.ts b/dist/groups/shell.d.ts -index 55b3455..dd1cfe3 100644 ---- a/dist/groups/shell.d.ts -+++ b/dist/groups/shell.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api"; - import { ShellNotFoundError } from "../errors.js"; - export declare const ShellGroup: HttpApiGroup.HttpApiGroup<"server.shell", HttpApiEndpoint.HttpApiEndpoint<"shell.list", "GET", "/api/shell", never, Schema.toCodecStringTree; -diff --git a/dist/groups/skill.js b/dist/groups/skill.js -index a55e3ed..b419ad2 100644 ---- a/dist/groups/skill.js -+++ b/dist/groups/skill.js -@@ -1,7 +1,7 @@ - import { Skill } from "@opencode/schema/skill"; - import { Location } from "@opencode/schema/location"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api"; - import { LocationQuery, locationQueryOpenApi } from "./location.js"; - export const SkillGroup = HttpApiGroup.make("server.skill") - .add(HttpApiEndpoint.get("skill.list", "/api/skill", { -diff --git a/dist/groups/vcs.d.ts b/dist/groups/vcs.d.ts -index 7672482..d129386 100644 ---- a/dist/groups/vcs.d.ts -+++ b/dist/groups/vcs.d.ts -@@ -1,5 +1,5 @@ - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api"; - import { ConflictError, InvalidRequestError, ServiceUnavailableError } from "../errors.js"; - declare const VcsInitNotSupportedError_base: Schema.Class; -diff --git a/dist/groups/worktree.js b/dist/groups/worktree.js -index 67bed29..0a501b1 100644 ---- a/dist/groups/worktree.js -+++ b/dist/groups/worktree.js -@@ -1,6 +1,6 @@ - import { Worktree } from "@opencode/schema/worktree"; - import { Schema } from "effect"; --import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi"; -+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api"; - import { Project } from "@opencode/schema/project"; - import { ProjectNotFoundError } from "../errors.js"; - const root = "/api/worktree"; -diff --git a/dist/middleware/authorization.d.ts b/dist/middleware/authorization.d.ts -index 2d043d9..f84b1df 100644 ---- a/dist/middleware/authorization.d.ts -+++ b/dist/middleware/authorization.d.ts -@@ -1,4 +1,4 @@ --import { HttpApiMiddleware } from "effect/unstable/httpapi"; -+import { HttpApiMiddleware } from "effect/http-api"; - import { UnauthorizedError } from "../errors.js"; - declare const Authorization_base: HttpApiMiddleware.ServiceClass; -diff --git a/dist/simulation.js b/dist/simulation.js -index 3e52010..ce8f56e 100644 ---- a/dist/simulation.js -+++ b/dist/simulation.js -@@ -1,5 +1,5 @@ - import { Effect, Schema } from "effect"; --import { Rpc, RpcGroup } from "effect/unstable/rpc"; -+import { Rpc, RpcGroup } from "effect/rpc"; - const JsonRpcID = Schema.Union([Schema.String, Schema.Number, Schema.Null]); - const decodeJson = Schema.decodeUnknownSync(Schema.Json); - export var JsonRpc; diff --git a/patches/@opencode__schema@2.0.23.patch b/patches/@opencode__schema@2.0.23.patch deleted file mode 100644 index dbde0d412d75a9e2c5e0aa5c1e9ee04d38788d06..0000000000000000000000000000000000000000 --- a/patches/@opencode__schema@2.0.23.patch +++ /dev/null @@ -1,155 +0,0 @@ -diff --git a/dist/event.js b/dist/event.js -index a0f0831..c4d39e2 100644 ---- a/dist/event.js -+++ b/dist/event.js -@@ -4,7 +4,7 @@ import { optional } from "./schema.js"; - import { ascending } from "./identifier.js"; - import { Location } from "./location.js"; - import { statics } from "./schema.js"; --export const ID = Schema.String.check(Schema.isStartsWith("evt_")).pipe(Schema.brand("Event.ID"), statics((schema) => ({ create: () => schema.make("evt_" + ascending()) }))); -+export const ID = Schema.String.check(Schema.isStartingWith("evt_")).pipe(Schema.brand("Event.ID"), statics((schema) => ({ create: () => schema.make("evt_" + ascending()) }))); - /** - * Position in one aggregate's durable log. Values originate from the durable - * event envelope and synced markers; -diff --git a/dist/form.js b/dist/form.js -index 920d0dd..bd4799d 100644 ---- a/dist/form.js -+++ b/dist/form.js -@@ -3,7 +3,7 @@ import { Schema } from "effect"; - import { ephemeral, inventory } from "./event.js"; - import { ascending } from "./identifier.js"; - import { NonNegativeInt, optional, statics } from "./schema.js"; --const IDSchema = Schema.String.check(Schema.isStartsWith("frm_")).pipe(Schema.brand("Form.ID")); -+const IDSchema = Schema.String.check(Schema.isStartingWith("frm_")).pipe(Schema.brand("Form.ID")); - export const ID = IDSchema.pipe(statics((schema) => ({ create: (id) => schema.make(id ?? "frm_" + ascending()) }))); - export const Metadata = Schema.Record(Schema.String, Schema.Unknown).annotate({ identifier: "Form.Metadata" }); - export const Option = Schema.Struct({ -diff --git a/dist/permission.js b/dist/permission.js -index d004da5..9b3f133 100644 ---- a/dist/permission.js -+++ b/dist/permission.js -@@ -5,7 +5,7 @@ import { ephemeral, inventory } from "./event.js"; - import { ascending } from "./identifier.js"; - import { SessionID } from "./session-id.js"; - import { statics } from "./schema.js"; --export const ID = Schema.String.check(Schema.isStartsWith("per")).pipe(Schema.brand("Permission.ID"), statics((schema) => ({ create: (id) => schema.make(id ?? "per_" + ascending()) }))); -+export const ID = Schema.String.check(Schema.isStartingWith("per")).pipe(Schema.brand("Permission.ID"), statics((schema) => ({ create: (id) => schema.make(id ?? "per_" + ascending()) }))); - export const Source = Schema.Union([ - Schema.Struct({ - type: Schema.Literal("tool"), -diff --git a/dist/pty.js b/dist/pty.js -index b69f558..f5872fd 100644 ---- a/dist/pty.js -+++ b/dist/pty.js -@@ -4,7 +4,7 @@ import { optional } from "./schema.js"; - import { ephemeral, inventory } from "./event.js"; - import { ascending } from "./identifier.js"; - import { NonNegativeInt, PositiveInt, statics } from "./schema.js"; --const IDSchema = Schema.String.check(Schema.isStartsWith("pty")).pipe(Schema.brand("PtyID")); -+const IDSchema = Schema.String.check(Schema.isStartingWith("pty")).pipe(Schema.brand("PtyID")); - export const ID = IDSchema.pipe(statics((schema) => { - const create = () => schema.make("pty_" + ascending()); - return { -diff --git a/dist/schema.js b/dist/schema.js -index d90b9f6..ab09ced 100644 ---- a/dist/schema.js -+++ b/dist/schema.js -@@ -7,7 +7,17 @@ export const optional = (schema) => Schema.optionalKey(schema).pipe(Schema.decod - decode: SchemaGetter.passthrough({ strict: false }), - encode: SchemaGetter.transformOptional(Option.filter((value) => value !== undefined)), - })); --export const statics = (methods) => (schema) => Object.assign(schema, methods(schema)); -+export const statics = (methods) => (schema) => { -+ // Effect 4.0.0 caches `make` as a non-configurable own property on first -+ // read, so a static that overrides it is defined before anything reads it: -+ // `methods` sees a view whose `make` comes from a fresh rebuild. -+ const base = schema.rebuild(schema.ast); -+ const view = new Proxy(schema, { get: (target, key) => (key === "make" ? base.make : Reflect.get(target, key)) }); -+ for (const [key, value] of Object.entries(methods(view))) { -+ Object.defineProperty(schema, key, { value, writable: true, enumerable: true, configurable: true }); -+ } -+ return schema; -+}; - export const DateTimeUtcFromMillis = Schema.Finite.pipe(Schema.decodeTo(Schema.DateTimeUtc, { - decode: SchemaGetter.transform((value) => DateTime.makeUnsafe(value)), - encode: SchemaGetter.transform((value) => DateTime.toEpochMillis(value)), -diff --git a/dist/session-id.js b/dist/session-id.js -index fe5f778..03ef1e6 100644 ---- a/dist/session-id.js -+++ b/dist/session-id.js -@@ -1,7 +1,7 @@ - import { Schema } from "effect"; - import { descending } from "./identifier.js"; - import { statics } from "./schema.js"; --export const SessionID = Schema.String.check(Schema.isStartsWith("ses")).pipe(Schema.brand("SessionID"), statics((schema) => { -+export const SessionID = Schema.String.check(Schema.isStartingWith("ses")).pipe(Schema.brand("SessionID"), statics((schema) => { - const create = () => schema.make("ses_" + descending()); - return { - create, -diff --git a/dist/session-message.js b/dist/session-message.js -index 9ddeda7..6a0a1e2 100644 ---- a/dist/session-message.js -+++ b/dist/session-message.js -@@ -18,7 +18,7 @@ import { Skill as SkillSchema } from "./skill.js"; - import { Money } from "./money.js"; - import { Snapshot } from "./snapshot.js"; - import { TokenUsage } from "./token-usage.js"; --export const ID = Schema.String.check(Schema.isStartsWith("msg_")).pipe(Schema.brand("Session.Message.ID"), statics((schema) => ({ -+export const ID = Schema.String.check(Schema.isStartingWith("msg_")).pipe(Schema.brand("Session.Message.ID"), statics((schema) => ({ - create: () => schema.make("msg_" + ascending()), - fromEvent: (eventID) => schema.make(eventID.replace(/^evt_/, "msg_")), - }))); -diff --git a/dist/shell.js b/dist/shell.js -index 75b981e..969160a 100644 ---- a/dist/shell.js -+++ b/dist/shell.js -@@ -4,7 +4,7 @@ import { optional } from "./schema.js"; - import { ephemeral, inventory } from "./event.js"; - import { ascending } from "./identifier.js"; - import { NonNegativeInt, statics } from "./schema.js"; --const IDSchema = Schema.String.check(Schema.isStartsWith("sh_")).pipe(Schema.brand("Shell.ID")); -+const IDSchema = Schema.String.check(Schema.isStartingWith("sh_")).pipe(Schema.brand("Shell.ID")); - export const ID = IDSchema.pipe(statics((schema) => { - const create = () => schema.make("sh_" + ascending()); - return { -diff --git a/dist/v1/permission.js b/dist/v1/permission.js -index 86af654..d4008e5 100644 ---- a/dist/v1/permission.js -+++ b/dist/v1/permission.js -@@ -5,7 +5,7 @@ import { ascending } from "../identifier.js"; - import { Project } from "../project.js"; - import { statics } from "../schema.js"; - import { SessionID } from "../session-id.js"; --export const ID = Schema.String.check(Schema.isStartsWith("per")).pipe(Schema.brand("PermissionV1.ID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "per_" + ascending()) }))); -+export const ID = Schema.String.check(Schema.isStartingWith("per")).pipe(Schema.brand("PermissionV1.ID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "per_" + ascending()) }))); - export const Action = Schema.Literals(["allow", "deny", "ask"]).annotate({ identifier: "PermissionV1.Action" }); - export const Rule = Schema.Struct({ permission: Schema.String, pattern: Schema.String, action: Action }).annotate({ - identifier: "PermissionV1.Rule", -diff --git a/dist/v1/session.js b/dist/v1/session.js -index 867c87b..e06a17b 100644 ---- a/dist/v1/session.js -+++ b/dist/v1/session.js -@@ -11,8 +11,8 @@ import { WorkspaceID } from "../workspace-id.js"; - import { PermissionV1 } from "./permission.js"; - import { FileDiff } from "../file-diff.js"; - const Timestamp = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0)); --export const MessageID = Schema.String.check(Schema.isStartsWith("msg")).pipe(Schema.brand("SessionV1.MessageID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "msg_" + ascending()) }))); --export const PartID = Schema.String.check(Schema.isStartsWith("prt")).pipe(Schema.brand("SessionV1.PartID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "prt_" + ascending()) }))); -+export const MessageID = Schema.String.check(Schema.isStartingWith("msg")).pipe(Schema.brand("SessionV1.MessageID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "msg_" + ascending()) }))); -+export const PartID = Schema.String.check(Schema.isStartingWith("prt")).pipe(Schema.brand("SessionV1.PartID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "prt_" + ascending()) }))); - const namedError = (name, fields) => { - const schema = Schema.Struct({ name: Schema.Literal(name), data: Schema.Struct(fields) }).annotate({ - identifier: name, -diff --git a/dist/workspace-id.js b/dist/workspace-id.js -index 4bed474..4ec8671 100644 ---- a/dist/workspace-id.js -+++ b/dist/workspace-id.js -@@ -1,7 +1,7 @@ - import { Schema } from "effect"; - import { ascending } from "./identifier.js"; - import { statics } from "./schema.js"; --export const WorkspaceID = Schema.String.check(Schema.isStartsWith("wrk")).pipe(Schema.brand("Workspace.ID"), statics((schema) => { -+export const WorkspaceID = Schema.String.check(Schema.isStartingWith("wrk")).pipe(Schema.brand("Workspace.ID"), statics((schema) => { - const create = () => schema.make("wrk_" + ascending()); - return { - ascending: (id) => { diff --git a/patches/effect@4.0.2.patch b/patches/effect@4.0.2.patch deleted file mode 100644 index 34bc39e02d46727128bc4c16e91b4f7b1aa4a5f6..0000000000000000000000000000000000000000 --- a/patches/effect@4.0.2.patch +++ /dev/null @@ -1,31 +0,0 @@ -diff --git a/dist/rpc/RpcClient.d.ts b/dist/rpc/RpcClient.d.ts -index ebfe86f..3ff235d 100644 ---- a/dist/rpc/RpcClient.d.ts -+++ b/dist/rpc/RpcClient.d.ts -@@ -320,6 +320,8 @@ export declare const layerProtocolWorker: (options: { - declare const ConnectionHooks_base: Context.ServiceClass; - readonly onDisconnect: Effect.Effect; -+ /** Runs when the socket is dropped because the server stopped answering, before `onDisconnect`. */ -+ readonly onPingTimeout?: Effect.Effect | undefined; - }>; - /** - * Represents optional client protocol hooks that run when a transport connects -diff --git a/dist/rpc/RpcClient.js b/dist/rpc/RpcClient.js -index f5b14ef..cccf0a4 100644 ---- a/dist/rpc/RpcClient.js -+++ b/dist/rpc/RpcClient.js -@@ -688,11 +688,11 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun - yield* processData(frames[i]); - } - } -- }).pipe(Effect.scoped, Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({ -+ }).pipe(Effect.scoped, Effect.raceFirst(Effect.flatMap(pinger.timeout, () => (Option.isSome(hooks) && hooks.value.onPingTimeout ? hooks.value.onPingTimeout : Effect.void).pipe(Effect.andThen(Effect.fail(new Socket.SocketError({ - reason: new Socket.SocketReadError({ - cause: new Error("ping timeout") - }) -- }))))); -+ }))))))); - }).pipe(Option.isSome(hooks) ? Effect.ensuring(hooks.value.onDisconnect) : identity, Effect.tapCause(cause => { - const error = Cause.findError(cause); - const hasError = Result.isSuccess(error); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ebcf31218b8c9a5844610c4642dee1ccf4e6304b..acce8eb8928443bb752ffcff7e51db5098595119 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,11 +7,11 @@ settings: catalogs: default: '@effect/openapi-generator': - specifier: 4.0.2 - version: 4.0.2 + specifier: 4.0.4 + version: 4.0.4 '@effect/sql-sqlite-do': - specifier: 4.0.2 - version: 4.0.2 + specifier: 4.0.4 + version: 4.0.4 '@effect/tsgo': specifier: 0.51.1 version: 0.51.1 @@ -108,11 +108,11 @@ overrides: '@clerk/expo': 4.6.8 '@clerk/react': 6.16.1 '@clerk/shared': 4.33.0 - '@effect/atom-react': 4.0.2 - '@effect/platform-node': 4.0.2 - '@effect/platform-node-shared': 4.0.2 - '@effect/sql-pg': 4.0.2 - '@effect/vitest': 4.0.2 + '@effect/atom-react': 4.0.4 + '@effect/platform-node': 4.0.4 + '@effect/platform-node-shared': 4.0.4 + '@effect/sql-pg': 4.0.4 + '@effect/vitest': 4.0.4 '@effect/vitest>vitest': '-' '@expo/dom-webview': 58.0.2 '@expo/metro-config': 58.0.6 @@ -125,9 +125,9 @@ overrides: '@tailwindcss/oxide': 4.3.3 '@tailwindcss/vite': 4.3.3 '@types/node': 24.12.4 - effect: 4.0.2 - '@opencode/protocol>effect': 4.0.2 - '@opencode/schema>effect': 4.0.2 + effect: 4.0.4 + '@opencode/protocol>effect': 4.0.4 + '@opencode/schema>effect': 4.0.4 node-abi: 4.33.0 electron-webauthn>@electron-webauthn/macos: 1.3.1 '@electron-webauthn/macos>objc-js': 1.5.0 @@ -144,21 +144,16 @@ packageExtensionsChecksum: sha256-FYDaKefjFcda1+vgiq8yMpZC4ehE5CyLi/bsCGLgTtY= patchedDependencies: '@clerk/expo@4.6.8': b8b22ab733de5bea846ad9e88046c10582352fe9ad86f314f368b2a823f0f281 - '@effect/platform-node-shared@4.0.2': 4efe73732a53b7d7bdbd9a9263eed06310fc387f870ef4a5e66429e9d1fd7cd9 - '@effect/vitest@4.0.2': 595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9 + '@effect/vitest@4.0.4': ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad '@expo/metro-config@58.0.6': 90fa980e8b6480631fb2fbb04559834e3c612db40c550cd828f11be297d8d760 '@ff-labs/fff-node@0.11.0': 8956d6ed6938a1bce69b2d0b067ff258dd9ca753c5bbe7006f7b68f760ea3ad2 '@legendapp/list@3.3.5': 680cc6a5c5b4a4032e467e7b3fde22f89a84c0ee2e6eac6fda737d6277cc0806 - '@opencode/client@2.0.23': f725d6e6d9af0d56dc6ed71b863518fbfc751af1773cff2311209d2c404cf4cd - '@opencode/protocol@2.0.23': 17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685 - '@opencode/schema@2.0.23': 650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59 '@pierre/diffs@1.5.2': 298e94372dbd51846a4e26ece2ecc3e22eb1f94b0450b1f1a9c6fec127809be7 '@react-native-ai/apple@0.12.0': 2d09870c2848d185cb05b53ed823a46e12dba519324d8dd8e584e28731990f9d '@react-native-menu/menu@2.0.0': a4866ecfcd44f318043de839d20110c17e14909004900f002ffe12050376f2ba '@react-navigation/native-stack@7.17.6': d2d52f3776e30765519748fd5e177592dc3b9cc778c52fb00e02674dfa9042c5 alchemy@2.0.0-beta.80: bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd dbus-next@0.10.2: cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4 - effect@4.0.2: ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688 expo-audio@58.0.4: c20cb927d6848c53e7bf6ec14fe12f19daae9210165d2dbaf4e0f97ce31e8742 expo-blur@58.0.3: d0311b0c0b05bd94393bd9a84653cb42503d5f3c8a19eb2627c34ace08bedf18 expo-glass-effect@58.0.3: f750041c45ab838a3530451dc7b50d6640a79141037a1b0499c5e3412a860c57 @@ -210,8 +205,8 @@ importers: specifier: 0.13.0 version: 0.13.0 '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@napi-rs/keyring': specifier: ^1.3.0 version: 1.3.0 @@ -234,8 +229,8 @@ importers: specifier: 0.10.2 version: 0.10.2(patch_hash=cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4) effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 electron: specifier: 44.4.5 version: 44.4.5 @@ -262,8 +257,8 @@ importers: version: 7.4.2 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -311,8 +306,8 @@ importers: specifier: 4.6.8 version: 4.6.8(patch_hash=b8b22ab733de5bea846ad9e88046c10582352fe9ad86f314f368b2a823f0f281)(9fda653cb5598772915b4a39a7aee91d) '@effect/atom-react': - specifier: 4.0.2 - version: 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(react@19.3.0)(scheduler@0.28.0) + specifier: 4.0.4 + version: 4.0.4(effect@4.0.4)(react@19.3.0)(scheduler@0.28.0) '@expo-google-fonts/dm-sans': specifier: ^0.4.2 version: 0.4.2 @@ -410,8 +405,8 @@ importers: specifier: 8.0.3 version: 8.0.3 effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 expo: specifier: 58.0.2 version: 58.0.2(bd4444e61fed72e958d45f73733b7f54) @@ -582,8 +577,8 @@ importers: version: 1.12.1(@expo/metro-config@58.0.6(patch_hash=90fa980e8b6480631fb2fbb04559834e3c612db40c550cd828f11be297d8d760)(bufferutil@4.1.0)(expo@58.0.2)(typescript@7.0.2)(utf-8-validate@6.0.6))(metro-cache@0.87.1)(metro-transform-worker@0.87.1(bufferutil@4.1.0)(utf-8-validate@6.0.6))(metro@0.87.1(bufferutil@4.1.0)(utf-8-validate@6.0.6))(react-native@0.88.0-rc.3(@babel/core@7.29.7)(@react-native/metro-config@0.88.0-rc.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(utf-8-validate@6.0.6))(react@19.3.0)(tailwindcss@4.3.3) devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@pierre/trees': specifier: 1.0.0-beta.6 version: 1.0.0-beta.6(@pierre/theme@2.0.0)(@shikijs/themes@4.2.0)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)(shiki@4.2.0) @@ -618,11 +613,11 @@ importers: specifier: 1.0.35 version: 1.0.35 '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/platform-node-shared': - specifier: 4.0.2 - version: 4.0.2(patch_hash=4efe73732a53b7d7bdbd9a9263eed06310fc387f870ef4a5e66429e9d1fd7cd9)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(utf-8-validate@6.0.6) '@ff-labs/fff-node': specifier: 0.11.0 version: 0.11.0(patch_hash=8956d6ed6938a1bce69b2d0b067ff258dd9ca753c5bbe7006f7b68f760ea3ad2) @@ -681,8 +676,8 @@ importers: specifier: workspace:* version: link:../../packages/source-control-gitlab effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 jose: specifier: 'catalog:' version: 6.2.2 @@ -709,8 +704,8 @@ importers: version: 3.4.0 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@modelcontextprotocol/sdk': specifier: 1.29.0 version: 1.29.0(zod@4.6.5) @@ -781,8 +776,8 @@ importers: specifier: ^3.2.2 version: 3.2.2(react@19.2.6) '@effect/atom-react': - specifier: 4.0.2 - version: 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(react@19.2.6)(scheduler@0.28.0) + specifier: 4.0.4 + version: 4.0.4(effect@4.0.4)(react@19.2.6)(scheduler@0.28.0) '@formkit/auto-animate': specifier: ^0.9.0 version: 0.9.0 @@ -880,8 +875,8 @@ importers: specifier: ^3.4.16 version: 3.4.16 effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 hast-util-to-html: specifier: ^9.0.5 version: 9.0.5 @@ -935,11 +930,11 @@ importers: version: 5.0.14(@types/react@19.3.0)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6)) devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@rolldown/plugin-babel': specifier: ^0.2.0 version: 0.2.3(@babel/core@7.29.7)(@babel/plugin-transform-runtime@7.29.7(@babel/core@7.29.7))(@babel/runtime@7.29.7)(@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(rolldown@1.2.5) @@ -1007,11 +1002,11 @@ importers: specifier: 3.18.1 version: 3.18.1(react-dom@19.3.0(react@19.3.0))(react@19.2.6) '@effect/sql-pg': - specifier: 4.0.2 - version: 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + specifier: 4.0.4 + version: 4.0.4(effect@4.0.4) '@effect/sql-sqlite-do': specifier: 'catalog:' - version: 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + version: 4.0.4(effect@4.0.4) '@noble/curves': specifier: 'catalog:' version: 1.9.1 @@ -1029,23 +1024,23 @@ importers: version: link:../../packages/shared alchemy: specifier: 2.0.0-beta.80 - version: 2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(ba3b2ceb33761bc36b3beb11002eb316) + version: 2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(65456df005cbbd653b96024b9ea83b1c) drizzle-orm: specifier: 1.0.0-rc.5-ab785fc - version: 1.0.0-rc.5-ab785fc(da2d75dec181fbafaeb6986c8741457b) + version: 1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.4))(@effect/sql-pg@4.0.4(effect@4.0.4))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.4))(@effect/sql-sqlite-do@4.0.4(effect@4.0.4))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.4)(expo-sqlite@58.0.8(expo@58.0.2)(react-native@0.88.0-rc.3(@babel/core@7.29.7)(@react-native/metro-config@0.88.0-rc.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(valibot@1.2.0(typescript@7.0.2))(zod@4.4.3) effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@cloudflare/workers-types': specifier: ^4.20260601.1 version: 4.20260604.1 '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1065,18 +1060,18 @@ importers: oxlint-plugin-t3code: dependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@oxlint/plugins': specifier: ^1.63.0 version: 1.68.0 effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) vite-plus: specifier: 1.0.0 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@5.0.1(vitest@5.0.1))(bufferutil@4.1.0)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) @@ -1114,15 +1109,15 @@ importers: specifier: workspace:* version: link:../source-control-gitlab effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 three: specifier: 0.180.0 version: 0.180.0 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/three': specifier: 0.180.0 version: 0.180.0 @@ -1133,12 +1128,12 @@ importers: packages/contracts: dependencies: effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) vite-plus: specifier: 1.0.0 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@5.0.1(vitest@5.0.1))(bufferutil@4.1.0)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) @@ -1146,18 +1141,18 @@ importers: packages/effect-acp: dependencies: effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/openapi-generator': specifier: 'catalog:' - version: 4.0.2(@effect/platform-node@4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(encoding@0.1.13) + version: 4.0.4(@effect/platform-node@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.4)(encoding@0.1.13) '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1168,18 +1163,18 @@ importers: packages/effect-codex-app-server: dependencies: effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/openapi-generator': specifier: 'catalog:' - version: 4.0.2(@effect/platform-node@4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(encoding@0.1.13) + version: 4.0.4(@effect/platform-node@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.4)(encoding@0.1.13) '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1202,15 +1197,15 @@ importers: specifier: 8.0.3 version: 8.0.3 effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1239,15 +1234,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/provider-testing': specifier: workspace:* version: link:../provider-testing @@ -1270,15 +1265,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1304,18 +1299,18 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 yaml: specifier: ^2.9.0 version: 2.9.0 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/provider-testing': specifier: workspace:* version: link:../provider-testing @@ -1341,15 +1336,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/provider-testing': specifier: workspace:* version: link:../provider-testing @@ -1378,15 +1373,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/provider-testing': specifier: workspace:* version: link:../provider-testing @@ -1403,14 +1398,14 @@ importers: specifier: ^1.3.15 version: 1.15.13 '@opencode/client': - specifier: 2.0.23 - version: 2.0.23(patch_hash=f725d6e6d9af0d56dc6ed71b863518fbfc751af1773cff2311209d2c404cf4cd)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + specifier: 2.0.28 + version: 2.0.28(effect@4.0.4) '@opencode/protocol': - specifier: 2.0.23 - version: 2.0.23(patch_hash=17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685) + specifier: 2.0.28 + version: 2.0.28 '@opencode/schema': - specifier: 2.0.23 - version: 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59) + specifier: 2.0.28 + version: 2.0.28 '@t3tools/contracts': specifier: workspace:* version: link:../contracts @@ -1421,15 +1416,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/provider-testing': specifier: workspace:* version: link:../provider-testing @@ -1452,15 +1447,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/provider-testing': specifier: workspace:* version: link:../provider-testing @@ -1474,8 +1469,8 @@ importers: packages/provider-testing: dependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@t3tools/contracts': specifier: workspace:* version: link:../contracts @@ -1486,12 +1481,12 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1511,8 +1506,8 @@ importers: specifier: workspace:* version: link:../contracts effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 jose: specifier: 'catalog:' version: 6.2.2 @@ -1551,11 +1546,11 @@ importers: version: 2.9.0 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1581,15 +1576,15 @@ importers: specifier: 8.0.3 version: 8.0.3 effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/source-control-testing': specifier: workspace:* version: link:../source-control-testing @@ -1615,12 +1610,12 @@ importers: specifier: workspace:* version: link:../source-control-core effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1637,12 +1632,12 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1665,12 +1660,12 @@ importers: specifier: workspace:* version: link:../source-control-core effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/source-control-testing': specifier: workspace:* version: link:../source-control-testing @@ -1696,12 +1691,12 @@ importers: specifier: workspace:* version: link:../source-control-core effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/source-control-testing': specifier: workspace:* version: link:../source-control-testing @@ -1727,15 +1722,15 @@ importers: specifier: workspace:* version: link:../source-control-core effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/source-control-testing': specifier: workspace:* version: link:../source-control-testing @@ -1758,12 +1753,12 @@ importers: specifier: workspace:* version: link:../source-control-core effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@t3tools/source-control-testing': specifier: workspace:* version: link:../source-control-testing @@ -1786,8 +1781,8 @@ importers: specifier: workspace:* version: link:../source-control-core effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@types/node': specifier: 24.12.4 @@ -1802,15 +1797,15 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1824,12 +1819,12 @@ importers: specifier: workspace:* version: link:../shared effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/node': specifier: 24.12.4 version: 24.12.4 @@ -1840,8 +1835,8 @@ importers: scripts: dependencies: '@effect/platform-node': - specifier: 4.0.2 - version: 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + specifier: 4.0.4 + version: 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) '@electron/asar': specifier: ^4.3.0 version: 4.3.0 @@ -1855,8 +1850,8 @@ importers: specifier: workspace:* version: link:../packages/tailscale effect: - specifier: 4.0.2 - version: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + specifier: 4.0.4 + version: 4.0.4 plist: specifier: 'catalog:' version: 3.1.1 @@ -1868,8 +1863,8 @@ importers: version: 0.35.4(@types/node@24.12.4) devDependencies: '@effect/vitest': - specifier: 4.0.2 - version: 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + specifier: 4.0.4 + version: 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) '@types/plist': specifier: 'catalog:' version: 3.0.5 @@ -1916,8 +1911,8 @@ packages: peerDependencies: '@distilled.cloud/cloudflare': 1.0.0-rc.13 '@effect/platform-bun': ^4.0.0 - '@effect/platform-node': 4.0.2 - effect: 4.0.2 + '@effect/platform-node': 4.0.4 + effect: 4.0.4 rolldown: 1.2.5 vite: ^7.0.0 || ^8.0.0 peerDependenciesMeta: @@ -1933,7 +1928,7 @@ packages: '@alchemy.run/floci@2.0.0-beta.80': resolution: {integrity: sha512-gtUXFitVY9pSQQYCDtSVyjfd5YOKY3Wleg3WCG5yWno7/l7xBo4kfOMbM63tzWnmka9LewVSITbMfwnC4D/73A==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@alchemy.run/node-utils@2.0.0-beta.80': resolution: {integrity: sha512-uOhVDQZTjwh1AU4mrk0wB5rQaziTwSrVMfqwFP8wALfU//nveu4goOWZimHtqytXiybENh+iEbALH25EFAkc7A==} @@ -2971,82 +2966,82 @@ packages: '@distilled.cloud/acme@1.0.0-rc.13': resolution: {integrity: sha512-3rmzH125jQxk0zpCvXGNEybSaqpAolyCX+8LWDDrXf+wIKs67GflkJyQLjOOh0lKARe29hdUZGgqEbbvpp0LNA==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/aws@1.0.0-rc.13': resolution: {integrity: sha512-6ZGcp0LkniB0I2l8Gr7vKRQgTZTch0/07iuvuMZv9Nu+rWwNuZG9VHTUdlIoarWgCHFUNN8yvSYBGOjaeN99tQ==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/axiom@1.0.0-rc.13': resolution: {integrity: sha512-aRoJtvfXgWi5dtfjuJvDwnArRKvv2MPYHCxYeZcxZbqe62IaQA5yu/khft7TJvxeDyJoSDnVXZu3RyJjNmBA4g==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/cloudflare@1.0.0-rc.13': resolution: {integrity: sha512-Py5FoA6azyYExDb91VaeC+9x+ravOBSRhXeUmpcQjCtgqmOdiXgc2YZGMMPI68DF+kMuHRVIrR+2uRZNDOhYjw==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/core@1.0.0-rc.13': resolution: {integrity: sha512-RYyrxW+F5zrTuu1UWV/JoycholBCIkXIusYJdDniDwCdmbjdKGl07KlkkeeY774uBawNGf+pt1ESNGeLVnNHsg==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/doppler@1.0.0-rc.13': resolution: {integrity: sha512-GgOEUCc4Bx0C+lYNfZ4OqaA3ULvqDUQTJC8gobSh1L0jfrWclv/kRcSr43v4IXyStld+saUvDfDZgeGzlE74OA==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/fly-io@1.0.0-rc.13': resolution: {integrity: sha512-Ipp+9nvs+PzqwDPhZq2/BEHNUeWzXKhrvjfT/eBLFHo/QpH0HgdMH8MSQe6/LGszZoormwA6ZrTv2wxaFO7ZiQ==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/gcp@1.0.0-rc.13': resolution: {integrity: sha512-un8jqil9ejt96oN+OfEDUsbrEOpC6Ut4B/73DqKDttvt0Btal1OeBNTTQsftVCpeEzXAvkYKGRIT2AeEu1J5jA==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/hetzner@1.0.0-rc.13': resolution: {integrity: sha512-FvqofgMypNkeZbnjGjWMZqvqGd9GxcMzdbi/6JrbcPaHMJG+CCBGt/mAa7mLlEovzwVaGCsBnOXJ6rP5pZjB4Q==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/infisical@1.0.0-rc.13': resolution: {integrity: sha512-Zz8ksA/Y8UUUnWag2UBxB5WYA6wLqOS78ugWJ3cOr9Ot+4bC0NJYWanq35uFInozLXWhun84USU2wOI+mdwQUQ==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/neon@1.0.0-rc.13': resolution: {integrity: sha512-2JvbBFj1kBfkDVPnWcJZ7TJ1cJwWBtScAY7SNJ2qNBUuAK1Wf2kjJXU0/j16eCJ48BQigPArQFWL51wVu/EUQQ==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/planetscale@1.0.0-rc.13': resolution: {integrity: sha512-AM97YGRnDfZdqsxFgQMQ83p7ZlRqxS6/foTTJA5P590UMbbOyrQyFyd33BD0agul8a3ngZde3Oej6v7BN55aWw==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/prisma@1.0.0-rc.13': resolution: {integrity: sha512-+UmHSp9JV8XQl5t5tTdQBY+dWZ9abrEoc7leYEctA0Ar1TrKZEl2EaeQDoumrg4RyGaacRlirEbxaDFI4SOPtQ==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/railway@1.0.0-rc.13': resolution: {integrity: sha512-yXalRS3GFLo3hWM0HXptqudi23NVCM4FRD20db2/Ob9FFcNrMJik1fopv+74HOiV+BuxfkCP609KsEK6LVdB/g==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/stripe@1.0.0-rc.13': resolution: {integrity: sha512-jLTJ1mg4U39lHZb9EGYBJLR91yB3LSG6fVxix+r1BbqaTovWzE+NuJ7fu9fRSeax9jRAqsGLLxe9IxJbOtwQnQ==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@distilled.cloud/zerossl@1.0.0-rc.13': resolution: {integrity: sha512-dnxhg39lZjpTdZbHCVYPoUC9E2r8eSHbqiYDhSq2EurVPJcc9YRXlxZR1bP1nniSp078XV8GA+aUECt/Z56aQg==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@dnd-kit/accessibility@3.1.1': resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} @@ -3079,52 +3074,52 @@ packages: '@drizzle-team/brocli@0.12.0': resolution: {integrity: sha512-mlUE+rZ8CatQekLhnaiN91Iemdd+e2gFKooGlnRB3oPTL3VghLfX24dx7HrzMNeC1JrIB/0kpsfyty3f5HNfxQ==} - '@effect/atom-react@4.0.2': - resolution: {integrity: sha512-rg9xnPHzjURhKhOm+bKnYitPPQC02m6R7ZmJLNdxtrNCgDQ9fSOPqZHN5W/GzUw+OsvplKSvaBe/JSQejeYKYA==} + '@effect/atom-react@4.0.4': + resolution: {integrity: sha512-/cd4zHAS/j4QEAJahvIuvCjASI9iKPsKoYDJF1WdqBH6ol+7PIzV5jfIxyd5K0hTlLlavZnzEfi849pcS84apg==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 react: '>=19.0.0 <20.0.0' - scheduler: '>=0.25.0 <0.28.0' + scheduler: '>=0.25.0 <0.29.0' - '@effect/openapi-generator@4.0.2': - resolution: {integrity: sha512-rSH4VFCPs8d0LnB4QMPaGpT3Z3KrF7mCV+hvpv8FDXerImpYMSEzaLN5WWB7LG+mOOcTWIa3KYWvBBf0kH/JrQ==} + '@effect/openapi-generator@4.0.4': + resolution: {integrity: sha512-5TcA4HP2Eml1Y3DCP1JCojYVeioGrtr9MxDDWCKYrfUQx2U/JRcnCzH0rJ+sD5obUAn9QKw2QIvb+/A3mxP35w==} hasBin: true peerDependencies: - '@effect/platform-node': 4.0.2 - effect: 4.0.2 + '@effect/platform-node': 4.0.4 + effect: 4.0.4 - '@effect/platform-node-shared@4.0.2': - resolution: {integrity: sha512-xn8aDw9p/QUPt1Yi0C3HUMcycT+MjHfAe19FDUDrUuzcwq0xxskkamVSqbdykF/Dsuus4aZTsCBZA/vkhHIfbQ==} + '@effect/platform-node-shared@4.0.4': + resolution: {integrity: sha512-gh2KRmqGWrJ0FVL8GqnI1GpB+fCfCUI7sGiUZkxxBHyHj1t94rm6VDJffCfuVZWe6GpvYXtizifVczUrgOce8A==} engines: {node: '>=18.0.0'} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 - '@effect/platform-node@4.0.2': - resolution: {integrity: sha512-RWesXBQStnFHdD465gR5thFKgXO7FSyCKRZ56nWXB7PedNVzr8vV0nb/3MULLdri493sMz/b/pmGBTb6K8cBjQ==} + '@effect/platform-node@4.0.4': + resolution: {integrity: sha512-SdoyQMrO5zmqBebb2fxDk0sHYyJjBiw4QmLdV2ZcWf3ATpQPge3B5sTLijZg49PadekOwNeO83o5TfdtiiFEig==} engines: {node: '>=18.0.0'} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 redis: '>=5.0.0 <7.0.0' '@effect/sql-d1@4.0.0': resolution: {integrity: sha512-pmkzncZCGD6CLyvc89keEBU85h+gHVCu/LKQnThd+ruYSUbG0R9jYA+lnk3R8Djp0wQW6SbsbmHQuhopIYyo3Q==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 - '@effect/sql-pg@4.0.2': - resolution: {integrity: sha512-i2N5F0L5s1S8Nx2I8V7k+awBinP26b5xiiHL1zn5b6RALNnloiU7FK1yS4dAkmqG9B0EcOVxvJrIpoMWwrB4hw==} + '@effect/sql-pg@4.0.4': + resolution: {integrity: sha512-41x5O2C+gRF3A/Sf+IkV+OOzo5BexsIubH1cib3m4NwhZcjQUQUrq5YbOw7fIuWmBODtAyHNXFjaeEtiXoPL9Q==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@effect/sql-sqlite-bun@4.0.0-rc.112': resolution: {integrity: sha512-EqR8pWZo3VzedRvP6qo5HcfqNmFvSa+sQLWQl3oBMx2KY1FCc8NYjep79wYjNkW0qABnffrPUXCMTOncd1A+5g==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 - '@effect/sql-sqlite-do@4.0.2': - resolution: {integrity: sha512-dbKYFZSfdaIbbnYgvu432f9ISi/nSaXCYRfoK0HWKB8NwqI7hspaFvc4cW6ETDJyaoCDJzKzBQxrvCmA/T0XHw==} + '@effect/sql-sqlite-do@4.0.4': + resolution: {integrity: sha512-6Uqa6zbm5GPTWjoIVVty8msQ5C+8coPQDzj8qZM9Mk4NXUWa/RVlaziW335mXZ/8tCnQsFj2iJ/CJdv54JXuew==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@effect/tsgo-darwin-arm64@0.51.1': resolution: {integrity: sha512-Jx+1RB3pz1B2zYs1EmxybwDOq9KRpfdu/rn1XTULNMZmqUJZuvTQU9CRqB0g/ZgIa6MeNBZEYvmAu4Dq2/QVWA==} @@ -3165,10 +3160,10 @@ packages: resolution: {integrity: sha512-i6mA6cNah+0mkPdu8qZILCO3Pnd9kWo03/s82Ju+1DFhdL28HFagi+1PRGxqgq1uMaHziWQ+ciKvOmIoks2RdA==} hasBin: true - '@effect/vitest@4.0.2': - resolution: {integrity: sha512-Zb72nu7iUy3rNdBp9J1Xu5oUQGwJ8cOYsUwmYgujj88aqyvASRDjOS01SjlcPViqf77csduetKdCJTVndMNfzw==} + '@effect/vitest@4.0.4': + resolution: {integrity: sha512-l5KN46RbDVpqZxWzwXZtX6FVQiyzd+/hTYqL543uSDRo7hC0m19IeICh6O9U/nqCtfersqsNZnBjgHFfkuHsBw==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 '@electric-sql/pglite@0.3.15': resolution: {integrity: sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==} @@ -4521,10 +4516,10 @@ packages: '@opencode-ai/sdk@1.15.13': resolution: {integrity: sha512-4TwojIoQ8EG6/mVBuUVYZXiFcwNmiiytEnjnvyuvSJjGwFIlw2YIBFxtSVC3FbwwbwHT63teh1RHiQUUC4U5xw==} - '@opencode/client@2.0.23': - resolution: {integrity: sha512-tHfYu7sKNxFu2dZ7Pu5vZG4T8GHqU71ZCsXHZ/RoI0LLdG7t2zwePHWR9aNbcSP+jDUGyaQlzr5utC9Uduczvg==} + '@opencode/client@2.0.28': + resolution: {integrity: sha512-YV0Yxk93/K2h4Xy/sEW/4ZYGMwn7ltxG2Y/Vdy2VCIZ2z0/r9MI6x5/XawSNfCvImBxuHkQNbYtu9Rgp3ArJ4g==} peerDependencies: - effect: 4.0.2 + effect: 4.0.4 solid-js: '>=1.9.0' peerDependenciesMeta: effect: @@ -4532,11 +4527,11 @@ packages: solid-js: optional: true - '@opencode/protocol@2.0.23': - resolution: {integrity: sha512-acwAvjQgzzBsZ0h2Phvo+P/SurCexqcidPL2AYB6cDDPgOhY7ppeoKJAOQ76zAUcT4WBlcQzLl6Lq3L+IR6OEw==} + '@opencode/protocol@2.0.28': + resolution: {integrity: sha512-yfc0SDa7FxqSDZRC0olACnhB7Gvsx8X0ji0gEmO2xunCswNiJTCPUngcIKphxN5NFeMl/A5E0iNG4q39KW5fyA==} - '@opencode/schema@2.0.23': - resolution: {integrity: sha512-DglA+CCNmCaiAJ8FqAKo2EKIkCOF9/EmMEYowcXhTrQcoJ7eaTx7ytGjPgis6VHQuU4aaAgwZYw96ypS3ojsIw==} + '@opencode/schema@2.0.28': + resolution: {integrity: sha512-NHl42ngFN6uLCjtmtooYlEGEayng9ZFc+30DAqQuPcvKpMWsO23OqximHlukxtErp209C4f9LW+OJH/6k60+yw==} '@oslojs/asn1@1.0.0': resolution: {integrity: sha512-zw/wn0sj0j0QKbIXfIlnEcTviaCzYOY3V5rAyjR6YtOByFtJiT574+8p9Wlach0lZH9fddD4yb9laEAIl4vXQA==} @@ -7144,15 +7139,15 @@ packages: '@alchemy.run/frontend-frameworks': 2.0.0-beta.80 '@aws/durable-execution-sdk-js': ^2.1.0 '@effect/platform-bun': ^4.0.0 - '@effect/platform-node': 4.0.2 + '@effect/platform-node': 4.0.4 '@effect/sql-mysql2': ^4.0.0 - '@effect/sql-pg': 4.0.2 - '@effect/vitest': 4.0.2 + '@effect/sql-pg': 4.0.4 + '@effect/vitest': 4.0.4 '@prisma/orm-postgres': 8.0.0-rc.11 '@vercel/nft': ^1.10.2 drizzle-kit: 1.0.0-rc.5-ab785fc drizzle-orm: 1.0.0-rc.5-ab785fc - effect: 4.0.2 + effect: 4.0.4 mongodb: ^6.10.0 mysql2: ^3.24.2 pg: ^8.22.0 @@ -8182,7 +8177,7 @@ packages: '@effect/sql-d1': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-libsql': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-mysql2': '>=4.0.0-beta.105 || >=4.0.0' - '@effect/sql-pg': 4.0.2 + '@effect/sql-pg': 4.0.4 '@effect/sql-pglite': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-sqlite-bun': '>=4.0.0-beta.105 || >=4.0.0' '@effect/sql-sqlite-do': '>=4.0.0-beta.105 || >=4.0.0' @@ -8213,7 +8208,7 @@ packages: arktype: '>=2.0.0' better-sqlite3: '>=9.3.0' bun-types: '*' - effect: 4.0.2 + effect: 4.0.4 expo-sqlite: '>=14.0.0' minipg: '>=0.2.0' mssql: ^11.0.1 @@ -8340,8 +8335,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@4.0.2: - resolution: {integrity: sha512-YeYnLqSFrL4+tCOXRrfNP03w8FILoF/wDl+ukraJAGzXrjcS383W7LAAvGBbLatEyktmLxRq+9xJinx7QzXW5A==} + effect@4.0.4: + resolution: {integrity: sha512-Sr50OeVSC3M5UkoUYUhFf3EULryhGaZZUf6OzDHTvaznOw7HRlxOKdF3/4nvQXHL22StOyMG3Cvo8Bt7xUp+Ng==} ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} @@ -12434,14 +12429,14 @@ snapshots: dependencies: json-schema: 0.4.0 - '@alchemy.run/cloudflare-runtime@2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)))(@effect/platform-node@4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(rolldown@1.2.5)(typescript@7.0.2)': + '@alchemy.run/cloudflare-runtime@2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.4))(@effect/platform-node@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.4)(rolldown@1.2.5)(typescript@7.0.2)': dependencies: '@alchemy.run/node-utils': 2.0.0-beta.80 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260918.1) - '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.4) '@puppeteer/browsers': 3.2.2(yauzl@3.4.0) capnp-es: 0.0.16(typescript@7.0.2) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 magic-string: 0.30.21 mime: 4.1.0 sharp: 0.35.4(@types/node@24.12.4) @@ -12449,7 +12444,7 @@ snapshots: workerd: 1.20260918.1 yauzl: 3.4.0 optionalDependencies: - '@effect/platform-node': 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) + '@effect/platform-node': 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) rolldown: 1.2.5 vite: '@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' transitivePeerDependencies: @@ -12457,9 +12452,9 @@ snapshots: - proxy-agent - typescript - '@alchemy.run/floci@2.0.0-beta.80(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@alchemy.run/floci@2.0.0-beta.80(effect@4.0.4)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 '@alchemy.run/node-utils@2.0.0-beta.80': dependencies: @@ -13741,86 +13736,86 @@ snapshots: '@dimforge/rapier3d-compat@0.12.0': {} - '@distilled.cloud/acme@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/acme@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/aws@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/aws@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) '@smithy/types': 4.18.0 - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 - '@distilled.cloud/axiom@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/axiom@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/core@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/core@1.0.0-rc.13(effect@4.0.4)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 graphql: 16.11.0 - '@distilled.cloud/doppler@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/doppler@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/fly-io@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/fly-io@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/gcp@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/gcp@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/hetzner@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/hetzner@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/infisical@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/infisical@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/neon@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/neon@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/planetscale@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/planetscale@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/prisma@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/prisma@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/railway@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/railway@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/stripe@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/stripe@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 - '@distilled.cloud/zerossl@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@distilled.cloud/zerossl@1.0.0-rc.13(effect@4.0.4)': dependencies: - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + effect: 4.0.4 '@dnd-kit/accessibility@3.1.1(react@19.2.6)': dependencies: @@ -13856,62 +13851,62 @@ snapshots: '@drizzle-team/brocli@0.12.0': {} - '@effect/atom-react@4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(react@19.2.6)(scheduler@0.28.0)': + '@effect/atom-react@4.0.4(effect@4.0.4)(react@19.2.6)(scheduler@0.28.0)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 react: 19.2.6 scheduler: 0.28.0 - '@effect/atom-react@4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(react@19.3.0)(scheduler@0.28.0)': + '@effect/atom-react@4.0.4(effect@4.0.4)(react@19.3.0)(scheduler@0.28.0)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 react: 19.3.0 scheduler: 0.28.0 - '@effect/openapi-generator@4.0.2(@effect/platform-node@4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(encoding@0.1.13)': + '@effect/openapi-generator@4.0.4(@effect/platform-node@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.4)(encoding@0.1.13)': dependencies: - '@effect/platform-node': 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@effect/platform-node': 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) + effect: 4.0.4 swagger2openapi: 7.0.8(encoding@0.1.13) transitivePeerDependencies: - encoding - '@effect/platform-node-shared@4.0.2(patch_hash=4efe73732a53b7d7bdbd9a9263eed06310fc387f870ef4a5e66429e9d1fd7cd9)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(utf-8-validate@6.0.6)': + '@effect/platform-node-shared@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(utf-8-validate@6.0.6)': dependencies: '@types/ws': 8.18.2 - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 ws: 8.22.0(bufferutil@4.1.0)(utf-8-validate@6.0.6) transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6)': + '@effect/platform-node@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6)': dependencies: - '@effect/platform-node-shared': 4.0.2(patch_hash=4efe73732a53b7d7bdbd9a9263eed06310fc387f870ef4a5e66429e9d1fd7cd9)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(utf-8-validate@6.0.6) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@effect/platform-node-shared': 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(utf-8-validate@6.0.6) + effect: 4.0.4 redis: 6.2.1 undici: 8.11.2 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/sql-d1@4.0.0(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@effect/sql-d1@4.0.0(effect@4.0.4)': dependencies: '@cloudflare/workers-types': 5.20261004.1 - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 - '@effect/sql-pg@4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@effect/sql-pg@4.0.4(effect@4.0.4)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 - '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.4)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 optional: true - '@effect/sql-sqlite-do@4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@effect/sql-sqlite-do@4.0.4(effect@4.0.4)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 '@effect/tsgo-darwin-arm64@0.51.1': optional: true @@ -13944,9 +13939,9 @@ snapshots: '@effect/tsgo-win32-arm64': 0.51.1 '@effect/tsgo-win32-x64': 0.51.1 - '@effect/vitest@4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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)': + '@effect/vitest@4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)': dependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 vite-plus: 1.0.0(@types/node@24.12.4)(@vitest/ui@5.0.1(vitest@5.0.1))(bufferutil@4.1.0)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) transitivePeerDependencies: - '@arethetypeswrong/core' @@ -15374,22 +15369,22 @@ snapshots: dependencies: cross-spawn: 7.0.6 - '@opencode/client@2.0.23(patch_hash=f725d6e6d9af0d56dc6ed71b863518fbfc751af1773cff2311209d2c404cf4cd)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))': + '@opencode/client@2.0.28(effect@4.0.4)': dependencies: - '@opencode/protocol': 2.0.23(patch_hash=17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685) - '@opencode/schema': 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59) + '@opencode/protocol': 2.0.28 + '@opencode/schema': 2.0.28 optionalDependencies: - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 - '@opencode/protocol@2.0.23(patch_hash=17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685)': + '@opencode/protocol@2.0.28': dependencies: - '@opencode/schema': 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59) - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + '@opencode/schema': 2.0.28 + effect: 4.0.4 - '@opencode/schema@2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59)': + '@opencode/schema@2.0.28': dependencies: '@standard-schema/spec': 1.1.0 - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 '@oslojs/asn1@1.0.0': dependencies: @@ -17610,37 +17605,37 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - alchemy@2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(ba3b2ceb33761bc36b3beb11002eb316): + alchemy@2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(65456df005cbbd653b96024b9ea83b1c): dependencies: - '@alchemy.run/cloudflare-runtime': 2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)))(@effect/platform-node@4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(rolldown@1.2.5)(typescript@7.0.2) - '@alchemy.run/floci': 2.0.0-beta.80(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + '@alchemy.run/cloudflare-runtime': 2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.4))(@effect/platform-node@4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6))(@types/node@24.12.4)(@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0))(effect@4.0.4)(rolldown@1.2.5)(typescript@7.0.2) + '@alchemy.run/floci': 2.0.0-beta.80(effect@4.0.4) '@alchemy.run/node-utils': 2.0.0-beta.80 '@alchemy.run/sigil': 0.1.0-alpha.1(@types/react@19.3.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)) - '@distilled.cloud/acme': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/aws': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/axiom': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/doppler': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/fly-io': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/gcp': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/hetzner': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/infisical': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/neon': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/planetscale': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/prisma': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/railway': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/stripe': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@distilled.cloud/zerossl': 1.0.0-rc.13(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@effect/sql-d1': 4.0.0(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@effect/sql-sqlite-do': 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + '@distilled.cloud/acme': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/aws': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/axiom': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/doppler': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/fly-io': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/gcp': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/hetzner': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/infisical': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/neon': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/planetscale': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/prisma': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/railway': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/stripe': 1.0.0-rc.13(effect@4.0.4) + '@distilled.cloud/zerossl': 1.0.0-rc.13(effect@4.0.4) + '@effect/sql-d1': 4.0.0(effect@4.0.4) + '@effect/sql-sqlite-do': 4.0.4(effect@4.0.4) '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) '@neon/functions': 0.11.0(hono@4.13.7) '@octokit/rest': 22.0.1 '@octokit/webhooks': 14.2.0 '@types/aws-lambda': 8.10.161 capnweb: 0.12.0 - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 fflate: 0.8.3 libsodium-wrappers: 0.8.4 pathe: 2.0.3 @@ -17649,11 +17644,11 @@ snapshots: tinyglobby: 0.2.17 yaml: 2.9.0 optionalDependencies: - '@effect/platform-node': 4.0.2(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(redis@6.2.1)(utf-8-validate@6.0.6) - '@effect/sql-pg': 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@effect/vitest': 4.0.2(patch_hash=595b7d26fb635caba9c3d39fcb189bb78a000192f8d3b60ead7174b310d1ade9)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688))(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) + '@effect/platform-node': 4.0.4(bufferutil@4.1.0)(effect@4.0.4)(redis@6.2.1)(utf-8-validate@6.0.6) + '@effect/sql-pg': 4.0.4(effect@4.0.4) + '@effect/vitest': 4.0.4(patch_hash=ebaec66c6bdd25e1b8d5bfd4a14f25ab959bdcca6e22ed8871d061e50e2db0ad)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.4)(esbuild@0.28.2)(jiti@2.7.0)(jsdom@30.1.0(@noble/hashes@1.8.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) drizzle-kit: 1.0.0-rc.5-ab785fc - drizzle-orm: 1.0.0-rc.5-ab785fc(da2d75dec181fbafaeb6986c8741457b) + drizzle-orm: 1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.4))(@effect/sql-pg@4.0.4(effect@4.0.4))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.4))(@effect/sql-sqlite-do@4.0.4(effect@4.0.4))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.4)(expo-sqlite@58.0.8(expo@58.0.2)(react-native@0.88.0-rc.3(@babel/core@7.29.7)(@react-native/metro-config@0.88.0-rc.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(valibot@1.2.0(typescript@7.0.2))(zod@4.4.3) mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9) pg: 8.23.0 vite: '@voidzero-dev/vite-plus-core@1.0.0(@types/node@24.12.4)(esbuild@0.28.2)(jiti@2.7.0)(terser@5.48.0)(typescript@7.0.2)(unrun@0.2.39)(yaml@2.9.0)' @@ -18809,17 +18804,17 @@ snapshots: get-tsconfig: 4.14.3 jiti: 2.7.0 - drizzle-orm@1.0.0-rc.5-ab785fc(da2d75dec181fbafaeb6986c8741457b): + drizzle-orm@1.0.0-rc.5-ab785fc(@cloudflare/workers-types@4.20260604.1)(@effect/sql-d1@4.0.0(effect@4.0.4))(@effect/sql-pg@4.0.4(effect@4.0.4))(@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.4))(@effect/sql-sqlite-do@4.0.4(effect@4.0.4))(@electric-sql/pglite@0.3.15)(@libsql/client@0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))(bun-types@1.3.14)(effect@4.0.4)(expo-sqlite@58.0.8(expo@58.0.2)(react-native@0.88.0-rc.3(@babel/core@7.29.7)(@react-native/metro-config@0.88.0-rc.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(utf-8-validate@6.0.6))(react@19.3.0))(pg@8.23.0)(valibot@1.2.0(typescript@7.0.2))(zod@4.4.3): optionalDependencies: '@cloudflare/workers-types': 4.20260604.1 - '@effect/sql-d1': 4.0.0(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@effect/sql-pg': 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) - '@effect/sql-sqlite-do': 4.0.2(effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688)) + '@effect/sql-d1': 4.0.0(effect@4.0.4) + '@effect/sql-pg': 4.0.4(effect@4.0.4) + '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.4) + '@effect/sql-sqlite-do': 4.0.4(effect@4.0.4) '@electric-sql/pglite': 0.3.15 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6) bun-types: 1.3.14 - effect: 4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688) + effect: 4.0.4 expo-sqlite: 58.0.8(expo@58.0.2)(react-native@0.88.0-rc.3(@babel/core@7.29.7)(@react-native/metro-config@0.88.0-rc.3(@babel/core@7.29.7)(bufferutil@4.1.0)(utf-8-validate@6.0.6))(@types/react@19.3.0)(bufferutil@4.1.0)(react@19.3.0)(utf-8-validate@6.0.6))(react@19.3.0) pg: 8.23.0 valibot: 1.2.0(typescript@7.0.2) @@ -18841,7 +18836,7 @@ snapshots: ee-first@1.1.1: {} - effect@4.0.2(patch_hash=ec61ee307eaec3e17f757e0e6a16296ea4b7a8c3188df0c6ec5e66301fd78688): {} + effect@4.0.4: {} ejs@3.1.10: dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 86279b45106c21876d4530bd4183efcff0039bed..546ead4772082853e7a772f5d35f19b385fda35a 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -34,14 +34,14 @@ catalog: "@clerk/expo": 4.6.8 "@clerk/react": 6.16.1 "@clerk/shared": 4.33.0 - "@effect/atom-react": 4.0.2 - "@effect/openapi-generator": 4.0.2 - "@effect/platform-node": 4.0.2 - "@effect/platform-node-shared": 4.0.2 - "@effect/sql-pg": 4.0.2 - "@effect/sql-sqlite-do": 4.0.2 + "@effect/atom-react": 4.0.4 + "@effect/openapi-generator": 4.0.4 + "@effect/platform-node": 4.0.4 + "@effect/platform-node-shared": 4.0.4 + "@effect/sql-pg": 4.0.4 + "@effect/sql-sqlite-do": 4.0.4 "@effect/tsgo": 0.51.1 - "@effect/vitest": 4.0.2 + "@effect/vitest": 4.0.4 "@electron-webauthn/macos": 1.3.1 "@legendapp/list": 3.3.5 "@noble/curves": 1.9.1 @@ -53,7 +53,7 @@ catalog: "@types/node": 24.12.4 "@types/plist": 3.0.5 "@types/ws": 8.18.2 - effect: 4.0.2 + effect: 4.0.4 electron-webauthn: 1.3.1 jose: 6.2.2 lightningcss: 1.33.0 @@ -99,15 +99,15 @@ minimumReleaseAgeExclude: - "@distilled.cloud/core@1.0.0-rc.13" - "@distilled.cloud/neon@1.0.0-rc.13" - "@distilled.cloud/planetscale@1.0.0-rc.13" - - "@effect/atom-react@4.0.2" - - "@effect/openapi-generator@4.0.2" - - "@effect/platform-node-shared@4.0.2" - - "@effect/platform-node@4.0.2" - - "@effect/sql-pg@4.0.2" - - "@effect/sql-sqlite-do@4.0.2" - - "@effect/vitest@4.0.2" + - "@effect/atom-react@4.0.4" + - "@effect/openapi-generator@4.0.4" + - "@effect/platform-node-shared@4.0.4" + - "@effect/platform-node@4.0.4" + - "@effect/sql-pg@4.0.4" + - "@effect/sql-sqlite-do@4.0.4" + - "@effect/vitest@4.0.4" - alchemy@2.0.0-beta.80 - - effect@4.0.2 + - effect@4.0.4 - "@legendapp/list@3.3.5" - "@expo/cli@58.1.1" - "@expo/env@2.5.1" @@ -187,9 +187,9 @@ minimumReleaseAgeExclude: - "@distilled.cloud/gcp@1.0.0-rc.13" - "@distilled.cloud/infisical@1.0.0-rc.13" - "@distilled.cloud/zerossl@1.0.0-rc.13" - - "@opencode/client@2.0.23" - - "@opencode/protocol@2.0.23" - - "@opencode/schema@2.0.23" + - "@opencode/client@2.0.28" + - "@opencode/protocol@2.0.28" + - "@opencode/schema@2.0.28" - "@muse-code/sdk@1.4.6" overrides: @@ -252,13 +252,10 @@ overrides: "@tailwindcss/vite": "catalog:" "@types/node": "catalog:" effect: "catalog:" - # OpenCode 2's protocol and schema packages hard-pin an older Effect rc as a + # OpenCode 2's protocol and schema packages hard-pin an exact Effect version as a # dependency, and their schemas fail to decode under a second Effect copy. # The `effect` override above already collapses them; these name the edge so it # stays pinned on its own. OpenCode2Client.live.test.ts re-proves it on bumps. - # All three still target Effect rc.112 APIs (effect/unstable/*, Encoding, - # Schema.isStartsWith) that 4.0 removed; their patches port those call sites - # until OpenCode moves to stable Effect. "@opencode/protocol>effect": "catalog:" "@opencode/schema>effect": "catalog:" node-abi: 4.33.0 @@ -293,16 +290,12 @@ patchedDependencies: expo-blur@58.0.3: patches/expo-blur@58.0.3.patch expo-audio@58.0.4: patches/expo-audio@58.0.4.patch "@clerk/expo@4.6.8": patches/@clerk__expo@4.6.8.patch - "@effect/platform-node-shared@4.0.2": patches/@effect__platform-node-shared@4.0.2.patch - "@effect/vitest@4.0.2": patches/@effect__vitest@4.0.2.patch + "@effect/vitest@4.0.4": patches/@effect__vitest@4.0.4.patch "@expo/metro-config@58.0.6": patches/@expo__metro-config@58.0.6.patch expo-sharing@58.0.13: patches/expo-sharing@58.0.13.patch expo-widgets@58.0.11: patches/expo-widgets@58.0.11.patch "@ff-labs/fff-node@0.11.0": patches/@ff-labs__fff-node@0.11.0.patch "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch - "@opencode/client@2.0.23": patches/@opencode__client@2.0.23.patch - "@opencode/protocol@2.0.23": patches/@opencode__protocol@2.0.23.patch - "@opencode/schema@2.0.23": patches/@opencode__schema@2.0.23.patch # Exports the dependency-light subpaths mobile and the web diff parser import, and keeps # measured wrapped-row heights above an edit (fileEditorVirtualization.test.ts). "@pierre/diffs@1.5.2": patches/@pierre%2Fdiffs@1.5.2.patch @@ -310,7 +303,6 @@ patchedDependencies: "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch dbus-next@0.10.2: patches/dbus-next@0.10.2.patch - effect@4.0.2: patches/effect@4.0.2.patch node-pty@1.2.0-beta.15: patches/node-pty@1.2.0-beta.15.patch react-native-gesture-handler@3.2.1: patches/react-native-gesture-handler@3.2.1.patch react-native-keyboard-controller@1.22.6: patches/react-native-keyboard-controller@1.22.6.patch -- 2.54.0