authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-10-05 13:15:14-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-10-05 13:15:14-07:00
log194c73f3f991558ca540ef6fe0ce75223bbe87a7
tree6c627c278d4f6cd9ca884b069d8ab8e0a71f1165
parent3e6b45028ceec5820dacb37dc3852470ebdc9411
signature Signed by PGP key B5690EEEBB952194

chore(deps): upgrade Effect to stable 4.0.1 (#16138)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

837 files changed, 3827 insertions(+), 2347 deletions(-)

apps/desktop/src/app/DesktopConnectionCatalogStore.test.ts+2-2
...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";
3import { ConnectionCatalogDocument } from "@t3tools/client-runtime/platform";3import { ConnectionCatalogDocument } from "@t3tools/client-runtime/platform";
4import { EnvironmentId, type PersistedSavedEnvironmentRecord } from "@t3tools/contracts";4import { EnvironmentId, type PersistedSavedEnvironmentRecord } from "@t3tools/contracts";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import * as Encoding from "effect/Encoding";6import * as Base64 from "effect/encoding/Base64";
7import * as FileSystem from "effect/FileSystem";7import * as FileSystem from "effect/FileSystem";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
...@@ -175,7 +175,7 @@ describe("DesktopConnectionCatalogStore", () => {...@@ -175,7 +175,7 @@ describe("DesktopConnectionCatalogStore", () => {
175 record.environmentId === "bearer-environment"175 record.environmentId === "bearer-environment"
176 ? {176 ? {
177 ...record,177 ...record,
178 encryptedBearerToken: Encoding.encodeBase64(178 encryptedBearerToken: Base64.encode(
179 textEncoder.encode("encrypted:legacy-token"),179 textEncoder.encode("encrypted:legacy-token"),
180 ),180 ),
181 }181 }
apps/desktop/src/app/DesktopConnectionCatalogStore.ts+3-3
...@@ -15,7 +15,7 @@ import { fromLenientJson } from "@t3tools/shared/schemaJson";...@@ -15,7 +15,7 @@ import { fromLenientJson } from "@t3tools/shared/schemaJson";
15import * as Context from "effect/Context";15import * as Context from "effect/Context";
16import * as Crypto from "effect/Crypto";16import * as Crypto from "effect/Crypto";
17import * as Effect from "effect/Effect";17import * as Effect from "effect/Effect";
18import * as Encoding from "effect/Encoding";18import * as Base64 from "effect/encoding/Base64";
19import * as FileSystem from "effect/FileSystem";19import * as FileSystem from "effect/FileSystem";
20import * as Layer from "effect/Layer";20import * as Layer from "effect/Layer";
21import * as Option from "effect/Option";21import * as Option from "effect/Option";
...@@ -171,7 +171,7 @@ function decodeSecretBytes(...@@ -171,7 +171,7 @@ function decodeSecretBytes(
171 catalogPath: string,171 catalogPath: string,
172 encoded: string,172 encoded: string,
173): Effect.Effect<Uint8Array, DesktopConnectionCatalogStoreDecodeError> {173): Effect.Effect<Uint8Array, DesktopConnectionCatalogStoreDecodeError> {
174 return Effect.fromResult(Encoding.decodeBase64(encoded)).pipe(174 return Effect.fromResult(Base64.decode(encoded)).pipe(
175 Effect.mapError(175 Effect.mapError(
176 (cause) =>176 (cause) =>
177 new DesktopConnectionCatalogStoreDecodeError({177 new DesktopConnectionCatalogStoreDecodeError({
...@@ -399,7 +399,7 @@ export const make = Effect.gen(function* () {...@@ -399,7 +399,7 @@ export const make = Effect.gen(function* () {
399 const writeCatalog = Effect.fn("desktop.connectionCatalogStore.writeCatalog")(function* (399 const writeCatalog = Effect.fn("desktop.connectionCatalogStore.writeCatalog")(function* (
400 catalog: string,400 catalog: string,
401 ) {401 ) {
402 const encryptedCatalog = Encoding.encodeBase64(402 const encryptedCatalog = Base64.encode(
403 yield* safeStorage.encryptString(catalog).pipe(403 yield* safeStorage.encryptString(catalog).pipe(
404 Effect.mapError(404 Effect.mapError(
405 (cause) =>405 (cause) =>
apps/desktop/src/app/DesktopLinuxUrlHandler.test.ts+1-1
...@@ -10,7 +10,7 @@ import * as PlatformError from "effect/PlatformError";...@@ -10,7 +10,7 @@ import * as PlatformError from "effect/PlatformError";
10import * as Sink from "effect/Sink";10import * as Sink from "effect/Sink";
11import * as Stream from "effect/Stream";11import * as Stream from "effect/Stream";
12import * as TestClock from "effect/testing/TestClock";12import * as TestClock from "effect/testing/TestClock";
13import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";13import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1414
15import * as DesktopEnvironment from "./DesktopEnvironment.ts";15import * as DesktopEnvironment from "./DesktopEnvironment.ts";
16import * as DesktopAssets from "./DesktopAssets.ts";16import * as DesktopAssets from "./DesktopAssets.ts";
apps/desktop/src/app/DesktopLinuxUrlHandler.ts+2-2
...@@ -4,8 +4,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -4,8 +4,8 @@ import * as FileSystem from "effect/FileSystem";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as ChildProcess from "effect/unstable/process/ChildProcess";7import * as ChildProcess from "effect/process/ChildProcess";
8import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";8import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
99
10import * as ElectronProtocol from "../electron/ElectronProtocol.ts";10import * as ElectronProtocol from "../electron/ElectronProtocol.ts";
11import * as DesktopAssets from "./DesktopAssets.ts";11import * as DesktopAssets from "./DesktopAssets.ts";
apps/desktop/src/app/DesktopObservability.test.ts+2-2
...@@ -6,8 +6,8 @@ import * as Effect from "effect/Effect";...@@ -6,8 +6,8 @@ import * as Effect from "effect/Effect";
6import * as FileSystem from "effect/FileSystem";6import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as HttpClient from "effect/unstable/http/HttpClient";9import * as HttpClient from "effect/http/HttpClient";
10import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";10import * as HttpClientResponse from "effect/http/HttpClientResponse";
1111
12import * as DesktopConfig from "./DesktopConfig.ts";12import * as DesktopConfig from "./DesktopConfig.ts";
13import * as DesktopEnvironment from "./DesktopEnvironment.ts";13import * as DesktopEnvironment from "./DesktopEnvironment.ts";
apps/desktop/src/app/DesktopObservability.ts+1-1
...@@ -26,7 +26,7 @@ import * as Scope from "effect/Scope";...@@ -26,7 +26,7 @@ import * as Scope from "effect/Scope";
26import * as Semaphore from "effect/Semaphore";26import * as Semaphore from "effect/Semaphore";
27import * as SynchronizedRef from "effect/SynchronizedRef";27import * as SynchronizedRef from "effect/SynchronizedRef";
28import * as Tracer from "effect/Tracer";28import * as Tracer from "effect/Tracer";
29import { OtlpExporter, OtlpLogger, OtlpTracer } from "effect/unstable/observability";29import { OtlpExporter, OtlpLogger, OtlpTracer } from "effect/observability";
3030
31import * as DesktopEnvironment from "./DesktopEnvironment.ts";31import * as DesktopEnvironment from "./DesktopEnvironment.ts";
3232
apps/desktop/src/backend/DesktopBackendConfiguration.test.ts+1-1
...@@ -9,7 +9,7 @@ import * as Option from "effect/Option";...@@ -9,7 +9,7 @@ import * as Option from "effect/Option";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import * as PlatformError from "effect/PlatformError";10import * as PlatformError from "effect/PlatformError";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { ChildProcessSpawner } from "effect/unstable/process";12import { ChildProcessSpawner } from "effect/process";
1313
14import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";14import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";
15import * as DesktopBackendConfiguration from "./DesktopBackendConfiguration.ts";15import * as DesktopBackendConfiguration from "./DesktopBackendConfiguration.ts";
apps/desktop/src/backend/DesktopBackendConfiguration.ts+2-2
...@@ -4,7 +4,7 @@ import { parsePersistedServerObservabilitySettings } from "@t3tools/shared/serve...@@ -4,7 +4,7 @@ import { parsePersistedServerObservabilitySettings } from "@t3tools/shared/serve
4import * as Context from "effect/Context";4import * as Context from "effect/Context";
5import * as Crypto from "effect/Crypto";5import * as Crypto from "effect/Crypto";
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import * as Encoding from "effect/Encoding";7import * as Hex from "effect/encoding/Hex";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
...@@ -842,7 +842,7 @@ export const make = Effect.gen(function* () {...@@ -842,7 +842,7 @@ export const make = Effect.gen(function* () {
842 onNone: () =>842 onNone: () =>
843 crypto.randomBytes(24).pipe(843 crypto.randomBytes(24).pipe(
844 Effect.map((bytes) => {844 Effect.map((bytes) => {
845 const token = Encoding.encodeHex(bytes);845 const token = Hex.encode(bytes);
846 return [token, Option.some(token)] as const;846 return [token, Option.some(token)] as const;
847 }),847 }),
848 ),848 ),
apps/desktop/src/backend/DesktopBackendManager.test.ts+2-2
...@@ -19,8 +19,8 @@ import * as Sink from "effect/Sink";...@@ -19,8 +19,8 @@ import * as Sink from "effect/Sink";
19import * as Scope from "effect/Scope";19import * as Scope from "effect/Scope";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import * as TestClock from "effect/testing/TestClock";21import * as TestClock from "effect/testing/TestClock";
22import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";22import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
23import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";23import { ChildProcess, ChildProcessSpawner } from "effect/process";
2424
25import * as DesktopBackendManager from "./DesktopBackendManager.ts";25import * as DesktopBackendManager from "./DesktopBackendManager.ts";
26import * as DesktopApp from "../app/DesktopApp.ts";26import * as DesktopApp from "../app/DesktopApp.ts";
apps/desktop/src/backend/DesktopBackendManager.ts+2-2
...@@ -38,8 +38,8 @@ import * as Schema from "effect/Schema";...@@ -38,8 +38,8 @@ import * as Schema from "effect/Schema";
38import * as Semaphore from "effect/Semaphore";38import * as Semaphore from "effect/Semaphore";
39import * as Scope from "effect/Scope";39import * as Scope from "effect/Scope";
40import * as Stream from "effect/Stream";40import * as Stream from "effect/Stream";
41import { HttpClient } from "effect/unstable/http";41import { HttpClient } from "effect/http";
42import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";42import { ChildProcess, ChildProcessSpawner } from "effect/process";
4343
44import {44import {
45 DesktopBackendBootstrap,45 DesktopBackendBootstrap,
apps/desktop/src/backend/DesktopBackendPool.test.ts+2-2
...@@ -6,8 +6,8 @@ import * as Layer from "effect/Layer";...@@ -6,8 +6,8 @@ import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Ref from "effect/Ref";7import * as Ref from "effect/Ref";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import { HttpClient } from "effect/unstable/http";9import { HttpClient } from "effect/http";
10import { ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcessSpawner } from "effect/process";
1111
12import * as DesktopObservability from "../app/DesktopObservability.ts";12import * as DesktopObservability from "../app/DesktopObservability.ts";
13import * as DesktopAppSettings from "../settings/DesktopAppSettings.ts";13import * as DesktopAppSettings from "../settings/DesktopAppSettings.ts";
apps/desktop/src/backend/DesktopBackendPool.ts+2-2
...@@ -90,8 +90,8 @@ import * as Scope from "effect/Scope";...@@ -90,8 +90,8 @@ import * as Scope from "effect/Scope";
90import * as SynchronizedRef from "effect/SynchronizedRef";90import * as SynchronizedRef from "effect/SynchronizedRef";
9191
92import * as FileSystem from "effect/FileSystem";92import * as FileSystem from "effect/FileSystem";
93import { HttpClient } from "effect/unstable/http";93import { HttpClient } from "effect/http";
94import { ChildProcessSpawner } from "effect/unstable/process";94import { ChildProcessSpawner } from "effect/process";
9595
96import * as DesktopBackendConfiguration from "./DesktopBackendConfiguration.ts";96import * as DesktopBackendConfiguration from "./DesktopBackendConfiguration.ts";
97import * as DesktopBackendManager from "./DesktopBackendManager.ts";97import * as DesktopBackendManager from "./DesktopBackendManager.ts";
apps/desktop/src/backend/DesktopLocalEnvironmentAuth.test.ts+2-2
...@@ -2,8 +2,8 @@ import { assert, describe, it } from "@effect/vitest";...@@ -2,8 +2,8 @@ import { assert, describe, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Ref from "effect/Ref";4import * as Ref from "effect/Ref";
5import * as HttpClient from "effect/unstable/http/HttpClient";5import * as HttpClient from "effect/http/HttpClient";
6import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";6import * as HttpClientResponse from "effect/http/HttpClientResponse";
7import { PRIMARY_LOCAL_ENVIRONMENT_ID } from "@t3tools/contracts";7import { PRIMARY_LOCAL_ENVIRONMENT_ID } from "@t3tools/contracts";
88
9import * as DesktopBackendPool from "./DesktopBackendPool.ts";9import * as DesktopBackendPool from "./DesktopBackendPool.ts";
apps/desktop/src/backend/DesktopLocalEnvironmentAuth.ts+1-1
...@@ -7,7 +7,7 @@ import * as Option from "effect/Option";...@@ -7,7 +7,7 @@ import * as Option from "effect/Option";
7import * as Ref from "effect/Ref";7import * as Ref from "effect/Ref";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as Semaphore from "effect/Semaphore";9import * as Semaphore from "effect/Semaphore";
10import * as HttpClient from "effect/unstable/http/HttpClient";10import * as HttpClient from "effect/http/HttpClient";
1111
12import * as DesktopBackendPool from "./DesktopBackendPool.ts";12import * as DesktopBackendPool from "./DesktopBackendPool.ts";
1313
apps/desktop/src/backend/DesktopServerExposure.test.ts+1-1
...@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Sink from "effect/Sink";8import * as Sink from "effect/Sink";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";10import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1111
12import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";12import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";
13import * as DesktopConfig from "../app/DesktopConfig.ts";13import * as DesktopConfig from "../app/DesktopConfig.ts";
apps/desktop/src/backend/DesktopServerExposure.ts+2-2
...@@ -17,8 +17,8 @@ import * as Layer from "effect/Layer";...@@ -17,8 +17,8 @@ import * as Layer from "effect/Layer";
17import * as Option from "effect/Option";17import * as Option from "effect/Option";
18import * as Ref from "effect/Ref";18import * as Ref from "effect/Ref";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import * as HttpClient from "effect/unstable/http/HttpClient";20import * as HttpClient from "effect/http/HttpClient";
21import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";21import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
2222
23import * as DesktopAppSettings from "../settings/DesktopAppSettings.ts";23import * as DesktopAppSettings from "../settings/DesktopAppSettings.ts";
24import * as DesktopConfig from "../app/DesktopConfig.ts";24import * as DesktopConfig from "../app/DesktopConfig.ts";
apps/desktop/src/backend/tailscaleEndpointProvider.test.ts+2-2
...@@ -1,8 +1,8 @@...@@ -1,8 +1,8 @@
1import { assert, describe, it } from "@effect/vitest";1import { assert, describe, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import { HttpClient } from "effect/unstable/http";4import { HttpClient } from "effect/http";
5import { ChildProcessSpawner } from "effect/unstable/process";5import { ChildProcessSpawner } from "effect/process";
66
7import {7import {
8 parseTailscaleMagicDnsName,8 parseTailscaleMagicDnsName,
apps/desktop/src/backend/tailscaleEndpointProvider.ts+2-2
...@@ -9,8 +9,8 @@ import {...@@ -9,8 +9,8 @@ import {
9} from "@t3tools/tailscale";9} from "@t3tools/tailscale";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import * as Option from "effect/Option";11import * as Option from "effect/Option";
12import * as HttpClient from "effect/unstable/http/HttpClient";12import * as HttpClient from "effect/http/HttpClient";
13import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";13import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1414
15import type { NetworkInterfaces } from "./DesktopNetworkInterfaces.ts";15import type { NetworkInterfaces } from "./DesktopNetworkInterfaces.ts";
1616
apps/desktop/src/electron/ElectronProtocol.ts+1-1
...@@ -5,7 +5,7 @@ import * as Layer from "effect/Layer";...@@ -5,7 +5,7 @@ import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import * as NodeTimersPromises from "node:timers/promises";6import * as NodeTimersPromises from "node:timers/promises";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Mime from "effect/unstable/http/Mime";8import * as Mime from "effect/http/Mime";
9import * as Ref from "effect/Ref";9import * as Ref from "effect/Ref";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as Scope from "effect/Scope";11import * as Scope from "effect/Scope";
apps/desktop/src/ipc/methods/sshEnvironment.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";
5import * as Exit from "effect/Exit";5import * as Exit from "effect/Exit";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";8import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
99
10import {10import {
11 DesktopSshEnvironmentRequestError,11 DesktopSshEnvironmentRequestError,
apps/desktop/src/preview/BrowserImport/BrowserImport.ts+1-1
...@@ -19,7 +19,7 @@ import * as Layer from "effect/Layer";...@@ -19,7 +19,7 @@ import * as Layer from "effect/Layer";
19import * as Path from "effect/Path";19import * as Path from "effect/Path";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import * as Scope from "effect/Scope";21import * as Scope from "effect/Scope";
22import { ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcessSpawner } from "effect/process";
2323
24import { HostProcessExecutablePath, HostProcessPlatform } from "@t3tools/shared/hostProcess";24import { HostProcessExecutablePath, HostProcessPlatform } from "@t3tools/shared/hostProcess";
2525
apps/desktop/src/preview/BrowserImport/ChromiumCookies.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";...@@ -6,7 +6,7 @@ import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
6import * as NodeCrypto from "node:crypto";6import * as NodeCrypto from "node:crypto";
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as SqlClient from "effect/unstable/sql/SqlClient";9import * as SqlClient from "effect/sql/SqlClient";
1010
11import {11import {
12 decryptChromiumValue,12 decryptChromiumValue,
apps/desktop/src/preview/BrowserImport/ChromiumCookies.ts+2-2
...@@ -21,8 +21,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -21,8 +21,8 @@ import * as FileSystem from "effect/FileSystem";
21import * as Path from "effect/Path";21import * as Path from "effect/Path";
22import * as Schema from "effect/Schema";22import * as Schema from "effect/Schema";
23import * as Scope from "effect/Scope";23import * as Scope from "effect/Scope";
24import * as SqlClient from "effect/unstable/sql/SqlClient";24import * as SqlClient from "effect/sql/SqlClient";
25import { ChildProcessSpawner } from "effect/unstable/process";25import { ChildProcessSpawner } from "effect/process";
2626
27import {27import {
28 ChromiumKeyError,28 ChromiumKeyError,
apps/desktop/src/preview/BrowserImport/ChromiumKeys.module.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { expect, it } from "@effect/vitest";1import { expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { ChildProcessSpawner } from "effect/unstable/process";3import { ChildProcessSpawner } from "effect/process";
4import { vi } from "vite-plus/test";4import { vi } from "vite-plus/test";
55
6vi.mock("@napi-rs/keyring", () => {6vi.mock("@napi-rs/keyring", () => {
apps/desktop/src/preview/BrowserImport/ChromiumKeys.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";
6import * as Sink from "effect/Sink";6import * as Sink from "effect/Sink";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as PlatformError from "effect/PlatformError";8import * as PlatformError from "effect/PlatformError";
9import { ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcessSpawner } from "effect/process";
10import { beforeEach, vi } from "vite-plus/test";10import { beforeEach, vi } from "vite-plus/test";
1111
12import {12import {
apps/desktop/src/preview/BrowserImport/ChromiumKeys.ts+6-6
...@@ -22,11 +22,11 @@ import * as NodeCrypto from "node:crypto";...@@ -22,11 +22,11 @@ import * as NodeCrypto from "node:crypto";
22import { HostProcessEnvironment } from "@t3tools/shared/hostProcess";22import { HostProcessEnvironment } from "@t3tools/shared/hostProcess";
2323
24import * as Effect from "effect/Effect";24import * as Effect from "effect/Effect";
25import * as Encoding from "effect/Encoding";25import * as Base64 from "effect/encoding/Base64";
26import * as FileSystem from "effect/FileSystem";26import * as FileSystem from "effect/FileSystem";
27import * as Schema from "effect/Schema";27import * as Schema from "effect/Schema";
28import * as Stream from "effect/Stream";28import * as Stream from "effect/Stream";
29import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";29import { ChildProcess, ChildProcessSpawner } from "effect/process";
30import { LinuxBrowserSecretPath } from "./LinuxBrowserSecret.ts";30import { LinuxBrowserSecretPath } from "./LinuxBrowserSecret.ts";
3131
32const KEY_SALT = "saltysalt";32const KEY_SALT = "saltysalt";
...@@ -205,9 +205,9 @@ export const decodeWindowsWrappedKey = Effect.fn("ChromiumKeys.decodeWindowsWrap...@@ -205,9 +205,9 @@ export const decodeWindowsWrappedKey = Effect.fn("ChromiumKeys.decodeWindowsWrap
205 if (state.os_crypt.app_bound_encrypted_key !== undefined) {205 if (state.os_crypt.app_bound_encrypted_key !== undefined) {
206 return yield* new ChromiumKeyError({ reason: "unsupportedPlatform" });206 return yield* new ChromiumKeyError({ reason: "unsupportedPlatform" });
207 }207 }
208 const wrapped = yield* Effect.fromResult(208 const wrapped = yield* Effect.fromResult(Base64.decode(state.os_crypt.encrypted_key)).pipe(
209 Encoding.decodeBase64(state.os_crypt.encrypted_key),209 Effect.mapError((cause) => new ChromiumKeyError({ reason: "readFailed", cause })),
210 ).pipe(Effect.mapError((cause) => new ChromiumKeyError({ reason: "readFailed", cause })));210 );
211 const wrappedBuffer = Buffer.from(wrapped);211 const wrappedBuffer = Buffer.from(wrapped);
212 if (!wrappedBuffer.subarray(0, DPAPI_PREFIX.length).equals(DPAPI_PREFIX)) {212 if (!wrappedBuffer.subarray(0, DPAPI_PREFIX.length).equals(DPAPI_PREFIX)) {
213 return yield* new ChromiumKeyError({ reason: "readFailed" });213 return yield* new ChromiumKeyError({ reason: "readFailed" });
...@@ -262,7 +262,7 @@ export const unwrapWindowsDpapiKey = Effect.fn("ChromiumKeys.unwrapWindowsDpapiK...@@ -262,7 +262,7 @@ export const unwrapWindowsDpapiKey = Effect.fn("ChromiumKeys.unwrapWindowsDpapiK
262 if (Number(exitCode) !== 0) {262 if (Number(exitCode) !== 0) {
263 return yield* new ChromiumKeyError({ reason: "readFailed" });263 return yield* new ChromiumKeyError({ reason: "readFailed" });
264 }264 }
265 const plain = yield* Effect.fromResult(Encoding.decodeBase64(plainEncoded)).pipe(265 const plain = yield* Effect.fromResult(Base64.decode(plainEncoded)).pipe(
266 Effect.mapError((cause) => new ChromiumKeyError({ reason: "readFailed", cause })),266 Effect.mapError((cause) => new ChromiumKeyError({ reason: "readFailed", cause })),
267 );267 );
268 if (plain.length !== WINDOWS_KEY_LENGTH) {268 if (plain.length !== WINDOWS_KEY_LENGTH) {
apps/desktop/src/preview/BrowserImport/CookieDatabase.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";
5import * as FileSystem from "effect/FileSystem";5import * as FileSystem from "effect/FileSystem";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import * as Scope from "effect/Scope";7import * as Scope from "effect/Scope";
8import * as SqlClient from "effect/unstable/sql/SqlClient";8import * as SqlClient from "effect/sql/SqlClient";
99
10import { snapshotCookieDatabase } from "./CookieDatabase.ts";10import { snapshotCookieDatabase } from "./CookieDatabase.ts";
1111
apps/desktop/src/preview/BrowserImport/CookieDatabase.ts+1-1
...@@ -7,7 +7,7 @@...@@ -7,7 +7,7 @@
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import * as SqlClient from "effect/unstable/sql/SqlClient";10import * as SqlClient from "effect/sql/SqlClient";
1111
12import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";12import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
1313
apps/desktop/src/preview/BrowserImport/FirefoxCookies.ts+1-1
...@@ -12,7 +12,7 @@...@@ -12,7 +12,7 @@
12import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";12import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
13import * as Effect from "effect/Effect";13import * as Effect from "effect/Effect";
14import * as Schema from "effect/Schema";14import * as Schema from "effect/Schema";
15import * as SqlClient from "effect/unstable/sql/SqlClient";15import * as SqlClient from "effect/sql/SqlClient";
1616
17import { cookieScope, snapshotCookieDatabase, type ImportedCookie } from "./CookieDatabase.ts";17import { cookieScope, snapshotCookieDatabase, type ImportedCookie } from "./CookieDatabase.ts";
1818
apps/desktop/src/preview/BrowserImport/Sources.test.ts+1-1
...@@ -14,7 +14,7 @@ import * as Path from "effect/Path";...@@ -14,7 +14,7 @@ import * as Path from "effect/Path";
14import * as PlatformError from "effect/PlatformError";14import * as PlatformError from "effect/PlatformError";
15import * as Scope from "effect/Scope";15import * as Scope from "effect/Scope";
16import * as Stream from "effect/Stream";16import * as Stream from "effect/Stream";
17import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";17import { ChildProcess, ChildProcessSpawner } from "effect/process";
18import * as NodeSqlite from "node:sqlite";18import * as NodeSqlite from "node:sqlite";
1919
20import type { BrowserImportPathContext } from "./Sources.ts";20import type { BrowserImportPathContext } from "./Sources.ts";
apps/desktop/src/preview/BrowserImport/Sources.ts+2-2
...@@ -29,8 +29,8 @@ import * as Path from "effect/Path";...@@ -29,8 +29,8 @@ import * as Path from "effect/Path";
29import * as PlatformError from "effect/PlatformError";29import * as PlatformError from "effect/PlatformError";
30import * as Schema from "effect/Schema";30import * as Schema from "effect/Schema";
31import * as Stream from "effect/Stream";31import * as Stream from "effect/Stream";
32import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";32import { ChildProcess, ChildProcessSpawner } from "effect/process";
33import * as SqlClient from "effect/unstable/sql/SqlClient";33import * as SqlClient from "effect/sql/SqlClient";
3434
35export type BrowserImportEngine = "chromium" | "firefox" | "safari";35export type BrowserImportEngine = "chromium" | "firefox" | "safari";
3636
apps/desktop/src/preview/BrowserSession.ts+2-2
...@@ -3,7 +3,7 @@ import { session } from "electron";...@@ -3,7 +3,7 @@ import { session } from "electron";
3import * as Context from "effect/Context";3import * as Context from "effect/Context";
4import * as Crypto from "effect/Crypto";4import * as Crypto from "effect/Crypto";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import * as Encoding from "effect/Encoding";6import * as Hex from "effect/encoding/Hex";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as PlatformError from "effect/PlatformError";8import * as PlatformError from "effect/PlatformError";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
...@@ -182,7 +182,7 @@ export const make = Effect.gen(function* BrowserSessionMake() {...@@ -182,7 +182,7 @@ export const make = Effect.gen(function* BrowserSessionMake() {
182 // Legacy/default partitions are prefix + hex digest. The non-hex profile182 // Legacy/default partitions are prefix + hex digest. The non-hex profile
183 // marker creates a disjoint namespace while leaving every legacy default183 // marker creates a disjoint namespace while leaving every legacy default
184 // partition byte-for-byte unchanged.184 // partition byte-for-byte unchanged.
185 return `${prefix}${namespace === "profile" ? PROFILE_PARTITION_MARKER : ""}${Encoding.encodeHex(digest).slice(0, 20)}`;185 return `${prefix}${namespace === "profile" ? PROFILE_PARTITION_MARKER : ""}${Hex.encode(digest).slice(0, 20)}`;
186 });186 });
187187
188 const getSession = Effect.fn("BrowserSession.getSession")(function* (188 const getSession = Effect.fn("BrowserSession.getSession")(function* (
apps/desktop/src/settings/DesktopSavedEnvironments.test.ts+4-10
...@@ -2,7 +2,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -2,7 +2,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
2import { assert, describe, it } from "@effect/vitest";2import { assert, describe, it } from "@effect/vitest";
3import { EnvironmentId, type PersistedSavedEnvironmentRecord } from "@t3tools/contracts";3import { EnvironmentId, type PersistedSavedEnvironmentRecord } from "@t3tools/contracts";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Encoding from "effect/Encoding";5import * as Base64 from "effect/encoding/Base64";
6import * as FileSystem from "effect/FileSystem";6import * as FileSystem from "effect/FileSystem";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
...@@ -206,9 +206,7 @@ describe("DesktopSavedEnvironments", () => {...@@ -206,9 +206,7 @@ describe("DesktopSavedEnvironments", () => {
206 withSavedEnvironments(206 withSavedEnvironments(
207 Effect.gen(function* () {207 Effect.gen(function* () {
208 const savedEnvironments = yield* DesktopSavedEnvironments.DesktopSavedEnvironments;208 const savedEnvironments = yield* DesktopSavedEnvironments.DesktopSavedEnvironments;
209 yield* seedSavedEnvironmentRegistry(209 yield* seedSavedEnvironmentRegistry(Base64.encode(textEncoder.encode("enc:bearer-token")));
210 Encoding.encodeBase64(textEncoder.encode("enc:bearer-token")),
211 );
212210
213 assert.deepEqual(211 assert.deepEqual(
214 yield* savedEnvironments.getSecret(savedRegistryRecord.environmentId),212 yield* savedEnvironments.getSecret(savedRegistryRecord.environmentId),
...@@ -246,9 +244,7 @@ describe("DesktopSavedEnvironments", () => {...@@ -246,9 +244,7 @@ describe("DesktopSavedEnvironments", () => {
246 withSavedEnvironments(244 withSavedEnvironments(
247 Effect.gen(function* () {245 Effect.gen(function* () {
248 const savedEnvironments = yield* DesktopSavedEnvironments.DesktopSavedEnvironments;246 const savedEnvironments = yield* DesktopSavedEnvironments.DesktopSavedEnvironments;
249 yield* seedSavedEnvironmentRegistry(247 yield* seedSavedEnvironmentRegistry(Base64.encode(textEncoder.encode("enc:bearer-token")));
250 Encoding.encodeBase64(textEncoder.encode("enc:bearer-token")),
251 );
252248
253 assert.deepEqual(249 assert.deepEqual(
254 yield* savedEnvironments.getSecret(savedRegistryRecord.environmentId),250 yield* savedEnvironments.getSecret(savedRegistryRecord.environmentId),
...@@ -265,9 +261,7 @@ describe("DesktopSavedEnvironments", () => {...@@ -265,9 +261,7 @@ describe("DesktopSavedEnvironments", () => {
265 Effect.gen(function* () {261 Effect.gen(function* () {
266 const environment = yield* DesktopEnvironment.DesktopEnvironment;262 const environment = yield* DesktopEnvironment.DesktopEnvironment;
267 const savedEnvironments = yield* DesktopSavedEnvironments.DesktopSavedEnvironments;263 const savedEnvironments = yield* DesktopSavedEnvironments.DesktopSavedEnvironments;
268 yield* seedSavedEnvironmentRegistry(264 yield* seedSavedEnvironmentRegistry(Base64.encode(textEncoder.encode("enc:bearer-token")));
269 Encoding.encodeBase64(textEncoder.encode("enc:bearer-token")),
270 );
271265
272 const error = yield* savedEnvironments266 const error = yield* savedEnvironments
273 .getSecret(savedRegistryRecord.environmentId)267 .getSecret(savedRegistryRecord.environmentId)
apps/desktop/src/settings/DesktopSavedEnvironments.ts+2-2
...@@ -2,7 +2,7 @@ import { EnvironmentId, type PersistedSavedEnvironmentRecord } from "@t3tools/co...@@ -2,7 +2,7 @@ import { EnvironmentId, type PersistedSavedEnvironmentRecord } from "@t3tools/co
2import { fromLenientJson } from "@t3tools/shared/schemaJson";2import { fromLenientJson } from "@t3tools/shared/schemaJson";
3import * as Context from "effect/Context";3import * as Context from "effect/Context";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Encoding from "effect/Encoding";5import * as Base64 from "effect/encoding/Base64";
6import * as FileSystem from "effect/FileSystem";6import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
...@@ -209,7 +209,7 @@ function decodeSecretBytes(...@@ -209,7 +209,7 @@ function decodeSecretBytes(
209 registryPath: string,209 registryPath: string,
210 encoded: string,210 encoded: string,
211): Effect.Effect<Uint8Array, DesktopSavedEnvironmentSecretDecodeError> {211): Effect.Effect<Uint8Array, DesktopSavedEnvironmentSecretDecodeError> {
212 return Effect.fromResult(Encoding.decodeBase64(encoded)).pipe(212 return Effect.fromResult(Base64.decode(encoded)).pipe(
213 Effect.mapError(213 Effect.mapError(
214 (cause) =>214 (cause) =>
215 new DesktopSavedEnvironmentSecretDecodeError({215 new DesktopSavedEnvironmentSecretDecodeError({
apps/desktop/src/shell/DesktopShellEnvironment.test.ts+2-2
...@@ -7,8 +7,8 @@ import * as PlatformError from "effect/PlatformError";...@@ -7,8 +7,8 @@ import * as PlatformError from "effect/PlatformError";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as Sink from "effect/Sink";8import * as Sink from "effect/Sink";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import * as ChildProcess from "effect/unstable/process/ChildProcess";10import * as ChildProcess from "effect/process/ChildProcess";
11import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";11import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1212
13import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";13import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";
14import * as DesktopShellEnvironment from "./DesktopShellEnvironment.ts";14import * as DesktopShellEnvironment from "./DesktopShellEnvironment.ts";
apps/desktop/src/shell/DesktopShellEnvironment.ts+2-2
...@@ -5,8 +5,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -5,8 +5,8 @@ import * as FileSystem from "effect/FileSystem";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as ChildProcess from "effect/unstable/process/ChildProcess";8import * as ChildProcess from "effect/process/ChildProcess";
9import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";9import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1010
11import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";11import * as DesktopEnvironment from "../app/DesktopEnvironment.ts";
1212
apps/desktop/src/snapShot/DesktopSnapShot.ts+2-2
...@@ -25,7 +25,7 @@ import * as Context from "effect/Context";...@@ -25,7 +25,7 @@ import * as Context from "effect/Context";
25import * as Crypto from "effect/Crypto";25import * as Crypto from "effect/Crypto";
26import * as DateTime from "effect/DateTime";26import * as DateTime from "effect/DateTime";
27import * as Effect from "effect/Effect";27import * as Effect from "effect/Effect";
28import * as Encoding from "effect/Encoding";28import * as Base64 from "effect/encoding/Base64";
29import * as FileSystem from "effect/FileSystem";29import * as FileSystem from "effect/FileSystem";
30import * as Layer from "effect/Layer";30import * as Layer from "effect/Layer";
31import * as Option from "effect/Option";31import * as Option from "effect/Option";
...@@ -1657,7 +1657,7 @@ export const make = Effect.gen(function* () {...@@ -1657,7 +1657,7 @@ export const make = Effect.gen(function* () {
1657 const png = yield* fileSystem.readFile(path.join(captureDirectory, `${id}.png`));1657 const png = yield* fileSystem.readFile(path.join(captureDirectory, `${id}.png`));
1658 return {1658 return {
1659 ...metadata,1659 ...metadata,
1660 dataUrl: `data:image/png;base64,${Encoding.encodeBase64(png)}`,1660 dataUrl: `data:image/png;base64,${Base64.encode(png)}`,
1661 };1661 };
1662 }).pipe(1662 }).pipe(
1663 Effect.mapError(1663 Effect.mapError(
apps/desktop/src/ssh/DesktopSshEnvironment.ts+2-2
...@@ -22,8 +22,8 @@ import * as Effect from "effect/Effect";...@@ -22,8 +22,8 @@ import * as Effect from "effect/Effect";
22import * as FileSystem from "effect/FileSystem";22import * as FileSystem from "effect/FileSystem";
23import * as Layer from "effect/Layer";23import * as Layer from "effect/Layer";
24import * as Path from "effect/Path";24import * as Path from "effect/Path";
25import * as HttpClient from "effect/unstable/http/HttpClient";25import * as HttpClient from "effect/http/HttpClient";
26import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";26import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
2727
28import * as DesktopSshPasswordPrompts from "./DesktopSshPasswordPrompts.ts";28import * as DesktopSshPasswordPrompts from "./DesktopSshPasswordPrompts.ts";
2929
apps/desktop/src/wsl/DesktopWslEnvironment.test.ts+1-1
...@@ -9,7 +9,7 @@ import * as Layer from "effect/Layer";...@@ -9,7 +9,7 @@ import * as Layer from "effect/Layer";
9import * as Sink from "effect/Sink";9import * as Sink from "effect/Sink";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import * as TestClock from "effect/testing/TestClock";11import * as TestClock from "effect/testing/TestClock";
12import { ChildProcessSpawner } from "effect/unstable/process";12import { ChildProcessSpawner } from "effect/process";
1313
14import {14import {
15 buildWslRuntimeInstallScript,15 buildWslRuntimeInstallScript,
apps/desktop/src/wsl/DesktopWslEnvironment.ts+3-4
...@@ -7,7 +7,7 @@ import * as Option from "effect/Option";...@@ -7,7 +7,7 @@ import * as Option from "effect/Option";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcess, ChildProcessSpawner } from "effect/process";
1111
12import { buildRemoteNodeEnvScript } from "@t3tools/ssh/tunnel";12import { buildRemoteNodeEnvScript } from "@t3tools/ssh/tunnel";
13import { satisfiesSemverRange } from "@t3tools/shared/semver";13import { satisfiesSemverRange } from "@t3tools/shared/semver";
...@@ -1187,9 +1187,8 @@ export interface DesktopWslEnvironmentTestStub {...@@ -1187,9 +1187,8 @@ export interface DesktopWslEnvironmentTestStub {
1187}1187}
11881188
1189export const layerTest = (stub: DesktopWslEnvironmentTestStub = {}) => {1189export const layerTest = (stub: DesktopWslEnvironmentTestStub = {}) => {
1190 const probeDistros = stub.distroListError1190 const probeDistros: Effect.Effect<readonly WslDistro[], DesktopWslDistroListError> =
1191 ? Effect.fail(stub.distroListError)1191 stub.distroListError ? Effect.fail(stub.distroListError) : Effect.succeed(stub.distros ?? []);
1192 : Effect.succeed(stub.distros ?? []);
1193 return Layer.succeed(1192 return Layer.succeed(
1194 DesktopWslEnvironment,1193 DesktopWslEnvironment,
1195 DesktopWslEnvironment.of({1194 DesktopWslEnvironment.of({
apps/mobile/src/components/ComposerEditor.tsx+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { ComposerContextId } from "@t3tools/contracts";1import { ComposerContextId } from "@t3tools/contracts";
2import { useAtomValue } from "@effect/atom-react";2import { useAtomValue } from "@effect/atom-react";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
4import { useNavigation } from "@react-navigation/native";4import { useNavigation } from "@react-navigation/native";
5import { useEffect, useMemo, useRef, useState } from "react";5import { useEffect, useMemo, useRef, useState } from "react";
6import { Alert } from "react-native";6import { Alert } from "react-native";
apps/mobile/src/components/ProjectFavicon.tsx+1-1
...@@ -10,7 +10,7 @@ import {...@@ -10,7 +10,7 @@ import {
10 isProjectFaviconFallbackUrl,10 isProjectFaviconFallbackUrl,
11} from "@t3tools/shared/projectFavicon";11} from "@t3tools/shared/projectFavicon";
12import { useAtomValue } from "@effect/atom-react";12import { useAtomValue } from "@effect/atom-react";
13import { Atom } from "effect/unstable/reactivity";13import { Atom } from "effect/reactivity";
14import { projectFaviconUrlAtom } from "../state/assets";14import { projectFaviconUrlAtom } from "../state/assets";
15import {15import {
16 countGlyphs,16 countGlyphs,
apps/mobile/src/connection/runtime.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 ThreadHistoryController,5 ThreadHistoryController,
6} from "@t3tools/client-runtime/state/threads";6} from "@t3tools/client-runtime/state/threads";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import type { FoundationHotModule } from "../lib/foundation-fast-refresh";10import type { FoundationHotModule } from "../lib/foundation-fast-refresh";
11import { hotSwappableAtomRuntime } from "../lib/hot-swappable-atom-runtime";11import { hotSwappableAtomRuntime } from "../lib/hot-swappable-atom-runtime";
apps/mobile/src/features/agent-awareness/liveActivityPreferences.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";
4import type { EnvironmentId } from "@t3tools/contracts";4import type { EnvironmentId } from "@t3tools/contracts";
5import { ManagedRelay } from "@t3tools/client-runtime/relay";5import { ManagedRelay } from "@t3tools/client-runtime/relay";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import { HttpClient } from "effect/unstable/http";7import { HttpClient } from "effect/http";
88
9import type { SavedRemoteConnection } from "../../lib/connection";9import type { SavedRemoteConnection } from "../../lib/connection";
10import * as MobileStorage from "../../persistence/mobile-storage";10import * as MobileStorage from "../../persistence/mobile-storage";
apps/mobile/src/features/agent-awareness/remoteRegistration.test.ts+1-6
...@@ -9,12 +9,7 @@ import * as Cause from "effect/Cause";...@@ -9,12 +9,7 @@ import * as Cause from "effect/Cause";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Exit from "effect/Exit";10import * as Exit from "effect/Exit";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import {12import { Cookies, FetchHttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
13 Cookies,
14 FetchHttpClient,
15 HttpClientRequest,
16 HttpClientResponse,
17} from "effect/unstable/http";
18import { ManagedRelay } from "@t3tools/client-runtime/relay";13import { ManagedRelay } from "@t3tools/client-runtime/relay";
1914
20import type { EnvironmentId } from "@t3tools/contracts";15import type { EnvironmentId } from "@t3tools/contracts";
apps/mobile/src/features/cloud/connectOnboarding.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { Atom } from "effect/unstable/reactivity";1import { Atom } from "effect/reactivity";
22
3import { appAtomRegistry } from "../../state/atom-registry";3import { appAtomRegistry } from "../../state/atom-registry";
44
apps/mobile/src/features/cloud/dpop.ts+9-9
...@@ -2,7 +2,7 @@ import * as Clock from "effect/Clock";...@@ -2,7 +2,7 @@ import * as Clock from "effect/Clock";
2import * as Crypto from "effect/Crypto";2import * as Crypto from "effect/Crypto";
3import * as Data from "effect/Data";3import * as Data from "effect/Data";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Encoding from "effect/Encoding";5import * as Base64Url from "effect/encoding/Base64Url";
6import * as Result from "effect/Result";6import * as Result from "effect/Result";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as ExpoCrypto from "expo-crypto";8import * as ExpoCrypto from "expo-crypto";
...@@ -89,7 +89,7 @@ export interface DpopProofKeyPair {...@@ -89,7 +89,7 @@ export interface DpopProofKeyPair {
89const DPOP_PROOF_KEY_STORAGE_KEY = "t3code.cloud.dpop-proof-key";89const DPOP_PROOF_KEY_STORAGE_KEY = "t3code.cloud.dpop-proof-key";
9090
91function base64UrlToBytes(value: string): Uint8Array {91function base64UrlToBytes(value: string): Uint8Array {
92 return Result.getOrThrow(Encoding.decodeBase64Url(value));92 return Result.getOrThrow(Base64Url.decode(value));
93}93}
9494
95function sha256Digest(95function sha256Digest(
...@@ -106,7 +106,7 @@ function base64UrlSha256(...@@ -106,7 +106,7 @@ function base64UrlSha256(
106 data: Uint8Array,106 data: Uint8Array,
107 message: string,107 message: string,
108): Effect.Effect<string, CloudDpopError, Crypto.Crypto> {108): Effect.Effect<string, CloudDpopError, Crypto.Crypto> {
109 return sha256Digest(data, message).pipe(Effect.map(Encoding.encodeBase64Url));109 return sha256Digest(data, message).pipe(Effect.map(Base64Url.encode));
110}110}
111111
112function dpopThumbprintInput(jwk: DpopPublicJwk): string {112function dpopThumbprintInput(jwk: DpopPublicJwk): string {
...@@ -153,8 +153,8 @@ function publicJwkFromUncompressedPublicKey(publicKey: Uint8Array): DpopPublicJw...@@ -153,8 +153,8 @@ function publicJwkFromUncompressedPublicKey(publicKey: Uint8Array): DpopPublicJw
153 return {153 return {
154 kty: "EC",154 kty: "EC",
155 crv: "P-256",155 crv: "P-256",
156 x: Encoding.encodeBase64Url(publicKey.slice(1, 33)),156 x: Base64Url.encode(publicKey.slice(1, 33)),
157 y: Encoding.encodeBase64Url(publicKey.slice(33, 65)),157 y: Base64Url.encode(publicKey.slice(33, 65)),
158 };158 };
159}159}
160160
...@@ -162,7 +162,7 @@ function privateJwkFromPrivateKey(...@@ -162,7 +162,7 @@ function privateJwkFromPrivateKey(
162 privateKey: Uint8Array,162 privateKey: Uint8Array,
163 publicJwk: DpopPublicJwk,163 publicJwk: DpopPublicJwk,
164): DpopPrivateJwk {164): DpopPrivateJwk {
165 return { ...publicJwk, d: Encoding.encodeBase64Url(privateKey) };165 return { ...publicJwk, d: Base64Url.encode(privateKey) };
166}166}
167167
168export function generateDpopProofKeyPair(): Effect.Effect<168export function generateDpopProofKeyPair(): Effect.Effect<
...@@ -270,7 +270,7 @@ export function createDpopProof(input: {...@@ -270,7 +270,7 @@ export function createDpopProof(input: {
270 alg: "ES256",270 alg: "ES256",
271 jwk: keyPair.publicJwk,271 jwk: keyPair.publicJwk,
272 }).pipe(272 }).pipe(
273 Effect.map(Encoding.encodeBase64Url),273 Effect.map(Base64Url.encode),
274 Effect.mapError(cloudDpopError("Could not encode DPoP proof header.")),274 Effect.mapError(cloudDpopError("Could not encode DPoP proof header.")),
275 );275 );
276 const ath = input.accessToken276 const ath = input.accessToken
...@@ -283,7 +283,7 @@ export function createDpopProof(input: {...@@ -283,7 +283,7 @@ export function createDpopProof(input: {
283 iat: Math.floor(nowMs / 1_000),283 iat: Math.floor(nowMs / 1_000),
284 ...(ath ? { ath } : {}),284 ...(ath ? { ath } : {}),
285 }).pipe(285 }).pipe(
286 Effect.map(Encoding.encodeBase64Url),286 Effect.map(Base64Url.encode),
287 Effect.mapError(cloudDpopError("Could not encode DPoP proof payload.")),287 Effect.mapError(cloudDpopError("Could not encode DPoP proof payload.")),
288 );288 );
289 const signatureInputHash = yield* sha256Digest(289 const signatureInputHash = yield* sha256Digest(
...@@ -295,7 +295,7 @@ export function createDpopProof(input: {...@@ -295,7 +295,7 @@ export function createDpopProof(input: {
295 catch: cloudDpopError("Could not sign DPoP proof."),295 catch: cloudDpopError("Could not sign DPoP proof."),
296 });296 });
297 return {297 return {
298 proof: `${header}.${payload}.${Encoding.encodeBase64Url(signature)}`,298 proof: `${header}.${payload}.${Base64Url.encode(signature)}`,
299 thumbprint: keyPair.thumbprint,299 thumbprint: keyPair.thumbprint,
300 };300 };
301 });301 });
apps/mobile/src/features/cloud/linkEnvironment.test.ts+1-1
...@@ -6,7 +6,7 @@ import { EnvironmentId } from "@t3tools/contracts";...@@ -6,7 +6,7 @@ import { EnvironmentId } from "@t3tools/contracts";
6import { RelayMobileClientId } from "@t3tools/contracts/relay";6import { RelayMobileClientId } from "@t3tools/contracts/relay";
7import { ManagedRelay } from "@t3tools/client-runtime/relay";7import { ManagedRelay } from "@t3tools/client-runtime/relay";
8import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";8import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";
9import { HttpClient } from "effect/unstable/http";9import { HttpClient } from "effect/http";
1010
11import * as MobileStorage from "../../persistence/mobile-storage";11import * as MobileStorage from "../../persistence/mobile-storage";
1212
apps/mobile/src/features/cloud/linkEnvironment.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import * as Data from "effect/Data";1import * as Data from "effect/Data";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import { HttpClient } from "effect/unstable/http";4import { HttpClient } from "effect/http";
5import {5import {
6 EnvironmentCloudEndpointUnavailableError,6 EnvironmentCloudEndpointUnavailableError,
7 EnvironmentHttpBadRequestError,7 EnvironmentHttpBadRequestError,
apps/mobile/src/features/cloud/managedRelayState.ts+1-1
...@@ -11,7 +11,7 @@ import {...@@ -11,7 +11,7 @@ import {
11} from "@t3tools/client-runtime/state/runtime";11} from "@t3tools/client-runtime/state/runtime";
12import type { EnvironmentId } from "@t3tools/contracts";12import type { EnvironmentId } from "@t3tools/contracts";
13import type { RelayClientEnvironmentRecord } from "@t3tools/contracts/relay";13import type { RelayClientEnvironmentRecord } from "@t3tools/contracts/relay";
14import { AsyncResult, Atom } from "effect/unstable/reactivity";14import { AsyncResult, Atom } from "effect/reactivity";
15import { useCallback, useEffect } from "react";15import { useCallback, useEffect } from "react";
1616
17import { runtimeContextLayer } from "../../lib/runtime";17import { runtimeContextLayer } from "../../lib/runtime";
apps/mobile/src/features/connection/ConnectionEnvironmentRow.tsx+1-1
...@@ -5,7 +5,7 @@ import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";...@@ -5,7 +5,7 @@ import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";
5import { type EnvironmentId, resolveEnvironmentMachineKind } from "@t3tools/contracts";5import { type EnvironmentId, resolveEnvironmentMachineKind } from "@t3tools/contracts";
6import { useAtomValue } from "@effect/atom-react";6import { useAtomValue } from "@effect/atom-react";
7import * as Cause from "effect/Cause";7import * as Cause from "effect/Cause";
8import { AsyncResult } from "effect/unstable/reactivity";8import { AsyncResult } from "effect/reactivity";
9import { useCallback, useState } from "react";9import { useCallback, useState } from "react";
10import { Platform, Alert, Pressable, View } from "react-native";10import { Platform, Alert, Pressable, View } from "react-native";
11import Animated, { FadeIn, FadeOut, LinearTransition } from "react-native-reanimated";11import Animated, { FadeIn, FadeOut, LinearTransition } from "react-native-reanimated";
apps/mobile/src/features/connection/ConnectionsNewRouteScreen.tsx+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7 type StaticScreenProps,7 type StaticScreenProps,
8} from "@react-navigation/native";8} from "@react-navigation/native";
9import type { EnvironmentId } from "@t3tools/contracts";9import type { EnvironmentId } from "@t3tools/contracts";
10import { AsyncResult } from "effect/unstable/reactivity";10import { AsyncResult } from "effect/reactivity";
11import { useCallback, useEffect, useRef, useState } from "react";11import { useCallback, useEffect, useRef, useState } from "react";
12import { Alert, Linking, Platform, View } from "react-native";12import { Alert, Linking, Platform, View } from "react-native";
13import { useSafeAreaInsets } from "react-native-safe-area-context";13import { useSafeAreaInsets } from "react-native-safe-area-context";
apps/mobile/src/features/files/SourceFileSurface.tsx+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
3import type { ComponentType } from "react";3import type { ComponentType } from "react";
4import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";4import { memo, useCallback, useEffect, useMemo, useRef, useState } from "react";
5import {5import {
apps/mobile/src/features/files/sourceHighlightingState.test.ts+2-2
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { AtomRegistry } from "effect/unstable/reactivity";1import { AtomRegistry } from "effect/reactivity";
2import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";2import * as AsyncResult from "effect/reactivity/AsyncResult";
3import { afterEach, describe, expect, it, vi } from "vite-plus/test";3import { afterEach, describe, expect, it, vi } from "vite-plus/test";
44
5import {5import {
apps/mobile/src/features/files/sourceHighlightingState.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Data from "effect/Data";1import * as Data from "effect/Data";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
44
5import {5import {
6 highlightSourceFile,6 highlightSourceFile,
apps/mobile/src/features/layout/AdaptiveWorkspaceLayout.tsx+1-1
...@@ -29,7 +29,7 @@ import Animated, {...@@ -29,7 +29,7 @@ import Animated, {
29 useSharedValue,29 useSharedValue,
30 withTiming,30 withTiming,
31} from "react-native-reanimated";31} from "react-native-reanimated";
32import { AsyncResult } from "effect/unstable/reactivity";32import { AsyncResult } from "effect/reactivity";
3333
34import {34import {
35 deriveFileInspectorPaneLayout,35 deriveFileInspectorPaneLayout,
apps/mobile/src/features/projects/AddProjectScreen.tsx+1-1
...@@ -53,7 +53,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context";...@@ -53,7 +53,7 @@ import { useSafeAreaInsets } from "react-native-safe-area-context";
53import * as Arr from "effect/Array";53import * as Arr from "effect/Array";
54import * as Cause from "effect/Cause";54import * as Cause from "effect/Cause";
55import * as Order from "effect/Order";55import * as Order from "effect/Order";
56import { AsyncResult } from "effect/unstable/reactivity";56import { AsyncResult } from "effect/reactivity";
57import { cn } from "../../lib/cn";57import { cn } from "../../lib/cn";
58import { useProjects, useServerConfigs, waitForProject } from "../../state/entities";58import { useProjects, useServerConfigs, waitForProject } from "../../state/entities";
59import { filesystemEnvironment } from "../../state/filesystem";59import { filesystemEnvironment } from "../../state/filesystem";
apps/mobile/src/features/review/reviewState.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
22
3import type { EnvironmentId, ReviewDiffPreviewSource, ThreadId } from "@t3tools/contracts";3import type { EnvironmentId, ReviewDiffPreviewSource, ThreadId } from "@t3tools/contracts";
4import { Atom } from "effect/unstable/reactivity";4import { Atom } from "effect/reactivity";
55
6import { scopedThreadKey } from "../../lib/scopedEntities";6import { scopedThreadKey } from "../../lib/scopedEntities";
7import { appAtomRegistry } from "../../state/atom-registry";7import { appAtomRegistry } from "../../state/atom-registry";
apps/mobile/src/features/review/useReviewDiffData.ts+2-2
...@@ -18,8 +18,8 @@ import type {...@@ -18,8 +18,8 @@ import type {
18 ReviewDiffPreviewSource,18 ReviewDiffPreviewSource,
19} from "@t3tools/contracts";19} from "@t3tools/contracts";
20import { RegistryContext, useAtomValue } from "@effect/atom-react";20import { RegistryContext, useAtomValue } from "@effect/atom-react";
21import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";21import * as AsyncResult from "effect/reactivity/AsyncResult";
22import * as Atom from "effect/unstable/reactivity/Atom";22import * as Atom from "effect/reactivity/Atom";
23import { reviewEnvironment } from "../../state/review";23import { reviewEnvironment } from "../../state/review";
2424
25const EMPTY_INLINE_REVIEW_COMMENTS = Object.freeze([]);25const EMPTY_INLINE_REVIEW_COMMENTS = Object.freeze([]);
apps/mobile/src/features/settings/SettingsClientStorageRouteScreen.tsx+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { ScreenScrollView as ScrollView } from "../../components/ScreenScrollView";1import { ScreenScrollView as ScrollView } from "../../components/ScreenScrollView";
2import { useAtomSet, useAtomValue } from "@effect/atom-react";2import { useAtomSet, useAtomValue } from "@effect/atom-react";
3import { type EnvironmentMachineKind, resolveEnvironmentMachineKind } from "@t3tools/contracts";3import { type EnvironmentMachineKind, resolveEnvironmentMachineKind } from "@t3tools/contracts";
4import { AsyncResult } from "effect/unstable/reactivity";4import { AsyncResult } from "effect/reactivity";
5import { useMemo } from "react";5import { useMemo } from "react";
6import { ActivityIndicator, Alert, Pressable, View } from "react-native";6import { ActivityIndicator, Alert, Pressable, View } from "react-native";
7import { useSafeAreaInsets } from "react-native-safe-area-context";7import { useSafeAreaInsets } from "react-native-safe-area-context";
apps/mobile/src/features/settings/SettingsEnvironmentDetailRouteScreen.tsx+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import { useNavigation, type StaticScreenProps } from "@react-navigation/native";2import { useNavigation, type StaticScreenProps } from "@react-navigation/native";
3import type { EnvironmentId, ServerProvider } from "@t3tools/contracts";3import type { EnvironmentId, ServerProvider } from "@t3tools/contracts";
4import { squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";4import { squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";
5import { AsyncResult } from "effect/unstable/reactivity";5import { AsyncResult } from "effect/reactivity";
6import { useEffect, useRef, useState } from "react";6import { useEffect, useRef, useState } from "react";
7import { Alert, View } from "react-native";7import { Alert, View } from "react-native";
8import { useSafeAreaInsets } from "react-native-safe-area-context";8import { useSafeAreaInsets } from "react-native-safe-area-context";
apps/mobile/src/features/settings/SettingsFollowUpRouteScreen.tsx+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomSet, useAtomValue } from "@effect/atom-react";1import { useAtomSet, useAtomValue } from "@effect/atom-react";
2import { useNavigation } from "@react-navigation/native";2import { useNavigation } from "@react-navigation/native";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
4import { Platform, ScrollView, View } from "react-native";4import { Platform, ScrollView, View } from "react-native";
5import { useSafeAreaInsets } from "react-native-safe-area-context";5import { useSafeAreaInsets } from "react-native-safe-area-context";
66
apps/mobile/src/features/settings/SettingsKeyboardRouteScreen.tsx+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomSet, useAtomValue } from "@effect/atom-react";1import { useAtomSet, useAtomValue } from "@effect/atom-react";
2import { useNavigation } from "@react-navigation/native";2import { useNavigation } from "@react-navigation/native";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
4import { Platform, ScrollView, View } from "react-native";4import { Platform, ScrollView, View } from "react-native";
5import { useSafeAreaInsets } from "react-native-safe-area-context";5import { useSafeAreaInsets } from "react-native-safe-area-context";
66
apps/mobile/src/features/settings/SettingsNotificationsRouteScreen.tsx+1-1
...@@ -4,7 +4,7 @@ import { useAtomSet, useAtomValue } from "@effect/atom-react";...@@ -4,7 +4,7 @@ import { useAtomSet, useAtomValue } from "@effect/atom-react";
4import * as Notifications from "expo-notifications";4import * as Notifications from "expo-notifications";
5import { useNavigation } from "@react-navigation/native";5import { useNavigation } from "@react-navigation/native";
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import { AsyncResult } from "effect/unstable/reactivity";7import { AsyncResult } from "effect/reactivity";
8import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";8import { useCallback, useEffect, useMemo, useRef, useState, useSyncExternalStore } from "react";
9import { Alert, AppState, Linking, Platform } from "react-native";9import { Alert, AppState, Linking, Platform } from "react-native";
10import { useSafeAreaInsets } from "react-native-safe-area-context";10import { useSafeAreaInsets } from "react-native-safe-area-context";
apps/mobile/src/features/settings/SettingsProjectGroupingRouteScreen.tsx+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { ScreenScrollView as ScrollView } from "../../components/ScreenScrollView";1import { ScreenScrollView as ScrollView } from "../../components/ScreenScrollView";
2import { useAtomSet, useAtomValue } from "@effect/atom-react";2import { useAtomSet, useAtomValue } from "@effect/atom-react";
3import type { SidebarProjectGroupingMode } from "@t3tools/contracts";3import type { SidebarProjectGroupingMode } from "@t3tools/contracts";
4import { AsyncResult } from "effect/unstable/reactivity";4import { AsyncResult } from "effect/reactivity";
5import { useSafeAreaInsets } from "react-native-safe-area-context";5import { useSafeAreaInsets } from "react-native-safe-area-context";
66
7import { SettingsScreen } from "./components/SettingsScreen";7import { SettingsScreen } from "./components/SettingsScreen";
apps/mobile/src/features/settings/SettingsThreadsRouteScreen.tsx+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { AutoSettleDaysField } from "./components/AutoSettleDaysField";1import { AutoSettleDaysField } from "./components/AutoSettleDaysField";
2import { ScreenScrollView as ScrollView } from "../../components/ScreenScrollView";2import { ScreenScrollView as ScrollView } from "../../components/ScreenScrollView";
3import { useAtomSet, useAtomValue } from "@effect/atom-react";3import { useAtomSet, useAtomValue } from "@effect/atom-react";
4import { AsyncResult } from "effect/unstable/reactivity";4import { AsyncResult } from "effect/reactivity";
5import { useRef, useState } from "react";5import { useRef, useState } from "react";
6import { Pressable, View } from "react-native";6import { Pressable, View } from "react-native";
7import { useSafeAreaInsets } from "react-native-safe-area-context";7import { useSafeAreaInsets } from "react-native-safe-area-context";
apps/mobile/src/features/settings/appearance/AppearancePreferencesProvider.tsx+1-1
...@@ -13,7 +13,7 @@ import {...@@ -13,7 +13,7 @@ import {
13import { AppState, Appearance, Platform, useColorScheme } from "react-native";13import { AppState, Appearance, Platform, useColorScheme } from "react-native";
1414
15import { useAtomSet, useAtomValue } from "@effect/atom-react";15import { useAtomSet, useAtomValue } from "@effect/atom-react";
16import { AsyncResult } from "effect/unstable/reactivity";16import { AsyncResult } from "effect/reactivity";
1717
18import { ScopedTheme, ScopedVariables, Uniwind } from "uniwind";18import { ScopedTheme, ScopedVariables, Uniwind } from "uniwind";
1919
apps/mobile/src/features/settings/scheduled-task-editor-state.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import type { EnvironmentId } from "@t3tools/contracts";1import type { EnvironmentId } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import { appAtomRegistry } from "../../state/atom-registry";4import { appAtomRegistry } from "../../state/atom-registry";
5import type { ScheduledTaskDraft } from "./scheduledTaskDraft";5import type { ScheduledTaskDraft } from "./scheduledTaskDraft";
apps/mobile/src/features/showcase/ShowcaseCaptureCoordinator.tsx+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7 StackActions,7 StackActions,
8 useNavigation,8 useNavigation,
9} from "@react-navigation/native";9} from "@react-navigation/native";
10import { AsyncResult } from "effect/unstable/reactivity";10import { AsyncResult } from "effect/reactivity";
1111
12import { useConnectionController } from "../connection/useConnectionController";12import { useConnectionController } from "../connection/useConnectionController";
13import { useAppearancePreferences } from "../settings/appearance/AppearancePreferencesProvider";13import { useAppearancePreferences } from "../settings/appearance/AppearancePreferencesProvider";
apps/mobile/src/features/threads/NewTaskDraftScreen.tsx+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
4import { clampFileAttachmentUploadBytes } from "@t3tools/client-runtime/state/attachments";4import { clampFileAttachmentUploadBytes } from "@t3tools/client-runtime/state/attachments";
5import {5import {
6 nextPastedTextFileName,6 nextPastedTextFileName,
apps/mobile/src/features/threads/ThreadSettingsSheet.tsx+1-1
...@@ -20,7 +20,7 @@ import {...@@ -20,7 +20,7 @@ import {
20 type NativeStackNavigationProp,20 type NativeStackNavigationProp,
21} from "@react-navigation/native-stack";21} from "@react-navigation/native-stack";
22import * as Haptics from "expo-haptics";22import * as Haptics from "expo-haptics";
23import { AsyncResult } from "effect/unstable/reactivity";23import { AsyncResult } from "effect/reactivity";
24import {24import {
25 createContext,25 createContext,
26 use,26 use,
apps/mobile/src/features/threads/checkout-new-task-branch.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6} from "@t3tools/client-runtime/state/runtime";6} from "@t3tools/client-runtime/state/runtime";
7import type { VcsSwitchRefInput, VcsSwitchRefResult } from "@t3tools/contracts";7import type { VcsSwitchRefInput, VcsSwitchRefResult } from "@t3tools/contracts";
8import * as Cause from "effect/Cause";8import * as Cause from "effect/Cause";
9import { AsyncResult } from "effect/unstable/reactivity";9import { AsyncResult } from "effect/reactivity";
1010
11import { shouldCheckoutNewTaskBranch } from "./new-task-context-presentation";11import { shouldCheckoutNewTaskBranch } from "./new-task-context-presentation";
1212
apps/mobile/src/features/threads/markdownCodeHighlightState.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import * as Data from "effect/Data";2import * as Data from "effect/Data";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import { AsyncResult, Atom } from "effect/unstable/reactivity";4import { AsyncResult, Atom } from "effect/reactivity";
5import { useMemo } from "react";5import { useMemo } from "react";
66
7import {7import {
apps/mobile/src/features/threads/provider-catalog-refresh.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { EnvironmentId } from "@t3tools/contracts";1import { EnvironmentId } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
4import { describe, expect, it, vi } from "vite-plus/test";4import { describe, expect, it, vi } from "vite-plus/test";
55
6import {6import {
apps/mobile/src/features/threads/thread-handoff-row.tsx+1-1
...@@ -8,7 +8,7 @@ import type {...@@ -8,7 +8,7 @@ import type {
8 ProviderInstanceId,8 ProviderInstanceId,
9 ServerProvider,9 ServerProvider,
10} from "@t3tools/contracts";10} from "@t3tools/contracts";
11import { Atom } from "effect/unstable/reactivity";11import { Atom } from "effect/reactivity";
12import { Fragment, useMemo } from "react";12import { Fragment, useMemo } from "react";
13import { Alert, Pressable, View, type ColorValue } from "react-native";13import { Alert, Pressable, View, type ColorValue } from "react-native";
14import { AppText as Text } from "../../components/AppText";14import { AppText as Text } from "../../components/AppText";
apps/mobile/src/features/threads/use-legacy-plan-mode-enabled.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
33
4import { mobilePreferencesAtom } from "../../state/preferences";4import { mobilePreferencesAtom } from "../../state/preferences";
5import { resolveLegacyPlanModeEnabled } from "../../state/legacy-plan-mode";5import { resolveLegacyPlanModeEnabled } from "../../state/legacy-plan-mode";
apps/mobile/src/features/threads/use-thread-list-v2-shelf-preferences.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { useAtomSet, useAtomValue } from "@effect/atom-react";1import { useAtomSet, useAtomValue } from "@effect/atom-react";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
3import { useCallback, useRef } from "react";3import { useCallback, useRef } from "react";
44
5import { mobilePreferencesAtom, updateMobilePreferencesAtom } from "../../state/preferences";5import { mobilePreferencesAtom, updateMobilePreferencesAtom } from "../../state/preferences";
apps/mobile/src/features/voice-input/voiceInputSession.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { beforeEach, describe, expect, it, vi } from "vite-plus/test";1import { beforeEach, describe, expect, it, vi } from "vite-plus/test";
2import type { PreparedVoiceTranscription } from "@t3tools/client-runtime/voice-input";2import type { PreparedVoiceTranscription } from "@t3tools/client-runtime/voice-input";
3import { Atom, AtomRegistry } from "effect/unstable/reactivity";3import { Atom, AtomRegistry } from "effect/reactivity";
4import { resetVoiceInputGlobalsForTests } from "../../../../../packages/client-runtime/src/voice-input/controller";4import { resetVoiceInputGlobalsForTests } from "../../../../../packages/client-runtime/src/voice-input/controller";
55
6import {6import {
apps/mobile/src/lib/hot-swappable-atom-runtime.test.ts+1-1
...@@ -2,7 +2,7 @@ import { describe, expect, it, vi } from "vite-plus/test";...@@ -2,7 +2,7 @@ import { describe, expect, it, vi } from "vite-plus/test";
2import * as Context from "effect/Context";2import * as Context from "effect/Context";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";5import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
66
7import { hotSwappableAtomRuntime } from "./hot-swappable-atom-runtime";7import { hotSwappableAtomRuntime } from "./hot-swappable-atom-runtime";
88
apps/mobile/src/lib/hot-swappable-atom-runtime.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Layer from "effect/Layer";1import * as Layer from "effect/Layer";
2import { Atom, AtomRegistry, Reactivity } from "effect/unstable/reactivity";2import { Atom, AtomRegistry, Reactivity } from "effect/reactivity";
33
4export interface AcceptingHotModule {4export interface AcceptingHotModule {
5 readonly accept: (callback?: () => void) => void;5 readonly accept: (callback?: () => void) => void;
apps/mobile/src/lib/http-response.test.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { describe, expect, it } from "vite-plus/test";1import { describe, expect, it } from "vite-plus/test";
2import { Cookies, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";2import { Cookies, HttpClientRequest, HttpClientResponse } from "effect/http";
33
4describe("React Native HTTP responses", () => {4describe("React Native HTTP responses", () => {
5 it("can inspect a rejected response when native Headers has no getSetCookie", () => {5 it("can inspect a rejected response when native Headers has no getSetCookie", () => {
apps/mobile/src/lib/runtime.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Layer from "effect/Layer";1import * as Layer from "effect/Layer";
2import * as ManagedRuntime from "effect/ManagedRuntime";2import * as ManagedRuntime from "effect/ManagedRuntime";
3import * as Socket from "effect/unstable/socket/Socket";3import * as Socket from "effect/socket/Socket";
44
5import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";5import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";
66
apps/mobile/src/state/acknowledged-thread-messages.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { Atom } from "effect/unstable/reactivity";1import { Atom } from "effect/reactivity";
2import { appAtomRegistry } from "./atom-registry";2import { appAtomRegistry } from "./atom-registry";
3import type { QueuedThreadMessage } from "./thread-outbox-model";3import type { QueuedThreadMessage } from "./thread-outbox-model";
44
apps/mobile/src/state/assets.ts+1-1
...@@ -11,7 +11,7 @@ import {...@@ -11,7 +11,7 @@ import {
11} from "@t3tools/client-runtime/state/assets";11} from "@t3tools/client-runtime/state/assets";
12import type { AssetResource, EnvironmentId } from "@t3tools/contracts";12import type { AssetResource, EnvironmentId } from "@t3tools/contracts";
13import * as Option from "effect/Option";13import * as Option from "effect/Option";
14import { AsyncResult, Atom } from "effect/unstable/reactivity";14import { AsyncResult, Atom } from "effect/reactivity";
15import { useCallback } from "react";15import { useCallback } from "react";
1616
17import { environmentCatalog } from "../connection/catalog";17import { environmentCatalog } from "../connection/catalog";
apps/mobile/src/state/atom-registry.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { AtomRegistry } from "effect/unstable/reactivity";1import { AtomRegistry } from "effect/reactivity";
22
3import {3import {
4 disposeOnFoundationReplace,4 disposeOnFoundationReplace,
apps/mobile/src/state/client-cache-state.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { EnvironmentId } from "@t3tools/contracts";1import type { EnvironmentId } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
44
5import * as MobileDatabase from "../persistence/mobile-database";5import * as MobileDatabase from "../persistence/mobile-database";
6import { projectFaviconDatabaseCache } from "../lib/projectFaviconDatabaseCache";6import { projectFaviconDatabaseCache } from "../lib/projectFaviconDatabaseCache";
apps/mobile/src/state/composer-attachment-uploads.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import type { EnvironmentId } from "@t3tools/contracts";2import type { EnvironmentId } from "@t3tools/contracts";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
4import { useEffect, useRef } from "react";4import { useEffect, useRef } from "react";
55
6import { prepareTurnAttachments } from "../lib/attachmentUpload";6import { prepareTurnAttachments } from "../lib/attachmentUpload";
apps/mobile/src/state/device.ts+1-1
...@@ -3,7 +3,7 @@ import { resolveDeviceHubAccess } from "@t3tools/client-runtime/state/deviceHubA...@@ -3,7 +3,7 @@ import { resolveDeviceHubAccess } from "@t3tools/client-runtime/state/deviceHubA
3import type { EnvironmentId } from "@t3tools/contracts";3import type { EnvironmentId } from "@t3tools/contracts";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import { Atom } from "effect/unstable/reactivity";6import { Atom } from "effect/reactivity";
7import { useMemo } from "react";7import { useMemo } from "react";
88
9import { connectionAtomRuntime } from "../connection/runtime";9import { connectionAtomRuntime } from "../connection/runtime";
apps/mobile/src/state/entities.ts+1-1
...@@ -13,7 +13,7 @@ import type {...@@ -13,7 +13,7 @@ import type {
13 ScopedThreadRef,13 ScopedThreadRef,
14 ServerConfig,14 ServerConfig,
15} from "@t3tools/contracts";15} from "@t3tools/contracts";
16import { Atom } from "effect/unstable/reactivity";16import { Atom } from "effect/reactivity";
1717
18import { environmentProjects } from "./projects";18import { environmentProjects } from "./projects";
19import { environmentServerConfigsAtom, serverEnvironment } from "./server";19import { environmentServerConfigsAtom, serverEnvironment } from "./server";
apps/mobile/src/state/pending-thread-creation.ts+1-1
...@@ -4,7 +4,7 @@ import {...@@ -4,7 +4,7 @@ import {
4} from "@t3tools/client-runtime/state/shell";4} from "@t3tools/client-runtime/state/shell";
5import type { LocalThreadMessage } from "../lib/threadActivity";5import type { LocalThreadMessage } from "../lib/threadActivity";
6import { DEFAULT_PROVIDER_INTERACTION_MODE, DEFAULT_RUNTIME_MODE } from "@t3tools/contracts";6import { DEFAULT_PROVIDER_INTERACTION_MODE, DEFAULT_RUNTIME_MODE } from "@t3tools/contracts";
7import { Atom } from "effect/unstable/reactivity";7import { Atom } from "effect/reactivity";
8import * as DateTime from "effect/DateTime";8import * as DateTime from "effect/DateTime";
99
10import { deriveThreadTitleFromPrompt } from "../lib/projectThreadStartTurn";10import { deriveThreadTitleFromPrompt } from "../lib/projectThreadStartTurn";
apps/mobile/src/state/preferences.test.ts+1-1
...@@ -2,7 +2,7 @@ import { describe, expect, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { describe, expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";5import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
6import { vi } from "vite-plus/test";6import { vi } from "vite-plus/test";
7import { ProviderInstanceId } from "@t3tools/contracts";7import { ProviderInstanceId } from "@t3tools/contracts";
8import { RegistryContext, useAtomSet } from "@effect/atom-react";8import { RegistryContext, useAtomSet } from "@effect/atom-react";
apps/mobile/src/state/preferences.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import { AsyncResult, Atom } from "effect/unstable/reactivity";2import { AsyncResult, Atom } from "effect/reactivity";
33
4import * as MobilePreferences from "../persistence/mobile-preferences";4import * as MobilePreferences from "../persistence/mobile-preferences";
5import * as Runtime from "../lib/runtime";5import * as Runtime from "../lib/runtime";
apps/mobile/src/state/presentation.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import type { EnvironmentPresentation } from "@t3tools/client-runtime/connection";2import type { EnvironmentPresentation } from "@t3tools/client-runtime/connection";
3import { createEnvironmentPresentationAtoms } from "@t3tools/client-runtime/state/presentation";3import { createEnvironmentPresentationAtoms } from "@t3tools/client-runtime/state/presentation";
4import type { EnvironmentId } from "@t3tools/contracts";4import type { EnvironmentId } from "@t3tools/contracts";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
66
7import { environmentCatalog } from "../connection/catalog";7import { environmentCatalog } from "../connection/catalog";
8import { serverEnvironment } from "./server";8import { serverEnvironment } from "./server";
apps/mobile/src/state/project-grouping.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
33
4import { mobilePreferencesAtom } from "./preferences";4import { mobilePreferencesAtom } from "./preferences";
5import {5import {
apps/mobile/src/state/projectClones.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import { parseScopedProjectKey, scopedProjectKey } from "@t3tools/client-runtime/environment";2import { parseScopedProjectKey, scopedProjectKey } from "@t3tools/client-runtime/environment";
3import type { EnvironmentId, ProjectCloneSnapshot, ScopedProjectRef } from "@t3tools/contracts";3import type { EnvironmentId, ProjectCloneSnapshot, ScopedProjectRef } from "@t3tools/contracts";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
66
7import { serverEnvironment } from "./server";7import { serverEnvironment } from "./server";
8import { sourceControlEnvironment } from "./sourceControl";8import { sourceControlEnvironment } from "./sourceControl";
apps/mobile/src/state/queries.ts+1-1
...@@ -17,7 +17,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -17,7 +17,7 @@ import { useAtomValue } from "@effect/atom-react";
17import * as Cause from "effect/Cause";17import * as Cause from "effect/Cause";
18import { turnItemDetailRevision } from "@t3tools/client-runtime/work-log/item-detail";18import { turnItemDetailRevision } from "@t3tools/client-runtime/work-log/item-detail";
19import * as Option from "effect/Option";19import * as Option from "effect/Option";
20import { AsyncResult, Atom } from "effect/unstable/reactivity";20import { AsyncResult, Atom } from "effect/reactivity";
21import { useCallback, useEffect, useMemo, useState } from "react";21import { useCallback, useEffect, useMemo, useState } from "react";
2222
23import { appAtomRegistry } from "./atom-registry";23import { appAtomRegistry } from "./atom-registry";
apps/mobile/src/state/query.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { useAtomRefresh, useAtomValue } from "@effect/atom-react";1import { useAtomRefresh, useAtomValue } from "@effect/atom-react";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import { AsyncResult, Atom } from "effect/unstable/reactivity";4import { AsyncResult, Atom } from "effect/reactivity";
55
6const EMPTY_ASYNC_RESULT_ATOM = Atom.make(AsyncResult.initial<never, never>(false)).pipe(6const EMPTY_ASYNC_RESULT_ATOM = Atom.make(AsyncResult.initial<never, never>(false)).pipe(
7 Atom.withLabel("mobile-environment-query:empty"),7 Atom.withLabel("mobile-environment-query:empty"),
apps/mobile/src/state/question-attachments.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import type { EnvironmentId, ThreadId } from "@t3tools/contracts";1import type { EnvironmentId, ThreadId } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
3import { appAtomRegistry } from "./atom-registry";3import { appAtomRegistry } from "./atom-registry";
44
5export function questionAttachmentDraftPrefix(5export function questionAttachmentDraftPrefix(
apps/mobile/src/state/queued-run-edit.ts+1-1
...@@ -20,7 +20,7 @@ import type {...@@ -20,7 +20,7 @@ import type {
20 RunId,20 RunId,
21 UploadChatAttachment,21 UploadChatAttachment,
22} from "@t3tools/contracts";22} from "@t3tools/contracts";
23import { Atom } from "effect/unstable/reactivity";23import { Atom } from "effect/reactivity";
24import { useAtomValue } from "@effect/atom-react";24import { useAtomValue } from "@effect/atom-react";
2525
26import { uploadedComposerContext } from "../lib/composerContext";26import { uploadedComposerContext } from "../lib/composerContext";
apps/mobile/src/state/remote-environment-projections.test.ts+1-1
...@@ -7,7 +7,7 @@ import type { ServerConfig } from "@t3tools/contracts";...@@ -7,7 +7,7 @@ import type { ServerConfig } from "@t3tools/contracts";
7import { EnvironmentId } from "@t3tools/contracts";7import { EnvironmentId } from "@t3tools/contracts";
8import { describe, expect, it } from "@effect/vitest";8import { describe, expect, it } from "@effect/vitest";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import { Atom, AtomRegistry } from "effect/unstable/reactivity";10import { Atom, AtomRegistry } from "effect/reactivity";
1111
12import { createRemoteEnvironmentProjectionAtoms } from "./remote-environment-projections";12import { createRemoteEnvironmentProjectionAtoms } from "./remote-environment-projections";
1313
apps/mobile/src/state/remote-environment-projections.ts+1-1
...@@ -5,7 +5,7 @@ import type {...@@ -5,7 +5,7 @@ import type {
5import { connectionCatalogDisplayUrl } from "@t3tools/client-runtime/connection";5import { connectionCatalogDisplayUrl } from "@t3tools/client-runtime/connection";
6import type { EnvironmentId, ServerConfig } from "@t3tools/contracts";6import type { EnvironmentId, ServerConfig } from "@t3tools/contracts";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import type { SavedRemoteConnection } from "../lib/connection";10import type { SavedRemoteConnection } from "../lib/connection";
11import type { EnvironmentRuntimeState } from "./remote-runtime-types";11import type { EnvironmentRuntimeState } from "./remote-runtime-types";
apps/mobile/src/state/session.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import { createEnvironmentSessionAtoms } from "@t3tools/client-runtime/state/session";2import { createEnvironmentSessionAtoms } from "@t3tools/client-runtime/state/session";
3import type { EnvironmentId } from "@t3tools/contracts";3import type { EnvironmentId } from "@t3tools/contracts";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
66
7import { connectionAtomRuntime } from "../connection/runtime";7import { connectionAtomRuntime } from "../connection/runtime";
88
apps/mobile/src/state/shell.ts+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8import { useAtomValue } from "@effect/atom-react";8import { useAtomValue } from "@effect/atom-react";
9import type { EnvironmentId } from "@t3tools/contracts";9import type { EnvironmentId } from "@t3tools/contracts";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import { Atom } from "effect/unstable/reactivity";11import { Atom } from "effect/reactivity";
1212
13import { environmentCatalog } from "../connection/catalog";13import { environmentCatalog } from "../connection/catalog";
14import { connectionAtomRuntime } from "../connection/runtime";14import { connectionAtomRuntime } from "../connection/runtime";
apps/mobile/src/state/thread-composer-error.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { Atom } from "effect/unstable/reactivity";1import { Atom } from "effect/reactivity";
22
3import { appAtomRegistry } from "./atom-registry";3import { appAtomRegistry } from "./atom-registry";
44
apps/mobile/src/state/thread-list-environments.test.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 type ServerProvider,6 type ServerProvider,
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import { describe, expect, it } from "@effect/vitest";8import { describe, expect, it } from "@effect/vitest";
9import { Atom, AtomRegistry } from "effect/unstable/reactivity";9import { Atom, AtomRegistry } from "effect/reactivity";
10import { createThreadListEnvironmentsAtom } from "./thread-list-environments";10import { createThreadListEnvironmentsAtom } from "./thread-list-environments";
1111
12const ID = EnvironmentId.make("one");12const ID = EnvironmentId.make("one");
apps/mobile/src/state/thread-list-environments.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 type ServerConfig,5 type ServerConfig,
6 type ServerProvider,6 type ServerProvider,
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10export type ThreadListProvider = Pick<10export type ThreadListProvider = Pick<
11 ServerProvider,11 ServerProvider,
apps/mobile/src/state/thread-order.test.ts+5-5
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { EnvironmentThreadShell } from "@t3tools/client-runtime/state/shell";1import type { EnvironmentThreadShell } from "@t3tools/client-runtime/state/shell";
2import { EnvironmentId, ThreadId } from "@t3tools/contracts";2import { EnvironmentId, ThreadId } from "@t3tools/contracts";
3import type { Atom } from "effect/unstable/reactivity";3import type { Atom } from "effect/reactivity";
4import { afterEach, describe, expect, it, vi } from "vite-plus/test";4import { afterEach, describe, expect, it, vi } from "vite-plus/test";
55
6import { createPendingThreadOrder } from "../features/threads/threadOrder";6import { createPendingThreadOrder } from "../features/threads/threadOrder";
...@@ -14,19 +14,19 @@ import {...@@ -14,19 +14,19 @@ import {
14import { environmentThreadShells } from "./threads";14import { environmentThreadShells } from "./threads";
1515
16vi.mock("./atom-registry", async () => {16vi.mock("./atom-registry", async () => {
17 const { AtomRegistry } = await import("effect/unstable/reactivity");17 const { AtomRegistry } = await import("effect/reactivity");
18 return { appAtomRegistry: AtomRegistry.make() };18 return { appAtomRegistry: AtomRegistry.make() };
19});19});
20vi.mock("./threads", async () => {20vi.mock("./threads", async () => {
21 const { Atom } = await import("effect/unstable/reactivity");21 const { Atom } = await import("effect/reactivity");
22 return { environmentThreadShells: { threadShellsAtom: Atom.make([]).pipe(Atom.keepAlive) } };22 return { environmentThreadShells: { threadShellsAtom: Atom.make([]).pipe(Atom.keepAlive) } };
23});23});
24vi.mock("./server", async () => {24vi.mock("./server", async () => {
25 const { Atom } = await import("effect/unstable/reactivity");25 const { Atom } = await import("effect/reactivity");
26 return { environmentServerConfigsAtom: Atom.make(new Map()).pipe(Atom.keepAlive) };26 return { environmentServerConfigsAtom: Atom.make(new Map()).pipe(Atom.keepAlive) };
27});27});
28vi.mock("./use-thread-outbox", async () => {28vi.mock("./use-thread-outbox", async () => {
29 const { Atom } = await import("effect/unstable/reactivity");29 const { Atom } = await import("effect/reactivity");
30 return { queuedThreadKeysAtom: Atom.make(new Set<string>()).pipe(Atom.keepAlive) };30 return { queuedThreadKeysAtom: Atom.make(new Set<string>()).pipe(Atom.keepAlive) };
31});31});
3232
apps/mobile/src/state/thread-order.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { useEffect } from "react";2import { useEffect } from "react";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
44
5import {5import {
6 reconcilePendingThreadOrder,6 reconcilePendingThreadOrder,
apps/mobile/src/state/thread-outbox-manager.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { EnvironmentId, MessageId, ThreadId } from "@t3tools/contracts";1import { EnvironmentId, MessageId, ThreadId } from "@t3tools/contracts";
2import * as Schema from "effect/Schema";2import * as Schema from "effect/Schema";
3import { Atom, type AtomRegistry } from "effect/unstable/reactivity";3import { Atom, type AtomRegistry } from "effect/reactivity";
44
5import {5import {
6 flattenQueuedThreadMessages,6 flattenQueuedThreadMessages,
apps/mobile/src/state/thread-outbox.test.ts+3-3
...@@ -13,9 +13,9 @@ import {...@@ -13,9 +13,9 @@ import {
13 ProviderInstanceId,13 ProviderInstanceId,
14 ThreadId,14 ThreadId,
15} from "@t3tools/contracts";15} from "@t3tools/contracts";
16import { AtomRegistry } from "effect/unstable/reactivity";16import { AtomRegistry } from "effect/reactivity";
17import * as RpcClientError from "effect/unstable/rpc/RpcClientError";17import * as RpcClientError from "effect/rpc/RpcClientError";
18import * as Socket from "effect/unstable/socket/Socket";18import * as Socket from "effect/socket/Socket";
19import { onTestFinished, vi } from "vite-plus/test";19import { onTestFinished, vi } from "vite-plus/test";
2020
21const outboxFiles = vi.hoisted(() => new Map<string, string | Error>());21const outboxFiles = vi.hoisted(() => new Map<string, string | Error>());
apps/mobile/src/state/threads.ts+1-1
...@@ -9,7 +9,7 @@ import {...@@ -9,7 +9,7 @@ import {
9} from "@t3tools/client-runtime/state/threads";9} from "@t3tools/client-runtime/state/threads";
10import type { EnvironmentId, ThreadId } from "@t3tools/contracts";10import type { EnvironmentId, ThreadId } from "@t3tools/contracts";
11import * as Option from "effect/Option";11import * as Option from "effect/Option";
12import { AsyncResult, Atom } from "effect/unstable/reactivity";12import { AsyncResult, Atom } from "effect/reactivity";
1313
14import { environmentCatalog } from "../connection/catalog";14import { environmentCatalog } from "../connection/catalog";
15import { connectionAtomRuntime } from "../connection/runtime";15import { connectionAtomRuntime } from "../connection/runtime";
apps/mobile/src/state/usage.ts+1-1
...@@ -19,7 +19,7 @@ import {...@@ -19,7 +19,7 @@ import {
19import { needsCursorKeychainAccess, refreshUsage } from "@t3tools/client-runtime/state/usage";19import { needsCursorKeychainAccess, refreshUsage } from "@t3tools/client-runtime/state/usage";
20import { mergeUsage, type EnvironmentUsage, type MergedUsage } from "@t3tools/shared/usageMerge";20import { mergeUsage, type EnvironmentUsage, type MergedUsage } from "@t3tools/shared/usageMerge";
21import * as Option from "effect/Option";21import * as Option from "effect/Option";
22import { AsyncResult, Atom } from "effect/unstable/reactivity";22import { AsyncResult, Atom } from "effect/reactivity";
23import { useCallback, useMemo } from "react";23import { useCallback, useMemo } from "react";
2424
25import { appAtomRegistry } from "./atom-registry";25import { appAtomRegistry } from "./atom-registry";
apps/mobile/src/state/use-atom-query-runner.ts+1-1
...@@ -4,7 +4,7 @@ import {...@@ -4,7 +4,7 @@ import {
4 type AtomQueryOptions,4 type AtomQueryOptions,
5 type AtomCommandResult,5 type AtomCommandResult,
6} from "@t3tools/client-runtime/state/runtime";6} from "@t3tools/client-runtime/state/runtime";
7import { AsyncResult, type Atom } from "effect/unstable/reactivity";7import { AsyncResult, type Atom } from "effect/reactivity";
8import { useCallback, useContext } from "react";8import { useCallback, useContext } from "react";
99
10export function useAtomQueryRunner<T, A, E>(10export function useAtomQueryRunner<T, A, E>(
apps/mobile/src/state/use-composer-drafts.ts+1-1
...@@ -21,7 +21,7 @@ import {...@@ -21,7 +21,7 @@ import {
21} from "@t3tools/contracts";21} from "@t3tools/contracts";
22import * as Schema from "effect/Schema";22import * as Schema from "effect/Schema";
23import { useEffect } from "react";23import { useEffect } from "react";
24import { Atom } from "effect/unstable/reactivity";24import { Atom } from "effect/reactivity";
2525
26import { writeFileAtomically } from "../lib/atomic-file";26import { writeFileAtomically } from "../lib/atomic-file";
27import { createComposerContextHistory, referencedComposerContext } from "../lib/composerContext";27import { createComposerContextHistory, referencedComposerContext } from "../lib/composerContext";
apps/mobile/src/state/use-remote-environment-registry.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import { useNavigation } from "@react-navigation/native";2import { useNavigation } from "@react-navigation/native";
3import type { EnvironmentId } from "@t3tools/contracts";3import type { EnvironmentId } from "@t3tools/contracts";
4import * as Cause from "effect/Cause";4import * as Cause from "effect/Cause";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
6import { useCallback } from "react";6import { useCallback } from "react";
7import { Alert } from "react-native";7import { Alert } from "react-native";
88
apps/mobile/src/state/use-selected-thread-git-actions.ts+1-1
...@@ -13,7 +13,7 @@ import {...@@ -13,7 +13,7 @@ import {
13 sanitizeFeatureBranchName,13 sanitizeFeatureBranchName,
14} from "@t3tools/shared/git";14} from "@t3tools/shared/git";
15import * as Cause from "effect/Cause";15import * as Cause from "effect/Cause";
16import { AsyncResult } from "effect/unstable/reactivity";16import { AsyncResult } from "effect/reactivity";
1717
18import { useBranches } from "../state/queries";18import { useBranches } from "../state/queries";
19import { threadEnvironment } from "../state/threads";19import { threadEnvironment } from "../state/threads";
apps/mobile/src/state/use-selected-thread-requests.ts+1-1
...@@ -19,7 +19,7 @@ import {...@@ -19,7 +19,7 @@ import {
19 type PendingThreadRequests,19 type PendingThreadRequests,
20 type ThreadUserInputQuestion,20 type ThreadUserInputQuestion,
21} from "@t3tools/client-runtime/state/thread-requests";21} from "@t3tools/client-runtime/state/thread-requests";
22import { Atom } from "effect/unstable/reactivity";22import { Atom } from "effect/reactivity";
2323
24import { threadEnvironment } from "../state/threads";24import { threadEnvironment } from "../state/threads";
25import { scopedRequestKey } from "../lib/scopedEntities";25import { scopedRequestKey } from "../lib/scopedEntities";
apps/mobile/src/state/use-thread-composer-state.ts+2-2
...@@ -81,8 +81,8 @@ import {...@@ -81,8 +81,8 @@ import {
81 resolveComposerDispatchMode,81 resolveComposerDispatchMode,
82 type ActiveTurnComposerAction,82 type ActiveTurnComposerAction,
83} from "@t3tools/client-runtime/state/composer-dispatch";83} from "@t3tools/client-runtime/state/composer-dispatch";
84import { Atom } from "effect/unstable/reactivity";84import { Atom } from "effect/reactivity";
85import { AsyncResult } from "effect/unstable/reactivity";85import { AsyncResult } from "effect/reactivity";
86import { prepareTurnAttachments } from "../lib/attachmentUpload";86import { prepareTurnAttachments } from "../lib/attachmentUpload";
87import { DEFAULT_FOLLOW_UP_BEHAVIOR } from "../lib/followUpBehavior";87import { DEFAULT_FOLLOW_UP_BEHAVIOR } from "../lib/followUpBehavior";
88import { mobilePreferencesAtom } from "./preferences";88import { mobilePreferencesAtom } from "./preferences";
apps/mobile/src/state/use-thread-detail.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import type { PendingThreadRequests } from "@t3tools/client-runtime/state/thread-requests";2import type { PendingThreadRequests } from "@t3tools/client-runtime/state/thread-requests";
3import type { EnvironmentThread } from "@t3tools/client-runtime/state/shell";3import type { EnvironmentThread } from "@t3tools/client-runtime/state/shell";
4import type { EnvironmentId, OrchestrationV2ThreadProjection, ThreadId } from "@t3tools/contracts";4import type { EnvironmentId, OrchestrationV2ThreadProjection, ThreadId } from "@t3tools/contracts";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
66
7import { environmentThreadDetails, useEnvironmentThread } from "./threads";7import { environmentThreadDetails, useEnvironmentThread } from "./threads";
8import { useThreadSelection } from "./use-thread-selection";8import { useThreadSelection } from "./use-thread-selection";
apps/mobile/src/state/use-thread-outbox-drain.test.ts+2-2
...@@ -83,7 +83,7 @@ vi.mock("./entities", () => ({...@@ -83,7 +83,7 @@ vi.mock("./entities", () => ({
83}));83}));
8484
85vi.mock("./server", async () => {85vi.mock("./server", async () => {
86 const { Atom } = await import("effect/unstable/reactivity");86 const { Atom } = await import("effect/reactivity");
87 return { serverEnvironment: { configValueAtom: Atom.family(() => Atom.make(null)) } };87 return { serverEnvironment: { configValueAtom: Atom.family(() => Atom.make(null)) } };
88});88});
8989
...@@ -96,7 +96,7 @@ vi.mock("./use-atom-command", () => ({...@@ -96,7 +96,7 @@ vi.mock("./use-atom-command", () => ({
96}));96}));
9797
98vi.mock("./use-thread-outbox", async () => {98vi.mock("./use-thread-outbox", async () => {
99 const { Atom } = await import("effect/unstable/reactivity");99 const { Atom } = await import("effect/reactivity");
100 return {100 return {
101 editingQueuedMessageIdsAtom: Atom.make<Record<string, boolean>>({}).pipe(Atom.keepAlive),101 editingQueuedMessageIdsAtom: Atom.make<Record<string, boolean>>({}).pipe(Atom.keepAlive),
102 useThreadOutboxMessages: () => ({}),102 useThreadOutboxMessages: () => ({}),
apps/mobile/src/state/use-thread-outbox-drain.ts+1-1
...@@ -15,7 +15,7 @@ import {...@@ -15,7 +15,7 @@ import {
15} from "@t3tools/contracts";15} from "@t3tools/contracts";
16import { buildTemporaryWorktreeBranchName } from "@t3tools/shared/git";16import { buildTemporaryWorktreeBranchName } from "@t3tools/shared/git";
17import * as Cause from "effect/Cause";17import * as Cause from "effect/Cause";
18import { AsyncResult } from "effect/unstable/reactivity";18import { AsyncResult } from "effect/reactivity";
19import { useCallback, useEffect, useRef, useState } from "react";19import { useCallback, useEffect, useRef, useState } from "react";
20import { Alert } from "react-native";20import { Alert } from "react-native";
2121
apps/mobile/src/state/use-thread-outbox.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import type { EnvironmentShellStatus } from "@t3tools/client-runtime/state/shell";2import type { EnvironmentShellStatus } from "@t3tools/client-runtime/state/shell";
3import type { EnvironmentId, MessageId } from "@t3tools/contracts";3import type { EnvironmentId, MessageId } from "@t3tools/contracts";
4import { Atom } from "effect/unstable/reactivity";4import { Atom } from "effect/reactivity";
55
6import { appAtomRegistry } from "./atom-registry";6import { appAtomRegistry } from "./atom-registry";
7import { environmentShell } from "./shell";7import { environmentShell } from "./shell";
apps/mobile/src/state/use-thread-pr.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 createLinkedPullRequestSummaryAtomFamily,5 createLinkedPullRequestSummaryAtomFamily,
6 pullRequestDetailToVcsStatus,6 pullRequestDetailToVcsStatus,
7} from "@t3tools/client-runtime/state/pull-requests";7} from "@t3tools/client-runtime/state/pull-requests";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
9import { useCallback, useEffect, useMemo } from "react";9import { useCallback, useEffect, useMemo } from "react";
1010
11import { connectionAtomRuntime } from "../connection/runtime";11import { connectionAtomRuntime } from "../connection/runtime";
apps/mobile/src/state/use-vcs-action-state.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { type VcsActionState, type VcsActionTarget } from "@t3tools/client-runtime/state/vcs";2import { type VcsActionState, type VcsActionTarget } from "@t3tools/client-runtime/state/vcs";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
4import { useCallback, useEffect, useRef, useState } from "react";4import { useCallback, useEffect, useRef, useState } from "react";
55
6import { appAtomRegistry } from "./atom-registry";6import { appAtomRegistry } from "./atom-registry";
apps/mobile/src/state/v2-item-support.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7 type V2ItemSupport,7 type V2ItemSupport,
8} from "@t3tools/client-runtime/state/item-support";8} from "@t3tools/client-runtime/state/item-support";
9import type { EnvironmentId, ThreadId, TurnItemId } from "@t3tools/contracts";9import type { EnvironmentId, ThreadId, TurnItemId } from "@t3tools/contracts";
10import { Atom } from "effect/unstable/reactivity";10import { Atom } from "effect/reactivity";
1111
12import { environmentThreadDetails } from "./threads";12import { environmentThreadDetails } from "./threads";
1313
apps/mobile/src/state/workspace-connection-atoms.test.ts+1-1
...@@ -8,7 +8,7 @@ import type { EnvironmentCatalogState } from "@t3tools/client-runtime/state/conn...@@ -8,7 +8,7 @@ import type { EnvironmentCatalogState } from "@t3tools/client-runtime/state/conn
8import type { EnvironmentShellSummary } from "@t3tools/client-runtime/state/shell";8import type { EnvironmentShellSummary } from "@t3tools/client-runtime/state/shell";
9import { EnvironmentId, type ServerConfig } from "@t3tools/contracts";9import { EnvironmentId, type ServerConfig } from "@t3tools/contracts";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import { Atom, AtomRegistry } from "effect/unstable/reactivity";11import { Atom, AtomRegistry } from "effect/reactivity";
1212
13import { createWorkspaceConnectionAtoms } from "./workspace-connection-atoms";13import { createWorkspaceConnectionAtoms } from "./workspace-connection-atoms";
14import { projectWorkspaceEnvironment, projectWorkspaceState } from "./workspaceModel";14import { projectWorkspaceEnvironment, projectWorkspaceState } from "./workspaceModel";
apps/mobile/src/state/workspace-connection-atoms.ts+1-1
...@@ -2,7 +2,7 @@ import type { EnvironmentPresentation, NetworkStatus } from "@t3tools/client-run...@@ -2,7 +2,7 @@ import type { EnvironmentPresentation, NetworkStatus } from "@t3tools/client-run
2import type { EnvironmentCatalogState } from "@t3tools/client-runtime/state/connections";2import type { EnvironmentCatalogState } from "@t3tools/client-runtime/state/connections";
3import type { EnvironmentId } from "@t3tools/contracts";3import type { EnvironmentId } from "@t3tools/contracts";
4import { createEnvironmentSummaryAtoms } from "@t3tools/client-runtime/state/presentation";4import { createEnvironmentSummaryAtoms } from "@t3tools/client-runtime/state/presentation";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
66
7import { projectWorkspaceConnectionState } from "./workspaceModel";7import { projectWorkspaceConnectionState } from "./workspaceModel";
88
apps/mobile/src/widgets/SubscriptionUsageCoordinator.tsx+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
3import * as Linking from "expo-linking";3import * as Linking from "expo-linking";
4import { useEffect } from "react";4import { useEffect } from "react";
5import { Platform } from "react-native";5import { Platform } from "react-native";
apps/server/integration/NetworkTransferMeasurement.integration.ts+2-2
...@@ -9,8 +9,8 @@ import * as Exit from "effect/Exit";...@@ -9,8 +9,8 @@ import * as Exit from "effect/Exit";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as Scope from "effect/Scope";11import * as Scope from "effect/Scope";
12import { RpcClient, RpcSerialization } from "effect/unstable/rpc";12import { RpcClient, RpcSerialization } from "effect/rpc";
13import * as Socket from "effect/unstable/socket/Socket";13import * as Socket from "effect/socket/Socket";
1414
15export class TransferHttpRequestError extends Schema.TaggedError<TransferHttpRequestError>()(15export class TransferHttpRequestError extends Schema.TaggedError<TransferHttpRequestError>()(
16 "TransferHttpRequestError",16 "TransferHttpRequestError",
apps/server/integration/transferBudgetV2.integration.test.ts+4-4
...@@ -31,10 +31,10 @@ import * as Queue from "effect/Queue";...@@ -31,10 +31,10 @@ import * as Queue from "effect/Queue";
31import * as Schema from "effect/Schema";31import * as Schema from "effect/Schema";
32import * as Scope from "effect/Scope";32import * as Scope from "effect/Scope";
33import * as Stream from "effect/Stream";33import * as Stream from "effect/Stream";
34import * as HttpApi from "effect/unstable/httpapi/HttpApi";34import * as HttpApi from "effect/http-api/HttpApi";
35import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";35import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
36import { HttpRouter, HttpServer } from "effect/unstable/http";36import { HttpRouter, HttpServer } from "effect/http";
37import { Rpc, RpcGroup, RpcServer, RpcSerialization } from "effect/unstable/rpc";37import { Rpc, RpcGroup, RpcServer, RpcSerialization } from "effect/rpc";
38import { SqlitePersistenceMemory } from "../src/persistence/Layers/Sqlite.ts";38import { SqlitePersistenceMemory } from "../src/persistence/Layers/Sqlite.ts";
39import { OrchestrationEventStoreLive } from "../src/persistence/Layers/OrchestrationEventStore.ts";39import { OrchestrationEventStoreLive } from "../src/persistence/Layers/OrchestrationEventStore.ts";
40import * as EventStore from "../src/orchestration-v2/EventStore.ts";40import * as EventStore from "../src/orchestration-v2/EventStore.ts";
apps/server/package.json+3-3
...@@ -35,9 +35,9 @@...@@ -35,9 +35,9 @@
35 "@ff-labs/fff-node": "0.9.4",35 "@ff-labs/fff-node": "0.9.4",
36 "@napi-rs/keyring": "^1.3.0",36 "@napi-rs/keyring": "^1.3.0",
37 "@opencode-ai/sdk": "^1.3.15",37 "@opencode-ai/sdk": "^1.3.15",
38 "@opencode/client": "2.0.18",38 "@opencode/client": "2.0.23",
39 "@opencode/protocol": "2.0.18",39 "@opencode/protocol": "2.0.23",
40 "@opencode/schema": "2.0.18",40 "@opencode/schema": "2.0.23",
41 "diff": "8.0.3",41 "diff": "8.0.3",
42 "effect": "catalog:",42 "effect": "catalog:",
43 "jose": "catalog:",43 "jose": "catalog:",
apps/server/scripts/cli.ts+2-2
...@@ -6,8 +6,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -6,8 +6,8 @@ import * as FileSystem from "effect/FileSystem";
6import * as Logger from "effect/Logger";6import * as Logger from "effect/Logger";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import { Command, Flag } from "effect/unstable/cli";9import { Command, Flag } from "effect/cli";
10import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcess, ChildProcessSpawner } from "effect/process";
1111
12import { DEVELOPMENT_ICON_OVERRIDES } from "../../../scripts/lib/brand-assets.ts";12import { DEVELOPMENT_ICON_OVERRIDES } from "../../../scripts/lib/brand-assets.ts";
13import { findEsmImportsOfExternalPackages } from "../../../scripts/lib/cli-executable-imports.ts";13import { findEsmImportsOfExternalPackages } from "../../../scripts/lib/cli-executable-imports.ts";
apps/server/scripts/evaluate-thread-titles.ts+1-1
...@@ -6,7 +6,7 @@...@@ -6,7 +6,7 @@
6// Add --initial to evaluate only the opening request.6// Add --initial to evaluate only the opening request.
7import * as NodeUtil from "node:util";7import * as NodeUtil from "node:util";
8import * as NodeCrypto from "node:crypto";8import * as NodeCrypto from "node:crypto";
9import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";9import * as FetchHttpClient from "effect/http/FetchHttpClient";
10import * as NodeServices from "@effect/platform-node/NodeServices";10import * as NodeServices from "@effect/platform-node/NodeServices";
11import { CodexSettings, ProviderInstanceId } from "@t3tools/contracts";11import { CodexSettings, ProviderInstanceId } from "@t3tools/contracts";
12import * as Effect from "effect/Effect";12import * as Effect from "effect/Effect";
apps/server/scripts/migrate-dev-db.test.ts+1-1
...@@ -3,7 +3,7 @@ import { assert, it } from "@effect/vitest";...@@ -3,7 +3,7 @@ import { assert, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as FileSystem from "effect/FileSystem";4import * as FileSystem from "effect/FileSystem";
5import * as Path from "effect/Path";5import * as Path from "effect/Path";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
77
8import { runMigrations } from "../src/persistence/Migrations.ts";8import { runMigrations } from "../src/persistence/Migrations.ts";
9import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";9import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/scripts/migrate-dev-db.ts+2-2
...@@ -36,8 +36,8 @@ import * as Layer from "effect/Layer";...@@ -36,8 +36,8 @@ import * as Layer from "effect/Layer";
36import * as Option from "effect/Option";36import * as Option from "effect/Option";
37import * as Path from "effect/Path";37import * as Path from "effect/Path";
38import * as Schema from "effect/Schema";38import * as Schema from "effect/Schema";
39import * as SqlClient from "effect/unstable/sql/SqlClient";39import * as SqlClient from "effect/sql/SqlClient";
40import { Command, Flag } from "effect/unstable/cli";40import { Command, Flag } from "effect/cli";
4141
42import * as ProjectionStore from "../src/orchestration-v2/ProjectionStore.ts";42import * as ProjectionStore from "../src/orchestration-v2/ProjectionStore.ts";
43import { migrationManifest, runMigrations } from "../src/persistence/Migrations.ts";43import { migrationManifest, runMigrations } from "../src/persistence/Migrations.ts";
apps/server/scripts/record-codex-app-server-replay-fixture.ts+1-1
...@@ -14,7 +14,7 @@ import * as Layer from "effect/Layer";...@@ -14,7 +14,7 @@ import * as Layer from "effect/Layer";
14import * as Path from "effect/Path";14import * as Path from "effect/Path";
15import * as PlatformError from "effect/PlatformError";15import * as PlatformError from "effect/PlatformError";
16import * as Effect from "effect/Effect";16import * as Effect from "effect/Effect";
17import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";17import { ChildProcess, ChildProcessSpawner } from "effect/process";
1818
19import * as CodexClient from "effect-codex-app-server/client";19import * as CodexClient from "effect-codex-app-server/client";
20import type * as CodexSchema from "effect-codex-app-server/schema";20import type * as CodexSchema from "effect-codex-app-server/schema";
apps/server/scripts/record-cursor-agent-sdk-replay-fixture.ts+1-1
...@@ -9,7 +9,7 @@ import * as Path from "effect/Path";...@@ -9,7 +9,7 @@ import * as Path from "effect/Path";
9import * as Redacted from "effect/Redacted";9import * as Redacted from "effect/Redacted";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as Struct from "effect/Struct";11import * as Struct from "effect/Struct";
12import { Command, Flag } from "effect/unstable/cli";12import { Command, Flag } from "effect/cli";
1313
14import {14import {
15 recordCursorAgentSdkReplayTranscript,15 recordCursorAgentSdkReplayTranscript,
apps/server/scripts/record-grok-acp-replay-fixture.ts+1-1
...@@ -21,7 +21,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -21,7 +21,7 @@ import * as FileSystem from "effect/FileSystem";
21import * as Layer from "effect/Layer";21import * as Layer from "effect/Layer";
22import * as Path from "effect/Path";22import * as Path from "effect/Path";
23import * as Schema from "effect/Schema";23import * as Schema from "effect/Schema";
24import { ChildProcessSpawner } from "effect/unstable/process";24import { ChildProcessSpawner } from "effect/process";
25import type * as EffectAcpProtocol from "effect-acp/protocol";25import type * as EffectAcpProtocol from "effect-acp/protocol";
2626
27import * as ServerConfig from "../src/config.ts";27import * as ServerConfig from "../src/config.ts";
apps/server/scripts/record-pi-rpc-replay-fixture.ts+1-1
...@@ -20,7 +20,7 @@ import * as Layer from "effect/Layer";...@@ -20,7 +20,7 @@ import * as Layer from "effect/Layer";
20import * as Path from "effect/Path";20import * as Path from "effect/Path";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import { TestClock } from "effect/testing";22import { TestClock } from "effect/testing";
23import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";23import { ChildProcess, ChildProcessSpawner } from "effect/process";
2424
25import {25import {
26 makePiProviderAdapterRegistryLayer,26 makePiProviderAdapterRegistryLayer,
apps/server/scripts/t3-sqlite-state.test.ts+1-1
...@@ -3,7 +3,7 @@ import { assert, it } from "@effect/vitest";...@@ -3,7 +3,7 @@ import { assert, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as FileSystem from "effect/FileSystem";4import * as FileSystem from "effect/FileSystem";
5import * as Path from "effect/Path";5import * as Path from "effect/Path";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
77
8import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";8import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
9import { runSqliteState } from "./t3-sqlite-state.ts";9import { runSqliteState } from "./t3-sqlite-state.ts";
apps/server/scripts/t3-sqlite-state.ts+2-2
...@@ -11,8 +11,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -11,8 +11,8 @@ import * as FileSystem from "effect/FileSystem";
11import * as Option from "effect/Option";11import * as Option from "effect/Option";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import * as SqlClient from "effect/unstable/sql/SqlClient";14import * as SqlClient from "effect/sql/SqlClient";
15import { Argument, Command, Flag } from "effect/unstable/cli";15import { Argument, Command, Flag } from "effect/cli";
1616
17import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";17import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
1818
apps/server/scripts/verify-background-live.ts+2-2
...@@ -18,8 +18,8 @@ import * as Effect from "effect/Effect";...@@ -18,8 +18,8 @@ import * as Effect from "effect/Effect";
18import * as Layer from "effect/Layer";18import * as Layer from "effect/Layer";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import { Socket } from "effect/unstable/socket";21import { Socket } from "effect/socket";
22import { RpcClient, RpcSerialization } from "effect/unstable/rpc";22import { RpcClient, RpcSerialization } from "effect/rpc";
23import {23import {
24 ORCHESTRATION_PROTOCOL_VERSION,24 ORCHESTRATION_PROTOCOL_VERSION,
25 ORCHESTRATION_PROTOCOL_HEADER,25 ORCHESTRATION_PROTOCOL_HEADER,
apps/server/src/assets/AssetAccess.test.ts+2-2
...@@ -14,8 +14,8 @@ import * as Path from "effect/Path";...@@ -14,8 +14,8 @@ import * as Path from "effect/Path";
14import * as PlatformError from "effect/PlatformError";14import * as PlatformError from "effect/PlatformError";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import * as TestClock from "effect/testing/TestClock";16import * as TestClock from "effect/testing/TestClock";
17import { HttpClient, HttpClientResponse, HttpServerResponse } from "effect/unstable/http";17import { HttpClient, HttpClientResponse, HttpServerResponse } from "effect/http";
18import { ChildProcessSpawner } from "effect/unstable/process";18import { ChildProcessSpawner } from "effect/process";
19import { vi } from "vite-plus/test";19import { vi } from "vite-plus/test";
2020
21import * as ServerSecretStore from "../auth/ServerSecretStore.ts";21import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
apps/server/src/assets/AssetAccess.ts+2-2
...@@ -33,7 +33,7 @@ import { PROJECT_FAVICON_FALLBACK_MARKER } from "@t3tools/shared/projectFavicon"...@@ -33,7 +33,7 @@ import { PROJECT_FAVICON_FALLBACK_MARKER } from "@t3tools/shared/projectFavicon"
33import * as Clock from "effect/Clock";33import * as Clock from "effect/Clock";
34import * as Crypto from "effect/Crypto";34import * as Crypto from "effect/Crypto";
35import * as Effect from "effect/Effect";35import * as Effect from "effect/Effect";
36import * as Encoding from "effect/Encoding";36import * as Hex from "effect/encoding/Hex";
37import * as FileSystem from "effect/FileSystem";37import * as FileSystem from "effect/FileSystem";
38import * as Option from "effect/Option";38import * as Option from "effect/Option";
39import * as Path from "effect/Path";39import * as Path from "effect/Path";
...@@ -657,7 +657,7 @@ export const issueAssetUrl = Effect.fn("AssetAccess.issueAssetUrl")(function* (i...@@ -657,7 +657,7 @@ export const issueAssetUrl = Effect.fn("AssetAccess.issueAssetUrl")(function* (i
657 ),657 ),
658 );658 );
659 const revision = yield* crypto.digest("SHA-256", faviconBytes).pipe(659 const revision = yield* crypto.digest("SHA-256", faviconBytes).pipe(
660 Effect.map(Encoding.encodeHex),660 Effect.map(Hex.encode),
661 Effect.mapError(661 Effect.mapError(
662 (cause) =>662 (cause) =>
663 new AssetProjectFaviconInspectionError({663 new AssetProjectFaviconInspectionError({
apps/server/src/assets/AttachmentUpload.ts+1-1
...@@ -12,7 +12,7 @@ import * as Option from "effect/Option";...@@ -12,7 +12,7 @@ import * as Option from "effect/Option";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import type * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";15import type * as HttpServerRequest from "effect/http/HttpServerRequest";
1616
17import {17import {
18 attachmentFileExtension,18 attachmentFileExtension,
apps/server/src/assets/GitHubMediaFetch.ts+2-2
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as Mime from "effect/unstable/http/Mime";1import * as Mime from "effect/http/Mime";
2import { githubMediaFileName } from "@t3tools/shared/githubMedia";2import { githubMediaFileName } from "@t3tools/shared/githubMedia";
3import * as Clock from "effect/Clock";3import * as Clock from "effect/Clock";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
...@@ -10,7 +10,7 @@ import {...@@ -10,7 +10,7 @@ import {
10 HttpClientRequest,10 HttpClientRequest,
11 HttpServerResponse,11 HttpServerResponse,
12 type HttpClientResponse,12 type HttpClientResponse,
13} from "effect/unstable/http";13} from "effect/http";
1414
15import * as GitHubCli from "../sourceControl/GitHubCli.ts";15import * as GitHubCli from "../sourceControl/GitHubCli.ts";
1616
apps/server/src/assets/NativeAppIconResolver.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Sink from "effect/Sink";5import * as Sink from "effect/Sink";
6import * as Stream from "effect/Stream";6import * as Stream from "effect/Stream";
7import { ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcessSpawner } from "effect/process";
8import { HostProcessPlatform } from "@t3tools/shared/hostProcess";8import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
99
10import * as ServerConfig from "../config.ts";10import * as ServerConfig from "../config.ts";
apps/server/src/assets/NativeAppIconResolver.ts+1-1
...@@ -13,7 +13,7 @@ import * as Option from "effect/Option";...@@ -13,7 +13,7 @@ import * as Option from "effect/Option";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as PlatformError from "effect/PlatformError";14import * as PlatformError from "effect/PlatformError";
15import * as Semaphore from "effect/Semaphore";15import * as Semaphore from "effect/Semaphore";
16import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";16import { ChildProcess, ChildProcessSpawner } from "effect/process";
17import { HostProcessPlatform } from "@t3tools/shared/hostProcess";17import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
1818
19import * as ServerConfig from "../config.ts";19import * as ServerConfig from "../config.ts";
apps/server/src/auth/EnvironmentAuth.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Redacted from "effect/Redacted";6import * as Redacted from "effect/Redacted";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as SqlClient from "effect/unstable/sql/SqlClient";8import * as SqlClient from "effect/sql/SqlClient";
99
10import * as ServerConfig from "../config.ts";10import * as ServerConfig from "../config.ts";
11import * as ServerEnvironment from "../environment/ServerEnvironment.ts";11import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
apps/server/src/auth/EnvironmentAuth.ts+1-1
...@@ -28,7 +28,7 @@ import * as Effect from "effect/Effect";...@@ -28,7 +28,7 @@ import * as Effect from "effect/Effect";
28import * as Layer from "effect/Layer";28import * as Layer from "effect/Layer";
29import * as Option from "effect/Option";29import * as Option from "effect/Option";
30import * as Schema from "effect/Schema";30import * as Schema from "effect/Schema";
31import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";31import * as HttpServerRequest from "effect/http/HttpServerRequest";
3232
33import * as ServerEnvironment from "../environment/ServerEnvironment.ts";33import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
34import * as ServerConfig from "../config.ts";34import * as ServerConfig from "../config.ts";
apps/server/src/auth/RpcAuthorization.test.ts+1-1
...@@ -9,7 +9,7 @@ import {...@@ -9,7 +9,7 @@ import {
9import { describe, expect, it } from "@effect/vitest";9import { describe, expect, it } from "@effect/vitest";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as RpcTest from "effect/unstable/rpc/RpcTest";12import * as RpcTest from "effect/rpc/RpcTest";
1313
14import {14import {
15 RPC_REQUIRED_SCOPES,15 RPC_REQUIRED_SCOPES,
apps/server/src/auth/RpcAuthorization.ts+1-1
...@@ -16,7 +16,7 @@ import {...@@ -16,7 +16,7 @@ import {
16} from "@t3tools/contracts";16} from "@t3tools/contracts";
17import * as Effect from "effect/Effect";17import * as Effect from "effect/Effect";
18import * as Layer from "effect/Layer";18import * as Layer from "effect/Layer";
19import type * as RpcGroup from "effect/unstable/rpc/RpcGroup";19import type * as RpcGroup from "effect/rpc/RpcGroup";
2020
21type WsRpcMethod = RpcGroup.Rpcs<typeof WsRpcGroup>["_tag"];21type WsRpcMethod = RpcGroup.Rpcs<typeof WsRpcGroup>["_tag"];
2222
apps/server/src/auth/SessionStore.test.ts+1-1
...@@ -10,7 +10,7 @@ import * as Queue from "effect/Queue";...@@ -10,7 +10,7 @@ import * as Queue from "effect/Queue";
10import * as Redacted from "effect/Redacted";10import * as Redacted from "effect/Redacted";
11import * as Stream from "effect/Stream";11import * as Stream from "effect/Stream";
12import * as TestClock from "effect/testing/TestClock";12import * as TestClock from "effect/testing/TestClock";
13import * as SqlClient from "effect/unstable/sql/SqlClient";13import * as SqlClient from "effect/sql/SqlClient";
1414
15import * as ServerConfig from "../config.ts";15import * as ServerConfig from "../config.ts";
16import * as ServerEnvironment from "../environment/ServerEnvironment.ts";16import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
apps/server/src/auth/dpop.ts+3-3
...@@ -6,9 +6,9 @@ import type { DpopFailureReason } from "@t3tools/contracts";...@@ -6,9 +6,9 @@ import type { DpopFailureReason } from "@t3tools/contracts";
6import * as Crypto from "effect/Crypto";6import * as Crypto from "effect/Crypto";
7import * as DateTime from "effect/DateTime";7import * as DateTime from "effect/DateTime";
8import * as Effect from "effect/Effect";8import * as Effect from "effect/Effect";
9import * as Encoding from "effect/Encoding";9import * as Base64Url from "effect/encoding/Base64Url";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";11import * as HttpServerRequest from "effect/http/HttpServerRequest";
1212
13import {13import {
14 ServerAuthDpopReplayKeyCalculationError,14 ServerAuthDpopReplayKeyCalculationError,
...@@ -89,7 +89,7 @@ export const verifyRequestDpopProof = (input: {...@@ -89,7 +89,7 @@ export const verifyRequestDpopProof = (input: {
89 Effect.flatMap((crypto) =>89 Effect.flatMap((crypto) =>
90 crypto.digest("SHA-256", new TextEncoder().encode(`${result.thumbprint}:${result.jti}`)),90 crypto.digest("SHA-256", new TextEncoder().encode(`${result.thumbprint}:${result.jti}`)),
91 ),91 ),
92 Effect.map(Encoding.encodeBase64Url),92 Effect.map(Base64Url.encode),
93 Effect.mapError(93 Effect.mapError(
94 (cause) =>94 (cause) =>
95 new ServerAuthDpopReplayKeyCalculationError({95 new ServerAuthDpopReplayKeyCalculationError({
apps/server/src/auth/http.test.ts+5-5
...@@ -7,11 +7,11 @@ import * as Effect from "effect/Effect";...@@ -7,11 +7,11 @@ import * as Effect from "effect/Effect";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Redacted from "effect/Redacted";8import * as Redacted from "effect/Redacted";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as Etag from "effect/unstable/http/Etag";10import * as Etag from "effect/http/Etag";
11import * as HttpPlatform from "effect/unstable/http/HttpPlatform";11import * as HttpPlatform from "effect/http/HttpPlatform";
12import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";12import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
13import * as HttpApi from "effect/unstable/httpapi/HttpApi";13import * as HttpApi from "effect/http-api/HttpApi";
14import * as HttpRouter from "effect/unstable/http/HttpRouter";14import * as HttpRouter from "effect/http/HttpRouter";
1515
16import * as ServerConfig from "../config.ts";16import * as ServerConfig from "../config.ts";
17import * as ServerEnvironment from "../environment/ServerEnvironment.ts";17import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
apps/server/src/auth/http.ts+4-4
...@@ -29,10 +29,10 @@ import * as DateTime from "effect/DateTime";...@@ -29,10 +29,10 @@ import * as DateTime from "effect/DateTime";
29import * as Effect from "effect/Effect";29import * as Effect from "effect/Effect";
30import { identity } from "effect/Function";30import { identity } from "effect/Function";
31import * as Layer from "effect/Layer";31import * as Layer from "effect/Layer";
32import * as Cookies from "effect/unstable/http/Cookies";32import * as Cookies from "effect/http/Cookies";
33import * as HttpEffect from "effect/unstable/http/HttpEffect";33import * as HttpEffect from "effect/http/HttpEffect";
34import { HttpServerRequest, HttpServerResponse } from "effect/unstable/http";34import { HttpServerRequest, HttpServerResponse } from "effect/http";
35import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";35import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
3636
37import * as EnvironmentAuth from "./EnvironmentAuth.ts";37import * as EnvironmentAuth from "./EnvironmentAuth.ts";
38import * as SessionStore from "./SessionStore.ts";38import * as SessionStore from "./SessionStore.ts";
apps/server/src/auth/replayMarkers.ts+1-1
...@@ -40,7 +40,7 @@ export const pruneExpiredReplayMarkers = Effect.fn("replayMarkers.pruneExpired")...@@ -40,7 +40,7 @@ export const pruneExpiredReplayMarkers = Effect.fn("replayMarkers.pruneExpired")
40 name.endsWith(".bin") && REPLAY_MARKER_PREFIXES.some((prefix) => name.startsWith(prefix)),40 name.endsWith(".bin") && REPLAY_MARKER_PREFIXES.some((prefix) => name.startsWith(prefix)),
41 );41 );
42 // `partition` visits every marker, so one locked file does not stop the sweep.42 // `partition` visits every marker, so one locked file does not stop the sweep.
43 const [failures, removed] = yield* Effect.partition(markers, (name) => {43 const [removed, failures] = yield* Effect.partition(markers, (name) => {
44 const markerPath = path.join(secretsDir, name);44 const markerPath = path.join(secretsDir, name);
45 return fileSystem.stat(markerPath).pipe(45 return fileSystem.stat(markerPath).pipe(
46 Effect.flatMap((info) =>46 Effect.flatMap((info) =>
apps/server/src/auth/utils.ts+5-5
...@@ -3,9 +3,9 @@ import type {...@@ -3,9 +3,9 @@ import type {
3 AuthClientMetadataDeviceType,3 AuthClientMetadataDeviceType,
4 AuthClientPresentationMetadata,4 AuthClientPresentationMetadata,
5} from "@t3tools/contracts";5} from "@t3tools/contracts";
6import type * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";6import type * as HttpServerRequest from "effect/http/HttpServerRequest";
7import * as NodeCrypto from "node:crypto";7import * as NodeCrypto from "node:crypto";
8import * as Encoding from "effect/Encoding";8import * as Base64Url from "effect/encoding/Base64Url";
9import * as Result from "effect/Result";9import * as Result from "effect/Result";
1010
11const SESSION_COOKIE_NAME = "t3_session";11const SESSION_COOKIE_NAME = "t3_session";
...@@ -81,12 +81,12 @@ export function isRemoteReachableHost(host: string | undefined): boolean {...@@ -81,12 +81,12 @@ export function isRemoteReachableHost(host: string | undefined): boolean {
8181
82export function base64UrlEncode(input: string | Uint8Array): string {82export function base64UrlEncode(input: string | Uint8Array): string {
83 return typeof input === "string"83 return typeof input === "string"
84 ? Encoding.encodeBase64Url(new TextEncoder().encode(input))84 ? Base64Url.encode(new TextEncoder().encode(input))
85 : Encoding.encodeBase64Url(input);85 : Base64Url.encode(input);
86}86}
8787
88export function base64UrlDecodeUtf8(input: string): string {88export function base64UrlDecodeUtf8(input: string): string {
89 return Result.getOrThrow(Encoding.decodeBase64UrlString(input));89 return Result.getOrThrow(Base64Url.decodeString(input));
90}90}
9191
92export function signPayload(payload: string, secret: Uint8Array): string {92export function signPayload(payload: string, secret: Uint8Array): string {
apps/server/src/binCli.ts+2-2
...@@ -2,8 +2,8 @@ import * as NodeRuntime from "@effect/platform-node/NodeRuntime";...@@ -2,8 +2,8 @@ import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
2import * as NodeServices from "@effect/platform-node/NodeServices";2import * as NodeServices from "@effect/platform-node/NodeServices";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import { Argument, Command } from "effect/unstable/cli";5import { Argument, Command } from "effect/cli";
6import * as CliError from "effect/unstable/cli/CliError";6import * as CliError from "effect/cli/CliError";
77
8import * as NetService from "@t3tools/shared/Net";8import * as NetService from "@t3tools/shared/Net";
9import packageJson from "../package.json" with { type: "json" };9import packageJson from "../package.json" with { type: "json" };
apps/server/src/checkpointing/Utils.ts+2-2
...@@ -1,11 +1,11 @@...@@ -1,11 +1,11 @@
1import * as Encoding from "effect/Encoding";1import * as Base64Url from "effect/encoding/Base64Url";
2import { CheckpointRef, ProjectId, type ThreadId } from "@t3tools/contracts";2import { CheckpointRef, ProjectId, type ThreadId } from "@t3tools/contracts";
33
4const CHECKPOINT_REFS_PREFIX = "refs/t3/checkpoints";4const CHECKPOINT_REFS_PREFIX = "refs/t3/checkpoints";
55
6export function checkpointRefForThreadTurn(threadId: ThreadId, turnCount: number): CheckpointRef {6export function checkpointRefForThreadTurn(threadId: ThreadId, turnCount: number): CheckpointRef {
7 return CheckpointRef.make(7 return CheckpointRef.make(
8 `${CHECKPOINT_REFS_PREFIX}/${Encoding.encodeBase64Url(threadId)}/turn/${turnCount}`,8 `${CHECKPOINT_REFS_PREFIX}/${Base64Url.encode(threadId)}/turn/${turnCount}`,
9 );9 );
10}10}
1111
apps/server/src/cli/acpMcpBridge.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import { Argument, Command } from "effect/unstable/cli";2import { Argument, Command } from "effect/cli";
33
4import { runAcpMcpCliFastPath } from "../mcp/AcpMcpStdioBridge.ts";4import { runAcpMcpCliFastPath } from "../mcp/AcpMcpStdioBridge.ts";
55
apps/server/src/cli/app.test.ts+1-1
...@@ -18,7 +18,7 @@ import * as ConfigProvider from "effect/ConfigProvider";...@@ -18,7 +18,7 @@ import * as ConfigProvider from "effect/ConfigProvider";
18import * as Effect from "effect/Effect";18import * as Effect from "effect/Effect";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import { Command } from "effect/unstable/cli";21import { Command } from "effect/cli";
22import { afterEach, describe, expect, vi } from "vite-plus/test";22import { afterEach, describe, expect, vi } from "vite-plus/test";
2323
24import { makeCli } from "../binCli.ts";24import { makeCli } from "../binCli.ts";
apps/server/src/cli/app.ts+1-1
...@@ -22,7 +22,7 @@ import * as Effect from "effect/Effect";...@@ -22,7 +22,7 @@ import * as Effect from "effect/Effect";
22import * as Option from "effect/Option";22import * as Option from "effect/Option";
23import * as Path from "effect/Path";23import * as Path from "effect/Path";
24import * as Schema from "effect/Schema";24import * as Schema from "effect/Schema";
25import { Argument, Command } from "effect/unstable/cli";25import { Argument, Command } from "effect/cli";
2626
27import { expandHomePath, resolveBaseDir } from "../os-jank.ts";27import { expandHomePath, resolveBaseDir } from "../os-jank.ts";
28import { baseDirFlag } from "./config.ts";28import { baseDirFlag } from "./config.ts";
apps/server/src/cli/auth.ts+1-1
...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as References from "effect/References";10import * as References from "effect/References";
11import { Argument, Command, Flag, GlobalFlag } from "effect/unstable/cli";11import { Argument, Command, Flag, GlobalFlag } from "effect/cli";
1212
13import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";13import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
1414
apps/server/src/cli/claudeHistory.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import { Argument, Command } from "effect/unstable/cli";2import { Argument, Command } from "effect/cli";
33
4import { runClaudeHistoryWorker } from "../claudeHistoryWorker.ts";4import { runClaudeHistoryWorker } from "../claudeHistoryWorker.ts";
55
apps/server/src/cli/config.ts+2-2
...@@ -18,8 +18,8 @@ import * as Redacted from "effect/Redacted";...@@ -18,8 +18,8 @@ import * as Redacted from "effect/Redacted";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import * as SchemaIssue from "effect/SchemaIssue";19import * as SchemaIssue from "effect/SchemaIssue";
20import * as SchemaTransformation from "effect/SchemaTransformation";20import * as SchemaTransformation from "effect/SchemaTransformation";
21import { Argument, Flag } from "effect/unstable/cli";21import { Argument, Flag } from "effect/cli";
22import * as CliError from "effect/unstable/cli/CliError";22import * as CliError from "effect/cli/CliError";
2323
24import { readBootstrapEnvelope } from "../bootstrap.ts";24import { readBootstrapEnvelope } from "../bootstrap.ts";
25import * as ServerConfig from "../config.ts";25import * as ServerConfig from "../config.ts";
apps/server/src/cli/connect.ts+3-8
...@@ -20,14 +20,9 @@ import * as Layer from "effect/Layer";...@@ -20,14 +20,9 @@ import * as Layer from "effect/Layer";
20import * as Option from "effect/Option";20import * as Option from "effect/Option";
21import * as References from "effect/References";21import * as References from "effect/References";
22import * as Schema from "effect/Schema";22import * as Schema from "effect/Schema";
23import { Command, Flag, GlobalFlag, Prompt } from "effect/unstable/cli";23import { Command, Flag, GlobalFlag, Prompt } from "effect/cli";
24import {24import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
25 FetchHttpClient,25import * as HttpApiClient from "effect/http-api/HttpApiClient";
26 HttpClient,
27 HttpClientRequest,
28 HttpClientResponse,
29} from "effect/unstable/http";
30import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";
3126
32import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";27import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
33import * as ServerSecretStore from "../auth/ServerSecretStore.ts";28import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
apps/server/src/cli/pair.test.ts+1-1
...@@ -11,7 +11,7 @@ import { assert, describe, expect, it } from "@effect/vitest";...@@ -11,7 +11,7 @@ import { assert, describe, expect, it } from "@effect/vitest";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as TestConsole from "effect/testing/TestConsole";13import * as TestConsole from "effect/testing/TestConsole";
14import { Command } from "effect/unstable/cli";14import { Command } from "effect/cli";
1515
16import { cli } from "../binCli.ts";16import { cli } from "../binCli.ts";
17import {17import {
apps/server/src/cli/pair.ts+2-7
...@@ -32,13 +32,8 @@ import * as Layer from "effect/Layer";...@@ -32,13 +32,8 @@ import * as Layer from "effect/Layer";
32import * as Option from "effect/Option";32import * as Option from "effect/Option";
33import * as References from "effect/References";33import * as References from "effect/References";
34import * as Schema from "effect/Schema";34import * as Schema from "effect/Schema";
35import { Command, Flag, GlobalFlag } from "effect/unstable/cli";35import { Command, Flag, GlobalFlag } from "effect/cli";
36import {36import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
37 FetchHttpClient,
38 HttpClient,
39 HttpClientRequest,
40 HttpClientResponse,
41} from "effect/unstable/http";
4237
43import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";38import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
44import * as ServerConfig from "../config.ts";39import * as ServerConfig from "../config.ts";
apps/server/src/cli/project.test.ts+1-1
...@@ -23,7 +23,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -23,7 +23,7 @@ import * as FileSystem from "effect/FileSystem";
23import * as Layer from "effect/Layer";23import * as Layer from "effect/Layer";
24import * as References from "effect/References";24import * as References from "effect/References";
25import * as Stream from "effect/Stream";25import * as Stream from "effect/Stream";
26import { Command } from "effect/unstable/cli";26import { Command } from "effect/cli";
2727
28import { cli } from "../binCli.ts";28import { cli } from "../binCli.ts";
29import * as ServerConfig from "../config.ts";29import * as ServerConfig from "../config.ts";
apps/server/src/cli/project.ts+3-3
...@@ -17,9 +17,9 @@ import * as Option from "effect/Option";...@@ -17,9 +17,9 @@ import * as Option from "effect/Option";
17import * as Path from "effect/Path";17import * as Path from "effect/Path";
18import * as References from "effect/References";18import * as References from "effect/References";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import { Argument, Command, Flag, GlobalFlag } from "effect/unstable/cli";20import { Argument, Command, Flag, GlobalFlag } from "effect/cli";
21import { FetchHttpClient, HttpClient, HttpClientError } from "effect/unstable/http";21import { FetchHttpClient, HttpClient, HttpClientError } from "effect/http";
22import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";22import * as HttpApiClient from "effect/http-api/HttpApiClient";
2323
24import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";24import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
2525
apps/server/src/cli/server.ts+2-2
...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";
3import * as FileSystem from "effect/FileSystem";3import * as FileSystem from "effect/FileSystem";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import { Command, GlobalFlag } from "effect/unstable/cli";6import { Command, GlobalFlag } from "effect/cli";
7import * as CliError from "effect/unstable/cli/CliError";7import * as CliError from "effect/cli/CliError";
88
9import * as ServerConfig from "../config.ts";9import * as ServerConfig from "../config.ts";
10import { runServer } from "../server.ts";10import { runServer } from "../server.ts";
apps/server/src/cli/service.test.ts+1-1
...@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";...@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";
7import * as FileSystem from "effect/FileSystem";7import * as FileSystem from "effect/FileSystem";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Terminal from "effect/Terminal";9import * as Terminal from "effect/Terminal";
10import { Command } from "effect/unstable/cli";10import { Command } from "effect/cli";
11import { afterEach, vi } from "vite-plus/test";11import { afterEach, vi } from "vite-plus/test";
1212
13import packageJson from "../../package.json" with { type: "json" };13import packageJson from "../../package.json" with { type: "json" };
apps/server/src/cli/service.ts+2-2
...@@ -3,8 +3,8 @@ import * as Console from "effect/Console";...@@ -3,8 +3,8 @@ import * as Console from "effect/Console";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Terminal from "effect/Terminal";5import * as Terminal from "effect/Terminal";
6import { Command, Flag, GlobalFlag, Prompt } from "effect/unstable/cli";6import { Command, Flag, GlobalFlag, Prompt } from "effect/cli";
7import { FetchHttpClient } from "effect/unstable/http";7import { FetchHttpClient } from "effect/http";
88
9import packageJson from "../../package.json" with { type: "json" };9import packageJson from "../../package.json" with { type: "json" };
10import * as BootService from "../cloud/bootService.ts";10import * as BootService from "../cloud/bootService.ts";
apps/server/src/cli/serviceLauncher.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import { Command } from "effect/unstable/cli";2import { Command } from "effect/cli";
33
4import { main as runServiceLauncher } from "../serviceLauncher.ts";4import { main as runServiceLauncher } from "../serviceLauncher.ts";
55
apps/server/src/cli/servicePreflight.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Console from "effect/Console";1import * as Console from "effect/Console";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { Command, Flag } from "effect/unstable/cli";3import { Command, Flag } from "effect/cli";
44
5import { runServicePreflight } from "../cloud/servicePreflight.ts";5import { runServicePreflight } from "../cloud/servicePreflight.ts";
66
apps/server/src/cli/sshHelper.ts+1-1
...@@ -8,7 +8,7 @@ import * as NodeHttp from "node:http";...@@ -8,7 +8,7 @@ import * as NodeHttp from "node:http";
8import * as NodeNet from "node:net";8import * as NodeNet from "node:net";
99
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import { Argument, Command } from "effect/unstable/cli";11import { Argument, Command } from "effect/cli";
1212
13/**13/**
14 * Small helpers the SSH launch script needs on the remote host. The script14 * Small helpers the SSH launch script needs on the remote host. The script
apps/server/src/cli/theme.test.ts+1-1
...@@ -10,7 +10,7 @@ import { assert, describe, it } from "@effect/vitest";...@@ -10,7 +10,7 @@ import { assert, describe, it } from "@effect/vitest";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as TestConsole from "effect/testing/TestConsole";12import * as TestConsole from "effect/testing/TestConsole";
13import { Command } from "effect/unstable/cli";13import { Command } from "effect/cli";
1414
15import { cli } from "../binCli.ts";15import { cli } from "../binCli.ts";
16import { symlinksSupported } from "@t3tools/shared/testing/symlinks";16import { symlinksSupported } from "@t3tools/shared/testing/symlinks";
apps/server/src/cli/theme.ts+1-1
...@@ -33,7 +33,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -33,7 +33,7 @@ import * as FileSystem from "effect/FileSystem";
33import * as Option from "effect/Option";33import * as Option from "effect/Option";
34import * as Path from "effect/Path";34import * as Path from "effect/Path";
35import * as Schema from "effect/Schema";35import * as Schema from "effect/Schema";
36import { Argument, Command, Flag } from "effect/unstable/cli";36import { Argument, Command, Flag } from "effect/cli";
3737
38import { writeFileStringAtomically } from "../atomicWrite.ts";38import { writeFileStringAtomically } from "../atomicWrite.ts";
39import * as ServerConfig from "../config.ts";39import * as ServerConfig from "../config.ts";
apps/server/src/cli/trace.ts+1-1
...@@ -13,7 +13,7 @@ import * as Effect from "effect/Effect";...@@ -13,7 +13,7 @@ import * as Effect from "effect/Effect";
13import * as FileSystem from "effect/FileSystem";13import * as FileSystem from "effect/FileSystem";
14import * as Option from "effect/Option";14import * as Option from "effect/Option";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import { Command, Flag } from "effect/unstable/cli";16import { Command, Flag } from "effect/cli";
1717
18import * as ServerConfig from "../config.ts";18import * as ServerConfig from "../config.ts";
19import { streamTraceFileLines, toRotatedTracePaths } from "../diagnostics/TraceDiagnostics.ts";19import { streamTraceFileLines, toRotatedTracePaths } from "../diagnostics/TraceDiagnostics.ts";
apps/server/src/cli/triage.ts+1-1
...@@ -24,7 +24,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -24,7 +24,7 @@ import * as FileSystem from "effect/FileSystem";
24import * as Option from "effect/Option";24import * as Option from "effect/Option";
25import * as Path from "effect/Path";25import * as Path from "effect/Path";
26import * as Schema from "effect/Schema";26import * as Schema from "effect/Schema";
27import { Command, Flag } from "effect/unstable/cli";27import { Command, Flag } from "effect/cli";
2828
29import packageJson from "../../package.json" with { type: "json" };29import packageJson from "../../package.json" with { type: "json" };
30import * as BootService from "../cloud/bootService.ts";30import * as BootService from "../cloud/bootService.ts";
apps/server/src/cli/uninstall.ts+1-1
...@@ -15,7 +15,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -15,7 +15,7 @@ import * as FileSystem from "effect/FileSystem";
15import * as Option from "effect/Option";15import * as Option from "effect/Option";
16import * as Path from "effect/Path";16import * as Path from "effect/Path";
17import * as Schema from "effect/Schema";17import * as Schema from "effect/Schema";
18import { Command, Flag, GlobalFlag, Prompt } from "effect/unstable/cli";18import { Command, Flag, GlobalFlag, Prompt } from "effect/cli";
1919
20import * as BootService from "../cloud/bootService.ts";20import * as BootService from "../cloud/bootService.ts";
21import { pinnedRuntimeVersionsDir } from "../cloud/pinnedRuntime.ts";21import { pinnedRuntimeVersionsDir } from "../cloud/pinnedRuntime.ts";
apps/server/src/cli/update.ts+2-7
...@@ -22,13 +22,8 @@ import * as Layer from "effect/Layer";...@@ -22,13 +22,8 @@ import * as Layer from "effect/Layer";
22import * as Option from "effect/Option";22import * as Option from "effect/Option";
23import * as Path from "effect/Path";23import * as Path from "effect/Path";
24import * as Schema from "effect/Schema";24import * as Schema from "effect/Schema";
25import { Argument, Command, Flag, GlobalFlag, Prompt } from "effect/unstable/cli";25import { Argument, Command, Flag, GlobalFlag, Prompt } from "effect/cli";
26import {26import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
27 FetchHttpClient,
28 HttpClient,
29 HttpClientRequest,
30 HttpClientResponse,
31} from "effect/unstable/http";
3227
33import packageJson from "../../package.json" with { type: "json" };28import packageJson from "../../package.json" with { type: "json" };
34import * as BootService from "../cloud/bootService.ts";29import * as BootService from "../cloud/bootService.ts";
apps/server/src/cloud/CliTokenManager.test.ts+5-7
...@@ -4,7 +4,7 @@ import * as ConfigProvider from "effect/ConfigProvider";...@@ -4,7 +4,7 @@ import * as ConfigProvider from "effect/ConfigProvider";
4import * as Deferred from "effect/Deferred";4import * as Deferred from "effect/Deferred";
5import * as Duration from "effect/Duration";5import * as Duration from "effect/Duration";
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import * as Encoding from "effect/Encoding";7import * as Base64Url from "effect/encoding/Base64Url";
8import * as Fiber from "effect/Fiber";8import * as Fiber from "effect/Fiber";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
...@@ -12,8 +12,8 @@ import * as Queue from "effect/Queue";...@@ -12,8 +12,8 @@ import * as Queue from "effect/Queue";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as Terminal from "effect/Terminal";13import * as Terminal from "effect/Terminal";
14import * as TestClock from "effect/testing/TestClock";14import * as TestClock from "effect/testing/TestClock";
15import * as HttpClient from "effect/unstable/http/HttpClient";15import * as HttpClient from "effect/http/HttpClient";
16import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";16import * as HttpClientResponse from "effect/http/HttpClientResponse";
1717
18import * as CliTokenManager from "./CliTokenManager.ts";18import * as CliTokenManager from "./CliTokenManager.ts";
1919
...@@ -36,10 +36,8 @@ const TestIdTokenPayloadJson = Schema.fromJsonString(Schema.Struct({ email: Sche...@@ -36,10 +36,8 @@ const TestIdTokenPayloadJson = Schema.fromJsonString(Schema.Struct({ email: Sche
36const encodeTestIdTokenHeader = Schema.encodeSync(TestIdTokenHeaderJson);36const encodeTestIdTokenHeader = Schema.encodeSync(TestIdTokenHeaderJson);
37const encodeTestIdTokenPayload = Schema.encodeSync(TestIdTokenPayloadJson);37const encodeTestIdTokenPayload = Schema.encodeSync(TestIdTokenPayloadJson);
38const idTokenWithEmail = (() => {38const idTokenWithEmail = (() => {
39 const header = Encoding.encodeBase64Url(encodeTestIdTokenHeader({ alg: "none" }));39 const header = Base64Url.encode(encodeTestIdTokenHeader({ alg: "none" }));
40 const payload = Encoding.encodeBase64Url(40 const payload = Base64Url.encode(encodeTestIdTokenPayload({ email: "theo@example.test" }));
41 encodeTestIdTokenPayload({ email: "theo@example.test" }),
42 );
43 return `${header}.${payload}.`;41 return `${header}.${payload}.`;
44})();42})();
4543
apps/server/src/cloud/CliTokenManager.ts+12-12
...@@ -10,20 +10,20 @@ import * as Crypto from "effect/Crypto";...@@ -10,20 +10,20 @@ import * as Crypto from "effect/Crypto";
10import * as Deferred from "effect/Deferred";10import * as Deferred from "effect/Deferred";
11import * as Duration from "effect/Duration";11import * as Duration from "effect/Duration";
12import * as Effect from "effect/Effect";12import * as Effect from "effect/Effect";
13import * as Encoding from "effect/Encoding";13import * as Base64Url from "effect/encoding/Base64Url";
14import * as Layer from "effect/Layer";14import * as Layer from "effect/Layer";
15import * as Option from "effect/Option";15import * as Option from "effect/Option";
16import * as Queue from "effect/Queue";16import * as Queue from "effect/Queue";
17import * as Schema from "effect/Schema";17import * as Schema from "effect/Schema";
18import * as Semaphore from "effect/Semaphore";18import * as Semaphore from "effect/Semaphore";
19import * as Terminal from "effect/Terminal";19import * as Terminal from "effect/Terminal";
20import * as HttpClient from "effect/unstable/http/HttpClient";20import * as HttpClient from "effect/http/HttpClient";
21import * as HttpClientError from "effect/unstable/http/HttpClientError";21import * as HttpClientError from "effect/http/HttpClientError";
22import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";22import * as HttpClientRequest from "effect/http/HttpClientRequest";
23import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";23import * as HttpClientResponse from "effect/http/HttpClientResponse";
24import * as HttpRouter from "effect/unstable/http/HttpRouter";24import * as HttpRouter from "effect/http/HttpRouter";
25import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";25import * as HttpServerRequest from "effect/http/HttpServerRequest";
26import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";26import * as HttpServerResponse from "effect/http/HttpServerResponse";
2727
28import { buildConnectAuthorizeRequestUrl } from "@t3tools/shared/connectAuth";28import { buildConnectAuthorizeRequestUrl } from "@t3tools/shared/connectAuth";
2929
...@@ -170,7 +170,7 @@ function idTokenIdentity(idToken: string | undefined): string | null {...@@ -170,7 +170,7 @@ function idTokenIdentity(idToken: string | undefined): string | null {
170 if (!idToken) return null;170 if (!idToken) return null;
171 const payload = idToken.split(".")[1];171 const payload = idToken.split(".")[1];
172 if (!payload) return null;172 if (!payload) return null;
173 const decoded = Encoding.decodeBase64UrlString(payload);173 const decoded = Base64Url.decodeString(payload);
174 if (decoded._tag !== "Success") return null;174 if (decoded._tag !== "Success") return null;
175 const claims = decodeOidcIdentityClaimsJson(decoded.success);175 const claims = decodeOidcIdentityClaimsJson(decoded.success);
176 if (Option.isNone(claims)) return null;176 if (Option.isNone(claims)) return null;
...@@ -299,11 +299,11 @@ const exchangeToken = Effect.fn("cloud.cli_token.exchange")(function* (...@@ -299,11 +299,11 @@ const exchangeToken = Effect.fn("cloud.cli_token.exchange")(function* (
299299
300const makePkceRequest = Effect.gen(function* () {300const makePkceRequest = Effect.gen(function* () {
301 const crypto = yield* Crypto.Crypto;301 const crypto = yield* Crypto.Crypto;
302 const verifier = Encoding.encodeBase64Url(yield* crypto.randomBytes(32));302 const verifier = Base64Url.encode(yield* crypto.randomBytes(32));
303 const challenge = Encoding.encodeBase64Url(303 const challenge = Base64Url.encode(
304 yield* crypto.digest("SHA-256", new TextEncoder().encode(verifier)),304 yield* crypto.digest("SHA-256", new TextEncoder().encode(verifier)),
305 );305 );
306 const state = Encoding.encodeBase64Url(yield* crypto.randomBytes(16));306 const state = Base64Url.encode(yield* crypto.randomBytes(16));
307 return { verifier, challenge, state };307 return { verifier, challenge, state };
308});308});
309309
apps/server/src/cloud/ManagedEndpointRuntime.test.ts+1-1
...@@ -11,7 +11,7 @@ import * as Queue from "effect/Queue";...@@ -11,7 +11,7 @@ import * as Queue from "effect/Queue";
11import * as Sink from "effect/Sink";11import * as Sink from "effect/Sink";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import * as TestClock from "effect/testing/TestClock";13import * as TestClock from "effect/testing/TestClock";
14import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";14import { ChildProcess, ChildProcessSpawner } from "effect/process";
15import type { RelayManagedEndpointRuntimeConfig } from "@t3tools/contracts/relay";15import type { RelayManagedEndpointRuntimeConfig } from "@t3tools/contracts/relay";
16import * as RelayClient from "@t3tools/shared/relayClient";16import * as RelayClient from "@t3tools/shared/relayClient";
1717
apps/server/src/cloud/ManagedEndpointRuntime.ts+2-2
...@@ -12,8 +12,8 @@ import * as Result from "effect/Result";...@@ -12,8 +12,8 @@ import * as Result from "effect/Result";
12import * as Semaphore from "effect/Semaphore";12import * as Semaphore from "effect/Semaphore";
13import * as Scope from "effect/Scope";13import * as Scope from "effect/Scope";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import * as ChildProcess from "effect/unstable/process/ChildProcess";15import * as ChildProcess from "effect/process/ChildProcess";
16import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";16import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1717
18export type CloudManagedEndpointRuntimeStatus =18export type CloudManagedEndpointRuntimeStatus =
19 | {19 | {
apps/server/src/cloud/bootService.test.ts+2-2
...@@ -11,8 +11,8 @@ import * as Effect from "effect/Effect";...@@ -11,8 +11,8 @@ import * as Effect from "effect/Effect";
11import * as FileSystem from "effect/FileSystem";11import * as FileSystem from "effect/FileSystem";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import { HttpClient } from "effect/unstable/http";14import { HttpClient } from "effect/http";
15import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";15import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1616
17import * as ProcessRunner from "../processRunner.ts";17import * as ProcessRunner from "../processRunner.ts";
18import * as BootService from "./bootService.ts";18import * as BootService from "./bootService.ts";
apps/server/src/cloud/bootService.ts+1-1
...@@ -13,7 +13,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -13,7 +13,7 @@ import * as FileSystem from "effect/FileSystem";
13import * as Layer from "effect/Layer";13import * as Layer from "effect/Layer";
14import * as Option from "effect/Option";14import * as Option from "effect/Option";
15import * as Path from "effect/Path";15import * as Path from "effect/Path";
16import { HttpClient } from "effect/unstable/http";16import { HttpClient } from "effect/http";
17import * as Schema from "effect/Schema";17import * as Schema from "effect/Schema";
1818
19import { CLI_RELEASE_BASE_URL_ENV } from "@t3tools/shared/cliRelease";19import { CLI_RELEASE_BASE_URL_ENV } from "@t3tools/shared/cliRelease";
apps/server/src/cloud/http.test.ts+1-1
...@@ -18,7 +18,7 @@ import {...@@ -18,7 +18,7 @@ import {
18 HttpClientResponse,18 HttpClientResponse,
19 HttpServerRequest,19 HttpServerRequest,
20 type HttpClientRequest,20 type HttpClientRequest,
21} from "effect/unstable/http";21} from "effect/http";
2222
23import { DESKTOP_UPDATE_RESTART_MARKER_FILE, EnvironmentId } from "@t3tools/contracts";23import { DESKTOP_UPDATE_RESTART_MARKER_FILE, EnvironmentId } from "@t3tools/contracts";
24import { RelayClientTracer } from "@t3tools/shared/relayTracing";24import { RelayClientTracer } from "@t3tools/shared/relayTracing";
apps/server/src/cloud/http.ts+5-5
...@@ -58,11 +58,11 @@ import * as Option from "effect/Option";...@@ -58,11 +58,11 @@ import * as Option from "effect/Option";
58import * as Path from "effect/Path";58import * as Path from "effect/Path";
59import * as Schema from "effect/Schema";59import * as Schema from "effect/Schema";
60import * as Schedule from "effect/Schedule";60import * as Schedule from "effect/Schedule";
61import * as HttpEffect from "effect/unstable/http/HttpEffect";61import * as HttpEffect from "effect/http/HttpEffect";
62import { HttpServerRequest, HttpServerResponse } from "effect/unstable/http";62import { HttpServerRequest, HttpServerResponse } from "effect/http";
63import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";63import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
64import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";64import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
65import * as HttpServer from "effect/unstable/http/HttpServer";65import * as HttpServer from "effect/http/HttpServer";
6666
67import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";67import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
68import * as ServerSecretStore from "../auth/ServerSecretStore.ts";68import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
apps/server/src/cloud/pinnedRuntime.test.ts+2-2
...@@ -5,8 +5,8 @@ import * as Effect from "effect/Effect";...@@ -5,8 +5,8 @@ import * as Effect from "effect/Effect";
5import * as FileSystem from "effect/FileSystem";5import * as FileSystem from "effect/FileSystem";
6import * as Fiber from "effect/Fiber";6import * as Fiber from "effect/Fiber";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import { HttpClient, HttpClientResponse } from "effect/unstable/http";8import { HttpClient, HttpClientResponse } from "effect/http";
9import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";9import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1010
11import * as ProcessRunner from "../processRunner.ts";11import * as ProcessRunner from "../processRunner.ts";
12import {12import {
apps/server/src/cloud/pinnedRuntime.ts+3-3
...@@ -1,13 +1,13 @@...@@ -1,13 +1,13 @@
1import * as Duration from "effect/Duration";1import * as Duration from "effect/Duration";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Encoding from "effect/Encoding";3import * as Hex from "effect/encoding/Hex";
4import * as FileSystem from "effect/FileSystem";4import * as FileSystem from "effect/FileSystem";
5import * as Path from "effect/Path";5import * as Path from "effect/Path";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import * as Semaphore from "effect/Semaphore";9import * as Semaphore from "effect/Semaphore";
10import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";10import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
1111
12import {12import {
13 CLI_RELEASE_CHECKSUMS_FILE,13 CLI_RELEASE_CHECKSUMS_FILE,
...@@ -224,7 +224,7 @@ const installFromArchive = Effect.fn("cloud.pinned_runtime.install_archive")(fun...@@ -224,7 +224,7 @@ const installFromArchive = Effect.fn("cloud.pinned_runtime.install_archive")(fun
224 catch: (cause) =>224 catch: (cause) =>
225 new PinnedRuntimeInstallError({ step: "verifying the t3 release archive", cause }),225 new PinnedRuntimeInstallError({ step: "verifying the t3 release archive", cause }),
226 });226 });
227 if (Encoding.encodeHex(new Uint8Array(digest)) !== expected) {227 if (Hex.encode(new Uint8Array(digest)) !== expected) {
228 return yield* new PinnedRuntimeInstallError({228 return yield* new PinnedRuntimeInstallError({
229 step: "verifying the t3 release archive checksum",229 step: "verifying the t3 release archive checksum",
230 });230 });
apps/server/src/cloud/relayResponse.test.ts+2-2
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { expect, it } from "@effect/vitest";1import { expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { HttpClientRequest, HttpClientResponse } from "effect/unstable/http";3import { HttpClientRequest, HttpClientResponse } from "effect/http";
4import * as HttpClientError from "effect/unstable/http/HttpClientError";4import * as HttpClientError from "effect/http/HttpClientError";
55
6import { filterRelayResponse, relayRequestError, shouldRetryCloudLink } from "./relayResponse.ts";6import { filterRelayResponse, relayRequestError, shouldRetryCloudLink } from "./relayResponse.ts";
77
apps/server/src/cloud/relayResponse.ts+2-2
...@@ -9,8 +9,8 @@ import { RelayProtectedError } from "@t3tools/contracts/relay";...@@ -9,8 +9,8 @@ import { RelayProtectedError } from "@t3tools/contracts/relay";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";12import * as HttpClientResponse from "effect/http/HttpClientResponse";
13import { isHttpClientError } from "effect/unstable/http/HttpClientError";13import { isHttpClientError } from "effect/http/HttpClientError";
1414
15const isRelayResponseError = Schema.is(15const isRelayResponseError = Schema.is(
16 Schema.Union([16 Schema.Union([
apps/server/src/cloud/selfUpdate.test.ts+2-2
...@@ -8,8 +8,8 @@ import * as Effect from "effect/Effect";...@@ -8,8 +8,8 @@ import * as Effect from "effect/Effect";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as Fiber from "effect/Fiber";9import * as Fiber from "effect/Fiber";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import { HttpClient, HttpClientResponse } from "effect/unstable/http";11import { HttpClient, HttpClientResponse } from "effect/http";
12import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";12import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1313
14import * as ServerConfig from "../config.ts";14import * as ServerConfig from "../config.ts";
15import * as DesktopAppUpdate from "../desktopUpdate/DesktopAppUpdate.ts";15import * as DesktopAppUpdate from "../desktopUpdate/DesktopAppUpdate.ts";
apps/server/src/cloud/selfUpdate.ts+1-1
...@@ -18,7 +18,7 @@ import * as Ref from "effect/Ref";...@@ -18,7 +18,7 @@ import * as Ref from "effect/Ref";
18import * as FileSystem from "effect/FileSystem";18import * as FileSystem from "effect/FileSystem";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as Path from "effect/Path";20import * as Path from "effect/Path";
21import { HttpClient } from "effect/unstable/http";21import { HttpClient } from "effect/http";
2222
23import { CLI_RELEASE_BASE_URL_ENV } from "@t3tools/shared/cliRelease";23import { CLI_RELEASE_BASE_URL_ENV } from "@t3tools/shared/cliRelease";
2424
apps/server/src/cloud/traceRelayRequest.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { withRelayClientTracing } from "@t3tools/shared/relayTracing";1import { withRelayClientTracing } from "@t3tools/shared/relayTracing";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import { HttpServerRequest, HttpTraceContext } from "effect/unstable/http";4import { HttpServerRequest, HttpTraceContext } from "effect/http";
55
6export const traceRelayRequest = <A, E, R>(6export const traceRelayRequest = <A, E, R>(
7 effect: Effect.Effect<A, E, R>,7 effect: Effect.Effect<A, E, R>,
apps/server/src/device/DeviceHubProxy.test.ts+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Layer from "effect/Layer";10import * as Layer from "effect/Layer";
11import { HttpClient, HttpClientResponse, HttpRouter } from "effect/unstable/http";11import { HttpClient, HttpClientResponse, HttpRouter } from "effect/http";
12import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";12import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
13import * as DeviceService from "./DeviceService.ts";13import * as DeviceService from "./DeviceService.ts";
14import { deviceHubProxyRouteLayer } from "./DeviceHubProxy.ts";14import { deviceHubProxyRouteLayer } from "./DeviceHubProxy.ts";
apps/server/src/device/DeviceHubProxy.ts+2-2
...@@ -24,8 +24,8 @@ import {...@@ -24,8 +24,8 @@ import {
24 HttpRouter,24 HttpRouter,
25 HttpServerRequest,25 HttpServerRequest,
26 HttpServerResponse,26 HttpServerResponse,
27} from "effect/unstable/http";27} from "effect/http";
28import * as Socket from "effect/unstable/socket/Socket";28import * as Socket from "effect/socket/Socket";
29import * as NodeSocket from "@effect/platform-node/NodeSocket";29import * as NodeSocket from "@effect/platform-node/NodeSocket";
3030
31import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";31import * as EnvironmentAuth from "../auth/EnvironmentAuth.ts";
apps/server/src/device/DeviceMultiHost.test.ts+1-1
...@@ -3,7 +3,7 @@ import { ThreadId } from "@t3tools/contracts";...@@ -3,7 +3,7 @@ import { ThreadId } from "@t3tools/contracts";
3import * as Deferred from "effect/Deferred";3import * as Deferred from "effect/Deferred";
4import * as Fiber from "effect/Fiber";4import * as Fiber from "effect/Fiber";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import { HttpClient, HttpClientResponse } from "effect/unstable/http";6import { HttpClient, HttpClientResponse } from "effect/http";
7import * as ServerSettings from "../serverSettings.ts";7import * as ServerSettings from "../serverSettings.ts";
8import * as DeviceHost from "./DeviceHost.ts";8import * as DeviceHost from "./DeviceHost.ts";
9import * as DeviceService from "./DeviceService.ts";9import * as DeviceService from "./DeviceService.ts";
apps/server/src/device/DeviceService.test.ts+1-1
...@@ -15,7 +15,7 @@ import * as PubSub from "effect/PubSub";...@@ -15,7 +15,7 @@ import * as PubSub from "effect/PubSub";
15import * as Ref from "effect/Ref";15import * as Ref from "effect/Ref";
16import * as Schema from "effect/Schema";16import * as Schema from "effect/Schema";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import { HttpClient, HttpClientResponse } from "effect/unstable/http";18import { HttpClient, HttpClientResponse } from "effect/http";
19import * as ServerSettings from "../serverSettings.ts";19import * as ServerSettings from "../serverSettings.ts";
20import * as DeviceHost from "./DeviceHost.ts";20import * as DeviceHost from "./DeviceHost.ts";
21import { NodeRuntimeUnavailableError } from "@t3tools/shared/nodeRuntime";21import { NodeRuntimeUnavailableError } from "@t3tools/shared/nodeRuntime";
apps/server/src/device/DeviceService.ts+1-1
...@@ -56,7 +56,7 @@ import * as Scope from "effect/Scope";...@@ -56,7 +56,7 @@ import * as Scope from "effect/Scope";
56import * as Semaphore from "effect/Semaphore";56import * as Semaphore from "effect/Semaphore";
57import * as Stream from "effect/Stream";57import * as Stream from "effect/Stream";
58import * as SynchronizedRef from "effect/SynchronizedRef";58import * as SynchronizedRef from "effect/SynchronizedRef";
59import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";59import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
6060
61import * as ServerSettings from "../serverSettings.ts";61import * as ServerSettings from "../serverSettings.ts";
62import { isLocalSshDeviceHost, remoteSshDeviceHosts } from "./localSshDeviceHost.ts";62import { isLocalSshDeviceHost, remoteSshDeviceHosts } from "./localSshDeviceHost.ts";
apps/server/src/device/DeviceToolchain.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -4,7 +4,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as FileSystem from "effect/FileSystem";5import * as FileSystem from "effect/FileSystem";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";7import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
88
9import * as ProcessRunner from "../processRunner.ts";9import * as ProcessRunner from "../processRunner.ts";
10import {10import {
apps/server/src/device/LocalDeviceHost.test.ts+2-2
...@@ -14,8 +14,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -14,8 +14,8 @@ import * as FileSystem from "effect/FileSystem";
1414
15import * as LocalDeviceHost from "./LocalDeviceHost.ts";15import * as LocalDeviceHost from "./LocalDeviceHost.ts";
16import * as NodeServices from "@effect/platform-node/NodeServices";16import * as NodeServices from "@effect/platform-node/NodeServices";
17import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";17import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
18import { HttpClient } from "effect/unstable/http";18import { HttpClient } from "effect/http";
19import * as NetService from "@t3tools/shared/Net";19import * as NetService from "@t3tools/shared/Net";
20import * as ServerConfig from "../config.ts";20import * as ServerConfig from "../config.ts";
21import * as ProcessRunner from "../processRunner.ts";21import * as ProcessRunner from "../processRunner.ts";
apps/server/src/device/LocalDeviceHost.ts+3-3
...@@ -43,9 +43,9 @@ import * as Schema from "effect/Schema";...@@ -43,9 +43,9 @@ import * as Schema from "effect/Schema";
43import * as Scope from "effect/Scope";43import * as Scope from "effect/Scope";
44import * as Semaphore from "effect/Semaphore";44import * as Semaphore from "effect/Semaphore";
45import * as Stream from "effect/Stream";45import * as Stream from "effect/Stream";
46import { HttpClient } from "effect/unstable/http";46import { HttpClient } from "effect/http";
47import * as ChildProcess from "effect/unstable/process/ChildProcess";47import * as ChildProcess from "effect/process/ChildProcess";
48import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";48import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
4949
50import * as ServerConfig from "../config.ts";50import * as ServerConfig from "../config.ts";
51import * as ProcessRunner from "../processRunner.ts";51import * as ProcessRunner from "../processRunner.ts";
apps/server/src/device/SshDeviceHost.test.ts+3-3
...@@ -8,9 +8,9 @@ import * as Layer from "effect/Layer";...@@ -8,9 +8,9 @@ import * as Layer from "effect/Layer";
8import * as PlatformError from "effect/PlatformError";8import * as PlatformError from "effect/PlatformError";
9import * as Sink from "effect/Sink";9import * as Sink from "effect/Sink";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import * as HttpClient from "effect/unstable/http/HttpClient";11import * as HttpClient from "effect/http/HttpClient";
12import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";12import * as HttpClientResponse from "effect/http/HttpClientResponse";
13import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";13import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
14import * as ServerConfig from "../config.ts";14import * as ServerConfig from "../config.ts";
15import * as DeviceHost from "./DeviceHost.ts";15import * as DeviceHost from "./DeviceHost.ts";
16import * as SshDeviceHost from "./SshDeviceHost.ts";16import * as SshDeviceHost from "./SshDeviceHost.ts";
apps/server/src/device/SshDeviceHost.ts+3-3
...@@ -17,9 +17,9 @@ import * as Scope from "effect/Scope";...@@ -17,9 +17,9 @@ import * as Scope from "effect/Scope";
17import * as Semaphore from "effect/Semaphore";17import * as Semaphore from "effect/Semaphore";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import * as HttpClient from "effect/unstable/http/HttpClient";20import * as HttpClient from "effect/http/HttpClient";
21import * as ChildProcess from "effect/unstable/process/ChildProcess";21import * as ChildProcess from "effect/process/ChildProcess";
22import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";22import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
23import * as ServerConfig from "../config.ts";23import * as ServerConfig from "../config.ts";
24import * as DeviceHost from "./DeviceHost.ts";24import * as DeviceHost from "./DeviceHost.ts";
25import { quoteRemoteArg, remoteDeviceEnvironment, remoteDeviceScript } from "./sshDeviceScript.ts";25import { quoteRemoteArg, remoteDeviceEnvironment, remoteDeviceScript } from "./sshDeviceScript.ts";
apps/server/src/device/deviceToolMaintenance.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as NodePathLayer from "@effect/platform-node/NodePath";2import * as NodePathLayer from "@effect/platform-node/NodePath";
3import * as ProcessRunner from "../processRunner.ts";3import * as ProcessRunner from "../processRunner.ts";
4import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";4import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
5// @effect-diagnostics nodeBuiltinImport:off - tests the same standalone script used by local and SSH hosts.5// @effect-diagnostics nodeBuiltinImport:off - tests the same standalone script used by local and SSH hosts.
6import { describe, expect, it } from "@effect/vitest";6import { describe, expect, it } from "@effect/vitest";
7import * as NodeFSP from "node:fs/promises";7import * as NodeFSP from "node:fs/promises";
apps/server/src/device/localSshDeviceHost.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -3,7 +3,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Sink from "effect/Sink";4import * as Sink from "effect/Sink";
5import * as Stream from "effect/Stream";5import * as Stream from "effect/Stream";
6import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";6import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
7import {7import {
8 isLocalSshDeviceHost,8 isLocalSshDeviceHost,
9 LocalDeviceHostAddresses,9 LocalDeviceHostAddresses,
apps/server/src/environment/DirectEndpoints.test.ts+3-3
...@@ -5,9 +5,9 @@ import * as Effect from "effect/Effect";...@@ -5,9 +5,9 @@ import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Sink from "effect/Sink";6import * as Sink from "effect/Sink";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as HttpClient from "effect/unstable/http/HttpClient";8import * as HttpClient from "effect/http/HttpClient";
9import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";9import * as HttpClientResponse from "effect/http/HttpClientResponse";
10import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";10import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
11import { describe, expect, it } from "vite-plus/test";11import { describe, expect, it } from "vite-plus/test";
1212
13import * as ServerConfig from "../config.ts";13import * as ServerConfig from "../config.ts";
apps/server/src/environment/DirectEndpoints.ts+2-2
...@@ -19,8 +19,8 @@ import * as Duration from "effect/Duration";...@@ -19,8 +19,8 @@ import * as Duration from "effect/Duration";
19import * as Effect from "effect/Effect";19import * as Effect from "effect/Effect";
20import * as Layer from "effect/Layer";20import * as Layer from "effect/Layer";
21import * as Option from "effect/Option";21import * as Option from "effect/Option";
22import { HttpClient } from "effect/unstable/http";22import { HttpClient } from "effect/http";
23import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";23import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
24import * as NodeNet from "node:net";24import * as NodeNet from "node:net";
25import * as NodeOS from "node:os";25import * as NodeOS from "node:os";
2626
apps/server/src/environment/RemoteOpenTargets.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Sink from "effect/Sink";6import * as Sink from "effect/Sink";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";8import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
9import { describe, expect } from "vite-plus/test";9import { describe, expect } from "vite-plus/test";
1010
11import * as RemoteOpenTargets from "./RemoteOpenTargets.ts";11import * as RemoteOpenTargets from "./RemoteOpenTargets.ts";
apps/server/src/environment/RemoteOpenTargets.ts+1-1
...@@ -15,7 +15,7 @@ import { readTailscaleStatus } from "@t3tools/tailscale";...@@ -15,7 +15,7 @@ import { readTailscaleStatus } from "@t3tools/tailscale";
15import * as Context from "effect/Context";15import * as Context from "effect/Context";
16import * as Effect from "effect/Effect";16import * as Effect from "effect/Effect";
17import * as Layer from "effect/Layer";17import * as Layer from "effect/Layer";
18import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";18import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1919
20const SSH_PORT = 22;20const SSH_PORT = 22;
2121
apps/server/src/environment/ServerEnvironmentLabel.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Logger from "effect/Logger";...@@ -6,7 +6,7 @@ import * as Logger from "effect/Logger";
6import * as PlatformError from "effect/PlatformError";6import * as PlatformError from "effect/PlatformError";
7import * as References from "effect/References";7import * as References from "effect/References";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";9import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
10import { HostProcessHostname, HostProcessPlatform } from "@t3tools/shared/hostProcess";10import { HostProcessHostname, HostProcessPlatform } from "@t3tools/shared/hostProcess";
11import { vi } from "vite-plus/test";11import { vi } from "vite-plus/test";
1212
apps/server/src/environment/ServerEnvironmentMachine.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as FileSystem from "effect/FileSystem";3import * as FileSystem from "effect/FileSystem";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as PlatformError from "effect/PlatformError";5import * as PlatformError from "effect/PlatformError";
6import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";6import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
7import { HostProcessPlatform } from "@t3tools/shared/hostProcess";7import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
8import { vi } from "vite-plus/test";8import { vi } from "vite-plus/test";
99
apps/server/src/git/GitManager.test.ts+1-1
...@@ -17,7 +17,7 @@ import * as Result from "effect/Result";...@@ -17,7 +17,7 @@ import * as Result from "effect/Result";
17import * as Schema from "effect/Schema";17import * as Schema from "effect/Schema";
18import * as Scope from "effect/Scope";18import * as Scope from "effect/Scope";
19import { TestClock } from "effect/testing";19import { TestClock } from "effect/testing";
20import { ChildProcessSpawner } from "effect/unstable/process";20import { ChildProcessSpawner } from "effect/process";
21import { expect } from "vite-plus/test";21import { expect } from "vite-plus/test";
22import type {22import type {
23 GitActionProgressEvent,23 GitActionProgressEvent,
apps/server/src/http.test.ts+47-10
...@@ -12,12 +12,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -12,12 +12,8 @@ import * as FileSystem from "effect/FileSystem";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as Queue from "effect/Queue";14import * as Queue from "effect/Queue";
15import {15import * as Tracer from "effect/Tracer";
16 HttpClient,16import { HttpClient, HttpClientRequest, HttpRouter, HttpServerResponse } from "effect/http";
17 HttpClientRequest,
18 HttpRouter,
19 HttpServerResponse,
20} from "effect/unstable/http";
21import { openMediaFile } from "./assets/MediaFile.ts";17import { openMediaFile } from "./assets/MediaFile.ts";
2218
23import { ORCHESTRATION_PROTOCOL_HEADER } from "@t3tools/contracts";19import { ORCHESTRATION_PROTOCOL_HEADER } from "@t3tools/contracts";
...@@ -33,8 +29,48 @@ import {...@@ -33,8 +29,48 @@ import {
33 isLoopbackHostname,29 isLoopbackHostname,
34 resolveDevRedirectUrl,30 resolveDevRedirectUrl,
35 staticAndDevRouteLayer,31 staticAndDevRouteLayer,
32 withUntracedRequests,
36} from "./http.ts";33} from "./http.ts";
3734
35describe("untraced requests", () => {
36 it.effect("drops the HTTP server span for browser trace exports, query string included", () => {
37 const spanNames: Array<string> = [];
38 return Effect.gen(function* () {
39 const routes = Layer.effectDiscard(
40 Effect.gen(function* () {
41 const router = yield* HttpRouter.HttpRouter;
42 yield* router.add("POST", "/api/observability/v1/traces", HttpServerResponse.empty());
43 yield* router.add("GET", "/api/environment", HttpServerResponse.empty());
44 }),
45 );
46 const services = yield* Layer.build(
47 withUntracedRequests(HttpRouter.serve(routes, { disableListenLog: true })).pipe(
48 Layer.provideMerge(NodeHttpServer.layerTest),
49 ),
50 );
51 const client = Context.get(services, HttpClient.HttpClient);
52
53 yield* client.post("/api/observability/v1/traces");
54 yield* client.post("/api/observability/v1/traces?x=1");
55 expect(spanNames).toEqual([]);
56
57 yield* client.get("/api/environment");
58 expect(spanNames).toContain("http.server GET");
59 }).pipe(
60 Effect.scoped,
61 Effect.provideService(
62 Tracer.Tracer,
63 Tracer.make({
64 span: (options) => {
65 if (options.kind === "server") spanNames.push(options.name);
66 return new Tracer.NativeSpan(options);
67 },
68 }),
69 ),
70 );
71 });
72});
73
38describe("browser API CORS", () => {74describe("browser API CORS", () => {
39 it("accepts protocol negotiation with authenticated browser headers", async () => {75 it("accepts protocol negotiation with authenticated browser headers", async () => {
40 const routeLayer = Layer.effectDiscard(76 const routeLayer = Layer.effectDiscard(
...@@ -86,15 +122,16 @@ const fileResponseLayer = Layer.mergeAll(NodeHttpPlatform.layer, NodeServices.la...@@ -86,15 +122,16 @@ const fileResponseLayer = Layer.mergeAll(NodeHttpPlatform.layer, NodeServices.la
86const makeStaticRequest = Effect.fn("HttpTest.makeStaticRequest")(function* (staticDir: string) {122const makeStaticRequest = Effect.fn("HttpTest.makeStaticRequest")(function* (staticDir: string) {
87 const config = yield* ServerConfig.ServerConfig;123 const config = yield* ServerConfig.ServerConfig;
88 const fileSystem = yield* FileSystem.FileSystem;124 const fileSystem = yield* FileSystem.FileSystem;
89 const path = yield* Path.Path;
90 const appLayer = Layer.merge(staticAndDevRouteLayer, httpCompressionLayer).pipe(125 const appLayer = Layer.merge(staticAndDevRouteLayer, httpCompressionLayer).pipe(
91 Layer.provideMerge(ServerConfig.layer({ ...config, staticDir })),
92 Layer.provideMerge(NodeHttpPlatform.layer),126 Layer.provideMerge(NodeHttpPlatform.layer),
93 Layer.provideMerge(Layer.succeed(FileSystem.FileSystem, fileSystem)),
94 Layer.provideMerge(Layer.succeed(Path.Path, path)),
95 );127 );
128 // HttpRouter.serve reuses services from the layers around it before the
129 // app's own, and NodeHttpServer.layerTest brings a real FileSystem, so the
130 // caller's FileSystem and static directory go between the two.
96 const services = yield* Layer.build(131 const services = yield* Layer.build(
97 HttpRouter.serve(appLayer, { disableListenLog: true }).pipe(132 HttpRouter.serve(appLayer, { disableListenLog: true }).pipe(
133 Layer.provideMerge(ServerConfig.layer({ ...config, staticDir })),
134 Layer.provideMerge(Layer.succeed(FileSystem.FileSystem, fileSystem)),
98 Layer.provideMerge(NodeHttpServer.layerTest),135 Layer.provideMerge(NodeHttpServer.layerTest),
99 ),136 ),
100 );137 );
apps/server/src/http.ts+11-9
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as Mime from "effect/unstable/http/Mime";1import * as Mime from "effect/http/Mime";
2import {2import {
3 AuthOrchestrationOperateScope,3 AuthOrchestrationOperateScope,
4 AuthOrchestrationReadScope,4 AuthOrchestrationReadScope,
...@@ -23,9 +23,9 @@ import {...@@ -23,9 +23,9 @@ import {
23 HttpServerResponse,23 HttpServerResponse,
24 HttpServerRequest,24 HttpServerRequest,
25 HttpServerRespondable,25 HttpServerRespondable,
26} from "effect/unstable/http";26} from "effect/http";
27import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";27import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
28import { OtlpTracer, OtlpSerialization } from "effect/unstable/observability";28import { OtlpTracer, OtlpSerialization } from "effect/observability";
2929
30import * as ServerConfig from "./config.ts";30import * as ServerConfig from "./config.ts";
31import { ASSET_ROUTE_PREFIX, resolveAsset } from "./assets/AssetAccess.ts";31import { ASSET_ROUTE_PREFIX, resolveAsset } from "./assets/AssetAccess.ts";
...@@ -375,17 +375,19 @@ const UNTRACED_REQUEST_PATHS: ReadonlySet<string> = new Set([OTLP_TRACES_PROXY_P...@@ -375,17 +375,19 @@ const UNTRACED_REQUEST_PATHS: ReadonlySet<string> = new Set([OTLP_TRACES_PROXY_P
375375
376// Skips the HTTP server span for UNTRACED_REQUEST_PATHS. That span starts376// Skips the HTTP server span for UNTRACED_REQUEST_PATHS. That span starts
377// before routing, so a route handler cannot skip it. TracerDisabledWhen is one377// before routing, so a route handler cannot skip it. TracerDisabledWhen is one
378// predicate for the whole server and the last layer to provide it wins, so378// predicate for the whole server, and HttpRouter.serve builds its routes
379// makeRoutesLayer provides this one last. Add paths here instead of providing379// privately, so it is provided to the served layer, never merged into the
380// TracerDisabledWhen again; server.test.ts fails if a later layer replaces it.380// routes. Add paths here instead of providing it again. The query string is
381// The query string is ignored, as in routing.381// ignored, as in routing.
382export const untracedRequestsLayer = Layer.succeed(HttpMiddleware.TracerDisabledWhen)((request) => {382const untracedRequestsLayer = Layer.succeed(HttpMiddleware.TracerDisabledWhen)((request) => {
383 const queryIndex = request.url.indexOf("?");383 const queryIndex = request.url.indexOf("?");
384 return UNTRACED_REQUEST_PATHS.has(384 return UNTRACED_REQUEST_PATHS.has(
385 queryIndex === -1 ? request.url : request.url.slice(0, queryIndex),385 queryIndex === -1 ? request.url : request.url.slice(0, queryIndex),
386 );386 );
387});387});
388388
389export const withUntracedRequests = Layer.provide(untracedRequestsLayer);
390
389export const assetRouteLayer = HttpRouter.add(391export const assetRouteLayer = HttpRouter.add(
390 "GET",392 "GET",
391 `${ASSET_ROUTE_PREFIX}/*`,393 `${ASSET_ROUTE_PREFIX}/*`,
apps/server/src/imageMime.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Option from "effect/Option";1import * as Option from "effect/Option";
2import * as Mime from "effect/unstable/http/Mime";2import * as Mime from "effect/http/Mime";
33
4const IMAGE_EXTENSION_BY_MIME_TYPE: Record<string, string> = {4const IMAGE_EXTENSION_BY_MIME_TYPE: Record<string, string> = {
5 "image/avif": ".avif",5 "image/avif": ".avif",
apps/server/src/mcp/McpDeviceToolkit.test.ts+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Layer from "effect/Layer";10import * as Layer from "effect/Layer";
11import { McpSchema, McpServer } from "effect/unstable/ai";11import { McpSchema, McpServer } from "effect/ai";
1212
13import * as ServerConfig from "../config.ts";13import * as ServerConfig from "../config.ts";
14import * as DeviceService from "../device/DeviceService.ts";14import * as DeviceService from "../device/DeviceService.ts";
apps/server/src/mcp/McpHttpServer.test.ts+2-2
...@@ -11,8 +11,8 @@ import * as Layer from "effect/Layer";...@@ -11,8 +11,8 @@ import * as Layer from "effect/Layer";
11import * as Path from "effect/Path";11import * as Path from "effect/Path";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import { McpProtocol, McpSchema, McpServer } from "effect/unstable/ai";14import { McpProtocol, McpSchema, McpServer } from "effect/ai";
15import { HttpBody, HttpClient, HttpRouter, HttpServerResponse } from "effect/unstable/http";15import { HttpBody, HttpClient, HttpRouter, HttpServerResponse } from "effect/http";
1616
17import * as ProjectService from "../project/ProjectService.ts";17import * as ProjectService from "../project/ProjectService.ts";
18import * as ServerConfig from "../config.ts";18import * as ServerConfig from "../config.ts";
apps/server/src/mcp/McpHttpServer.ts+2-2
...@@ -11,8 +11,8 @@ import * as Schema from "effect/Schema";...@@ -11,8 +11,8 @@ import * as Schema from "effect/Schema";
11import * as Sink from "effect/Sink";11import * as Sink from "effect/Sink";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import type * as Types from "effect/Types";13import type * as Types from "effect/Types";
14import { McpProtocol, McpSchema, McpServer, Tool } from "effect/unstable/ai";14import { McpProtocol, McpSchema, McpServer, Tool } from "effect/ai";
15import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/unstable/http";15import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/http";
16import { PreviewAutomationError } from "@t3tools/contracts";16import { PreviewAutomationError } from "@t3tools/contracts";
1717
18import packageJson from "../../package.json" with { type: "json" };18import packageJson from "../../package.json" with { type: "json" };
apps/server/src/mcp/McpSessionRegistry.test.ts+2-2
...@@ -2,8 +2,8 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -2,8 +2,8 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
2import { expect, it } from "@effect/vitest";2import { expect, it } from "@effect/vitest";
3import { EnvironmentId, ProviderInstanceId, ThreadId } from "@t3tools/contracts";3import { EnvironmentId, ProviderInstanceId, ThreadId } from "@t3tools/contracts";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import { HttpServer } from "effect/unstable/http";5import { HttpServer } from "effect/http";
6import * as NetAddress from "effect/unstable/net/NetAddress";6import * as NetAddress from "effect/net/NetAddress";
77
8import * as ServerEnvironment from "../environment/ServerEnvironment.ts";8import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
9import * as McpSessionRegistry from "./McpSessionRegistry.ts";9import * as McpSessionRegistry from "./McpSessionRegistry.ts";
apps/server/src/mcp/McpSessionRegistry.ts+2-2
...@@ -5,8 +5,8 @@ import * as Crypto from "effect/Crypto";...@@ -5,8 +5,8 @@ import * as Crypto from "effect/Crypto";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as SynchronizedRef from "effect/SynchronizedRef";7import * as SynchronizedRef from "effect/SynchronizedRef";
8import { HttpServer } from "effect/unstable/http";8import { HttpServer } from "effect/http";
9import * as NetAddress from "effect/unstable/net/NetAddress";9import * as NetAddress from "effect/net/NetAddress";
1010
11import * as ServerEnvironment from "../environment/ServerEnvironment.ts";11import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
12import * as McpInvocationContext from "./McpInvocationContext.ts";12import * as McpInvocationContext from "./McpInvocationContext.ts";
apps/server/src/mcp/OrchestratorMcpToolkit.integration.test.ts+12-5
...@@ -45,7 +45,7 @@ import * as PubSub from "effect/PubSub";...@@ -45,7 +45,7 @@ import * as PubSub from "effect/PubSub";
45import * as Ref from "effect/Ref";45import * as Ref from "effect/Ref";
46import * as Schema from "effect/Schema";46import * as Schema from "effect/Schema";
47import * as Stream from "effect/Stream";47import * as Stream from "effect/Stream";
48import { McpSchema, McpServer } from "effect/unstable/ai";48import { McpSchema, McpServer } from "effect/ai";
4949
50import { ClaudeProviderCapabilitiesV2 } from "../orchestration-v2/Adapters/ClaudeAdapterV2.ts";50import { ClaudeProviderCapabilitiesV2 } from "../orchestration-v2/Adapters/ClaudeAdapterV2.ts";
51import { CodexProviderCapabilitiesV2 } from "../orchestration-v2/Adapters/CodexAdapterV2.ts";51import { CodexProviderCapabilitiesV2 } from "../orchestration-v2/Adapters/CodexAdapterV2.ts";
...@@ -77,6 +77,13 @@ import * as McpHttpServer from "./McpHttpServer.ts";...@@ -77,6 +77,13 @@ import * as McpHttpServer from "./McpHttpServer.ts";
77import * as McpInvocationContext from "./McpInvocationContext.ts";77import * as McpInvocationContext from "./McpInvocationContext.ts";
78import { delegatedTaskRun, hasPendingChildRuns } from "./OrchestratorMcpService.ts";78import { delegatedTaskRun, hasPendingChildRuns } from "./OrchestratorMcpService.ts";
7979
80// Effect returns a declared tool failure as `isError` with its encoded payload
81// as JSON text, never as `structuredContent`.
82const declaredFailure = (result: McpSchema.CallToolResult) => {
83 const text = result.content[0];
84 return result.isError === true && text?.type === "text" ? JSON.parse(text.text) : undefined;
85};
86
80const parentThreadId = ThreadId.make("thread:mcp-orchestrator-parent");87const parentThreadId = ThreadId.make("thread:mcp-orchestrator-parent");
81const projectId = ProjectId.make("project:mcp-orchestrator");88const projectId = ProjectId.make("project:mcp-orchestrator");
82const codexInstanceId = ProviderInstanceId.make("codex");89const codexInstanceId = ProviderInstanceId.make("codex");
...@@ -1173,7 +1180,7 @@ describe("orchestrator MCP toolkit", () => {...@@ -1173,7 +1180,7 @@ describe("orchestrator MCP toolkit", () => {
1173 truncated: true,1180 truncated: true,
1174 });1181 });
1175 const missingQueueRead = yield* invoke("t3_queue_read", { queuedRunId: parentRun.id });1182 const missingQueueRead = yield* invoke("t3_queue_read", { queuedRunId: parentRun.id });
1176 expect(missingQueueRead.structuredContent).toMatchObject({ code: "invalid_request" });1183 expect(declaredFailure(missingQueueRead)).toMatchObject({ code: "invalid_request" });
1177 const queueRaceStatus = yield* invoke("task_status", { taskId: queueRace.task.id });1184 const queueRaceStatus = yield* invoke("task_status", { taskId: queueRace.task.id });
1178 expect(queueRaceStatus.isError).toBe(false);1185 expect(queueRaceStatus.isError).toBe(false);
1179 yield* waitForProjection(1186 yield* waitForProjection(
...@@ -1327,7 +1334,7 @@ describe("orchestrator MCP toolkit", () => {...@@ -1327,7 +1334,7 @@ describe("orchestrator MCP toolkit", () => {
1327 "t3_thread_update",1334 "t3_thread_update",
1328 { action: "rename", title: "Denied title" },1335 { action: "rename", title: "Denied title" },
1329 );1336 );
1330 expect(deniedThreadUpdate.structuredContent).toMatchObject({1337 expect(declaredFailure(deniedThreadUpdate)).toMatchObject({
1331 _tag: "OrchestratorMcpFailure",1338 _tag: "OrchestratorMcpFailure",
1332 code: "capability_denied",1339 code: "capability_denied",
1333 });1340 });
...@@ -1748,7 +1755,7 @@ describe("orchestrator MCP toolkit", () => {...@@ -1748,7 +1755,7 @@ describe("orchestrator MCP toolkit", () => {
1748 mode: "async",1755 mode: "async",
1749 clientRequestId: "delegate-rejected-options-1",1756 clientRequestId: "delegate-rejected-options-1",
1750 });1757 });
1751 expect(rejectedOptionsCall.structuredContent).toMatchObject({1758 expect(declaredFailure(rejectedOptionsCall)).toMatchObject({
1752 _tag: "OrchestratorMcpFailure",1759 _tag: "OrchestratorMcpFailure",
1753 code: "invalid_request",1760 code: "invalid_request",
1754 message: expect.stringContaining("rejected options"),1761 message: expect.stringContaining("rejected options"),
...@@ -1769,7 +1776,7 @@ describe("orchestrator MCP toolkit", () => {...@@ -1769,7 +1776,7 @@ describe("orchestrator MCP toolkit", () => {
1769 mode: "async",1776 mode: "async",
1770 clientRequestId: "delegate-duplicate-options-1",1777 clientRequestId: "delegate-duplicate-options-1",
1771 });1778 });
1772 expect(duplicateOptionsCall.structuredContent).toMatchObject({1779 expect(declaredFailure(duplicateOptionsCall)).toMatchObject({
1773 _tag: "OrchestratorMcpFailure",1780 _tag: "OrchestratorMcpFailure",
1774 code: "invalid_request",1781 code: "invalid_request",
1775 message: expect.stringContaining("more than once"),1782 message: expect.stringContaining("more than once"),
apps/server/src/mcp/PreviewAutomationBroker.test.ts+2-2
...@@ -26,8 +26,8 @@ import * as Result from "effect/Result";...@@ -26,8 +26,8 @@ import * as Result from "effect/Result";
26import * as Scheduler from "effect/Scheduler";26import * as Scheduler from "effect/Scheduler";
27import * as Stream from "effect/Stream";27import * as Stream from "effect/Stream";
28import * as TestClock from "effect/testing/TestClock";28import * as TestClock from "effect/testing/TestClock";
29import * as RpcGroup from "effect/unstable/rpc/RpcGroup";29import * as RpcGroup from "effect/rpc/RpcGroup";
30import * as RpcTest from "effect/unstable/rpc/RpcTest";30import * as RpcTest from "effect/rpc/RpcTest";
3131
32import { rpcScopeAuthorizationLayer } from "../auth/RpcAuthorization.ts";32import { rpcScopeAuthorizationLayer } from "../auth/RpcAuthorization.ts";
33import * as PreviewAutomationBroker from "./PreviewAutomationBroker.ts";33import * as PreviewAutomationBroker from "./PreviewAutomationBroker.ts";
apps/server/src/mcp/toolkits/attachment/tools.ts+1-1
...@@ -12,7 +12,7 @@ import {...@@ -12,7 +12,7 @@ import {
12import * as Crypto from "effect/Crypto";12import * as Crypto from "effect/Crypto";
13import * as FileSystem from "effect/FileSystem";13import * as FileSystem from "effect/FileSystem";
14import * as Schema from "effect/Schema";14import * as Schema from "effect/Schema";
15import { Tool, Toolkit } from "effect/unstable/ai";15import { Tool, Toolkit } from "effect/ai";
16import * as ServerSecretStore from "../../../auth/ServerSecretStore.ts";16import * as ServerSecretStore from "../../../auth/ServerSecretStore.ts";
17import * as ServerConfig from "../../../config.ts";17import * as ServerConfig from "../../../config.ts";
18import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";18import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";
apps/server/src/mcp/toolkits/core.test.ts+17-10
...@@ -11,7 +11,7 @@ import * as Effect from "effect/Effect";...@@ -11,7 +11,7 @@ import * as Effect from "effect/Effect";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import { McpAttachmentInput } from "./attachment/input.ts";13import { McpAttachmentInput } from "./attachment/input.ts";
14import { McpSchema, McpServer, Tool } from "effect/unstable/ai";14import { McpSchema, McpServer, Tool } from "effect/ai";
1515
16import { OrchestratorProjectionError } from "../../orchestration-v2/Orchestrator.ts";16import { OrchestratorProjectionError } from "../../orchestration-v2/Orchestrator.ts";
17import * as ProviderAdapterRegistry from "../../orchestration-v2/ProviderAdapterRegistry.ts";17import * as ProviderAdapterRegistry from "../../orchestration-v2/ProviderAdapterRegistry.ts";
...@@ -32,6 +32,13 @@ import * as AttachmentHandlers from "./attachment/handlers.ts";...@@ -32,6 +32,13 @@ import * as AttachmentHandlers from "./attachment/handlers.ts";
32import { ThreadToolkit } from "./thread/tools.ts";32import { ThreadToolkit } from "./thread/tools.ts";
33import { WorktreeToolkit } from "./worktree/tools.ts";33import { WorktreeToolkit } from "./worktree/tools.ts";
34import { DeviceToolkit } from "./device/tools.ts";34import { DeviceToolkit } from "./device/tools.ts";
35
36// Effect returns a declared tool failure as `isError` with its encoded payload
37// as JSON text, never as `structuredContent`.
38const declaredFailure = (result: McpSchema.CallToolResult) => {
39 const text = result.content[0];
40 return result.isError === true && text?.type === "text" ? JSON.parse(text.text) : undefined;
41};
35import { PullRequestsToolkit } from "./pullRequests/tools.ts";42import { PullRequestsToolkit } from "./pullRequests/tools.ts";
36import {43import {
37 resolveT3McpToolDefinition,44 resolveT3McpToolDefinition,
...@@ -118,7 +125,7 @@ it.effect("checks capability before accessing services through the production re...@@ -118,7 +125,7 @@ it.effect("checks capability before accessing services through the production re
118 }),125 }),
119 Effect.provideService(McpSchema.McpServerClient, client),126 Effect.provideService(McpSchema.McpServerClient, client),
120 );127 );
121 expect(result.structuredContent).toMatchObject({ code: "capability_denied" });128 expect(declaredFailure(result)).toMatchObject({ code: "capability_denied" });
122 }).pipe(129 }).pipe(
123 Effect.provide(130 Effect.provide(
124 McpHttpServer.ThreadToolkitRegistrationLive.pipe(131 McpHttpServer.ThreadToolkitRegistrationLive.pipe(
...@@ -139,7 +146,7 @@ it.effect("returns a bounded public failure without serializing storage causes",...@@ -139,7 +146,7 @@ it.effect("returns a bounded public failure without serializing storage causes",
139 Effect.provideService(McpInvocationContext.McpInvocationContext, scope),146 Effect.provideService(McpInvocationContext.McpInvocationContext, scope),
140 Effect.provideService(McpSchema.McpServerClient, client),147 Effect.provideService(McpSchema.McpServerClient, client),
141 );148 );
142 expect(result.structuredContent).toEqual({149 expect(declaredFailure(result)).toEqual({
143 _tag: "OrchestratorMcpFailure",150 _tag: "OrchestratorMcpFailure",
144 code: "orchestration_error",151 code: "orchestration_error",
145 message: "The operation could not be completed.",152 message: "The operation could not be completed.",
...@@ -243,7 +250,7 @@ it.effect("a client caller targets any thread within its ceiling and cannot act...@@ -243,7 +250,7 @@ it.effect("a client caller targets any thread within its ceiling and cannot act
243 );250 );
244251
245 const untargeted = yield* call("t3_thread_organize", { action: "pin" }, clientScope("auto"));252 const untargeted = yield* call("t3_thread_organize", { action: "pin" }, clientScope("auto"));
246 expect(untargeted.structuredContent).toMatchObject({ code: "target_required" });253 expect(declaredFailure(untargeted)).toMatchObject({ code: "target_required" });
247254
248 const pinned = yield* call(255 const pinned = yield* call(
249 "t3_thread_organize",256 "t3_thread_organize",
...@@ -258,7 +265,7 @@ it.effect("a client caller targets any thread within its ceiling and cannot act...@@ -258,7 +265,7 @@ it.effect("a client caller targets any thread within its ceiling and cannot act
258 { action: "pin", threadId: "other-project-thread" },265 { action: "pin", threadId: "other-project-thread" },
259 clientScope("approval-required"),266 clientScope("approval-required"),
260 );267 );
261 expect(aboveCeiling.structuredContent).toMatchObject({268 expect(declaredFailure(aboveCeiling)).toMatchObject({
262 code: "runtime_mode_escalation_denied",269 code: "runtime_mode_escalation_denied",
263 });270 });
264271
...@@ -267,7 +274,7 @@ it.effect("a client caller targets any thread within its ceiling and cannot act...@@ -267,7 +274,7 @@ it.effect("a client caller targets any thread within its ceiling and cannot act
267 { sourcePoint: { type: "latest_stable" } },274 { sourcePoint: { type: "latest_stable" } },
268 clientScope("auto"),275 clientScope("auto"),
269 );276 );
270 expect(forked.structuredContent).toMatchObject({ code: "target_required" });277 expect(declaredFailure(forked)).toMatchObject({ code: "target_required" });
271 }).pipe(278 }).pipe(
272 Effect.provide(279 Effect.provide(
273 McpHttpServer.ThreadToolkitRegistrationLive.pipe(280 McpHttpServer.ThreadToolkitRegistrationLive.pipe(
...@@ -314,7 +321,7 @@ it.effect("refuses act-as-caller tools to a client caller", () =>...@@ -314,7 +321,7 @@ it.effect("refuses act-as-caller tools to a client caller", () =>
314 ),321 ),
315 Effect.provideService(McpSchema.McpServerClient, client),322 Effect.provideService(McpSchema.McpServerClient, client),
316 );323 );
317 expect(result.structuredContent).toMatchObject({ code: "thread_credential_required" });324 expect(declaredFailure(result)).toMatchObject({ code: "thread_credential_required" });
318 }).pipe(325 }).pipe(
319 Effect.provide(326 Effect.provide(
320 McpHttpServer.OrchestratorToolkitRegistrationLive.pipe(327 McpHttpServer.OrchestratorToolkitRegistrationLive.pipe(
...@@ -344,9 +351,9 @@ it.effect("a caller cannot rewrite a scheduled task that runs above its own mode...@@ -344,9 +351,9 @@ it.effect("a caller cannot rewrite a scheduled task that runs above its own mode
344 scheduledTaskId: "task-full-access",351 scheduledTaskId: "task-full-access",
345 prompt: "Run something else",352 prompt: "Run something else",
346 });353 });
347 expect(update.structuredContent).toMatchObject({ code: "runtime_mode_escalation_denied" });354 expect(declaredFailure(update)).toMatchObject({ code: "runtime_mode_escalation_denied" });
348 const remove = yield* call("delete_scheduled_task", { scheduledTaskId: "task-full-access" });355 const remove = yield* call("delete_scheduled_task", { scheduledTaskId: "task-full-access" });
349 expect(remove.structuredContent).toMatchObject({ code: "runtime_mode_escalation_denied" });356 expect(declaredFailure(remove)).toMatchObject({ code: "runtime_mode_escalation_denied" });
350 const allowed = yield* call("update_scheduled_task", {357 const allowed = yield* call("update_scheduled_task", {
351 scheduledTaskId: "task-auto",358 scheduledTaskId: "task-auto",
352 enabled: false,359 enabled: false,
...@@ -416,7 +423,7 @@ it.effect("a caller cannot interrupt a thread that runs above its own modes", ()...@@ -416,7 +423,7 @@ it.effect("a caller cannot interrupt a thread that runs above its own modes", ()
416 Effect.provideService(McpInvocationContext.McpInvocationContext, clientScope("auto")),423 Effect.provideService(McpInvocationContext.McpInvocationContext, clientScope("auto")),
417 Effect.provideService(McpSchema.McpServerClient, client),424 Effect.provideService(McpSchema.McpServerClient, client),
418 );425 );
419 expect(result.structuredContent).toMatchObject({ code: "runtime_mode_escalation_denied" });426 expect(declaredFailure(result)).toMatchObject({ code: "runtime_mode_escalation_denied" });
420 }).pipe(427 }).pipe(
421 Effect.provide(428 Effect.provide(
422 McpHttpServer.OrchestratorToolkitRegistrationLive.pipe(429 McpHttpServer.OrchestratorToolkitRegistrationLive.pipe(
apps/server/src/mcp/toolkits/device/tools.ts+1-1
...@@ -11,7 +11,7 @@ import * as Schema from "effect/Schema";...@@ -11,7 +11,7 @@ import * as Schema from "effect/Schema";
11import * as FileSystem from "effect/FileSystem";11import * as FileSystem from "effect/FileSystem";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as ServerConfig from "../../../config.ts";13import * as ServerConfig from "../../../config.ts";
14import { Tool, Toolkit } from "effect/unstable/ai";14import { Tool, Toolkit } from "effect/ai";
1515
16import * as McpInvocationContext from "../../McpInvocationContext.ts";16import * as McpInvocationContext from "../../McpInvocationContext.ts";
17import * as DeviceService from "../../../device/DeviceService.ts";17import * as DeviceService from "../../../device/DeviceService.ts";
apps/server/src/mcp/toolkits/environment/tools.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7 ServerSettingsPatch,7 ServerSettingsPatch,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import { Tool, Toolkit } from "effect/unstable/ai";10import { Tool, Toolkit } from "effect/ai";
11import * as ServerEnvironment from "../../../environment/ServerEnvironment.ts";11import * as ServerEnvironment from "../../../environment/ServerEnvironment.ts";
12import * as ThreadCommandExecutor from "../../../orchestration-v2/ThreadCommandExecutor.ts";12import * as ThreadCommandExecutor from "../../../orchestration-v2/ThreadCommandExecutor.ts";
13import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";13import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";
apps/server/src/mcp/toolkits/orchestrator/tools.test.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { assert, describe, it } from "@effect/vitest";1import { assert, describe, it } from "@effect/vitest";
2import { Tool } from "effect/unstable/ai";2import { Tool } from "effect/ai";
33
4import {4import {
5 CreateThreadsTool,5 CreateThreadsTool,
apps/server/src/mcp/toolkits/orchestrator/tools.ts+1-1
...@@ -28,7 +28,7 @@ import {...@@ -28,7 +28,7 @@ import {
28 ThreadMetadataMcpUpdateInput,28 ThreadMetadataMcpUpdateInput,
29 ThreadMetadataMcpUpdateResult,29 ThreadMetadataMcpUpdateResult,
30} from "@t3tools/contracts";30} from "@t3tools/contracts";
31import { Tool, Toolkit } from "effect/unstable/ai";31import { Tool, Toolkit } from "effect/ai";
3232
33import * as McpInvocationContext from "../../McpInvocationContext.ts";33import * as McpInvocationContext from "../../McpInvocationContext.ts";
34import * as OrchestratorMcpService from "../../OrchestratorMcpService.ts";34import * as OrchestratorMcpService from "../../OrchestratorMcpService.ts";
apps/server/src/mcp/toolkits/preview/tools.test.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { expect, it } from "@effect/vitest";1import { expect, it } from "@effect/vitest";
2import { Tool } from "effect/unstable/ai";2import { Tool } from "effect/ai";
33
4import { PreviewToolkit } from "./tools.ts";4import { PreviewToolkit } from "./tools.ts";
55
apps/server/src/mcp/toolkits/preview/tools.ts+1-1
...@@ -21,7 +21,7 @@ import {...@@ -21,7 +21,7 @@ import {
21} from "@t3tools/contracts";21} from "@t3tools/contracts";
22import * as Schema from "effect/Schema";22import * as Schema from "effect/Schema";
23import * as FileSystem from "effect/FileSystem";23import * as FileSystem from "effect/FileSystem";
24import { Tool, Toolkit } from "effect/unstable/ai";24import { Tool, Toolkit } from "effect/ai";
2525
26import * as McpInvocationContext from "../../McpInvocationContext.ts";26import * as McpInvocationContext from "../../McpInvocationContext.ts";
27import * as PreviewAutomationBroker from "../../PreviewAutomationBroker.ts";27import * as PreviewAutomationBroker from "../../PreviewAutomationBroker.ts";
apps/server/src/mcp/toolkits/previewControls/tools.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 PreviewTabId,6 PreviewTabId,
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { Tool, Toolkit } from "effect/unstable/ai";9import { Tool, Toolkit } from "effect/ai";
10import * as PreviewManager from "../../../preview/Manager.ts";10import * as PreviewManager from "../../../preview/Manager.ts";
11import * as McpInvocationContext from "../../McpInvocationContext.ts";11import * as McpInvocationContext from "../../McpInvocationContext.ts";
1212
apps/server/src/mcp/toolkits/project/tools.ts+1-1
...@@ -22,7 +22,7 @@ import * as ServerConfig from "../../../config.ts";...@@ -22,7 +22,7 @@ import * as ServerConfig from "../../../config.ts";
22import * as ThreadLaunchService from "../../../orchestration-v2/ThreadLaunchService.ts";22import * as ThreadLaunchService from "../../../orchestration-v2/ThreadLaunchService.ts";
23import * as Crypto from "effect/Crypto";23import * as Crypto from "effect/Crypto";
24import * as Schema from "effect/Schema";24import * as Schema from "effect/Schema";
25import { Tool, Toolkit } from "effect/unstable/ai";25import { Tool, Toolkit } from "effect/ai";
26import * as ProjectService from "../../../project/ProjectService.ts";26import * as ProjectService from "../../../project/ProjectService.ts";
27import * as ManagedProjectFolders from "../../../project/ManagedProjectFolders.ts";27import * as ManagedProjectFolders from "../../../project/ManagedProjectFolders.ts";
28import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";28import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";
apps/server/src/mcp/toolkits/pullRequests/handlers.test.ts+1-1
...@@ -14,7 +14,7 @@ import * as Layer from "effect/Layer";...@@ -14,7 +14,7 @@ import * as Layer from "effect/Layer";
14import * as Option from "effect/Option";14import * as Option from "effect/Option";
15import * as Ref from "effect/Ref";15import * as Ref from "effect/Ref";
16import * as Stream from "effect/Stream";16import * as Stream from "effect/Stream";
17import type { Tool } from "effect/unstable/ai";17import type { Tool } from "effect/ai";
1818
19import * as Orchestrator from "../../../orchestration-v2/Orchestrator.ts";19import * as Orchestrator from "../../../orchestration-v2/Orchestrator.ts";
20import {20import {
apps/server/src/mcp/toolkits/pullRequests/tools.ts+2-2
...@@ -7,8 +7,8 @@ import {...@@ -7,8 +7,8 @@ import {
7 ThreadId,7 ThreadId,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as Tool from "effect/unstable/ai/Tool";10import * as Tool from "effect/ai/Tool";
11import * as Toolkit from "effect/unstable/ai/Toolkit";11import * as Toolkit from "effect/ai/Toolkit";
1212
13import * as McpInvocationContext from "../../McpInvocationContext.ts";13import * as McpInvocationContext from "../../McpInvocationContext.ts";
14import * as Orchestrator from "../../../orchestration-v2/Orchestrator.ts";14import * as Orchestrator from "../../../orchestration-v2/Orchestrator.ts";
apps/server/src/mcp/toolkits/thread/tools.ts+1-1
...@@ -21,7 +21,7 @@ import {...@@ -21,7 +21,7 @@ import {
21} from "@t3tools/contracts";21} from "@t3tools/contracts";
22import * as Crypto from "effect/Crypto";22import * as Crypto from "effect/Crypto";
23import * as Schema from "effect/Schema";23import * as Schema from "effect/Schema";
24import { Tool, Toolkit } from "effect/unstable/ai";24import { Tool, Toolkit } from "effect/ai";
2525
26import * as ThreadSearch from "../../../orchestration-v2/ThreadSearch.ts";26import * as ThreadSearch from "../../../orchestration-v2/ThreadSearch.ts";
27import * as ScheduledTaskService from "../../../scheduledTasks/ScheduledTaskService.ts";27import * as ScheduledTaskService from "../../../scheduledTasks/ScheduledTaskService.ts";
apps/server/src/mcp/toolkits/worktree/registration.test.ts+1-1
...@@ -9,7 +9,7 @@ import { ProviderInstanceId, ThreadId } from "@t3tools/contracts";...@@ -9,7 +9,7 @@ import { ProviderInstanceId, ThreadId } from "@t3tools/contracts";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Layer from "effect/Layer";10import * as Layer from "effect/Layer";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { HttpBody, HttpClient, HttpRouter } from "effect/unstable/http";12import { HttpBody, HttpClient, HttpRouter } from "effect/http";
1313
14import * as ServerEnvironment from "../../../environment/ServerEnvironment.ts";14import * as ServerEnvironment from "../../../environment/ServerEnvironment.ts";
15import * as GitWorkflowService from "../../../git/GitWorkflowService.ts";15import * as GitWorkflowService from "../../../git/GitWorkflowService.ts";
apps/server/src/mcp/toolkits/worktree/tools.ts+1-1
...@@ -12,7 +12,7 @@ import * as Schema from "effect/Schema";...@@ -12,7 +12,7 @@ import * as Schema from "effect/Schema";
12import * as GitWorkflowService from "../../../git/GitWorkflowService.ts";12import * as GitWorkflowService from "../../../git/GitWorkflowService.ts";
13import * as ProjectService from "../../../project/ProjectService.ts";13import * as ProjectService from "../../../project/ProjectService.ts";
14import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";14import * as ThreadManagementService from "../../../orchestration-v2/ThreadManagementService.ts";
15import { Tool, Toolkit } from "effect/unstable/ai";15import { Tool, Toolkit } from "effect/ai";
1616
17import * as McpInvocationContext from "../../McpInvocationContext.ts";17import * as McpInvocationContext from "../../McpInvocationContext.ts";
18import * as WorktreeMcpService from "../../WorktreeMcpService.ts";18import * as WorktreeMcpService from "../../WorktreeMcpService.ts";
apps/server/src/observability/Layers/Observability.ts+3-3
...@@ -9,9 +9,9 @@ import * as Effect from "effect/Effect";...@@ -9,9 +9,9 @@ import * as Effect from "effect/Effect";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as References from "effect/References";10import * as References from "effect/References";
11import * as Tracer from "effect/Tracer";11import * as Tracer from "effect/Tracer";
12import * as OtlpExporter from "effect/unstable/observability/OtlpExporter";12import * as OtlpExporter from "effect/observability/OtlpExporter";
13import * as OtlpMetrics from "effect/unstable/observability/OtlpMetrics";13import * as OtlpMetrics from "effect/observability/OtlpMetrics";
14import * as OtlpTracer from "effect/unstable/observability/OtlpTracer";14import * as OtlpTracer from "effect/observability/OtlpTracer";
1515
16import * as ServerConfig from "../../config.ts";16import * as ServerConfig from "../../config.ts";
17import * as ResourceAttribution from "../../resourceTelemetry/ResourceAttribution.ts";17import * as ResourceAttribution from "../../resourceTelemetry/ResourceAttribution.ts";
apps/server/src/orchestration-v2/AcpRegistryOrchestratorV2.live.test.ts+1-1
...@@ -16,7 +16,7 @@ import * as Console from "effect/Console";...@@ -16,7 +16,7 @@ import * as Console from "effect/Console";
16import * as Effect from "effect/Effect";16import * as Effect from "effect/Effect";
17import * as Layer from "effect/Layer";17import * as Layer from "effect/Layer";
18import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";18import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";
19import { FetchHttpClient } from "effect/unstable/http";19import { FetchHttpClient } from "effect/http";
20import { describe } from "vite-plus/test";20import { describe } from "vite-plus/test";
2121
22import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";22import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";
apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.test.ts+1-1
...@@ -49,7 +49,7 @@ import * as Sink from "effect/Sink";...@@ -49,7 +49,7 @@ import * as Sink from "effect/Sink";
49import * as Stream from "effect/Stream";49import * as Stream from "effect/Stream";
50import * as Scope from "effect/Scope";50import * as Scope from "effect/Scope";
51import * as TestClock from "effect/testing/TestClock";51import * as TestClock from "effect/testing/TestClock";
52import { ChildProcessSpawner } from "effect/unstable/process";52import { ChildProcessSpawner } from "effect/process";
53import * as EffectAcpErrors from "effect-acp/errors";53import * as EffectAcpErrors from "effect-acp/errors";
54import type * as EffectAcpProtocol from "effect-acp/protocol";54import type * as EffectAcpProtocol from "effect-acp/protocol";
55import type * as EffectAcpSchema from "effect-acp/compat";55import type * as EffectAcpSchema from "effect-acp/compat";
apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.testkit.ts+1-1
...@@ -10,7 +10,7 @@ import * as Layer from "effect/Layer";...@@ -10,7 +10,7 @@ import * as Layer from "effect/Layer";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import type * as Scope from "effect/Scope";11import type * as Scope from "effect/Scope";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import { ChildProcessSpawner } from "effect/unstable/process";13import { ChildProcessSpawner } from "effect/process";
14import * as EffectAcpErrors from "effect-acp/errors";14import * as EffectAcpErrors from "effect-acp/errors";
1515
16import * as AcpSessionRuntime from "../../provider/acp/AcpSessionRuntime.ts";16import * as AcpSessionRuntime from "../../provider/acp/AcpSessionRuntime.ts";
apps/server/src/orchestration-v2/Adapters/AcpAdapterV2.ts+1-1
...@@ -51,7 +51,7 @@ import * as Result from "effect/Result";...@@ -51,7 +51,7 @@ import * as Result from "effect/Result";
51import * as Scope from "effect/Scope";51import * as Scope from "effect/Scope";
52import * as Semaphore from "effect/Semaphore";52import * as Semaphore from "effect/Semaphore";
53import * as Stream from "effect/Stream";53import * as Stream from "effect/Stream";
54import type { ChildProcessSpawner } from "effect/unstable/process";54import type { ChildProcessSpawner } from "effect/process";
55import * as EffectAcpErrors from "effect-acp/errors";55import * as EffectAcpErrors from "effect-acp/errors";
56import type * as EffectAcpProtocol from "effect-acp/protocol";56import type * as EffectAcpProtocol from "effect-acp/protocol";
57import type * as EffectAcpSchema from "effect-acp/compat";57import type * as EffectAcpSchema from "effect-acp/compat";
apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.test.ts+2-2
...@@ -10,8 +10,8 @@ import * as Layer from "effect/Layer";...@@ -10,8 +10,8 @@ import * as Layer from "effect/Layer";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import * as Path from "effect/Path";11import * as Path from "effect/Path";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import { HttpClient, HttpClientResponse } from "effect/unstable/http";13import { HttpClient, HttpClientResponse } from "effect/http";
14import { ChildProcessSpawner } from "effect/unstable/process";14import { ChildProcessSpawner } from "effect/process";
15import * as EffectAcpErrors from "effect-acp/errors";15import * as EffectAcpErrors from "effect-acp/errors";
1616
17import * as ServerConfig from "../../config.ts";17import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.testkit.ts+1-1
...@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import { ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcessSpawner } from "effect/process";
1111
12import * as ServerConfig from "../../config.ts";12import * as ServerConfig from "../../config.ts";
13import * as IdAllocator from "../IdAllocator.ts";13import * as IdAllocator from "../IdAllocator.ts";
apps/server/src/orchestration-v2/Adapters/AcpRegistryAdapterV2.ts+1-1
...@@ -18,7 +18,7 @@ import * as Layer from "effect/Layer";...@@ -18,7 +18,7 @@ import * as Layer from "effect/Layer";
18import * as Option from "effect/Option";18import * as Option from "effect/Option";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import type * as Scope from "effect/Scope";20import type * as Scope from "effect/Scope";
21import { ChildProcessSpawner } from "effect/unstable/process";21import { ChildProcessSpawner } from "effect/process";
22import * as EffectAcpErrors from "effect-acp/errors";22import * as EffectAcpErrors from "effect-acp/errors";
2323
24import * as ServerConfig from "../../config.ts";24import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/AntigravityAdapterV2.test.ts+1-1
...@@ -19,7 +19,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -19,7 +19,7 @@ import * as FileSystem from "effect/FileSystem";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as Path from "effect/Path";20import * as Path from "effect/Path";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import { ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcessSpawner } from "effect/process";
23import type * as EffectAcpSchema from "effect-acp/compat";23import type * as EffectAcpSchema from "effect-acp/compat";
2424
25import * as ServerConfig from "../../config.ts";25import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/AntigravityAdapterV2.ts+12-10
...@@ -131,16 +131,18 @@ export function makeAntigravityAcpAdapterFlavor(...@@ -131,16 +131,18 @@ export function makeAntigravityAcpAdapterFlavor(
131 const makeRuntime = (input: AcpAdapterV2RuntimeInput) =>131 const makeRuntime = (input: AcpAdapterV2RuntimeInput) =>
132 Effect.gen(function* () {132 Effect.gen(function* () {
133 // AcpAdapterV2 owns the runtime scope; sign-in and sign-out stop the133 // AcpAdapterV2 owns the runtime scope; sign-in and sign-out stop the
134 // process by closing it, and the adapter respawns on the next turn.134 // process by closing a child of it, and the adapter respawns on the next turn.
135 const scope = yield* Effect.scope;135 const scope = yield* Scope.fork(yield* Effect.scope);
136 const runtime = yield* options.withProcess(136 const runtime = yield* options
137 Scope.close(scope, Exit.void),137 .withProcess(
138 options.makeRuntime({138 Scope.close(scope, Exit.void),
139 ...input,139 options.makeRuntime({
140 clientFileSystem: true,140 ...input,
141 additionalDirectories: [options.serverConfig.attachmentsDir],141 clientFileSystem: true,
142 }),142 additionalDirectories: [options.serverConfig.attachmentsDir],
143 );143 }),
144 )
145 .pipe(Effect.provideService(Scope.Scope, scope));
144 return {146 return {
145 ...runtime,147 ...runtime,
146 start: () =>148 start: () =>
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.test.ts+1-1
...@@ -43,7 +43,7 @@ import * as Queue from "effect/Queue";...@@ -43,7 +43,7 @@ import * as Queue from "effect/Queue";
43import * as Schema from "effect/Schema";43import * as Schema from "effect/Schema";
44import * as Scope from "effect/Scope";44import * as Scope from "effect/Scope";
45import * as Stream from "effect/Stream";45import * as Stream from "effect/Stream";
46import { Tool } from "effect/unstable/ai";46import { Tool } from "effect/ai";
47import { formatClaudeResumeCompactionQuestion } from "@t3tools/shared/claudeCompaction";47import { formatClaudeResumeCompactionQuestion } from "@t3tools/shared/claudeCompaction";
48import { HostProcessPlatform } from "@t3tools/shared/hostProcess";48import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
49import { SpawnExecutableResolution } from "@t3tools/shared/shell";49import { SpawnExecutableResolution } from "@t3tools/shared/shell";
apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.test.ts+1-1
...@@ -46,7 +46,7 @@ import * as Ref from "effect/Ref";...@@ -46,7 +46,7 @@ import * as Ref from "effect/Ref";
46import * as Schema from "effect/Schema";46import * as Schema from "effect/Schema";
47import * as Stream from "effect/Stream";47import * as Stream from "effect/Stream";
48import { TestClock } from "effect/testing";48import { TestClock } from "effect/testing";
49import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";49import { ChildProcess, ChildProcessSpawner } from "effect/process";
5050
51import packageJson from "../../../package.json" with { type: "json" };51import packageJson from "../../../package.json" with { type: "json" };
52import * as ServerConfig from "../../config.ts";52import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/CodexAdapterV2.ts+1-1
...@@ -78,7 +78,7 @@ import * as Schema from "effect/Schema";...@@ -78,7 +78,7 @@ import * as Schema from "effect/Schema";
78import * as Scope from "effect/Scope";78import * as Scope from "effect/Scope";
79import * as Semaphore from "effect/Semaphore";79import * as Semaphore from "effect/Semaphore";
80import * as Stream from "effect/Stream";80import * as Stream from "effect/Stream";
81import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";81import { ChildProcess, ChildProcessSpawner } from "effect/process";
8282
83import { resolveAttachmentPath } from "../../attachmentStore.ts";83import { resolveAttachmentPath } from "../../attachmentStore.ts";
84import { getCodexServiceTierOptionValue } from "../../codexModelOptions.ts";84import { getCodexServiceTierOptionValue } from "../../codexModelOptions.ts";
apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.test.ts+1-1
...@@ -19,7 +19,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -19,7 +19,7 @@ import * as FileSystem from "effect/FileSystem";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as PlatformError from "effect/PlatformError";20import * as PlatformError from "effect/PlatformError";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import { ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcessSpawner } from "effect/process";
23import type * as EffectAcpSchema from "effect-acp/compat";23import type * as EffectAcpSchema from "effect-acp/compat";
2424
25import * as ServerConfig from "../../config.ts";25import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.testkit.ts+1-1
...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcessSpawner } from "effect/process";
10import { HostProcessPlatform } from "@t3tools/shared/hostProcess";10import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
11import { resolveSelfInvocation } from "@t3tools/shared/nodeRuntime";11import { resolveSelfInvocation } from "@t3tools/shared/nodeRuntime";
1212
apps/server/src/orchestration-v2/Adapters/GrokAdapterV2.ts+1-1
...@@ -20,7 +20,7 @@ import * as Path from "effect/Path";...@@ -20,7 +20,7 @@ import * as Path from "effect/Path";
20import * as Layer from "effect/Layer";20import * as Layer from "effect/Layer";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import type * as Scope from "effect/Scope";22import type * as Scope from "effect/Scope";
23import { ChildProcessSpawner } from "effect/unstable/process";23import { ChildProcessSpawner } from "effect/process";
24import * as EffectAcpErrors from "effect-acp/errors";24import * as EffectAcpErrors from "effect-acp/errors";
2525
26import * as ServerConfig from "../../config.ts";26import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.test.ts+4-1
...@@ -3218,6 +3218,8 @@ describe("OpenCode2 adapter", () => {...@@ -3218,6 +3218,8 @@ describe("OpenCode2 adapter", () => {
3218 const seen: Array<string> = [];3218 const seen: Array<string> = [];
3219 const ended = yield* Deferred.make<void>();3219 const ended = yield* Deferred.make<void>();
3220 const nextEnded = yield* Deferred.make<void>();3220 const nextEnded = yield* Deferred.make<void>();
3221 // One consumer reads every terminal; a second reader would race it for the queue.
3222 const thirdEnded = yield* Deferred.make<void>();
3221 yield* runtime.events.pipe(3223 yield* runtime.events.pipe(
3222 Stream.tap((event) =>3224 Stream.tap((event) =>
3223 Effect.gen(function* () {3225 Effect.gen(function* () {
...@@ -3225,6 +3227,7 @@ describe("OpenCode2 adapter", () => {...@@ -3225,6 +3227,7 @@ describe("OpenCode2 adapter", () => {
3225 seen.push(event.status);3227 seen.push(event.status);
3226 if (seen.length === 1) yield* Deferred.succeed(ended, undefined);3228 if (seen.length === 1) yield* Deferred.succeed(ended, undefined);
3227 if (seen.length === 2) yield* Deferred.succeed(nextEnded, undefined);3229 if (seen.length === 2) yield* Deferred.succeed(nextEnded, undefined);
3230 if (seen.length === 3) yield* Deferred.succeed(thirdEnded, undefined);
3228 }),3231 }),
3229 ),3232 ),
3230 Stream.runDrain,3233 Stream.runDrain,
...@@ -3256,7 +3259,7 @@ describe("OpenCode2 adapter", () => {...@@ -3256,7 +3259,7 @@ describe("OpenCode2 adapter", () => {
3256 providerTurnOrdinal: 3,3259 providerTurnOrdinal: 3,
3257 attemptId: RunAttemptId.make("attempt:opencode2-adapter:3"),3260 attemptId: RunAttemptId.make("attempt:opencode2-adapter:3"),
3258 });3261 });
3259 yield* terminalOf(runtime);3262 yield* Deferred.await(thirdEnded);
3260 }).pipe(Effect.scoped),3263 }).pipe(Effect.scoped),
3261 );3264 );
32623265
apps/server/src/orchestration-v2/Adapters/OpenCode2AdapterV2.testkit.ts+4-4
...@@ -15,10 +15,10 @@ import {...@@ -15,10 +15,10 @@ import {
15import * as Effect from "effect/Effect";15import * as Effect from "effect/Effect";
16import * as Layer from "effect/Layer";16import * as Layer from "effect/Layer";
17import * as Schema from "effect/Schema";17import * as Schema from "effect/Schema";
18import * as HttpClient from "effect/unstable/http/HttpClient";18import * as HttpClient from "effect/http/HttpClient";
19import * as HttpClientError from "effect/unstable/http/HttpClientError";19import * as HttpClientError from "effect/http/HttpClientError";
20import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";20import * as HttpClientResponse from "effect/http/HttpClientResponse";
21import * as UrlParams from "effect/unstable/http/UrlParams";21import * as UrlParams from "effect/http/UrlParams";
2222
23import * as ServerConfig from "../../config.ts";23import * as ServerConfig from "../../config.ts";
24import * as OpenCode2Client from "../../provider/opencode2/OpenCode2Client.ts";24import * as OpenCode2Client from "../../provider/opencode2/OpenCode2Client.ts";
apps/server/src/orchestration-v2/Adapters/PiAdapterV2.test.ts+1-1
...@@ -29,7 +29,7 @@ import * as Schema from "effect/Schema";...@@ -29,7 +29,7 @@ import * as Schema from "effect/Schema";
29import * as Sink from "effect/Sink";29import * as Sink from "effect/Sink";
30import * as Stream from "effect/Stream";30import * as Stream from "effect/Stream";
31import * as TestClock from "effect/testing/TestClock";31import * as TestClock from "effect/testing/TestClock";
32import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";32import { ChildProcess, ChildProcessSpawner } from "effect/process";
3333
34import * as ServerConfig from "../../config.ts";34import * as ServerConfig from "../../config.ts";
35import * as McpProviderSession from "../../mcp/McpProviderSession.ts";35import * as McpProviderSession from "../../mcp/McpProviderSession.ts";
apps/server/src/orchestration-v2/Adapters/PiAdapterV2.testkit.ts+1-1
...@@ -28,7 +28,7 @@ import * as Queue from "effect/Queue";...@@ -28,7 +28,7 @@ import * as Queue from "effect/Queue";
28import * as Schema from "effect/Schema";28import * as Schema from "effect/Schema";
29import * as Sink from "effect/Sink";29import * as Sink from "effect/Sink";
30import * as Stream from "effect/Stream";30import * as Stream from "effect/Stream";
31import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";31import { ChildProcess, ChildProcessSpawner } from "effect/process";
3232
33import * as ServerConfig from "../../config.ts";33import * as ServerConfig from "../../config.ts";
34import * as IdAllocator from "../IdAllocator.ts";34import * as IdAllocator from "../IdAllocator.ts";
apps/server/src/orchestration-v2/Adapters/PiAdapterV2.ts+1-1
...@@ -57,7 +57,7 @@ import * as Queue from "effect/Queue";...@@ -57,7 +57,7 @@ import * as Queue from "effect/Queue";
57import * as Schema from "effect/Schema";57import * as Schema from "effect/Schema";
58import * as Semaphore from "effect/Semaphore";58import * as Semaphore from "effect/Semaphore";
59import * as Stream from "effect/Stream";59import * as Stream from "effect/Stream";
60import { ChildProcessSpawner } from "effect/unstable/process";60import { ChildProcessSpawner } from "effect/process";
6161
62import { resolveAttachmentPath } from "../../attachmentStore.ts";62import { resolveAttachmentPath } from "../../attachmentStore.ts";
63import * as ServerConfig from "../../config.ts";63import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/Adapters/PiRpc.ts+1-1
...@@ -26,7 +26,7 @@ import * as Queue from "effect/Queue";...@@ -26,7 +26,7 @@ import * as Queue from "effect/Queue";
26import * as Scope from "effect/Scope";26import * as Scope from "effect/Scope";
27import * as Schema from "effect/Schema";27import * as Schema from "effect/Schema";
28import * as Stream from "effect/Stream";28import * as Stream from "effect/Stream";
29import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";29import { ChildProcess, ChildProcessSpawner } from "effect/process";
30import { HostProcessPlatform } from "@t3tools/shared/hostProcess";30import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
31import { resolveSpawnCommand } from "@t3tools/shared/shell";31import { resolveSpawnCommand } from "@t3tools/shared/shell";
3232
apps/server/src/orchestration-v2/CheckpointCaptureService.test.ts+1-1
...@@ -19,7 +19,7 @@ import * as DateTime from "effect/DateTime";...@@ -19,7 +19,7 @@ import * as DateTime from "effect/DateTime";
19import * as Effect from "effect/Effect";19import * as Effect from "effect/Effect";
20import * as Layer from "effect/Layer";20import * as Layer from "effect/Layer";
21import * as Ref from "effect/Ref";21import * as Ref from "effect/Ref";
22import * as SqlClient from "effect/unstable/sql/SqlClient";22import * as SqlClient from "effect/sql/SqlClient";
2323
24import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";24import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
25import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";25import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";
apps/server/src/orchestration-v2/CheckpointService.ts+2-2
...@@ -13,7 +13,7 @@ import * as NodeCrypto from "node:crypto";...@@ -13,7 +13,7 @@ import * as NodeCrypto from "node:crypto";
13import * as Context from "effect/Context";13import * as Context from "effect/Context";
14import * as DateTime from "effect/DateTime";14import * as DateTime from "effect/DateTime";
15import * as Effect from "effect/Effect";15import * as Effect from "effect/Effect";
16import * as Encoding from "effect/Encoding";16import * as Base64Url from "effect/encoding/Base64Url";
17import * as KeyedLock from "@t3tools/shared/KeyedLock";17import * as KeyedLock from "@t3tools/shared/KeyedLock";
18import * as Layer from "effect/Layer";18import * as Layer from "effect/Layer";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
...@@ -163,7 +163,7 @@ export function checkpointRefForScopeOrdinal(input: {...@@ -163,7 +163,7 @@ export function checkpointRefForScopeOrdinal(input: {
163}): CheckpointRef {163}): CheckpointRef {
164 const scopeKey = NodeCrypto.createHash("sha256").update(input.scopeId).digest("hex").slice(0, 32);164 const scopeKey = NodeCrypto.createHash("sha256").update(input.scopeId).digest("hex").slice(0, 32);
165 return CheckpointRef.make(165 return CheckpointRef.make(
166 `${CHECKPOINT_REFS_PREFIX}/${Encoding.encodeBase64Url(scopeKey)}/ordinal/${input.ordinalWithinScope}`,166 `${CHECKPOINT_REFS_PREFIX}/${Base64Url.encode(scopeKey)}/ordinal/${input.ordinalWithinScope}`,
167 );167 );
168}168}
169169
apps/server/src/orchestration-v2/CursorOrchestratorV2.live.test.ts+1-1
...@@ -14,7 +14,7 @@ import * as Console from "effect/Console";...@@ -14,7 +14,7 @@ import * as Console from "effect/Console";
14import * as Effect from "effect/Effect";14import * as Effect from "effect/Effect";
15import * as Layer from "effect/Layer";15import * as Layer from "effect/Layer";
16import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";16import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";
17import { FetchHttpClient } from "effect/unstable/http";17import { FetchHttpClient } from "effect/http";
18import { describe } from "vite-plus/test";18import { describe } from "vite-plus/test";
1919
20import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";20import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";
apps/server/src/orchestration-v2/EffectOutbox.ts+1-1
...@@ -21,7 +21,7 @@ import * as Layer from "effect/Layer";...@@ -21,7 +21,7 @@ import * as Layer from "effect/Layer";
21import * as Option from "effect/Option";21import * as Option from "effect/Option";
22import * as Queue from "effect/Queue";22import * as Queue from "effect/Queue";
23import * as Schema from "effect/Schema";23import * as Schema from "effect/Schema";
24import * as SqlClient from "effect/unstable/sql/SqlClient";24import * as SqlClient from "effect/sql/SqlClient";
2525
26export const OrchestrationEffectRequestV2 = Schema.Union([26export const OrchestrationEffectRequestV2 = Schema.Union([
27 Schema.Struct({27 Schema.Struct({
apps/server/src/orchestration-v2/EventSink.ts+1-1
...@@ -20,7 +20,7 @@ import * as PubSub from "effect/PubSub";...@@ -20,7 +20,7 @@ import * as PubSub from "effect/PubSub";
20import * as Semaphore from "effect/Semaphore";20import * as Semaphore from "effect/Semaphore";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import * as Stream from "effect/Stream";22import * as Stream from "effect/Stream";
23import * as SqlClient from "effect/unstable/sql/SqlClient";23import * as SqlClient from "effect/sql/SqlClient";
2424
25import { replayAndBufferProjectedLiveEvents } from "./LiveStreamBudget.ts";25import { replayAndBufferProjectedLiveEvents } from "./LiveStreamBudget.ts";
26import type { UnsequencedProjectEvent } from "../persistence/Services/OrchestrationEventStore.ts";26import type { UnsequencedProjectEvent } from "../persistence/Services/OrchestrationEventStore.ts";
apps/server/src/orchestration-v2/EventStore.ts+1-1
...@@ -11,7 +11,7 @@ import * as Effect from "effect/Effect";...@@ -11,7 +11,7 @@ import * as Effect from "effect/Effect";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import type * as SqlClient from "effect/unstable/sql/SqlClient";14import type * as SqlClient from "effect/sql/SqlClient";
1515
16import { OrchestrationEventStoreLive } from "../persistence/Layers/OrchestrationEventStore.ts";16import { OrchestrationEventStoreLive } from "../persistence/Layers/OrchestrationEventStore.ts";
17import * as OrchestrationEventStore from "../persistence/Services/OrchestrationEventStore.ts";17import * as OrchestrationEventStore from "../persistence/Services/OrchestrationEventStore.ts";
apps/server/src/orchestration-v2/FoundationPersistence.test.ts+2-2
...@@ -37,8 +37,8 @@ import * as Schema from "effect/Schema";...@@ -37,8 +37,8 @@ import * as Schema from "effect/Schema";
37import * as Stream from "effect/Stream";37import * as Stream from "effect/Stream";
38import * as TestClock from "effect/testing/TestClock";38import * as TestClock from "effect/testing/TestClock";
39import * as Tracer from "effect/Tracer";39import * as Tracer from "effect/Tracer";
40import * as SqlClient from "effect/unstable/sql/SqlClient";40import * as SqlClient from "effect/sql/SqlClient";
41import * as Statement from "effect/unstable/sql/Statement";41import * as Statement from "effect/sql/Statement";
4242
43import { LIVE_STREAM_MAX_ITEMS, LiveStreamBufferError } from "./LiveStreamBudget.ts";43import { LIVE_STREAM_MAX_ITEMS, LiveStreamBufferError } from "./LiveStreamBudget.ts";
44import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";44import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
apps/server/src/orchestration-v2/GrokOrchestratorV2.live.test.ts+1-1
...@@ -14,7 +14,7 @@ import * as Console from "effect/Console";...@@ -14,7 +14,7 @@ import * as Console from "effect/Console";
14import * as Effect from "effect/Effect";14import * as Effect from "effect/Effect";
15import * as Layer from "effect/Layer";15import * as Layer from "effect/Layer";
16import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";16import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";
17import { FetchHttpClient } from "effect/unstable/http";17import { FetchHttpClient } from "effect/http";
18import { describe } from "vite-plus/test";18import { describe } from "vite-plus/test";
1919
20import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";20import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";
apps/server/src/orchestration-v2/OpenCode2OrchestratorV2.live.test.ts+2-2
...@@ -39,8 +39,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -39,8 +39,8 @@ import * as FileSystem from "effect/FileSystem";
39import * as Layer from "effect/Layer";39import * as Layer from "effect/Layer";
40import * as Path from "effect/Path";40import * as Path from "effect/Path";
41import * as Schema from "effect/Schema";41import * as Schema from "effect/Schema";
42import { FetchHttpClient, HttpClient } from "effect/unstable/http";42import { FetchHttpClient, HttpClient } from "effect/http";
43import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";43import { ChildProcess, ChildProcessSpawner } from "effect/process";
44import { describe } from "vite-plus/test";44import { describe } from "vite-plus/test";
4545
46import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";46import * as ResetCreditCoordinator from "../provider/Layers/resetCreditCoordinator.ts";
apps/server/src/orchestration-v2/Orchestrator.control-reads.test.ts+1-1
...@@ -20,7 +20,7 @@ import {...@@ -20,7 +20,7 @@ import {
20import * as DateTime from "effect/DateTime";20import * as DateTime from "effect/DateTime";
21import * as Effect from "effect/Effect";21import * as Effect from "effect/Effect";
22import * as Layer from "effect/Layer";22import * as Layer from "effect/Layer";
23import * as SqlClient from "effect/unstable/sql/SqlClient";23import * as SqlClient from "effect/sql/SqlClient";
24import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";24import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
25import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts";25import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts";
26import * as Orchestrator from "./Orchestrator.ts";26import * as Orchestrator from "./Orchestrator.ts";
apps/server/src/orchestration-v2/ProjectSettingsUpgrade.integration.test.ts+1-1
...@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer";...@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import * as SqlClient from "effect/unstable/sql/SqlClient";10import * as SqlClient from "effect/sql/SqlClient";
1111
12import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";12import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";
13import * as ServerConfig from "../config.ts";13import * as ServerConfig from "../config.ts";
apps/server/src/orchestration-v2/ProjectStore.test.ts+1-1
...@@ -3,7 +3,7 @@ import { EventId, ProjectId, ProviderInstanceId } from "@t3tools/contracts";...@@ -3,7 +3,7 @@ import { EventId, ProjectId, ProviderInstanceId } from "@t3tools/contracts";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
77
8import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";8import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
9import * as ProjectStore from "./ProjectStore.ts";9import * as ProjectStore from "./ProjectStore.ts";
apps/server/src/orchestration-v2/ProjectStore.ts+2-2
...@@ -13,8 +13,8 @@ import * as Effect from "effect/Effect";...@@ -13,8 +13,8 @@ import * as Effect from "effect/Effect";
13import * as Layer from "effect/Layer";13import * as Layer from "effect/Layer";
14import * as Option from "effect/Option";14import * as Option from "effect/Option";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import * as SqlClient from "effect/unstable/sql/SqlClient";16import * as SqlClient from "effect/sql/SqlClient";
17import * as SqlSchema from "effect/unstable/sql/SqlSchema";17import * as SqlSchema from "effect/sql/SqlSchema";
1818
19export class ProjectStoreV2Error extends Schema.TaggedError<ProjectStoreV2Error>()(19export class ProjectStoreV2Error extends Schema.TaggedError<ProjectStoreV2Error>()(
20 "ProjectStoreV2Error",20 "ProjectStoreV2Error",
apps/server/src/orchestration-v2/ProjectionControlReads.test.ts+1-1
...@@ -19,7 +19,7 @@ import * as DateTime from "effect/DateTime";...@@ -19,7 +19,7 @@ import * as DateTime from "effect/DateTime";
19import * as Effect from "effect/Effect";19import * as Effect from "effect/Effect";
20import * as Layer from "effect/Layer";20import * as Layer from "effect/Layer";
21import * as Option from "effect/Option";21import * as Option from "effect/Option";
22import * as SqlClient from "effect/unstable/sql/SqlClient";22import * as SqlClient from "effect/sql/SqlClient";
23import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";23import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
24import * as ProjectionStore from "./ProjectionStore.ts";24import * as ProjectionStore from "./ProjectionStore.ts";
25import * as ProviderSessionManager from "./ProviderSessionManager.ts";25import * as ProviderSessionManager from "./ProviderSessionManager.ts";
apps/server/src/orchestration-v2/ProjectionMaintenance.ts+1-1
...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as SqlClient from "effect/unstable/sql/SqlClient";8import * as SqlClient from "effect/sql/SqlClient";
99
10import * as EventStore from "./EventStore.ts";10import * as EventStore from "./EventStore.ts";
11import * as ProjectionStore from "./ProjectionStore.ts";11import * as ProjectionStore from "./ProjectionStore.ts";
apps/server/src/orchestration-v2/ProjectionRecovery.test.ts+1-1
...@@ -20,7 +20,7 @@ import {...@@ -20,7 +20,7 @@ import {
20import * as DateTime from "effect/DateTime";20import * as DateTime from "effect/DateTime";
21import * as Effect from "effect/Effect";21import * as Effect from "effect/Effect";
22import * as Layer from "effect/Layer";22import * as Layer from "effect/Layer";
23import * as SqlClient from "effect/unstable/sql/SqlClient";23import * as SqlClient from "effect/sql/SqlClient";
2424
25import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";25import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
26import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts";26import { CodexProviderCapabilitiesV2 } from "./Adapters/CodexAdapterV2.ts";
apps/server/src/orchestration-v2/ProjectionSettlement.test.ts+2-2
...@@ -18,8 +18,8 @@ import * as DateTime from "effect/DateTime";...@@ -18,8 +18,8 @@ import * as DateTime from "effect/DateTime";
18import * as Effect from "effect/Effect";18import * as Effect from "effect/Effect";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import * as SqlClient from "effect/unstable/sql/SqlClient";21import * as SqlClient from "effect/sql/SqlClient";
22import * as Statement from "effect/unstable/sql/Statement";22import * as Statement from "effect/sql/Statement";
2323
24import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";24import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
25import * as ProjectionStore from "./ProjectionStore.ts";25import * as ProjectionStore from "./ProjectionStore.ts";
apps/server/src/orchestration-v2/ProjectionStore.test.ts+1-1
...@@ -25,7 +25,7 @@ import * as DateTime from "effect/DateTime";...@@ -25,7 +25,7 @@ import * as DateTime from "effect/DateTime";
25import * as Effect from "effect/Effect";25import * as Effect from "effect/Effect";
26import * as Layer from "effect/Layer";26import * as Layer from "effect/Layer";
27import * as Schema from "effect/Schema";27import * as Schema from "effect/Schema";
28import * as SqlClient from "effect/unstable/sql/SqlClient";28import * as SqlClient from "effect/sql/SqlClient";
29import { projectThreadAwarenessV2 } from "@t3tools/shared/agentAwareness";29import { projectThreadAwarenessV2 } from "@t3tools/shared/agentAwareness";
3030
31import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";31import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
apps/server/src/orchestration-v2/ProjectionStore.ts+2-2
...@@ -67,8 +67,8 @@ import * as Effect from "effect/Effect";...@@ -67,8 +67,8 @@ import * as Effect from "effect/Effect";
67import * as Layer from "effect/Layer";67import * as Layer from "effect/Layer";
68import * as Ref from "effect/Ref";68import * as Ref from "effect/Ref";
69import * as Schema from "effect/Schema";69import * as Schema from "effect/Schema";
70import * as SqlClient from "effect/unstable/sql/SqlClient";70import * as SqlClient from "effect/sql/SqlClient";
71import type * as Statement from "effect/unstable/sql/Statement";71import type * as Statement from "effect/sql/Statement";
7272
73import {73import {
74 isThreadHistoryUserTurn,74 isThreadHistoryUserTurn,
apps/server/src/orchestration-v2/ProviderRuntimeRecoveryPerformance.test.ts+1-1
...@@ -23,7 +23,7 @@ import * as Console from "effect/Console";...@@ -23,7 +23,7 @@ import * as Console from "effect/Console";
23import * as DateTime from "effect/DateTime";23import * as DateTime from "effect/DateTime";
24import * as Effect from "effect/Effect";24import * as Effect from "effect/Effect";
25import * as Layer from "effect/Layer";25import * as Layer from "effect/Layer";
26import * as SqlClient from "effect/unstable/sql/SqlClient";26import * as SqlClient from "effect/sql/SqlClient";
2727
28import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";28import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
29import * as ServerSettings from "../serverSettings.ts";29import * as ServerSettings from "../serverSettings.ts";
apps/server/src/orchestration-v2/ProviderSessionManager.test.ts+2-2
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as NetAddress from "effect/unstable/net/NetAddress";1import * as NetAddress from "effect/net/NetAddress";
2import * as NodeServices from "@effect/platform-node/NodeServices";2import * as NodeServices from "@effect/platform-node/NodeServices";
3import { assert, it } from "@effect/vitest";3import { assert, it } from "@effect/vitest";
4import {4import {
...@@ -29,7 +29,7 @@ import * as Queue from "effect/Queue";...@@ -29,7 +29,7 @@ import * as Queue from "effect/Queue";
29import * as Ref from "effect/Ref";29import * as Ref from "effect/Ref";
30import * as Stream from "effect/Stream";30import * as Stream from "effect/Stream";
31import { TestClock } from "effect/testing";31import { TestClock } from "effect/testing";
32import { HttpServer } from "effect/unstable/http";32import { HttpServer } from "effect/http";
3333
34import { ProviderWorkspaceMissingError } from "../provider/Errors.ts";34import { ProviderWorkspaceMissingError } from "../provider/Errors.ts";
35import * as ServerEnvironment from "../environment/ServerEnvironment.ts";35import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
apps/server/src/orchestration-v2/RunCompletionReads.test.ts+1-1
...@@ -12,7 +12,7 @@ import {...@@ -12,7 +12,7 @@ import {
12import * as DateTime from "effect/DateTime";12import * as DateTime from "effect/DateTime";
13import * as Effect from "effect/Effect";13import * as Effect from "effect/Effect";
14import * as Layer from "effect/Layer";14import * as Layer from "effect/Layer";
15import * as SqlClient from "effect/unstable/sql/SqlClient";15import * as SqlClient from "effect/sql/SqlClient";
16import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";16import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
17import * as ProjectionStore from "./ProjectionStore.ts";17import * as ProjectionStore from "./ProjectionStore.ts";
1818
apps/server/src/orchestration-v2/ThreadSearch.test.ts+1-1
...@@ -10,7 +10,7 @@ import {...@@ -10,7 +10,7 @@ import {
10import * as DateTime from "effect/DateTime";10import * as DateTime from "effect/DateTime";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as SqlClient from "effect/unstable/sql/SqlClient";13import * as SqlClient from "effect/sql/SqlClient";
1414
15import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";15import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
16import * as ProjectionStore from "./ProjectionStore.ts";16import * as ProjectionStore from "./ProjectionStore.ts";
apps/server/src/orchestration-v2/ThreadSearch.ts+2-2
...@@ -10,8 +10,8 @@ import * as Context from "effect/Context";...@@ -10,8 +10,8 @@ import * as Context from "effect/Context";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as SqlClient from "effect/unstable/sql/SqlClient";13import * as SqlClient from "effect/sql/SqlClient";
14import * as SqlSchema from "effect/unstable/sql/SqlSchema";14import * as SqlSchema from "effect/sql/SqlSchema";
1515
16/** Carries no query text: search input is user content. */16/** Carries no query text: search input is user content. */
17export class ThreadSearchError extends Schema.TaggedError<ThreadSearchError>()(17export class ThreadSearchError extends Schema.TaggedError<ThreadSearchError>()(
apps/server/src/orchestration-v2/ThreadTransportPerformance.test.ts+1-1
...@@ -13,7 +13,7 @@ import {...@@ -13,7 +13,7 @@ import {
13} from "@t3tools/contracts";13} from "@t3tools/contracts";
14import * as DateTime from "effect/DateTime";14import * as DateTime from "effect/DateTime";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import type * as RpcMessage from "effect/unstable/rpc/RpcMessage";16import type * as RpcMessage from "effect/rpc/RpcMessage";
17import { describe, expect, it } from "vite-plus/test";17import { describe, expect, it } from "vite-plus/test";
1818
19import { buildBoundedThreadStreamSnapshot } from "./ThreadStream.ts";19import { buildBoundedThreadStreamSnapshot } from "./ThreadStream.ts";
apps/server/src/orchestration-v2/TurnItemPositionStore.ts+1-1
...@@ -3,7 +3,7 @@ import * as Context from "effect/Context";...@@ -3,7 +3,7 @@ import * as Context from "effect/Context";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
77
8export class TurnItemPositionStoreError extends Schema.TaggedError<TurnItemPositionStoreError>()(8export class TurnItemPositionStoreError extends Schema.TaggedError<TurnItemPositionStoreError>()(
9 "TurnItemPositionStoreError",9 "TurnItemPositionStoreError",
apps/server/src/orchestration-v2/TurnStartReads.test.ts+1-1
...@@ -15,7 +15,7 @@ import {...@@ -15,7 +15,7 @@ import {
15import * as DateTime from "effect/DateTime";15import * as DateTime from "effect/DateTime";
16import * as Effect from "effect/Effect";16import * as Effect from "effect/Effect";
17import * as Layer from "effect/Layer";17import * as Layer from "effect/Layer";
18import * as SqlClient from "effect/unstable/sql/SqlClient";18import * as SqlClient from "effect/sql/SqlClient";
19import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";19import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
20import * as ProjectionStore from "./ProjectionStore.ts";20import * as ProjectionStore from "./ProjectionStore.ts";
2121
apps/server/src/orchestration-v2/http.ts+2-2
...@@ -7,8 +7,8 @@ import {...@@ -7,8 +7,8 @@ import {
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import * as Effect from "effect/Effect";8import * as Effect from "effect/Effect";
9import * as Predicate from "effect/Predicate";9import * as Predicate from "effect/Predicate";
10import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";10import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
11import * as SqlClient from "effect/unstable/sql/SqlClient";11import * as SqlClient from "effect/sql/SqlClient";
1212
13import {13import {
14 annotateEnvironmentRequest,14 annotateEnvironmentRequest,
apps/server/src/orchestration-v2/legacy/LegacyV1Cutover.integration.test.ts+1-1
...@@ -24,7 +24,7 @@ import * as PubSub from "effect/PubSub";...@@ -24,7 +24,7 @@ import * as PubSub from "effect/PubSub";
24import * as References from "effect/References";24import * as References from "effect/References";
25import * as Ref from "effect/Ref";25import * as Ref from "effect/Ref";
26import * as Stream from "effect/Stream";26import * as Stream from "effect/Stream";
27import * as SqlClient from "effect/unstable/sql/SqlClient";27import * as SqlClient from "effect/sql/SqlClient";
2828
29import { runMigrations } from "../../persistence/Migrations.ts";29import { runMigrations } from "../../persistence/Migrations.ts";
30import { makeSqlitePersistenceLive } from "../../persistence/Layers/Sqlite.ts";30import { makeSqlitePersistenceLive } from "../../persistence/Layers/Sqlite.ts";
apps/server/src/orchestration-v2/legacy/LegacyV1ThreadImporter.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as DateTime from "effect/DateTime";...@@ -4,7 +4,7 @@ import * as DateTime from "effect/DateTime";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Tracer from "effect/Tracer";6import * as Tracer from "effect/Tracer";
7import * as SqlClient from "effect/unstable/sql/SqlClient";7import * as SqlClient from "effect/sql/SqlClient";
88
9import { SqlitePersistenceMemory } from "../../persistence/Layers/Sqlite.ts";9import { SqlitePersistenceMemory } from "../../persistence/Layers/Sqlite.ts";
10import { listLinkedPullRequestThreads } from "../../pullRequest/linkedThreads.ts";10import { listLinkedPullRequestThreads } from "../../pullRequest/linkedThreads.ts";
apps/server/src/orchestration-v2/legacy/LegacyV1ThreadImporter.ts+1-1
...@@ -28,7 +28,7 @@ import * as Effect from "effect/Effect";...@@ -28,7 +28,7 @@ import * as Effect from "effect/Effect";
28import * as Layer from "effect/Layer";28import * as Layer from "effect/Layer";
29import * as Option from "effect/Option";29import * as Option from "effect/Option";
30import * as Schema from "effect/Schema";30import * as Schema from "effect/Schema";
31import * as SqlClient from "effect/unstable/sql/SqlClient";31import * as SqlClient from "effect/sql/SqlClient";
3232
33import * as EventSink from "../EventSink.ts";33import * as EventSink from "../EventSink.ts";
34import { randomUuidV4 } from "../RandomUuid.ts";34import { randomUuidV4 } from "../RandomUuid.ts";
apps/server/src/orchestration-v2/runtimeLayer.test.ts+1-1
...@@ -37,7 +37,7 @@ import * as Option from "effect/Option";...@@ -37,7 +37,7 @@ import * as Option from "effect/Option";
37import * as Queue from "effect/Queue";37import * as Queue from "effect/Queue";
38import * as Stream from "effect/Stream";38import * as Stream from "effect/Stream";
39import * as TestClock from "effect/testing/TestClock";39import * as TestClock from "effect/testing/TestClock";
40import * as SqlClient from "effect/unstable/sql/SqlClient";40import * as SqlClient from "effect/sql/SqlClient";
4141
42import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";42import * as CheckpointStore from "../checkpointing/CheckpointStore.ts";
43import * as GitWorkflow from "../git/GitWorkflowService.ts";43import * as GitWorkflow from "../git/GitWorkflowService.ts";
apps/server/src/orchestration-v2/testkit/ProviderReplayHarness.ts+3-3
...@@ -7,9 +7,9 @@ import * as FileSystem from "effect/FileSystem";...@@ -7,9 +7,9 @@ import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as PlatformError from "effect/PlatformError";9import * as PlatformError from "effect/PlatformError";
10import type * as SqlClient from "effect/unstable/sql/SqlClient";10import type * as SqlClient from "effect/sql/SqlClient";
11import type { MigrationError } from "effect/unstable/sql/Migrator";11import type { MigrationError } from "effect/sql/Migrator";
12import type { SqlError } from "effect/unstable/sql/SqlError";12import type { SqlError } from "effect/sql/SqlError";
1313
14import * as CheckpointStore from "../../checkpointing/CheckpointStore.ts";14import * as CheckpointStore from "../../checkpointing/CheckpointStore.ts";
15import * as ServerConfig from "../../config.ts";15import * as ServerConfig from "../../config.ts";
apps/server/src/orchestration-v2/testkit/ProviderSwitch.integration.test.ts+1-1
...@@ -30,7 +30,7 @@ import * as PubSub from "effect/PubSub";...@@ -30,7 +30,7 @@ import * as PubSub from "effect/PubSub";
30import * as Ref from "effect/Ref";30import * as Ref from "effect/Ref";
31import * as Stream from "effect/Stream";31import * as Stream from "effect/Stream";
32import * as Schema from "effect/Schema";32import * as Schema from "effect/Schema";
33import * as SqlClient from "effect/unstable/sql/SqlClient";33import * as SqlClient from "effect/sql/SqlClient";
3434
35import { SqlitePersistenceMemory } from "../../persistence/Layers/Sqlite.ts";35import { SqlitePersistenceMemory } from "../../persistence/Layers/Sqlite.ts";
36import { CommandPolicyCapabilityUnsupportedError } from "../CommandPolicy.ts";36import { CommandPolicyCapabilityUnsupportedError } from "../CommandPolicy.ts";
apps/server/src/orchestration-v2/testkit/ReplayFixtureWorkspace.ts+1-1
...@@ -4,7 +4,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -4,7 +4,7 @@ import * as FileSystem from "effect/FileSystem";
4import * as Path from "effect/Path";4import * as Path from "effect/Path";
5import * as PlatformError from "effect/PlatformError";5import * as PlatformError from "effect/PlatformError";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcess, ChildProcessSpawner } from "effect/process";
88
9class ReplayFixtureGitCommandError extends Schema.TaggedError<ReplayFixtureGitCommandError>()(9class ReplayFixtureGitCommandError extends Schema.TaggedError<ReplayFixtureGitCommandError>()(
10 "ReplayFixtureGitCommandError",10 "ReplayFixtureGitCommandError",
apps/server/src/orchestration-v2/testkit/ThreadFork.integration.test.ts+1-1
...@@ -14,7 +14,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -14,7 +14,7 @@ import * as FileSystem from "effect/FileSystem";
14import * as Path from "effect/Path";14import * as Path from "effect/Path";
15import * as PlatformError from "effect/PlatformError";15import * as PlatformError from "effect/PlatformError";
16import * as Schema from "effect/Schema";16import * as Schema from "effect/Schema";
17import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";17import { ChildProcess, ChildProcessSpawner } from "effect/process";
1818
19import { ClaudeOrchestratorReplayHarness } from "../Adapters/ClaudeAdapterV2.testkit.ts";19import { ClaudeOrchestratorReplayHarness } from "../Adapters/ClaudeAdapterV2.testkit.ts";
20import { CodexOrchestratorReplayHarness } from "../Adapters/CodexAdapterV2.testkit.ts";20import { CodexOrchestratorReplayHarness } from "../Adapters/CodexAdapterV2.testkit.ts";
apps/server/src/persistence/AuthPairingLinks.ts+2-2
...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
7import * as SqlSchema from "effect/unstable/sql/SqlSchema";7import * as SqlSchema from "effect/sql/SqlSchema";
88
9import { AuthEnvironmentScopes } from "@t3tools/contracts";9import { AuthEnvironmentScopes } from "@t3tools/contracts";
1010
apps/server/src/persistence/AuthSessions.ts+2-2
...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
7import * as SqlSchema from "effect/unstable/sql/SqlSchema";7import * as SqlSchema from "effect/sql/SqlSchema";
88
9import {9import {
10 AuthClientMetadataDeviceType,10 AuthClientMetadataDeviceType,
apps/server/src/persistence/Errors.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";
2import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";2import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Schema from "effect/Schema";4import * as Schema from "effect/Schema";
5import * as SqlClient from "effect/unstable/sql/SqlClient";5import * as SqlClient from "effect/sql/SqlClient";
66
7import { PersistenceDecodeError, PersistenceSqlError, toPersistenceSqlError } from "./Errors.ts";7import { PersistenceDecodeError, PersistenceSqlError, toPersistenceSqlError } from "./Errors.ts";
88
apps/server/src/persistence/Layers/OrchestrationCommandReceipts.ts+2-2
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as SqlSchema from "effect/unstable/sql/SqlSchema";2import * as SqlSchema from "effect/sql/SqlSchema";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
55
apps/server/src/persistence/Layers/OrchestrationEventStore.sequence.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as Tracer from "effect/Tracer";8import * as Tracer from "effect/Tracer";
9import * as SqlClient from "effect/unstable/sql/SqlClient";9import * as SqlClient from "effect/sql/SqlClient";
1010
11import { runMigrations } from "../Migrations.ts";11import { runMigrations } from "../Migrations.ts";
12import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";12import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Layers/OrchestrationEventStore.test.ts+2-2
...@@ -17,8 +17,8 @@ import * as Effect from "effect/Effect";...@@ -17,8 +17,8 @@ import * as Effect from "effect/Effect";
17import * as Layer from "effect/Layer";17import * as Layer from "effect/Layer";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import * as SqlClient from "effect/unstable/sql/SqlClient";20import * as SqlClient from "effect/sql/SqlClient";
21import * as Statement from "effect/unstable/sql/Statement";21import * as Statement from "effect/sql/Statement";
2222
23import {23import {
24 LIVE_STREAM_MAX_ITEMS,24 LIVE_STREAM_MAX_ITEMS,
apps/server/src/persistence/Layers/OrchestrationEventStore.ts+2-2
...@@ -13,8 +13,8 @@ import {...@@ -13,8 +13,8 @@ import {
13 ThreadId,13 ThreadId,
14 type OrchestrationV2DomainEvent,14 type OrchestrationV2DomainEvent,
15} from "@t3tools/contracts";15} from "@t3tools/contracts";
16import * as SqlClient from "effect/unstable/sql/SqlClient";16import * as SqlClient from "effect/sql/SqlClient";
17import * as SqlSchema from "effect/unstable/sql/SqlSchema";17import * as SqlSchema from "effect/sql/SqlSchema";
18import * as Effect from "effect/Effect";18import * as Effect from "effect/Effect";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as PubSub from "effect/PubSub";20import * as PubSub from "effect/PubSub";
apps/server/src/persistence/Layers/Sqlite.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -8,7 +8,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
8import { assert, it } from "@effect/vitest";8import { assert, it } from "@effect/vitest";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Layer from "effect/Layer";10import * as Layer from "effect/Layer";
11import * as SqlClient from "effect/unstable/sql/SqlClient";11import * as SqlClient from "effect/sql/SqlClient";
1212
13import {13import {
14 SqlitePersistenceMemory,14 SqlitePersistenceMemory,
apps/server/src/persistence/Layers/Sqlite.ts+1-1
...@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect";...@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";2import * as Layer from "effect/Layer";
3import * as FileSystem from "effect/FileSystem";3import * as FileSystem from "effect/FileSystem";
4import * as Path from "effect/Path";4import * as Path from "effect/Path";
5import * as SqlClient from "effect/unstable/sql/SqlClient";5import * as SqlClient from "effect/sql/SqlClient";
6import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";6import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
77
8import { runMigrations } from "../Migrations.ts";8import { runMigrations } from "../Migrations.ts";
apps/server/src/persistence/Migrations.ts+2-2
...@@ -8,9 +8,9 @@...@@ -8,9 +8,9 @@
8 * schema is always up to date before the application starts.8 * schema is always up to date before the application starts.
9 */9 */
1010
11import * as Migrator from "effect/unstable/sql/Migrator";11import * as Migrator from "effect/sql/Migrator";
12import * as Effect from "effect/Effect";12import * as Effect from "effect/Effect";
13import * as SqlClient from "effect/unstable/sql/SqlClient";13import * as SqlClient from "effect/sql/SqlClient";
14import { reconcileV2PreviewMigration } from "./reconcileV2PreviewMigration.ts";14import { reconcileV2PreviewMigration } from "./reconcileV2PreviewMigration.ts";
1515
16// Import all migrations statically16// Import all migrations statically
apps/server/src/persistence/Migrations/001_OrchestrationEvents.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/002_OrchestrationCommandReceipts.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/003_CheckpointDiffBlobs.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/004_ProviderSessionRuntime.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/005_Projections.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/006_ProjectionThreadSessionRuntimeModeColumns.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4const DEFAULT_RUNTIME_MODE = "full-access";4const DEFAULT_RUNTIME_MODE = "full-access";
apps/server/src/persistence/Migrations/007_ProjectionThreadMessageAttachments.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/008_ProjectionThreadActivitySequence.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/009_ProviderSessionRuntimeMode.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.asVoid(SqlClient.SqlClient);4export default Effect.asVoid(SqlClient.SqlClient);
apps/server/src/persistence/Migrations/010_ProjectionThreadsRuntimeMode.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/011_OrchestrationThreadCreatedRuntimeMode.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/012_ProjectionThreadsInteractionMode.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/013_ProjectionThreadProposedPlans.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/014_ProjectionThreadProposedPlanImplementation.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/015_ProjectionTurnsSourceProposedPlan.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/016_CanonicalizeModelSelections.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/016_CanonicalizeModelSelections.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/017_ProjectionThreadsArchivedAt.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/018_ProjectionThreadsArchivedAtIndex.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/019_ProjectionSnapshotLookupIndexes.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/019_ProjectionSnapshotLookupIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/020_AuthAccessManagement.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/021_AuthSessionClientMetadata.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/022_AuthSessionLastConnectedAt.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/023_ProjectionThreadShellSummary.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/024_BackfillProjectionThreadShellSummary.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/024_BackfillProjectionThreadShellSummary.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/025_CleanupInvalidProjectionPendingApprovals.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/025_CleanupInvalidProjectionPendingApprovals.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/026_CanonicalizeModelSelectionOptions.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/026_CanonicalizeModelSelectionOptions.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4/**4/**
5 * Canonicalize `modelSelection.options` / `defaultModelSelection.options` from5 * Canonicalize `modelSelection.options` / `defaultModelSelection.options` from
apps/server/src/persistence/Migrations/027_028_ProviderInstanceIdColumns.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/027_ProviderSessionRuntimeInstanceId.ts+1-1
...@@ -15,7 +15,7 @@...@@ -15,7 +15,7 @@
15 * multiple instances of the same driver. Keeping that compatibility at the15 * multiple instances of the same driver. Keeping that compatibility at the
16 * persistence boundary keeps the fallback out of active routing code.16 * persistence boundary keeps the fallback out of active routing code.
17 */17 */
18import * as SqlClient from "effect/unstable/sql/SqlClient";18import * as SqlClient from "effect/sql/SqlClient";
19import * as Effect from "effect/Effect";19import * as Effect from "effect/Effect";
2020
21export default Effect.gen(function* () {21export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/028_ProjectionThreadSessionInstanceId.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/029_ProjectionThreadDetailOrderingIndexes.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/029_ProjectionThreadDetailOrderingIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/030_ProjectionThreadShellArchiveIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/031_AuthAuthorizationScopes.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/031_AuthAuthorizationScopes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4/**4/**
5 * This is an intentional alpha cutover: role-bearing credentials and sessions5 * This is an intentional alpha cutover: role-bearing credentials and sessions
apps/server/src/persistence/Migrations/032_AuthPairingProofKeyThumbprint.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/033_ProjectionThreadsSettled.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/034_ProjectionThreadsSnoozed.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/035_ProjectionThreadTitleRegeneration.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/035_ProjectionThreadTitleRegeneration.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/036_ProjectionThreadsPinned.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/037_ProjectionTurnsKeysetIndex.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4/**4/**
5 * Composite index for windowed thread detail reads. Pagination orders turns by5 * Composite index for windowed thread detail reads. Pagination orders turns by
apps/server/src/persistence/Migrations/038_ProjectionThreadsPinOrderKey.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/039_ProjectionProjectsDefaultThreadEnvMode.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/040_ProjectionProjectFaviconPath.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/040_ProjectionProjectFaviconPath.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/041_AuthSessionClientConnection.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/041_AuthSessionClientConnection.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Client-declared surface (web/desktop/mobile) and app version, refreshed on4// Client-declared surface (web/desktop/mobile) and app version, refreshed on
5// every WebSocket connect so the row tracks the client's current build instead5// every WebSocket connect so the row tracks the client's current build instead
apps/server/src/persistence/Migrations/042_ProjectionThreadLinkedPullRequest.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/042_ProjectionThreadLinkedPullRequest.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/043_ProjectionThreadsUnsettledAt.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/044_ClearAutomaticProjectModelDefaults.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/045_ProjectionProjectsAutoPull.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/046_RepairAutomaticSettlementTimestamps.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/046_RepairAutomaticSettlementTimestamps.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Server auto-settlement used to stamp settledAt with the sweep time instead4// Server auto-settlement used to stamp settledAt with the sweep time instead
5// of the thread's last activity. Repair the projection only: the engine and5// of the thread's last activity. Repair the projection only: the engine and
apps/server/src/persistence/Migrations/047_ProjectionProjectIcon.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/047_ProjectionProjectIcon.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/048_ProjectionThreadBranchPullRequest.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/049_ProjectionThreadsActiveOrderKey.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as SqlClient from "effect/unstable/sql/SqlClient";3import * as SqlClient from "effect/sql/SqlClient";
4import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";4import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
apps/server/src/persistence/Migrations/049_ProjectionThreadsActiveOrderKey.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/050_ProjectionThreadPullRequests.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as SqlClient from "effect/unstable/sql/SqlClient";5import * as SqlClient from "effect/sql/SqlClient";
66
7import { runMigrations } from "../Migrations.ts";7import { runMigrations } from "../Migrations.ts";
8import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";8import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/050_ProjectionThreadPullRequests.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { legacyThreadPullRequestKey } from "@t3tools/shared/threadPullRequests";1import { legacyThreadPullRequestKey } from "@t3tools/shared/threadPullRequests";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as SqlClient from "effect/unstable/sql/SqlClient";3import * as SqlClient from "effect/sql/SqlClient";
44
5interface LegacyLinkedThreadRow {5interface LegacyLinkedThreadRow {
6 readonly threadId: string;6 readonly threadId: string;
apps/server/src/persistence/Migrations/051_ProjectionThreadMessageContext.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/051_ProjectionThreadMessageContext.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as SqlClient from "effect/unstable/sql/SqlClient";1import * as SqlClient from "effect/sql/SqlClient";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/052_ProjectionThreadTitleState.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/053_PullRequestFilesViewed.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/054_ProjectionThreadsAutoSettleDisabledAt.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as SqlClient from "effect/unstable/sql/SqlClient";3import * as SqlClient from "effect/sql/SqlClient";
4import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";4import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
apps/server/src/persistence/Migrations/054_ProjectionThreadsAutoSettleDisabledAt.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/055_OrchestrationV2.application-event-source.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/055_OrchestrationV2.effect-cancellation.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { runMigrations } from "../Migrations.ts";6import { runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/055_OrchestrationV2.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it } from "@effect/vitest";1import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { migrationEntries, runMigrations } from "../Migrations.ts";6import { migrationEntries, runMigrations } from "../Migrations.ts";
7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";7import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
apps/server/src/persistence/Migrations/055_OrchestrationV2.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4import ApplicationEventSequenceIndexes from "./OrchestrationV2/ApplicationEventSequenceIndexes.ts";4import ApplicationEventSequenceIndexes from "./OrchestrationV2/ApplicationEventSequenceIndexes.ts";
5import ApplicationEventSource from "./OrchestrationV2/ApplicationEventSource.ts";5import ApplicationEventSource from "./OrchestrationV2/ApplicationEventSource.ts";
apps/server/src/persistence/Migrations/056_RemoveRedundantProjectionIndexes.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";
2import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";2import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as SqlClient from "effect/unstable/sql/SqlClient";5import * as SqlClient from "effect/sql/SqlClient";
66
7import { runMigrations } from "../Migrations.ts";7import { runMigrations } from "../Migrations.ts";
88
apps/server/src/persistence/Migrations/056_RemoveRedundantProjectionIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4export default Effect.gen(function* () {4export default Effect.gen(function* () {
5 const sql = yield* SqlClient.SqlClient;5 const sql = yield* SqlClient.SqlClient;
apps/server/src/persistence/Migrations/OrchestrationV2/ApplicationEventSequenceIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Index setup composed by migration 055.4// Index setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/ApplicationEventSource.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as Schema from "effect/Schema";2import * as Schema from "effect/Schema";
3import * as SqlClient from "effect/unstable/sql/SqlClient";3import * as SqlClient from "effect/sql/SqlClient";
44
5interface LegacyV2EventRow {5interface LegacyV2EventRow {
6 readonly event_id: string;6 readonly event_id: string;
apps/server/src/persistence/Migrations/OrchestrationV2/EffectCancellation.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Schema setup composed by migration 055.4// Schema setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/Foundation.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4/**4/**
5 * Production-facing V2 persistence setup composed by migration 055.5 * Production-facing V2 persistence setup composed by migration 055.
apps/server/src/persistence/Migrations/OrchestrationV2/LegacyV1ImportState.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4/**4/**
5 * Tracks the incremental import of v1 materialized thread state into the v25 * Tracks the incremental import of v1 materialized thread state into the v2
apps/server/src/persistence/Migrations/OrchestrationV2/ProviderSessionBindings.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Schema setup composed by migration 055.4// Schema setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/RecoveryIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Index setup composed by migration 055.4// Index setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/ScheduledTasks.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Schema setup composed by migration 055.4// Schema setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/ShellIndexes.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Index setup composed by migration 055.4// Index setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/Subagents.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Schema setup composed by migration 055.4// Schema setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/Migrations/OrchestrationV2/ThreadLaunchWorkflows.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as SqlClient from "effect/unstable/sql/SqlClient";2import * as SqlClient from "effect/sql/SqlClient";
33
4// Schema setup composed by migration 055.4// Schema setup composed by migration 055.
5export default Effect.gen(function* () {5export default Effect.gen(function* () {
apps/server/src/persistence/ProviderSessionRuntime.ts+2-2
...@@ -6,8 +6,8 @@ import * as Option from "effect/Option";...@@ -6,8 +6,8 @@ import * as Option from "effect/Option";
6import * as Result from "effect/Result";6import * as Result from "effect/Result";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as Struct from "effect/Struct";8import * as Struct from "effect/Struct";
9import * as SqlClient from "effect/unstable/sql/SqlClient";9import * as SqlClient from "effect/sql/SqlClient";
10import * as SqlSchema from "effect/unstable/sql/SqlSchema";10import * as SqlSchema from "effect/sql/SqlSchema";
1111
12import {12import {
13 AgentSessionImportSource,13 AgentSessionImportSource,
apps/server/src/persistence/PullRequestFilesViewed.ts+2-2
...@@ -2,8 +2,8 @@ import * as Context from "effect/Context";...@@ -2,8 +2,8 @@ import * as Context from "effect/Context";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Schema from "effect/Schema";4import * as Schema from "effect/Schema";
5import * as SqlClient from "effect/unstable/sql/SqlClient";5import * as SqlClient from "effect/sql/SqlClient";
6import * as SqlSchema from "effect/unstable/sql/SqlSchema";6import * as SqlSchema from "effect/sql/SqlSchema";
77
8import { SourceControlProviderKind } from "@t3tools/contracts";8import { SourceControlProviderKind } from "@t3tools/contracts";
99
apps/server/src/persistence/RepositoryErrorCorrelation.test.ts+1-1
...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";
3import * as DateTime from "effect/DateTime";3import * as DateTime from "effect/DateTime";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
77
8import * as AuthPairingLinks from "./AuthPairingLinks.ts";8import * as AuthPairingLinks from "./AuthPairingLinks.ts";
9import * as AuthSessions from "./AuthSessions.ts";9import * as AuthSessions from "./AuthSessions.ts";
apps/server/src/persistence/initializeV2Database.test.ts+1-1
...@@ -10,7 +10,7 @@ import { ThreadId } from "@t3tools/contracts";...@@ -10,7 +10,7 @@ import { ThreadId } from "@t3tools/contracts";
10import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";10import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as SqlClient from "effect/unstable/sql/SqlClient";13import * as SqlClient from "effect/sql/SqlClient";
1414
15import * as ServerConfig from "../config.ts";15import * as ServerConfig from "../config.ts";
16import * as SqlitePersistence from "./Layers/Sqlite.ts";16import * as SqlitePersistence from "./Layers/Sqlite.ts";
apps/server/src/persistence/reconcileV2PreviewMigration.test.ts+2-2
...@@ -2,8 +2,8 @@ import { assert, describe, it } from "@effect/vitest";...@@ -2,8 +2,8 @@ import { assert, describe, it } from "@effect/vitest";
2import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";2import * as NodeSqliteClient from "@t3tools/shared/nodeSqliteClient";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Exit from "effect/Exit";4import * as Exit from "effect/Exit";
5import * as Migrator from "effect/unstable/sql/Migrator";5import * as Migrator from "effect/sql/Migrator";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
77
8import { migrationManifest, runMigrations } from "./Migrations.ts";8import { migrationManifest, runMigrations } from "./Migrations.ts";
9import PullRequestFilesViewed from "./Migrations/053_PullRequestFilesViewed.ts";9import PullRequestFilesViewed from "./Migrations/053_PullRequestFilesViewed.ts";
apps/server/src/persistence/reconcileV2PreviewMigration.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as Migrator from "effect/unstable/sql/Migrator";2import * as Migrator from "effect/sql/Migrator";
3import * as SqlClient from "effect/unstable/sql/SqlClient";3import * as SqlClient from "effect/sql/SqlClient";
44
5import PullRequestFilesViewed from "./Migrations/053_PullRequestFilesViewed.ts";5import PullRequestFilesViewed from "./Migrations/053_PullRequestFilesViewed.ts";
6import AutoSettleDisabledAt from "./Migrations/054_ProjectionThreadsAutoSettleDisabledAt.ts";6import AutoSettleDisabledAt from "./Migrations/054_ProjectionThreadsAutoSettleDisabledAt.ts";
apps/server/src/preview/PortScanner.test.ts+1-1
...@@ -20,7 +20,7 @@ import * as Scope from "effect/Scope";...@@ -20,7 +20,7 @@ import * as Scope from "effect/Scope";
20import * as TestClock from "effect/testing/TestClock";20import * as TestClock from "effect/testing/TestClock";
21import * as Tracer from "effect/Tracer";21import * as Tracer from "effect/Tracer";
22import { expect } from "vite-plus/test";22import { expect } from "vite-plus/test";
23import { FetchHttpClient } from "effect/unstable/http";23import { FetchHttpClient } from "effect/http";
2424
25import * as ProcessRunner from "../processRunner.ts";25import * as ProcessRunner from "../processRunner.ts";
26import * as PortScanner from "./PortScanner.ts";26import * as PortScanner from "./PortScanner.ts";
apps/server/src/preview/PortScanner.ts+1-1
...@@ -36,7 +36,7 @@ import * as Ref from "effect/Ref";...@@ -36,7 +36,7 @@ import * as Ref from "effect/Ref";
36import * as Schedule from "effect/Schedule";36import * as Schedule from "effect/Schedule";
37import * as Scope from "effect/Scope";37import * as Scope from "effect/Scope";
38import * as Semaphore from "effect/Semaphore";38import * as Semaphore from "effect/Semaphore";
39import { FetchHttpClient, HttpClient } from "effect/unstable/http";39import { FetchHttpClient, HttpClient } from "effect/http";
4040
41import * as ProcessRunner from "../processRunner.ts";41import * as ProcessRunner from "../processRunner.ts";
4242
apps/server/src/process/externalLauncher.test.ts+1-1
...@@ -15,7 +15,7 @@ import * as Path from "effect/Path";...@@ -15,7 +15,7 @@ import * as Path from "effect/Path";
15import * as Sink from "effect/Sink";15import * as Sink from "effect/Sink";
16import * as Stream from "effect/Stream";16import * as Stream from "effect/Stream";
17import * as TestClock from "effect/testing/TestClock";17import * as TestClock from "effect/testing/TestClock";
18import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";18import { ChildProcess, ChildProcessSpawner } from "effect/process";
1919
20import { HostProcessPlatform } from "@t3tools/shared/hostProcess";20import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
21import { SpawnExecutableResolution } from "@t3tools/shared/shell";21import { SpawnExecutableResolution } from "@t3tools/shared/shell";
apps/server/src/process/externalLauncher.ts+4-4
...@@ -30,7 +30,7 @@ import * as Config from "effect/Config";...@@ -30,7 +30,7 @@ import * as Config from "effect/Config";
30import * as Context from "effect/Context";30import * as Context from "effect/Context";
31import * as Deferred from "effect/Deferred";31import * as Deferred from "effect/Deferred";
32import * as Effect from "effect/Effect";32import * as Effect from "effect/Effect";
33import * as Encoding from "effect/Encoding";33import * as Base64 from "effect/encoding/Base64";
34import * as Exit from "effect/Exit";34import * as Exit from "effect/Exit";
35import * as FileSystem from "effect/FileSystem";35import * as FileSystem from "effect/FileSystem";
36import * as Layer from "effect/Layer";36import * as Layer from "effect/Layer";
...@@ -39,8 +39,8 @@ import * as Path from "effect/Path";...@@ -39,8 +39,8 @@ import * as Path from "effect/Path";
39import * as Ref from "effect/Ref";39import * as Ref from "effect/Ref";
40import * as Scope from "effect/Scope";40import * as Scope from "effect/Scope";
41import * as Stream from "effect/Stream";41import * as Stream from "effect/Stream";
42import * as ChildProcess from "effect/unstable/process/ChildProcess";42import * as ChildProcess from "effect/process/ChildProcess";
43import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";43import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
4444
45// ==============================45// ==============================
46// Definitions46// Definitions
...@@ -175,7 +175,7 @@ function encodeUtf16LeBase64(input: string): string {...@@ -175,7 +175,7 @@ function encodeUtf16LeBase64(input: string): string {
175 bytes[index * 2] = code & 0xff;175 bytes[index * 2] = code & 0xff;
176 bytes[index * 2 + 1] = code >>> 8;176 bytes[index * 2 + 1] = code >>> 8;
177 }177 }
178 return Encoding.encodeBase64(bytes);178 return Base64.encode(bytes);
179}179}
180180
181function escapePowerShellStringLiteral(input: string): string {181function escapePowerShellStringLiteral(input: string): string {
apps/server/src/processRunner.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as PlatformError from "effect/PlatformError";...@@ -8,7 +8,7 @@ import * as PlatformError from "effect/PlatformError";
8import * as Sink from "effect/Sink";8import * as Sink from "effect/Sink";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import { TestClock } from "effect/testing";10import { TestClock } from "effect/testing";
11import { ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcessSpawner } from "effect/process";
12import { HostProcessEnvironment, HostProcessPlatform } from "@t3tools/shared/hostProcess";12import { HostProcessEnvironment, HostProcessPlatform } from "@t3tools/shared/hostProcess";
13import { SpawnExecutableResolution } from "@t3tools/shared/shell";13import { SpawnExecutableResolution } from "@t3tools/shared/shell";
1414
apps/server/src/processRunner.ts+2-2
...@@ -7,8 +7,8 @@ import * as PlatformError from "effect/PlatformError";...@@ -7,8 +7,8 @@ import * as PlatformError from "effect/PlatformError";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as Scope from "effect/Scope";8import * as Scope from "effect/Scope";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import * as ChildProcess from "effect/unstable/process/ChildProcess";10import * as ChildProcess from "effect/process/ChildProcess";
11import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";11import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
12import { HostProcessPlatform } from "@t3tools/shared/hostProcess";12import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
13import { resolveSpawnCommand } from "@t3tools/shared/shell";13import { resolveSpawnCommand } from "@t3tools/shared/shell";
14import {14import {
apps/server/src/project/ProjectService.deletion.test.ts+1-1
...@@ -14,7 +14,7 @@ import * as Layer from "effect/Layer";...@@ -14,7 +14,7 @@ import * as Layer from "effect/Layer";
14import * as Option from "effect/Option";14import * as Option from "effect/Option";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import { TestClock } from "effect/testing";16import { TestClock } from "effect/testing";
17import * as SqlClient from "effect/unstable/sql/SqlClient";17import * as SqlClient from "effect/sql/SqlClient";
1818
19import * as ServerConfig from "../config.ts";19import * as ServerConfig from "../config.ts";
20import { OrchestrationEffectRequestV2 } from "../orchestration-v2/EffectOutbox.ts";20import { OrchestrationEffectRequestV2 } from "../orchestration-v2/EffectOutbox.ts";
apps/server/src/project/ProjectService.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Layer from "effect/Layer";...@@ -8,7 +8,7 @@ import * as Layer from "effect/Layer";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Ref from "effect/Ref";9import * as Ref from "effect/Ref";
10import { TestClock } from "effect/testing";10import { TestClock } from "effect/testing";
11import * as SqlClient from "effect/unstable/sql/SqlClient";11import * as SqlClient from "effect/sql/SqlClient";
1212
13import * as ServerConfig from "../config.ts";13import * as ServerConfig from "../config.ts";
14import * as EventSink from "../orchestration-v2/EventSink.ts";14import * as EventSink from "../orchestration-v2/EventSink.ts";
apps/server/src/project/RepositoryIdentityResolver.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";11import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
12import { TestClock } from "effect/testing";12import { TestClock } from "effect/testing";
1313
14import * as ProcessRunner from "../processRunner.ts";14import * as ProcessRunner from "../processRunner.ts";
apps/server/src/project/http.ts+1-1
...@@ -4,7 +4,7 @@ import {...@@ -4,7 +4,7 @@ import {
4 EnvironmentHttpApi,4 EnvironmentHttpApi,
5} from "@t3tools/contracts";5} from "@t3tools/contracts";
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";7import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
88
9import {9import {
10 annotateEnvironmentRequest,10 annotateEnvironmentRequest,
apps/server/src/provider/AntigravityInstallation.test.ts+2-2
...@@ -19,8 +19,8 @@ import * as Schema from "effect/Schema";...@@ -19,8 +19,8 @@ import * as Schema from "effect/Schema";
19import * as Scope from "effect/Scope";19import * as Scope from "effect/Scope";
20import * as Sink from "effect/Sink";20import * as Sink from "effect/Sink";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import { HttpClient, HttpClientResponse } from "effect/unstable/http";22import { HttpClient, HttpClientResponse } from "effect/http";
23import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";23import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
24import * as NodeCrypto from "node:crypto";24import * as NodeCrypto from "node:crypto";
2525
26import * as AntigravityInstallation from "./AntigravityInstallation.ts";26import * as AntigravityInstallation from "./AntigravityInstallation.ts";
apps/server/src/provider/AntigravityInstallation.ts+2-2
...@@ -23,8 +23,8 @@ import * as Scope from "effect/Scope";...@@ -23,8 +23,8 @@ import * as Scope from "effect/Scope";
23import * as Semaphore from "effect/Semaphore";23import * as Semaphore from "effect/Semaphore";
24import * as Stream from "effect/Stream";24import * as Stream from "effect/Stream";
25import * as SubscriptionRef from "effect/SubscriptionRef";25import * as SubscriptionRef from "effect/SubscriptionRef";
26import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";26import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
27import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";27import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
28import * as NodeCrypto from "node:crypto";28import * as NodeCrypto from "node:crypto";
29import * as NodeFSP from "node:fs/promises";29import * as NodeFSP from "node:fs/promises";
30import type * as NodeStream from "node:stream";30import type * as NodeStream from "node:stream";
apps/server/src/provider/CodexChatGptAuth.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as Fiber from "effect/Fiber";...@@ -12,7 +12,7 @@ import * as Fiber from "effect/Fiber";
12import * as Deferred from "effect/Deferred";12import * as Deferred from "effect/Deferred";
13import * as TestClock from "effect/testing/TestClock";13import * as TestClock from "effect/testing/TestClock";
14import { subscribeChatGptHandoff } from "./CodexChatGptHandoff.ts";14import { subscribeChatGptHandoff } from "./CodexChatGptHandoff.ts";
15import { FetchHttpClient } from "effect/unstable/http";15import { FetchHttpClient } from "effect/http";
16import { exportJWK, generateKeyPair, SignJWT } from "jose";16import { exportJWK, generateKeyPair, SignJWT } from "jose";
17import * as ServerSecretStore from "../auth/ServerSecretStore.ts";17import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
18import * as ServerEnvironment from "../environment/ServerEnvironment.ts";18import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
apps/server/src/provider/CodexChatGptAuth.ts+1-1
...@@ -20,7 +20,7 @@ import * as Schema from "effect/Schema";...@@ -20,7 +20,7 @@ import * as Schema from "effect/Schema";
20import * as Semaphore from "effect/Semaphore";20import * as Semaphore from "effect/Semaphore";
21import * as ProviderAuthFlow from "./ProviderAuthFlow.ts";21import * as ProviderAuthFlow from "./ProviderAuthFlow.ts";
22import type { ProviderAuthFlowContext } from "./ProviderAuthFlow.ts";22import type { ProviderAuthFlowContext } from "./ProviderAuthFlow.ts";
23import { HttpClient, HttpClientRequest } from "effect/unstable/http";23import { HttpClient, HttpClientRequest } from "effect/http";
24import * as ProviderCredentialStore from "./ProviderCredentialStore.ts";24import * as ProviderCredentialStore from "./ProviderCredentialStore.ts";
25import { withChatGptSessionLock } from "./CodexChatGptSessionLock.ts";25import { withChatGptSessionLock } from "./CodexChatGptSessionLock.ts";
26import * as ServerSecretStore from "../auth/ServerSecretStore.ts";26import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
apps/server/src/provider/CodexChatGptHandoff.ts+1-1
...@@ -3,7 +3,7 @@ import { ProviderSetupError } from "@t3tools/contracts";...@@ -3,7 +3,7 @@ import { ProviderSetupError } from "@t3tools/contracts";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Stream from "effect/Stream";5import * as Stream from "effect/Stream";
6import { FetchHttpClient } from "effect/unstable/http";6import { FetchHttpClient } from "effect/http";
7import * as ServerSecretStore from "../auth/ServerSecretStore.ts";7import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
8import * as ServerEnvironment from "../environment/ServerEnvironment.ts";8import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
9import { makeCodexChatGptAuth } from "./CodexChatGptAuth.ts";9import { makeCodexChatGptAuth } from "./CodexChatGptAuth.ts";
apps/server/src/provider/CodexChatGptModels.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1// @effect-diagnostics preferSchemaOverJson:off - Mock HTTP responses use JSON fixtures.1// @effect-diagnostics preferSchemaOverJson:off - Mock HTTP responses use JSON fixtures.
2import { assert, it } from "@effect/vitest";2import { assert, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import { HttpClient, HttpClientResponse } from "effect/unstable/http";4import { HttpClient, HttpClientResponse } from "effect/http";
5import { chatGptModels } from "./CodexChatGptModels.ts";5import { chatGptModels } from "./CodexChatGptModels.ts";
66
7it.effect(7it.effect(
apps/server/src/provider/CodexChatGptModels.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { ServerProviderModel } from "@t3tools/contracts";1import type { ServerProviderModel } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import { HttpClient, HttpClientRequest } from "effect/unstable/http";4import { HttpClient, HttpClientRequest } from "effect/http";
55
6export class ChatGptCatalogError extends Schema.TaggedError<ChatGptCatalogError>()(6export class ChatGptCatalogError extends Schema.TaggedError<ChatGptCatalogError>()(
7 "ChatGptCatalogError",7 "ChatGptCatalogError",
apps/server/src/provider/CodexInstallation.test.ts+1-1
...@@ -13,7 +13,7 @@ import * as Option from "effect/Option";...@@ -13,7 +13,7 @@ import * as Option from "effect/Option";
13import * as Exit from "effect/Exit";13import * as Exit from "effect/Exit";
14import * as Scope from "effect/Scope";14import * as Scope from "effect/Scope";
15import * as Stream from "effect/Stream";15import * as Stream from "effect/Stream";
16import { HttpClient, HttpClientResponse } from "effect/unstable/http";16import { HttpClient, HttpClientResponse } from "effect/http";
17import * as NodeCrypto from "node:crypto";17import * as NodeCrypto from "node:crypto";
18import * as CodexInstallation from "./CodexInstallation.ts";18import * as CodexInstallation from "./CodexInstallation.ts";
1919
apps/server/src/provider/CodexInstallation.ts+2-2
...@@ -22,8 +22,8 @@ import * as Scope from "effect/Scope";...@@ -22,8 +22,8 @@ import * as Scope from "effect/Scope";
22import * as Semaphore from "effect/Semaphore";22import * as Semaphore from "effect/Semaphore";
23import * as Stream from "effect/Stream";23import * as Stream from "effect/Stream";
24import * as SubscriptionRef from "effect/SubscriptionRef";24import * as SubscriptionRef from "effect/SubscriptionRef";
25import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";25import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
26import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";26import { ChildProcess, ChildProcessSpawner } from "effect/process";
27import * as NodeCrypto from "node:crypto";27import * as NodeCrypto from "node:crypto";
28import * as ServerConfig from "../config.ts";28import * as ServerConfig from "../config.ts";
29import * as ModelManifest from "./ModelManifest.ts";29import * as ModelManifest from "./ModelManifest.ts";
apps/server/src/provider/CodexManagedRuntime.test.ts+1-1
...@@ -10,7 +10,7 @@ import * as Path from "effect/Path";...@@ -10,7 +10,7 @@ import * as Path from "effect/Path";
10import * as Layer from "effect/Layer";10import * as Layer from "effect/Layer";
11import * as Option from "effect/Option";11import * as Option from "effect/Option";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import { HttpClient, HttpClientResponse } from "effect/unstable/http";13import { HttpClient, HttpClientResponse } from "effect/http";
14import * as ServerConfig from "../config.ts";14import * as ServerConfig from "../config.ts";
15import * as ServerSecretStore from "../auth/ServerSecretStore.ts";15import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
16import * as ServerEnvironment from "../environment/ServerEnvironment.ts";16import * as ServerEnvironment from "../environment/ServerEnvironment.ts";
apps/server/src/provider/Drivers/AcpRegistryDriver.ts+1-1
...@@ -19,7 +19,7 @@ import * as Ref from "effect/Ref";...@@ -19,7 +19,7 @@ import * as Ref from "effect/Ref";
19import * as Result from "effect/Result";19import * as Result from "effect/Result";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import * as Semaphore from "effect/Semaphore";21import * as Semaphore from "effect/Semaphore";
22import { ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcessSpawner } from "effect/process";
2323
24import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";24import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
25import * as ServerConfig from "../../config.ts";25import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/AntigravityDriver.test.ts+1-1
...@@ -19,7 +19,7 @@ import * as Layer from "effect/Layer";...@@ -19,7 +19,7 @@ import * as Layer from "effect/Layer";
19import * as Path from "effect/Path";19import * as Path from "effect/Path";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import * as TestClock from "effect/testing/TestClock";21import * as TestClock from "effect/testing/TestClock";
22import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";22import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
2323
24import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";24import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
25import * as ServerConfig from "../../config.ts";25import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/AntigravityDriver.ts+1-1
...@@ -15,7 +15,7 @@ import * as Path from "effect/Path";...@@ -15,7 +15,7 @@ import * as Path from "effect/Path";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import * as Scope from "effect/Scope";16import * as Scope from "effect/Scope";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";18import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
19import type { AcpError } from "effect-acp/errors";19import type { AcpError } from "effect-acp/errors";
2020
21import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";21import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
apps/server/src/provider/Drivers/ClaudeDriver.ts+2-2
...@@ -20,8 +20,8 @@ import * as Effect from "effect/Effect";...@@ -20,8 +20,8 @@ import * as Effect from "effect/Effect";
20import * as FileSystem from "effect/FileSystem";20import * as FileSystem from "effect/FileSystem";
21import * as Path from "effect/Path";21import * as Path from "effect/Path";
22import * as Schema from "effect/Schema";22import * as Schema from "effect/Schema";
23import { HttpClient } from "effect/unstable/http";23import { HttpClient } from "effect/http";
24import { ChildProcessSpawner } from "effect/unstable/process";24import { ChildProcessSpawner } from "effect/process";
2525
26import { makeClaudeTextGeneration } from "../../textGeneration/ClaudeTextGeneration.ts";26import { makeClaudeTextGeneration } from "../../textGeneration/ClaudeTextGeneration.ts";
27import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";27import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
apps/server/src/provider/Drivers/CodexDriver.test.ts+3-3
...@@ -18,9 +18,9 @@ import * as PlatformError from "effect/PlatformError";...@@ -18,9 +18,9 @@ import * as PlatformError from "effect/PlatformError";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import * as Sink from "effect/Sink";19import * as Sink from "effect/Sink";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import { HttpClient, HttpClientResponse } from "effect/unstable/http";21import { HttpClient, HttpClientResponse } from "effect/http";
22import * as ChildProcess from "effect/unstable/process/ChildProcess";22import * as ChildProcess from "effect/process/ChildProcess";
23import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";23import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
2424
25import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";25import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
26import * as ServerConfig from "../../config.ts";26import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/CodexDriver.ts+2-2
...@@ -27,8 +27,8 @@ import * as Effect from "effect/Effect";...@@ -27,8 +27,8 @@ import * as Effect from "effect/Effect";
27import * as FileSystem from "effect/FileSystem";27import * as FileSystem from "effect/FileSystem";
28import * as Path from "effect/Path";28import * as Path from "effect/Path";
29import * as Schema from "effect/Schema";29import * as Schema from "effect/Schema";
30import { HttpClient } from "effect/unstable/http";30import { HttpClient } from "effect/http";
31import { ChildProcessSpawner } from "effect/unstable/process";31import { ChildProcessSpawner } from "effect/process";
3232
33import { makeCodexTextGeneration } from "../../textGeneration/CodexTextGeneration.ts";33import { makeCodexTextGeneration } from "../../textGeneration/CodexTextGeneration.ts";
34import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";34import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
apps/server/src/provider/Drivers/CodexManagedProvider.ts+2-2
...@@ -2,7 +2,7 @@ import { ProviderDriverKind, TextGenerationError, type CodexSettings } from "@t3...@@ -2,7 +2,7 @@ import { ProviderDriverKind, TextGenerationError, type CodexSettings } from "@t3
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Stream from "effect/Stream";3import * as Stream from "effect/Stream";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { ChildProcessSpawner } from "effect/unstable/process";5import { ChildProcessSpawner } from "effect/process";
6import { makeCodexTextGeneration } from "../../textGeneration/CodexTextGeneration.ts";6import { makeCodexTextGeneration } from "../../textGeneration/CodexTextGeneration.ts";
7import { ServerSettingsService } from "../../serverSettings.ts";7import { ServerSettingsService } from "../../serverSettings.ts";
8import { chatGptModels } from "../CodexChatGptModels.ts";8import { chatGptModels } from "../CodexChatGptModels.ts";
...@@ -19,7 +19,7 @@ import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment...@@ -19,7 +19,7 @@ import { mergeProviderInstanceEnvironment } from "../ProviderInstanceEnvironment
19import { type ProviderDriverCreateInput, type ProviderInstance } from "../ProviderDriver.ts";19import { type ProviderDriverCreateInput, type ProviderInstance } from "../ProviderDriver.ts";
20import { codexContinuationIdentity } from "./CodexHomeLayout.ts";20import { codexContinuationIdentity } from "./CodexHomeLayout.ts";
21import { withInstanceIdentity } from "./instanceIdentity.ts";21import { withInstanceIdentity } from "./instanceIdentity.ts";
22import { HttpClient } from "effect/unstable/http";22import { HttpClient } from "effect/http";
23const DRIVER = ProviderDriverKind.make("codex");23const DRIVER = ProviderDriverKind.make("codex");
2424
25export const makeManagedCodexProvider = Effect.fn("makeManagedCodexProvider")(function* (25export const makeManagedCodexProvider = Effect.fn("makeManagedCodexProvider")(function* (
apps/server/src/provider/Drivers/CursorDriver.test.ts+2-2
...@@ -8,8 +8,8 @@ import * as Layer from "effect/Layer";...@@ -8,8 +8,8 @@ import * as Layer from "effect/Layer";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import { vi } from "vite-plus/test";10import { vi } from "vite-plus/test";
11import { HttpClient } from "effect/unstable/http";11import { HttpClient } from "effect/http";
12import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";12import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1313
14import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";14import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
15import * as ServerConfig from "../../config.ts";15import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/CursorDriver.ts+1-1
...@@ -12,7 +12,7 @@ import * as Crypto from "effect/Crypto";...@@ -12,7 +12,7 @@ import * as Crypto from "effect/Crypto";
12import * as FileSystem from "effect/FileSystem";12import * as FileSystem from "effect/FileSystem";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as Schema from "effect/Schema";14import * as Schema from "effect/Schema";
15import { HttpClient } from "effect/unstable/http";15import { HttpClient } from "effect/http";
16import { readCursorUsageLimits } from "../Layers/cursorUsageLimits.ts";16import { readCursorUsageLimits } from "../Layers/cursorUsageLimits.ts";
1717
18import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";18import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
apps/server/src/provider/Drivers/GrokDriver.test.ts+2-2
...@@ -6,8 +6,8 @@ import * as Effect from "effect/Effect";...@@ -6,8 +6,8 @@ import * as Effect from "effect/Effect";
6import * as FileSystem from "effect/FileSystem";6import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import { HttpClient } from "effect/unstable/http";9import { HttpClient } from "effect/http";
10import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";10import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1111
12import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";12import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
13import * as ServerConfig from "../../config.ts";13import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/GrokDriver.ts+2-2
...@@ -4,8 +4,8 @@ import * as Effect from "effect/Effect";...@@ -4,8 +4,8 @@ import * as Effect from "effect/Effect";
4import * as FileSystem from "effect/FileSystem";4import * as FileSystem from "effect/FileSystem";
5import * as Path from "effect/Path";5import * as Path from "effect/Path";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import { HttpClient } from "effect/unstable/http";7import { HttpClient } from "effect/http";
8import { ChildProcessSpawner } from "effect/unstable/process";8import { ChildProcessSpawner } from "effect/process";
99
10import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";10import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
11import * as ServerConfig from "../../config.ts";11import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/GrokSkills.test.ts+1-1
...@@ -2,7 +2,7 @@ import { describe, expect, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { describe, expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Sink from "effect/Sink";3import * as Sink from "effect/Sink";
4import * as Stream from "effect/Stream";4import * as Stream from "effect/Stream";
5import { ChildProcessSpawner } from "effect/unstable/process";5import { ChildProcessSpawner } from "effect/process";
66
7import { discoverGrokSkills } from "./GrokSkills.ts";7import { discoverGrokSkills } from "./GrokSkills.ts";
88
apps/server/src/provider/Drivers/GrokSkills.ts+1-1
...@@ -19,7 +19,7 @@ import type { GrokSettings, ServerProviderSkill } from "@t3tools/contracts";...@@ -19,7 +19,7 @@ import type { GrokSettings, ServerProviderSkill } from "@t3tools/contracts";
19import * as Effect from "effect/Effect";19import * as Effect from "effect/Effect";
20import * as Option from "effect/Option";20import * as Option from "effect/Option";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import { ChildProcess } from "effect/unstable/process";22import { ChildProcess } from "effect/process";
23import { resolveSpawnCommand } from "@t3tools/shared/shell";23import { resolveSpawnCommand } from "@t3tools/shared/shell";
2424
25import { spawnAndCollect } from "../providerSnapshot.ts";25import { spawnAndCollect } from "../providerSnapshot.ts";
apps/server/src/provider/Drivers/OpenCodeDriver.test.ts+2-2
...@@ -11,8 +11,8 @@ import * as Effect from "effect/Effect";...@@ -11,8 +11,8 @@ import * as Effect from "effect/Effect";
11import * as Fiber from "effect/Fiber";11import * as Fiber from "effect/Fiber";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as TestClock from "effect/testing/TestClock";13import * as TestClock from "effect/testing/TestClock";
14import { HttpClient } from "effect/unstable/http";14import { HttpClient } from "effect/http";
15import { ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcessSpawner } from "effect/process";
1616
17import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";17import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
18import * as ServerConfig from "../../config.ts";18import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Drivers/OpenCodeDriver.ts+2-2
...@@ -21,8 +21,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -21,8 +21,8 @@ import * as FileSystem from "effect/FileSystem";
21import * as Path from "effect/Path";21import * as Path from "effect/Path";
22import * as Schema from "effect/Schema";22import * as Schema from "effect/Schema";
23import * as Stream from "effect/Stream";23import * as Stream from "effect/Stream";
24import { HttpClient } from "effect/unstable/http";24import { HttpClient } from "effect/http";
25import { ChildProcessSpawner } from "effect/unstable/process";25import { ChildProcessSpawner } from "effect/process";
2626
27import * as OpenCode2TextGeneration from "../../textGeneration/OpenCode2TextGeneration.ts";27import * as OpenCode2TextGeneration from "../../textGeneration/OpenCode2TextGeneration.ts";
28import { makeOpenCodeTextGeneration } from "../../textGeneration/OpenCodeTextGeneration.ts";28import { makeOpenCodeTextGeneration } from "../../textGeneration/OpenCodeTextGeneration.ts";
apps/server/src/provider/Drivers/PiDriver.ts+2-2
...@@ -11,8 +11,8 @@ import * as Effect from "effect/Effect";...@@ -11,8 +11,8 @@ import * as Effect from "effect/Effect";
11import * as FileSystem from "effect/FileSystem";11import * as FileSystem from "effect/FileSystem";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import { HttpClient } from "effect/unstable/http";14import { HttpClient } from "effect/http";
15import { ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcessSpawner } from "effect/process";
1616
17import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";17import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
18import * as ServerConfig from "../../config.ts";18import * as ServerConfig from "../../config.ts";
apps/server/src/provider/Layers/ClaudeProvider.ts+1-1
...@@ -12,7 +12,7 @@ import * as Option from "effect/Option";...@@ -12,7 +12,7 @@ import * as Option from "effect/Option";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as Ref from "effect/Ref";13import * as Ref from "effect/Ref";
14import * as Result from "effect/Result";14import * as Result from "effect/Result";
15import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcess, ChildProcessSpawner } from "effect/process";
16import { createModelCapabilities } from "@t3tools/shared/model";16import { createModelCapabilities } from "@t3tools/shared/model";
17import { resolveSpawnCommand } from "@t3tools/shared/shell";17import { resolveSpawnCommand } from "@t3tools/shared/shell";
18import {18import {
apps/server/src/provider/Layers/CodexProvider.ts+2-2
...@@ -7,8 +7,8 @@ import * as Result from "effect/Result";...@@ -7,8 +7,8 @@ import * as Result from "effect/Result";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as Scope from "effect/Scope";8import * as Scope from "effect/Scope";
9import * as Types from "effect/Types";9import * as Types from "effect/Types";
10import * as ChildProcess from "effect/unstable/process/ChildProcess";10import * as ChildProcess from "effect/process/ChildProcess";
11import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";11import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
12import * as CodexClient from "effect-codex-app-server/client";12import * as CodexClient from "effect-codex-app-server/client";
13import * as CodexSchema from "effect-codex-app-server/schema";13import * as CodexSchema from "effect-codex-app-server/schema";
14import * as CodexErrors from "effect-codex-app-server/errors";14import * as CodexErrors from "effect-codex-app-server/errors";
apps/server/src/provider/Layers/GrokProvider.test.ts+1-1
...@@ -7,7 +7,7 @@ import { describe, expect, it } from "@effect/vitest";...@@ -7,7 +7,7 @@ import { describe, expect, it } from "@effect/vitest";
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import { HttpClient, HttpClientResponse } from "effect/unstable/http";10import { HttpClient, HttpClientResponse } from "effect/http";
11import { GrokSettings } from "@t3tools/contracts";11import { GrokSettings } from "@t3tools/contracts";
1212
13import {13import {
apps/server/src/provider/Layers/GrokProvider.ts+2-2
...@@ -16,8 +16,8 @@ import * as Exit from "effect/Exit";...@@ -16,8 +16,8 @@ import * as Exit from "effect/Exit";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import * as Result from "effect/Result";17import * as Result from "effect/Result";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import { HttpClient } from "effect/unstable/http";19import { HttpClient } from "effect/http";
20import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";20import { ChildProcess, ChildProcessSpawner } from "effect/process";
21import { createModelCapabilities } from "@t3tools/shared/model";21import { createModelCapabilities } from "@t3tools/shared/model";
22import { resolveSpawnCommand } from "@t3tools/shared/shell";22import { resolveSpawnCommand } from "@t3tools/shared/shell";
2323
apps/server/src/provider/Layers/OpenCodeProvider.test.ts+1-1
...@@ -10,7 +10,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -10,7 +10,7 @@ import * as FileSystem from "effect/FileSystem";
10import * as Layer from "effect/Layer";10import * as Layer from "effect/Layer";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import * as TestClock from "effect/testing/TestClock";12import * as TestClock from "effect/testing/TestClock";
13import { HttpClient, HttpClientResponse } from "effect/unstable/http";13import { HttpClient, HttpClientResponse } from "effect/http";
14import { beforeEach } from "vite-plus/test";14import { beforeEach } from "vite-plus/test";
1515
16import { OpenCodeSettings } from "@t3tools/contracts";16import { OpenCodeSettings } from "@t3tools/contracts";
apps/server/src/provider/Layers/PiProvider.test.ts+1-1
...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Sink from "effect/Sink";4import * as Sink from "effect/Sink";
5import * as Stream from "effect/Stream";5import * as Stream from "effect/Stream";
6import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";6import { ChildProcess, ChildProcessSpawner } from "effect/process";
77
8import { checkPiProviderStatus, MINIMUM_PI_VERSION } from "./PiProvider.ts";8import { checkPiProviderStatus, MINIMUM_PI_VERSION } from "./PiProvider.ts";
99
apps/server/src/provider/Layers/PiProvider.ts+2-2
...@@ -23,8 +23,8 @@ import * as Stream from "effect/Stream";...@@ -23,8 +23,8 @@ import * as Stream from "effect/Stream";
23import * as Exit from "effect/Exit";23import * as Exit from "effect/Exit";
24import * as Option from "effect/Option";24import * as Option from "effect/Option";
25import * as Result from "effect/Result";25import * as Result from "effect/Result";
26import { HttpClient } from "effect/unstable/http";26import { HttpClient } from "effect/http";
27import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";27import { ChildProcess, ChildProcessSpawner } from "effect/process";
2828
29import {29import {
30 buildPiRpcLaunch,30 buildPiRpcLaunch,
apps/server/src/provider/Layers/ProviderInstanceRegistryLive.test.ts+1-1
...@@ -45,7 +45,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -45,7 +45,7 @@ import * as FileSystem from "effect/FileSystem";
45import * as Layer from "effect/Layer";45import * as Layer from "effect/Layer";
46import * as Path from "effect/Path";46import * as Path from "effect/Path";
47import * as Stream from "effect/Stream";47import * as Stream from "effect/Stream";
48import { HttpClient, HttpClientResponse } from "effect/unstable/http";48import { HttpClient, HttpClientResponse } from "effect/http";
4949
50import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";50import * as BackgroundPolicy from "../../background/BackgroundPolicy.ts";
51import * as AntigravityInstallation from "../AntigravityInstallation.ts";51import * as AntigravityInstallation from "../AntigravityInstallation.ts";
apps/server/src/provider/Layers/ProviderRegistry.test.ts+2-2
...@@ -31,8 +31,8 @@ import {...@@ -31,8 +31,8 @@ import {
31 type ServerSettings as ContractServerSettings,31 type ServerSettings as ContractServerSettings,
32} from "@t3tools/contracts";32} from "@t3tools/contracts";
33import * as PlatformError from "effect/PlatformError";33import * as PlatformError from "effect/PlatformError";
34import { HttpClient, HttpClientResponse } from "effect/unstable/http";34import { HttpClient, HttpClientResponse } from "effect/http";
35import { ChildProcessSpawner } from "effect/unstable/process";35import { ChildProcessSpawner } from "effect/process";
36import { deepMerge } from "@t3tools/shared/Struct";36import { deepMerge } from "@t3tools/shared/Struct";
37import { createModelCapabilities } from "@t3tools/shared/model";37import { createModelCapabilities } from "@t3tools/shared/model";
38import { applyServerSettingsPatch } from "@t3tools/shared/serverSettings";38import { applyServerSettingsPatch } from "@t3tools/shared/serverSettings";
apps/server/src/provider/Layers/claudeResetCredits.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Fiber from "effect/Fiber";...@@ -8,7 +8,7 @@ import * as Fiber from "effect/Fiber";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as TestClock from "effect/testing/TestClock";10import * as TestClock from "effect/testing/TestClock";
11import { HttpClient, HttpClientResponse, UrlParams } from "effect/unstable/http";11import { HttpClient, HttpClientResponse, UrlParams } from "effect/http";
12import { describe, expect, it } from "vite-plus/test";12import { describe, expect, it } from "vite-plus/test";
1313
14import * as ClaudeResetCredits from "./claudeResetCredits.ts";14import * as ClaudeResetCredits from "./claudeResetCredits.ts";
apps/server/src/provider/Layers/claudeResetCredits.ts+1-1
...@@ -19,7 +19,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -19,7 +19,7 @@ import * as FileSystem from "effect/FileSystem";
19import * as Option from "effect/Option";19import * as Option from "effect/Option";
20import * as Path from "effect/Path";20import * as Path from "effect/Path";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";22import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
2323
24const API_BASE = "https://api.anthropic.com";24const API_BASE = "https://api.anthropic.com";
25const PROGRAM = "cedar_ember";25const PROGRAM = "cedar_ember";
apps/server/src/provider/Layers/cursorUsageLimits.test.ts+1-1
...@@ -4,7 +4,7 @@ import { HostProcessPlatform } from "@t3tools/shared/hostProcess";...@@ -4,7 +4,7 @@ import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as FileSystem from "effect/FileSystem";5import * as FileSystem from "effect/FileSystem";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import { HttpClient, HttpClientResponse } from "effect/unstable/http";7import { HttpClient, HttpClientResponse } from "effect/http";
8import { cursorUsageResponseToLimits, readCursorUsageLimits } from "./cursorUsageLimits.ts";8import { cursorUsageResponseToLimits, readCursorUsageLimits } from "./cursorUsageLimits.ts";
99
10const withNodeServices = <A, E>(effect: Effect.Effect<A, E, FileSystem.FileSystem | Path.Path>) =>10const withNodeServices = <A, E>(effect: Effect.Effect<A, E, FileSystem.FileSystem | Path.Path>) =>
apps/server/src/provider/Layers/cursorUsageLimits.ts+1-1
...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";11import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
12import {12import {
13 clampPercent,13 clampPercent,
14 makeUnavailableUsageLimits,14 makeUnavailableUsageLimits,
apps/server/src/provider/Layers/grokUsageLimits.ts+1-1
...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";9import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
10import {10import {
11 clampPercent,11 clampPercent,
12 makeUnavailableUsageLimits,12 makeUnavailableUsageLimits,
apps/server/src/provider/Layers/openCodeUsageLimits.ts+1-1
...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";11import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
1212
13import {13import {
14 clampPercent,14 clampPercent,
apps/server/src/provider/ModelManifest.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as TestClock from "effect/testing/TestClock";8import * as TestClock from "effect/testing/TestClock";
9import { HttpClient, HttpClientResponse } from "effect/unstable/http";9import { HttpClient, HttpClientResponse } from "effect/http";
1010
11import * as ServerConfig from "../config.ts";11import * as ServerConfig from "../config.ts";
12import * as ServerSettings from "../serverSettings.ts";12import * as ServerSettings from "../serverSettings.ts";
apps/server/src/provider/ModelManifest.ts+1-1
...@@ -28,7 +28,7 @@ import * as Layer from "effect/Layer";...@@ -28,7 +28,7 @@ import * as Layer from "effect/Layer";
28import * as Path from "effect/Path";28import * as Path from "effect/Path";
29import * as Schema from "effect/Schema";29import * as Schema from "effect/Schema";
30import * as Semaphore from "effect/Semaphore";30import * as Semaphore from "effect/Semaphore";
31import { HttpClient, HttpClientResponse } from "effect/unstable/http";31import { HttpClient, HttpClientResponse } from "effect/http";
3232
33import { ServerConfig } from "../config.ts";33import { ServerConfig } from "../config.ts";
34import * as ServerSettings from "../serverSettings.ts";34import * as ServerSettings from "../serverSettings.ts";
apps/server/src/provider/OpenCodeServerLedger.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -12,7 +12,7 @@ import * as FileSystem from "effect/FileSystem";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as Scope from "effect/Scope";14import * as Scope from "effect/Scope";
15import { ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcessSpawner } from "effect/process";
1616
17import * as OpenCodeRuntime from "./opencodeRuntime.ts";17import * as OpenCodeRuntime from "./opencodeRuntime.ts";
18import * as OpenCodeServerLedger from "./OpenCodeServerLedger.ts";18import * as OpenCodeServerLedger from "./OpenCodeServerLedger.ts";
apps/server/src/provider/OpenCodeServerLedger.ts+1-1
...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcess, ChildProcessSpawner } from "effect/process";
1010
11import * as ServerConfig from "../config.ts";11import * as ServerConfig from "../config.ts";
12import { signalProcessGroup } from "../process/processGroup.ts";12import { signalProcessGroup } from "../process/processGroup.ts";
apps/server/src/provider/acp/AcpClientTerminals.test.ts+1-1
...@@ -2,7 +2,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -2,7 +2,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
2import { describe, expect, it } from "@effect/vitest";2import { describe, expect, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Result from "effect/Result";4import * as Result from "effect/Result";
5import { ChildProcessSpawner } from "effect/unstable/process";5import { ChildProcessSpawner } from "effect/process";
66
7import {7import {
8 makeAcpClientTerminals,8 makeAcpClientTerminals,
apps/server/src/provider/acp/AcpClientTerminals.ts+1-1
...@@ -6,7 +6,7 @@ import * as Fiber from "effect/Fiber";...@@ -6,7 +6,7 @@ import * as Fiber from "effect/Fiber";
6import * as Scope from "effect/Scope";6import * as Scope from "effect/Scope";
7import * as Semaphore from "effect/Semaphore";7import * as Semaphore from "effect/Semaphore";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcess, ChildProcessSpawner } from "effect/process";
10import * as EffectAcpErrors from "effect-acp/errors";10import * as EffectAcpErrors from "effect-acp/errors";
11import type * as EffectAcpSchema from "effect-acp/compat";11import type * as EffectAcpSchema from "effect-acp/compat";
12import * as NodeBuffer from "node:buffer";12import * as NodeBuffer from "node:buffer";
apps/server/src/provider/acp/AcpRegistryAuth.ts+1-1
...@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer";...@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer";
12import * as Option from "effect/Option";12import * as Option from "effect/Option";
13import * as Queue from "effect/Queue";13import * as Queue from "effect/Queue";
14import * as Scope from "effect/Scope";14import * as Scope from "effect/Scope";
15import { ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcessSpawner } from "effect/process";
16import type * as AcpSchema from "effect-acp/compat";16import type * as AcpSchema from "effect-acp/compat";
1717
18import * as PtyAdapter from "../../terminal/PtyAdapter.ts";18import * as PtyAdapter from "../../terminal/PtyAdapter.ts";
apps/server/src/provider/acp/AcpRegistryProbe.ts+1-1
...@@ -19,7 +19,7 @@ import * as Layer from "effect/Layer";...@@ -19,7 +19,7 @@ import * as Layer from "effect/Layer";
19import * as Option from "effect/Option";19import * as Option from "effect/Option";
20import * as Ref from "effect/Ref";20import * as Ref from "effect/Ref";
21import * as Result from "effect/Result";21import * as Result from "effect/Result";
22import { ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcessSpawner } from "effect/process";
23import type * as EffectAcpErrors from "effect-acp/errors";23import type * as EffectAcpErrors from "effect-acp/errors";
24import type * as EffectAcpSchema from "effect-acp/compat";24import type * as EffectAcpSchema from "effect-acp/compat";
2525
apps/server/src/provider/acp/AcpRegistrySupport.test.ts+2-2
...@@ -14,10 +14,10 @@ import * as Path from "effect/Path";...@@ -14,10 +14,10 @@ import * as Path from "effect/Path";
14import * as Fiber from "effect/Fiber";14import * as Fiber from "effect/Fiber";
15import * as Layer from "effect/Layer";15import * as Layer from "effect/Layer";
16import * as Schema from "effect/Schema";16import * as Schema from "effect/Schema";
17import { HttpClient, HttpClientResponse } from "effect/unstable/http";17import { HttpClient, HttpClientResponse } from "effect/http";
18import * as TestClock from "effect/testing/TestClock";18import * as TestClock from "effect/testing/TestClock";
19import * as NodeCrypto from "node:crypto";19import * as NodeCrypto from "node:crypto";
20import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";20import { ChildProcess, ChildProcessSpawner } from "effect/process";
2121
22import * as AcpRegistrySupport from "./AcpRegistrySupport.ts";22import * as AcpRegistrySupport from "./AcpRegistrySupport.ts";
23import * as ServerSettings from "../../serverSettings.ts";23import * as ServerSettings from "../../serverSettings.ts";
apps/server/src/provider/acp/AcpRegistrySupport.ts+2-2
...@@ -35,8 +35,8 @@ import * as Ref from "effect/Ref";...@@ -35,8 +35,8 @@ import * as Ref from "effect/Ref";
35import * as Schema from "effect/Schema";35import * as Schema from "effect/Schema";
36import * as Semaphore from "effect/Semaphore";36import * as Semaphore from "effect/Semaphore";
37import * as Stream from "effect/Stream";37import * as Stream from "effect/Stream";
38import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";38import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
39import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";39import { ChildProcess, ChildProcessSpawner } from "effect/process";
40import * as NodeCrypto from "node:crypto";40import * as NodeCrypto from "node:crypto";
4141
42import { collectUint8StreamText } from "../../stream/collectUint8StreamText.ts";42import { collectUint8StreamText } from "../../stream/collectUint8StreamText.ts";
apps/server/src/provider/acp/AcpSessionRuntime.ts+4-3
...@@ -20,8 +20,8 @@ import * as Schema from "effect/Schema";...@@ -20,8 +20,8 @@ import * as Schema from "effect/Schema";
20import * as Scope from "effect/Scope";20import * as Scope from "effect/Scope";
21import * as Semaphore from "effect/Semaphore";21import * as Semaphore from "effect/Semaphore";
22import * as Stream from "effect/Stream";22import * as Stream from "effect/Stream";
23import * as ChildProcess from "effect/unstable/process/ChildProcess";23import * as ChildProcess from "effect/process/ChildProcess";
24import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";24import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
25import * as EffectAcpClient from "effect-acp/client";25import * as EffectAcpClient from "effect-acp/client";
26import * as EffectAcpErrors from "effect-acp/errors";26import * as EffectAcpErrors from "effect-acp/errors";
27import type * as EffectAcpSchema from "effect-acp/compat";27import type * as EffectAcpSchema from "effect-acp/compat";
...@@ -1387,7 +1387,8 @@ export const make = (...@@ -1387,7 +1387,8 @@ export const make = (
1387 Effect.gen(function* () {1387 Effect.gen(function* () {
1388 const crypto = yield* Crypto.Crypto;1388 const crypto = yield* Crypto.Crypto;
1389 const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;1389 const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
1390 const runtimeScope = yield* Scope.Scope;1390 // A child of the caller's scope, so termination can close the runtime without closing the caller's.
1391 const runtimeScope = yield* Scope.fork(yield* Scope.Scope);
1391 const eventQueue = yield* Queue.unbounded<AcpSessionRuntimeEvent>();1392 const eventQueue = yield* Queue.unbounded<AcpSessionRuntimeEvent>();
1392 const modeStateRef = yield* Ref.make<AcpSessionModeState | undefined>(undefined);1393 const modeStateRef = yield* Ref.make<AcpSessionModeState | undefined>(undefined);
1393 const toolCallsRef = yield* Ref.make(new Map<string, AcpToolCallTrackedState>());1394 const toolCallsRef = yield* Ref.make(new Map<string, AcpToolCallTrackedState>());
apps/server/src/provider/acp/AntigravityAcpSupport.ts+1-1
...@@ -13,7 +13,7 @@ import * as Layer from "effect/Layer";...@@ -13,7 +13,7 @@ import * as Layer from "effect/Layer";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as Scope from "effect/Scope";14import * as Scope from "effect/Scope";
15import * as Stream from "effect/Stream";15import * as Stream from "effect/Stream";
16import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";16import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
17import * as EffectAcpErrors from "effect-acp/errors";17import * as EffectAcpErrors from "effect-acp/errors";
18import type * as EffectAcpSchema from "effect-acp/compat";18import type * as EffectAcpSchema from "effect-acp/compat";
1919
apps/server/src/provider/acp/GrokAcpCliProbe.test.ts+1-1
...@@ -15,7 +15,7 @@ import * as Deferred from "effect/Deferred";...@@ -15,7 +15,7 @@ import * as Deferred from "effect/Deferred";
15import * as Fiber from "effect/Fiber";15import * as Fiber from "effect/Fiber";
16import * as FileSystem from "effect/FileSystem";16import * as FileSystem from "effect/FileSystem";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import { ChildProcessSpawner } from "effect/unstable/process";18import { ChildProcessSpawner } from "effect/process";
19import { describe, expect } from "vite-plus/test";19import { describe, expect } from "vite-plus/test";
2020
21import { makeGrokAcpRuntime } from "./GrokAcpSupport.ts";21import { makeGrokAcpRuntime } from "./GrokAcpSupport.ts";
apps/server/src/provider/acp/GrokAcpSupport.ts+1-1
...@@ -10,7 +10,7 @@ import * as Crypto from "effect/Crypto";...@@ -10,7 +10,7 @@ import * as Crypto from "effect/Crypto";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as Scope from "effect/Scope";12import * as Scope from "effect/Scope";
13import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";13import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
14import * as EffectAcpErrors from "effect-acp/errors";14import * as EffectAcpErrors from "effect-acp/errors";
15import { HostProcessPlatform } from "@t3tools/shared/hostProcess";15import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
16import { normalizeModelSlug } from "@t3tools/shared/model";16import { normalizeModelSlug } from "@t3tools/shared/model";
apps/server/src/provider/antigravityAuthSupport.test.ts+3-3
...@@ -18,9 +18,9 @@ import * as Path from "effect/Path";...@@ -18,9 +18,9 @@ import * as Path from "effect/Path";
18import * as Result from "effect/Result";18import * as Result from "effect/Result";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import * as Ndjson from "effect/unstable/encoding/Ndjson";21import * as Ndjson from "effect/encoding/Ndjson";
22import * as ChildProcess from "effect/unstable/process/ChildProcess";22import * as ChildProcess from "effect/process/ChildProcess";
23import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";23import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
24import * as AcpErrors from "effect-acp/errors";24import * as AcpErrors from "effect-acp/errors";
25import { symlinksSupported } from "@t3tools/shared/testing/symlinks";25import { symlinksSupported } from "@t3tools/shared/testing/symlinks";
2626
apps/server/src/provider/antigravityAuthSupport.ts+4-6
...@@ -6,14 +6,14 @@ import { HostProcessPlatform } from "@t3tools/shared/hostProcess";...@@ -6,14 +6,14 @@ import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
6import { resolveNodeExecutable, nodeRuntimeUnavailableMessage } from "@t3tools/shared/nodeRuntime";6import { resolveNodeExecutable, nodeRuntimeUnavailableMessage } from "@t3tools/shared/nodeRuntime";
7import * as Crypto from "effect/Crypto";7import * as Crypto from "effect/Crypto";
8import * as Effect from "effect/Effect";8import * as Effect from "effect/Effect";
9import * as Encoding from "effect/Encoding";9import * as Hex from "effect/encoding/Hex";
10import * as FileSystem from "effect/FileSystem";10import * as FileSystem from "effect/FileSystem";
11import * as Path from "effect/Path";11import * as Path from "effect/Path";
12import type * as PlatformError from "effect/PlatformError";12import type * as PlatformError from "effect/PlatformError";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import * as ChildProcess from "effect/unstable/process/ChildProcess";15import * as ChildProcess from "effect/process/ChildProcess";
16import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";16import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
17import * as AcpErrors from "effect-acp/errors";17import * as AcpErrors from "effect-acp/errors";
1818
19import { collectUint8StreamText } from "../stream/collectUint8StreamText.ts";19import { collectUint8StreamText } from "../stream/collectUint8StreamText.ts";
...@@ -202,9 +202,7 @@ export const resolveAntigravityInstanceDirectories = Effect.fn(...@@ -202,9 +202,7 @@ export const resolveAntigravityInstanceDirectories = Effect.fn(
202)(function* (stateDir: string, instanceId: ProviderInstanceId) {202)(function* (stateDir: string, instanceId: ProviderInstanceId) {
203 const crypto = yield* Crypto.Crypto;203 const crypto = yield* Crypto.Crypto;
204 const path = yield* Path.Path;204 const path = yield* Path.Path;
205 const key = Encoding.encodeHex(205 const key = Hex.encode(yield* crypto.digest("SHA-256", new TextEncoder().encode(instanceId)));
206 yield* crypto.digest("SHA-256", new TextEncoder().encode(instanceId)),
207 );
208 return {206 return {
209 profile: path.join(stateDir, "providers", "antigravity", key),207 profile: path.join(stateDir, "providers", "antigravity", key),
210 runtimeTemp: path.join(stateDir, "antigravity-tmp", key.slice(0, 12)),208 runtimeTemp: path.join(stateDir, "antigravity-tmp", key.slice(0, 12)),
apps/server/src/provider/opencode2/OpenCode2Client.events.test.ts+1-1
...@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer";...@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import { TestClock } from "effect/testing";9import { TestClock } from "effect/testing";
10import { HttpClient, HttpClientResponse } from "effect/unstable/http";10import { HttpClient, HttpClientResponse } from "effect/http";
11import { describe } from "vite-plus/test";11import { describe } from "vite-plus/test";
1212
13import * as OpenCode2Client from "./OpenCode2Client.ts";13import * as OpenCode2Client from "./OpenCode2Client.ts";
apps/server/src/provider/opencode2/OpenCode2Client.live.test.ts+5-5
...@@ -11,7 +11,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -11,7 +11,7 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
11import { AbsolutePath, Location, Model, Provider } from "@opencode/client/effect";11import { AbsolutePath, Location, Model, Provider } from "@opencode/client/effect";
12import { assert, it } from "@effect/vitest";12import { assert, it } from "@effect/vitest";
13import * as Effect from "effect/Effect";13import * as Effect from "effect/Effect";
14import * as Encoding from "effect/Encoding";14import * as Base64Url from "effect/encoding/Base64Url";
15import * as Fiber from "effect/Fiber";15import * as Fiber from "effect/Fiber";
16import * as FileSystem from "effect/FileSystem";16import * as FileSystem from "effect/FileSystem";
17import * as Filter from "effect/Filter";17import * as Filter from "effect/Filter";
...@@ -19,8 +19,8 @@ import * as Layer from "effect/Layer";...@@ -19,8 +19,8 @@ import * as Layer from "effect/Layer";
19import * as Option from "effect/Option";19import * as Option from "effect/Option";
20import * as Path from "effect/Path";20import * as Path from "effect/Path";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import { FetchHttpClient } from "effect/unstable/http";22import { FetchHttpClient } from "effect/http";
23import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";23import { ChildProcess, ChildProcessSpawner } from "effect/process";
24import * as NodeCrypto from "node:crypto";24import * as NodeCrypto from "node:crypto";
25import { describe } from "vite-plus/test";25import { describe } from "vite-plus/test";
2626
...@@ -36,7 +36,7 @@ const startServer = Effect.fn("OpenCode2ClientLive.startServer")(function* (bina...@@ -36,7 +36,7 @@ const startServer = Effect.fn("OpenCode2ClientLive.startServer")(function* (bina
36 const directory = path.join(root, "work");36 const directory = path.join(root, "work");
37 yield* fs.makeDirectory(directory);37 yield* fs.makeDirectory(directory);
38 // Non-ASCII on purpose: OpenCode decodes Basic credentials as UTF-8.38 // Non-ASCII on purpose: OpenCode decodes Basic credentials as UTF-8.
39 const password = `${Encoding.encodeBase64Url(NodeCrypto.randomBytes(32))}-pässwörd€`;39 const password = `${Base64Url.encode(NodeCrypto.randomBytes(32))}-pässwörd€`;
40 const child = yield* spawner.spawn(40 const child = yield* spawner.spawn(
41 ChildProcess.make(binary, ["serve", "--hostname=127.0.0.1", "--port=0"], {41 ChildProcess.make(binary, ["serve", "--hostname=127.0.0.1", "--port=0"], {
42 cwd: directory,42 cwd: directory,
...@@ -89,7 +89,7 @@ describe.runIf(binaryPath !== undefined)("OpenCode2Client live", () => {...@@ -89,7 +89,7 @@ describe.runIf(binaryPath !== undefined)("OpenCode2Client live", () => {
89 });89 });
9090
91 const info = yield* client.server.info();91 const info = yield* client.server.info();
92 assert.strictEqual(info.version, "2.0.18");92 assert.strictEqual(info.version, "2.0.23");
93 assert.strictEqual(info.pid, server.pid);93 assert.strictEqual(info.pid, server.pid);
9494
95 const session = yield* client.session.create({95 const session = yield* client.session.create({
apps/server/src/provider/opencode2/OpenCode2Client.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Redacted from "effect/Redacted";4import * as Redacted from "effect/Redacted";
5import { HttpClient, HttpClientResponse } from "effect/unstable/http";5import { HttpClient, HttpClientResponse } from "effect/http";
6import { describe } from "vite-plus/test";6import { describe } from "vite-plus/test";
77
8import * as OpenCode2Client from "./OpenCode2Client.ts";8import * as OpenCode2Client from "./OpenCode2Client.ts";
apps/server/src/provider/opencode2/OpenCode2Client.ts+5-5
...@@ -8,11 +8,11 @@ import * as Redacted from "effect/Redacted";...@@ -8,11 +8,11 @@ import * as Redacted from "effect/Redacted";
8import * as Result from "effect/Result";8import * as Result from "effect/Result";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import * as Sse from "effect/unstable/encoding/Sse";11import * as Sse from "effect/encoding/Sse";
12import * as HttpClient from "effect/unstable/http/HttpClient";12import * as HttpClient from "effect/http/HttpClient";
13import * as HttpClientError from "effect/unstable/http/HttpClientError";13import * as HttpClientError from "effect/http/HttpClientError";
14import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";14import * as HttpClientRequest from "effect/http/HttpClientRequest";
15import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";15import * as HttpClientResponse from "effect/http/HttpClientResponse";
1616
17/** OpenCode 2 accepts only HTTP Basic auth, always with this user name. */17/** OpenCode 2 accepts only HTTP Basic auth, always with this user name. */
18const OPENCODE_USERNAME = "opencode";18const OPENCODE_USERNAME = "opencode";
apps/server/src/provider/opencode2/OpenCode2Server.live.test.ts+2-2
...@@ -19,8 +19,8 @@ import * as Path from "effect/Path";...@@ -19,8 +19,8 @@ import * as Path from "effect/Path";
19import * as Redacted from "effect/Redacted";19import * as Redacted from "effect/Redacted";
20import * as Scope from "effect/Scope";20import * as Scope from "effect/Scope";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import { FetchHttpClient } from "effect/unstable/http";22import { FetchHttpClient } from "effect/http";
23import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";23import { ChildProcess, ChildProcessSpawner } from "effect/process";
24import { describe } from "vite-plus/test";24import { describe } from "vite-plus/test";
2525
26import * as OpenCodeRuntime from "../opencodeRuntime.ts";26import * as OpenCodeRuntime from "../opencodeRuntime.ts";
apps/server/src/provider/opencode2/OpenCode2Server.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer";...@@ -12,7 +12,7 @@ import * as Layer from "effect/Layer";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as Redacted from "effect/Redacted";13import * as Redacted from "effect/Redacted";
14import * as TestClock from "effect/testing/TestClock";14import * as TestClock from "effect/testing/TestClock";
15import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/unstable/http";15import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/http";
16import { describe } from "vite-plus/test";16import { describe } from "vite-plus/test";
1717
18import * as OpenCodeRuntime from "../opencodeRuntime.ts";18import * as OpenCodeRuntime from "../opencodeRuntime.ts";
apps/server/src/provider/opencode2/OpenCode2Server.ts+3-3
...@@ -9,11 +9,11 @@ import type { OpenCodeClient } from "@opencode/client/effect";...@@ -9,11 +9,11 @@ import type { OpenCodeClient } from "@opencode/client/effect";
9import * as Context from "effect/Context";9import * as Context from "effect/Context";
10import * as Crypto from "effect/Crypto";10import * as Crypto from "effect/Crypto";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Encoding from "effect/Encoding";12import * as Base64Url from "effect/encoding/Base64Url";
13import * as Layer from "effect/Layer";13import * as Layer from "effect/Layer";
14import * as P from "effect/Predicate";14import * as P from "effect/Predicate";
15import * as Redacted from "effect/Redacted";15import * as Redacted from "effect/Redacted";
16import * as HttpClientError from "effect/unstable/http/HttpClientError";16import * as HttpClientError from "effect/http/HttpClientError";
1717
18import { OpenCodeRuntimeError } from "../opencodeRuntime.ts";18import { OpenCodeRuntimeError } from "../opencodeRuntime.ts";
19import * as OpenCodeServerOwner from "../OpenCodeServerOwner.ts";19import * as OpenCodeServerOwner from "../OpenCodeServerOwner.ts";
...@@ -45,7 +45,7 @@ export class OpenCode2Server extends Context.Service<...@@ -45,7 +45,7 @@ export class OpenCode2Server extends Context.Service<
45export const generatePassword = Effect.gen(function* () {45export const generatePassword = Effect.gen(function* () {
46 const crypto = yield* Crypto.Crypto;46 const crypto = yield* Crypto.Crypto;
47 const bytes = yield* crypto.randomBytes(32).pipe(Effect.orDie);47 const bytes = yield* crypto.randomBytes(32).pipe(Effect.orDie);
48 return Redacted.make(Encoding.encodeBase64Url(bytes), { label: "OPENCODE_PASSWORD" });48 return Redacted.make(Base64Url.encode(bytes), { label: "OPENCODE_PASSWORD" });
49});49});
5050
51/**51/**
apps/server/src/provider/opencodeRuntime.environment.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -12,7 +12,7 @@ import * as FileSystem from "effect/FileSystem";
12import * as Layer from "effect/Layer";12import * as Layer from "effect/Layer";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as TestClock from "effect/testing/TestClock";14import * as TestClock from "effect/testing/TestClock";
15import { FetchHttpClient, HttpClient } from "effect/unstable/http";15import { FetchHttpClient, HttpClient } from "effect/http";
16import { describe, expect, it } from "vite-plus/test";16import { describe, expect, it } from "vite-plus/test";
1717
18import * as OpenCodeRuntime from "./opencodeRuntime.ts";18import * as OpenCodeRuntime from "./opencodeRuntime.ts";
apps/server/src/provider/opencodeRuntime.ts+1-1
...@@ -28,7 +28,7 @@ import * as Result from "effect/Result";...@@ -28,7 +28,7 @@ import * as Result from "effect/Result";
28import * as Scope from "effect/Scope";28import * as Scope from "effect/Scope";
29import * as Schema from "effect/Schema";29import * as Schema from "effect/Schema";
30import * as Stream from "effect/Stream";30import * as Stream from "effect/Stream";
31import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";31import { ChildProcess, ChildProcessSpawner } from "effect/process";
3232
33import { signalProcessGroup } from "../process/processGroup.ts";33import { signalProcessGroup } from "../process/processGroup.ts";
34import { isWindowsCommandNotFound } from "../processRunner.ts";34import { isWindowsCommandNotFound } from "../processRunner.ts";
apps/server/src/provider/opencodeVersionProbe.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { assert, describe, it } from "@effect/vitest";1import { assert, describe, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { HttpClient, HttpClientError, HttpClientRequest } from "effect/unstable/http";3import { HttpClient, HttpClientError, HttpClientRequest } from "effect/http";
44
5import * as OpenCodeRuntime from "./opencodeRuntime.ts";5import * as OpenCodeRuntime from "./opencodeRuntime.ts";
6import {6import {
apps/server/src/provider/opencodeVersionProbe.ts+1-1
...@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";...@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";
6import * as Exit from "effect/Exit";6import * as Exit from "effect/Exit";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { HttpClient, HttpClientRequest } from "effect/unstable/http";9import { HttpClient, HttpClientRequest } from "effect/http";
1010
11import * as OpenCodeRuntime from "./opencodeRuntime.ts";11import * as OpenCodeRuntime from "./opencodeRuntime.ts";
12import { parseGenericCliVersion } from "./providerSnapshot.ts";12import { parseGenericCliVersion } from "./providerSnapshot.ts";
apps/server/src/provider/providerMaintenance.test.ts+2-2
...@@ -11,8 +11,8 @@ import * as Crypto from "effect/Crypto";...@@ -11,8 +11,8 @@ import * as Crypto from "effect/Crypto";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Sink from "effect/Sink";12import * as Sink from "effect/Sink";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import { HttpClient } from "effect/unstable/http";14import { HttpClient } from "effect/http";
15import { ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcessSpawner } from "effect/process";
16import {16import {
17 createProviderVersionAdvisory,17 createProviderVersionAdvisory,
18 makeTargetedProviderUpdateAction,18 makeTargetedProviderUpdateAction,
apps/server/src/provider/providerMaintenance.ts+2-2
...@@ -17,8 +17,8 @@ import * as Option from "effect/Option";...@@ -17,8 +17,8 @@ import * as Option from "effect/Option";
17import * as Path from "effect/Path";17import * as Path from "effect/Path";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import { HttpClient, HttpClientRequest } from "effect/unstable/http";20import { HttpClient, HttpClientRequest } from "effect/http";
21import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";21import { ChildProcess, ChildProcessSpawner } from "effect/process";
2222
23import { collectUint8StreamText } from "../stream/collectUint8StreamText.ts";23import { collectUint8StreamText } from "../stream/collectUint8StreamText.ts";
2424
apps/server/src/provider/providerMaintenanceRunner.test.ts+2-2
...@@ -15,8 +15,8 @@ import * as Ref from "effect/Ref";...@@ -15,8 +15,8 @@ import * as Ref from "effect/Ref";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import * as Sink from "effect/Sink";16import * as Sink from "effect/Sink";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import { HttpClient, HttpClientResponse } from "effect/unstable/http";18import { HttpClient, HttpClientResponse } from "effect/http";
19import { ChildProcessSpawner } from "effect/unstable/process";19import { ChildProcessSpawner } from "effect/process";
20import { HostProcessEnvironment, HostProcessPlatform } from "@t3tools/shared/hostProcess";20import { HostProcessEnvironment, HostProcessPlatform } from "@t3tools/shared/hostProcess";
21import { SpawnExecutableResolution } from "@t3tools/shared/shell";21import { SpawnExecutableResolution } from "@t3tools/shared/shell";
2222
apps/server/src/provider/providerMaintenanceRunner.ts+2-2
...@@ -18,8 +18,8 @@ import * as Layer from "effect/Layer";...@@ -18,8 +18,8 @@ import * as Layer from "effect/Layer";
18import * as Option from "effect/Option";18import * as Option from "effect/Option";
19import * as Ref from "effect/Ref";19import * as Ref from "effect/Ref";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import { HttpClient } from "effect/unstable/http";21import { HttpClient } from "effect/http";
22import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcess, ChildProcessSpawner } from "effect/process";
2323
24import * as ModelManifest from "./ModelManifest.ts";24import * as ModelManifest from "./ModelManifest.ts";
25import { resolveProviderCompatibility } from "./providerCompatibility.ts";25import { resolveProviderCompatibility } from "./providerCompatibility.ts";
apps/server/src/provider/providerSnapshot.test.ts+1-1
...@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer";...@@ -7,7 +7,7 @@ import * as Layer from "effect/Layer";
7import * as PlatformError from "effect/PlatformError";7import * as PlatformError from "effect/PlatformError";
8import * as Sink from "effect/Sink";8import * as Sink from "effect/Sink";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcess, ChildProcessSpawner } from "effect/process";
1111
12import {12import {
13 isCommandMissingCause,13 isCommandMissingCause,
apps/server/src/provider/providerSnapshot.ts+1-1
...@@ -15,7 +15,7 @@ import * as Effect from "effect/Effect";...@@ -15,7 +15,7 @@ import * as Effect from "effect/Effect";
15import * as PlatformError from "effect/PlatformError";15import * as PlatformError from "effect/PlatformError";
16import * as Schema from "effect/Schema";16import * as Schema from "effect/Schema";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";18import { ChildProcess, ChildProcessSpawner } from "effect/process";
19import { readCustomModelEntries } from "@t3tools/shared/model";19import { readCustomModelEntries } from "@t3tools/shared/model";
20import { isWindowsCommandNotFound } from "../processRunner.ts";20import { isWindowsCommandNotFound } from "../processRunner.ts";
21import { createProviderVersionAdvisory } from "./providerMaintenance.ts";21import { createProviderVersionAdvisory } from "./providerMaintenance.ts";
apps/server/src/provider/testFixtures/opencodeProbeResponses.ts+1-1
...@@ -3,7 +3,7 @@...@@ -3,7 +3,7 @@
3 * `HttpClient` so the version probe runs against real bytes.3 * `HttpClient` so the version probe runs against real bytes.
4 */4 */
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import { HttpClient, HttpClientResponse } from "effect/unstable/http";6import { HttpClient, HttpClientResponse } from "effect/http";
77
8interface RecordedResponse {8interface RecordedResponse {
9 readonly status: number;9 readonly status: number;
apps/server/src/pullRequest/AzureDevOpsPullRequestCli.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { afterEach, assert, expect, it, vi } from "@effect/vitest";1import { afterEach, assert, expect, it, vi } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import { ChildProcessSpawner } from "effect/unstable/process";4import { ChildProcessSpawner } from "effect/process";
55
6import * as AzureDevOpsCli from "../sourceControl/AzureDevOpsCli.ts";6import * as AzureDevOpsCli from "../sourceControl/AzureDevOpsCli.ts";
7import * as AzureDevOpsPullRequestCli from "./AzureDevOpsPullRequestCli.ts";7import * as AzureDevOpsPullRequestCli from "./AzureDevOpsPullRequestCli.ts";
apps/server/src/pullRequest/GitHubPullRequestCli.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Fiber from "effect/Fiber";...@@ -6,7 +6,7 @@ import * as Fiber from "effect/Fiber";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as TestClock from "effect/testing/TestClock";8import * as TestClock from "effect/testing/TestClock";
9import { ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcessSpawner } from "effect/process";
1010
11import * as GitHubCli from "../sourceControl/GitHubCli.ts";11import * as GitHubCli from "../sourceControl/GitHubCli.ts";
12import * as VcsProcess from "../vcs/VcsProcess.ts";12import * as VcsProcess from "../vcs/VcsProcess.ts";
apps/server/src/pullRequest/GitLabPullRequestCli.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { afterEach, assert, expect, it, vi } from "@effect/vitest";1import { afterEach, assert, expect, it, vi } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import { ChildProcessSpawner } from "effect/unstable/process";4import { ChildProcessSpawner } from "effect/process";
55
6import * as GitLabCli from "../sourceControl/GitLabCli.ts";6import * as GitLabCli from "../sourceControl/GitLabCli.ts";
7import * as GitLabPullRequestCli from "./GitLabPullRequestCli.ts";7import * as GitLabPullRequestCli from "./GitLabPullRequestCli.ts";
apps/server/src/pullRequest/PullRequestReadCache.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";...@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";
6import * as Fiber from "effect/Fiber";6import * as Fiber from "effect/Fiber";
7import * as FileSystem from "effect/FileSystem";7import * as FileSystem from "effect/FileSystem";
8import * as TestClock from "effect/testing/TestClock";8import * as TestClock from "effect/testing/TestClock";
9import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";9import * as KeyValueStore from "effect/persistence/KeyValueStore";
10import * as PullRequestReadCache from "./PullRequestReadCache.ts";10import * as PullRequestReadCache from "./PullRequestReadCache.ts";
1111
12const cacheLayer = (directory: string) =>12const cacheLayer = (directory: string) =>
apps/server/src/pullRequest/PullRequestReadCache.ts+6-6
...@@ -4,7 +4,7 @@ import * as Equal from "effect/Equal";...@@ -4,7 +4,7 @@ import * as Equal from "effect/Equal";
4import * as Hash from "effect/Hash";4import * as Hash from "effect/Hash";
5import { PullRequestOperationError, PullRequestUnavailableError } from "@t3tools/contracts";5import { PullRequestOperationError, PullRequestUnavailableError } from "@t3tools/contracts";
6import * as Crypto from "effect/Crypto";6import * as Crypto from "effect/Crypto";
7import * as Encoding from "effect/Encoding";7import * as Hex from "effect/encoding/Hex";
8import * as Context from "effect/Context";8import * as Context from "effect/Context";
9import * as Duration from "effect/Duration";9import * as Duration from "effect/Duration";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
...@@ -13,10 +13,10 @@ import * as Layer from "effect/Layer";...@@ -13,10 +13,10 @@ import * as Layer from "effect/Layer";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as Schema from "effect/Schema";14import * as Schema from "effect/Schema";
15import * as Semaphore from "effect/Semaphore";15import * as Semaphore from "effect/Semaphore";
16import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";16import * as KeyValueStore from "effect/persistence/KeyValueStore";
17import * as Persistable from "effect/unstable/persistence/Persistable";17import * as Persistable from "effect/persistence/Persistable";
18import * as PersistedCache from "effect/unstable/persistence/PersistedCache";18import * as PersistedCache from "effect/persistence/PersistedCache";
19import * as Persistence from "effect/unstable/persistence/Persistence";19import * as Persistence from "effect/persistence/Persistence";
20import * as ServerConfig from "../config.ts";20import * as ServerConfig from "../config.ts";
2121
22const CONCURRENT_READS = 512;22const CONCURRENT_READS = 512;
...@@ -72,7 +72,7 @@ export const make = Effect.gen(function* () {...@@ -72,7 +72,7 @@ export const make = Effect.gen(function* () {
72 let enabled = true;72 let enabled = true;
73 const lock = yield* Semaphore.make(CONCURRENT_READS);73 const lock = yield* Semaphore.make(CONCURRENT_READS);
74 const digest = (key: string) =>74 const digest = (key: string) =>
75 crypto.digest("SHA-256", new TextEncoder().encode(key)).pipe(Effect.map(Encoding.encodeHex));75 crypto.digest("SHA-256", new TextEncoder().encode(key)).pipe(Effect.map(Hex.encode));
76 const revisions = yield* Cache.makeWith(76 const revisions = yield* Cache.makeWith(
77 () =>77 () =>
78 backing78 backing
apps/server/src/pullRequest/PullRequestService.test.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as NodeServices from "@effect/platform-node/NodeServices";1import * as NodeServices from "@effect/platform-node/NodeServices";
2import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";2import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
3import * as KeyValueStore from "effect/unstable/persistence/KeyValueStore";3import * as KeyValueStore from "effect/persistence/KeyValueStore";
4import { assert, it } from "@effect/vitest";4import { assert, it } from "@effect/vitest";
5import * as Cause from "effect/Cause";5import * as Cause from "effect/Cause";
6import * as Clock from "effect/Clock";6import * as Clock from "effect/Clock";
apps/server/src/pullRequest/gitHubConditionalChecks.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as Redacted from "effect/Redacted";6import * as Redacted from "effect/Redacted";
7import { ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcessSpawner } from "effect/process";
8import type { PullRequestCheck } from "@t3tools/contracts";8import type { PullRequestCheck } from "@t3tools/contracts";
99
10import * as GitHubCli from "../sourceControl/GitHubCli.ts";10import * as GitHubCli from "../sourceControl/GitHubCli.ts";
apps/server/src/pullRequest/githubStackActions.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as Layer from "effect/Layer";...@@ -3,7 +3,7 @@ import * as Layer from "effect/Layer";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Fiber from "effect/Fiber";4import * as Fiber from "effect/Fiber";
5import * as TestClock from "effect/testing/TestClock";5import * as TestClock from "effect/testing/TestClock";
6import { ChildProcessSpawner } from "effect/unstable/process";6import { ChildProcessSpawner } from "effect/process";
7import * as GitHubCli from "../sourceControl/GitHubCli.ts";7import * as GitHubCli from "../sourceControl/GitHubCli.ts";
8import { runGitHubStackAction as runStackAction } from "./githubStackActions.ts";8import { runGitHubStackAction as runStackAction } from "./githubStackActions.ts";
99
apps/server/src/pullRequest/http.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { AuthOrchestrationReadScope, EnvironmentHttpApi } from "@t3tools/contracts";1import { AuthOrchestrationReadScope, EnvironmentHttpApi } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";3import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
44
5import { annotateEnvironmentRequest, requireEnvironmentScope } from "../auth/http.ts";5import { annotateEnvironmentRequest, requireEnvironmentScope } from "../auth/http.ts";
6import * as PullRequestService from "./PullRequestService.ts";6import * as PullRequestService from "./PullRequestService.ts";
apps/server/src/pullRequest/linkedThreads.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, expect, it } from "@effect/vitest";1import { assert, expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import * as SqlClient from "effect/unstable/sql/SqlClient";4import * as SqlClient from "effect/sql/SqlClient";
55
6import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";6import { SqlitePersistenceMemory } from "../persistence/Layers/Sqlite.ts";
7import { listLinkedPullRequestThreads } from "./linkedThreads.ts";7import { listLinkedPullRequestThreads } from "./linkedThreads.ts";
apps/server/src/pullRequest/linkedThreads.ts+1-1
...@@ -10,7 +10,7 @@ import {...@@ -10,7 +10,7 @@ import {
10} from "@t3tools/contracts";10} from "@t3tools/contracts";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as SqlClient from "effect/unstable/sql/SqlClient";13import * as SqlClient from "effect/sql/SqlClient";
1414
15const decodeLinkedThreads = Schema.decodeUnknownEffect(PullRequestLinkedThreadsResult);15const decodeLinkedThreads = Schema.decodeUnknownEffect(PullRequestLinkedThreadsResult);
1616
apps/server/src/relay/AgentAwarenessRelay.test.ts+1-1
...@@ -25,7 +25,7 @@ import * as Ref from "effect/Ref";...@@ -25,7 +25,7 @@ import * as Ref from "effect/Ref";
25import * as Schema from "effect/Schema";25import * as Schema from "effect/Schema";
26import * as Stream from "effect/Stream";26import * as Stream from "effect/Stream";
27import * as TestClock from "effect/testing/TestClock";27import * as TestClock from "effect/testing/TestClock";
28import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";28import * as FetchHttpClient from "effect/http/FetchHttpClient";
2929
30import * as ServerSecretStore from "../auth/ServerSecretStore.ts";30import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
31import {31import {
apps/server/src/relay/AgentAwarenessRelay.ts+4-4
...@@ -32,10 +32,10 @@ import * as Queue from "effect/Queue";...@@ -32,10 +32,10 @@ import * as Queue from "effect/Queue";
32import * as Ref from "effect/Ref";32import * as Ref from "effect/Ref";
33import type * as Scope from "effect/Scope";33import type * as Scope from "effect/Scope";
34import * as Stream from "effect/Stream";34import * as Stream from "effect/Stream";
35import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";35import * as FetchHttpClient from "effect/http/FetchHttpClient";
36import * as HttpClient from "effect/unstable/http/HttpClient";36import * as HttpClient from "effect/http/HttpClient";
37import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";37import * as HttpClientRequest from "effect/http/HttpClientRequest";
38import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";38import * as HttpApiClient from "effect/http-api/HttpApiClient";
3939
40import * as ServerSecretStore from "../auth/ServerSecretStore.ts";40import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
41import {41import {
apps/server/src/resourceTelemetry/DesktopTelemetryReceiver.ts+1-1
...@@ -23,7 +23,7 @@ import * as Schema from "effect/Schema";...@@ -23,7 +23,7 @@ import * as Schema from "effect/Schema";
23import * as Semaphore from "effect/Semaphore";23import * as Semaphore from "effect/Semaphore";
24import * as Scope from "effect/Scope";24import * as Scope from "effect/Scope";
25import * as Stream from "effect/Stream";25import * as Stream from "effect/Stream";
26import * as Ndjson from "effect/unstable/encoding/Ndjson";26import * as Ndjson from "effect/encoding/Ndjson";
2727
28import * as ServerConfig from "../config.ts";28import * as ServerConfig from "../config.ts";
29import * as ServerSettings from "../serverSettings.ts";29import * as ServerSettings from "../serverSettings.ts";
apps/server/src/resourceTelemetry/HostResources.ts+1-1
...@@ -7,7 +7,7 @@ import * as DateTime from "effect/DateTime";...@@ -7,7 +7,7 @@ import * as DateTime from "effect/DateTime";
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import * as FileSystem from "effect/FileSystem";8import * as FileSystem from "effect/FileSystem";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcess, ChildProcessSpawner } from "effect/process";
1111
12export class HostResources extends Context.Service<12export class HostResources extends Context.Service<
13 HostResources,13 HostResources,
apps/server/src/resourceTelemetry/NativeTelemetryClient.ts+2-2
...@@ -32,8 +32,8 @@ import * as Schema from "effect/Schema";...@@ -32,8 +32,8 @@ import * as Schema from "effect/Schema";
32import * as Semaphore from "effect/Semaphore";32import * as Semaphore from "effect/Semaphore";
33import * as Scope from "effect/Scope";33import * as Scope from "effect/Scope";
34import * as Stream from "effect/Stream";34import * as Stream from "effect/Stream";
35import * as Ndjson from "effect/unstable/encoding/Ndjson";35import * as Ndjson from "effect/encoding/Ndjson";
36import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";36import { ChildProcess, ChildProcessSpawner } from "effect/process";
3737
38import * as ResourceMonitorBinary from "./ResourceMonitorBinary.ts";38import * as ResourceMonitorBinary from "./ResourceMonitorBinary.ts";
39import * as ServerConfig from "../config.ts";39import * as ServerConfig from "../config.ts";
apps/server/src/scheduledTasks/ScheduledTaskService.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as DateTime from "effect/DateTime";...@@ -8,7 +8,7 @@ import * as DateTime from "effect/DateTime";
8import * as Effect from "effect/Effect";8import * as Effect from "effect/Effect";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Logger from "effect/Logger";10import * as Logger from "effect/Logger";
11import * as SqlClient from "effect/unstable/sql/SqlClient";11import * as SqlClient from "effect/sql/SqlClient";
1212
13import * as Deferred from "effect/Deferred";13import * as Deferred from "effect/Deferred";
14import * as Ref from "effect/Ref";14import * as Ref from "effect/Ref";
apps/server/src/scheduledTasks/ScheduledTaskService.ts+1-1
...@@ -26,7 +26,7 @@ import * as Ref from "effect/Ref";...@@ -26,7 +26,7 @@ import * as Ref from "effect/Ref";
26import * as Result from "effect/Result";26import * as Result from "effect/Result";
27import * as Schema from "effect/Schema";27import * as Schema from "effect/Schema";
28import * as Stream from "effect/Stream";28import * as Stream from "effect/Stream";
29import * as SqlClient from "effect/unstable/sql/SqlClient";29import * as SqlClient from "effect/sql/SqlClient";
3030
31import * as ThreadLaunchService from "../orchestration-v2/ThreadLaunchService.ts";31import * as ThreadLaunchService from "../orchestration-v2/ThreadLaunchService.ts";
32import * as ThreadManagementService from "../orchestration-v2/ThreadManagementService.ts";32import * as ThreadManagementService from "../orchestration-v2/ThreadManagementService.ts";
apps/server/src/scheduling/Scheduler.integration.test.ts+1-1
...@@ -15,7 +15,7 @@ import * as Effect from "effect/Effect";...@@ -15,7 +15,7 @@ import * as Effect from "effect/Effect";
15import * as Layer from "effect/Layer";15import * as Layer from "effect/Layer";
16import * as Queue from "effect/Queue";16import * as Queue from "effect/Queue";
17import * as Ref from "effect/Ref";17import * as Ref from "effect/Ref";
18import * as SqlClient from "effect/unstable/sql/SqlClient";18import * as SqlClient from "effect/sql/SqlClient";
19import * as TestClock from "effect/testing/TestClock";19import * as TestClock from "effect/testing/TestClock";
2020
21import * as ProjectionStore from "../orchestration-v2/ProjectionStore.ts";21import * as ProjectionStore from "../orchestration-v2/ProjectionStore.ts";
apps/server/src/server.ts+7-6
...@@ -18,8 +18,8 @@ import * as Effect from "effect/Effect";...@@ -18,8 +18,8 @@ import * as Effect from "effect/Effect";
18import * as Layer from "effect/Layer";18import * as Layer from "effect/Layer";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import * as Schedule from "effect/Schedule";20import * as Schedule from "effect/Schedule";
21import { FetchHttpClient, HttpRouter, HttpServer } from "effect/unstable/http";21import { FetchHttpClient, HttpRouter, HttpServer } from "effect/http";
22import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";22import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
2323
24import * as BackgroundPolicy from "./background/BackgroundPolicy.ts";24import * as BackgroundPolicy from "./background/BackgroundPolicy.ts";
25import * as HostPowerMonitor from "./background/HostPowerMonitor.ts";25import * as HostPowerMonitor from "./background/HostPowerMonitor.ts";
...@@ -32,7 +32,7 @@ import {...@@ -32,7 +32,7 @@ import {
32 staticAndDevRouteLayer,32 staticAndDevRouteLayer,
33 browserApiCorsLayer,33 browserApiCorsLayer,
34 httpCompressionLayer,34 httpCompressionLayer,
35 untracedRequestsLayer,35 withUntracedRequests,
36} from "./http.ts";36} from "./http.ts";
37import { guardHttpResponseWriteErrors } from "./httpResponseErrorGuard.ts";37import { guardHttpResponseWriteErrors } from "./httpResponseErrorGuard.ts";
38import { fixPath } from "./os-jank.ts";38import { fixPath } from "./os-jank.ts";
...@@ -660,8 +660,6 @@ const makeRoutesLayer = Layer.mergeAll(...@@ -660,8 +660,6 @@ const makeRoutesLayer = Layer.mergeAll(
660 McpHttpServer.layer.pipe(660 McpHttpServer.layer.pipe(
661 Layer.provide(ProviderAdapterRegistry.layerFromProviderInstanceRegistry),661 Layer.provide(ProviderAdapterRegistry.layerFromProviderInstanceRegistry),
662 ),662 ),
663 // Last, so no route layer can replace the server's one TracerDisabledWhen.
664 untracedRequestsLayer,
665).pipe(663).pipe(
666 // Both transports consume the same service instance, so caches single-flight across clients664 // Both transports consume the same service instance, so caches single-flight across clients
667 // and mutations observed on WebSocket invalidate patches subsequently read over HTTP.665 // and mutations observed on WebSocket invalidate patches subsequently read over HTTP.
...@@ -1012,7 +1010,10 @@ const makeServerLayer = Layer.unwrap(...@@ -1012,7 +1010,10 @@ const makeServerLayer = Layer.unwrap(
1012 const routesLayer = HttpRouter.serve(makeRoutesLayer.pipe(Layer.provide(launcherLayer)), {1010 const routesLayer = HttpRouter.serve(makeRoutesLayer.pipe(Layer.provide(launcherLayer)), {
1013 disableLogger: !config.logWebSocketEvents,1011 disableLogger: !config.logWebSocketEvents,
1014 routerConfig: HTTP_ROUTER_CONFIG,1012 routerConfig: HTTP_ROUTER_CONFIG,
1015 }).pipe(Layer.tap(() => Deferred.succeed(routesReady, undefined).pipe(Effect.orDie)));1013 }).pipe(
1014 withUntracedRequests,
1015 Layer.tap(() => Deferred.succeed(routesReady, undefined).pipe(Effect.orDie)),
1016 );
1016 const serverApplicationLayer = Layer.mergeAll(1017 const serverApplicationLayer = Layer.mergeAll(
1017 routesLayer,1018 routesLayer,
1018 httpListeningLayer,1019 httpListeningLayer,
apps/server/src/serverLogger.test.ts+2-2
...@@ -6,8 +6,8 @@ import * as Effect from "effect/Effect";...@@ -6,8 +6,8 @@ import * as Effect from "effect/Effect";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as Tracer from "effect/Tracer";8import * as Tracer from "effect/Tracer";
9import * as HttpClient from "effect/unstable/http/HttpClient";9import * as HttpClient from "effect/http/HttpClient";
10import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";10import * as HttpClientResponse from "effect/http/HttpClientResponse";
1111
12import { DEFAULT_SIGNAL_EXPORT } from "@t3tools/shared/observability";12import { DEFAULT_SIGNAL_EXPORT } from "@t3tools/shared/observability";
13import * as OtelEnvironment from "@t3tools/shared/otelEnvironment";13import * as OtelEnvironment from "@t3tools/shared/otelEnvironment";
apps/server/src/serverLogger.ts+2-2
...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Logger from "effect/Logger";4import * as Logger from "effect/Logger";
5import * as References from "effect/References";5import * as References from "effect/References";
6import * as OtlpExporter from "effect/unstable/observability/OtlpExporter";6import * as OtlpExporter from "effect/observability/OtlpExporter";
7import * as OtlpLogger from "effect/unstable/observability/OtlpLogger";7import * as OtlpLogger from "effect/observability/OtlpLogger";
88
9import * as ServerConfig from "./config.ts";9import * as ServerConfig from "./config.ts";
1010
apps/server/src/serverSettings.test.ts+1-1
...@@ -24,7 +24,7 @@ import * as PlatformError from "effect/PlatformError";...@@ -24,7 +24,7 @@ import * as PlatformError from "effect/PlatformError";
24import * as Schema from "effect/Schema";24import * as Schema from "effect/Schema";
25import * as Stream from "effect/Stream";25import * as Stream from "effect/Stream";
26import * as TestClock from "effect/testing/TestClock";26import * as TestClock from "effect/testing/TestClock";
27import * as SqlClient from "effect/unstable/sql/SqlClient";27import * as SqlClient from "effect/sql/SqlClient";
28import * as ServerSecretStore from "./auth/ServerSecretStore.ts";28import * as ServerSecretStore from "./auth/ServerSecretStore.ts";
29import * as ServerConfig from "./config.ts";29import * as ServerConfig from "./config.ts";
30import { SqlitePersistenceMemory } from "./persistence/Layers/Sqlite.ts";30import { SqlitePersistenceMemory } from "./persistence/Layers/Sqlite.ts";
apps/server/src/serverSettings.ts+1-1
...@@ -50,7 +50,7 @@ import * as SchemaTransformation from "effect/SchemaTransformation";...@@ -50,7 +50,7 @@ import * as SchemaTransformation from "effect/SchemaTransformation";
50import * as Semaphore from "effect/Semaphore";50import * as Semaphore from "effect/Semaphore";
51import * as Scope from "effect/Scope";51import * as Scope from "effect/Scope";
52import * as Stream from "effect/Stream";52import * as Stream from "effect/Stream";
53import * as SqlClient from "effect/unstable/sql/SqlClient";53import * as SqlClient from "effect/sql/SqlClient";
54import { writeFileStringAtomically } from "./atomicWrite.ts";54import { writeFileStringAtomically } from "./atomicWrite.ts";
55import { resolveSymlinkTarget } from "@t3tools/shared/symlink";55import { resolveSymlinkTarget } from "@t3tools/shared/symlink";
56import * as ServerConfig from "./config.ts";56import * as ServerConfig from "./config.ts";
apps/server/src/sourceControl/AzureDevOpsCli.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -5,7 +5,7 @@ import * as FileSystem from "effect/FileSystem";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as PlatformError from "effect/PlatformError";7import * as PlatformError from "effect/PlatformError";
8import { ChildProcessSpawner } from "effect/unstable/process";8import { ChildProcessSpawner } from "effect/process";
9import { VcsProcessExitError, VcsProcessSpawnError } from "@t3tools/contracts";9import { VcsProcessExitError, VcsProcessSpawnError } from "@t3tools/contracts";
1010
11import * as VcsProcess from "../vcs/VcsProcess.ts";11import * as VcsProcess from "../vcs/VcsProcess.ts";
apps/server/src/sourceControl/BitbucketApi.test.ts+1-6
...@@ -7,12 +7,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -7,12 +7,7 @@ import * as FileSystem from "effect/FileSystem";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as TestClock from "effect/testing/TestClock";9import * as TestClock from "effect/testing/TestClock";
10import {10import { HttpClient, HttpClientError, HttpClientRequest, HttpClientResponse } from "effect/http";
11 HttpClient,
12 HttpClientError,
13 HttpClientRequest,
14 HttpClientResponse,
15} from "effect/unstable/http";
1611
17import { GitCommandError } from "@t3tools/contracts";12import { GitCommandError } from "@t3tools/contracts";
18import * as BitbucketApi from "./BitbucketApi.ts";13import * as BitbucketApi from "./BitbucketApi.ts";
apps/server/src/sourceControl/BitbucketApi.ts+1-1
...@@ -15,7 +15,7 @@ import {...@@ -15,7 +15,7 @@ import {
15 type SourceControlRepositoryCloneUrls,15 type SourceControlRepositoryCloneUrls,
16 type SourceControlRepositoryVisibility,16 type SourceControlRepositoryVisibility,
17} from "@t3tools/contracts";17} from "@t3tools/contracts";
18import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";18import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
19import { sanitizeBranchFragment } from "@t3tools/shared/git";19import { sanitizeBranchFragment } from "@t3tools/shared/git";
20import {20import {
21 detectSourceControlProviderFromRemoteUrl,21 detectSourceControlProviderFromRemoteUrl,
apps/server/src/sourceControl/ForgejoCli.ts+2-2
...@@ -9,8 +9,8 @@ import * as Semaphore from "effect/Semaphore";...@@ -9,8 +9,8 @@ import * as Semaphore from "effect/Semaphore";
9import * as NodeOS from "node:os";9import * as NodeOS from "node:os";
10// @effect-diagnostics-next-line nodeBuiltinImport:off - fj storage paths use explicit Windows and POSIX layouts, independently of this process's platform.10// @effect-diagnostics-next-line nodeBuiltinImport:off - fj storage paths use explicit Windows and POSIX layouts, independently of this process's platform.
11import * as NodePath from "node:path";11import * as NodePath from "node:path";
12import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http";12import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/http";
13import { ChildProcessSpawner } from "effect/unstable/process";13import { ChildProcessSpawner } from "effect/process";
14import { decodeJsonResult } from "@t3tools/shared/schemaJson";14import { decodeJsonResult } from "@t3tools/shared/schemaJson";
15import { HostProcessPlatform } from "@t3tools/shared/hostProcess";15import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
16import * as VcsProcess from "../vcs/VcsProcess.ts";16import * as VcsProcess from "../vcs/VcsProcess.ts";
apps/server/src/sourceControl/GitHubCli.test.ts+1-1
...@@ -9,7 +9,7 @@ import * as Layer from "effect/Layer";...@@ -9,7 +9,7 @@ import * as Layer from "effect/Layer";
9import * as PlatformError from "effect/PlatformError";9import * as PlatformError from "effect/PlatformError";
10import * as Redacted from "effect/Redacted";10import * as Redacted from "effect/Redacted";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { ChildProcessSpawner } from "effect/unstable/process";12import { ChildProcessSpawner } from "effect/process";
13import { VcsProcessExitError, VcsProcessSpawnError } from "@t3tools/contracts";13import { VcsProcessExitError, VcsProcessSpawnError } from "@t3tools/contracts";
1414
15import * as VcsProcess from "../vcs/VcsProcess.ts";15import * as VcsProcess from "../vcs/VcsProcess.ts";
apps/server/src/sourceControl/GitHubSourceControlProvider.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as DateTime from "effect/DateTime";...@@ -3,7 +3,7 @@ import * as DateTime from "effect/DateTime";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import { ChildProcessSpawner } from "effect/unstable/process";6import { ChildProcessSpawner } from "effect/process";
77
8import * as VcsProcess from "../vcs/VcsProcess.ts";8import * as VcsProcess from "../vcs/VcsProcess.ts";
9import * as GitHubCli from "./GitHubCli.ts";9import * as GitHubCli from "./GitHubCli.ts";
apps/server/src/sourceControl/GitLabCli.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, it, afterEach, expect, vi } from "@effect/vitest";1import { assert, it, afterEach, expect, vi } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import { ChildProcessSpawner } from "effect/unstable/process";4import { ChildProcessSpawner } from "effect/process";
55
6import { VcsProcessExitError } from "@t3tools/contracts";6import { VcsProcessExitError } from "@t3tools/contracts";
77
apps/server/src/sourceControl/GitLabSourceControlProvider.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { ChildProcessSpawner } from "effect/unstable/process";5import { ChildProcessSpawner } from "effect/process";
66
7import * as GitLabCli from "./GitLabCli.ts";7import * as GitLabCli from "./GitLabCli.ts";
8import { parseGitLabAuthStatusHosts } from "./gitLabAuthStatus.ts";8import { parseGitLabAuthStatusHosts } from "./gitLabAuthStatus.ts";
apps/server/src/sourceControl/SourceControlDiscovery.test.ts+2-2
...@@ -7,8 +7,8 @@ import * as Layer from "effect/Layer";...@@ -7,8 +7,8 @@ import * as Layer from "effect/Layer";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import { ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcessSpawner } from "effect/process";
11import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/unstable/http";11import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/http";
12import { VcsProcessSpawnError } from "@t3tools/contracts";12import { VcsProcessSpawnError } from "@t3tools/contracts";
1313
14import * as ServerConfig from "../config.ts";14import * as ServerConfig from "../config.ts";
apps/server/src/sourceControl/SourceControlProviderRegistry.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as DateTime from "effect/DateTime";...@@ -4,7 +4,7 @@ import * as DateTime from "effect/DateTime";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import { ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcessSpawner } from "effect/process";
8import { VcsRepositoryDetectionError } from "@t3tools/contracts";8import { VcsRepositoryDetectionError } from "@t3tools/contracts";
99
10import * as ServerConfig from "../config.ts";10import * as ServerConfig from "../config.ts";
apps/server/src/sourceControl/SourceControlRepositoryService.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as PlatformError from "effect/PlatformError";8import * as PlatformError from "effect/PlatformError";
9import { ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcessSpawner } from "effect/process";
1010
11import { GitCommandError, SourceControlProviderError } from "@t3tools/contracts";11import { GitCommandError, SourceControlProviderError } from "@t3tools/contracts";
1212
apps/server/src/startupAccess.ts+1-1
...@@ -2,7 +2,7 @@ import * as NodeOS from "node:os";...@@ -2,7 +2,7 @@ import * as NodeOS from "node:os";
22
3import { QrCode } from "@t3tools/shared/qrCode";3import { QrCode } from "@t3tools/shared/qrCode";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import { HttpServer } from "effect/unstable/http";5import { HttpServer } from "effect/http";
66
7import * as ServerConfig from "./config.ts";7import * as ServerConfig from "./config.ts";
8import * as EnvironmentAuth from "./auth/EnvironmentAuth.ts";8import * as EnvironmentAuth from "./auth/EnvironmentAuth.ts";
apps/server/src/storageCleanup.ts+1-1
...@@ -3,7 +3,7 @@ import {...@@ -3,7 +3,7 @@ import {
3 OrchestrationV2ProviderSessionJson,3 OrchestrationV2ProviderSessionJson,
4} from "@t3tools/contracts";4} from "@t3tools/contracts";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as SqlClient from "effect/unstable/sql/SqlClient";6import * as SqlClient from "effect/sql/SqlClient";
7import type {7import type {
8 OrchestrationV2ThreadShell,8 OrchestrationV2ThreadShell,
9 ProjectId,9 ProjectId,
apps/server/src/telemetry/AnalyticsService.test.ts+5-5
...@@ -6,11 +6,11 @@ import * as Effect from "effect/Effect";...@@ -6,11 +6,11 @@ import * as Effect from "effect/Effect";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as TestClock from "effect/testing/TestClock";8import * as TestClock from "effect/testing/TestClock";
9import * as HttpClient from "effect/unstable/http/HttpClient";9import * as HttpClient from "effect/http/HttpClient";
10import * as HttpClientError from "effect/unstable/http/HttpClientError";10import * as HttpClientError from "effect/http/HttpClientError";
11import * as HttpServer from "effect/unstable/http/HttpServer";11import * as HttpServer from "effect/http/HttpServer";
12import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";12import * as HttpServerRequest from "effect/http/HttpServerRequest";
13import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";13import * as HttpServerResponse from "effect/http/HttpServerResponse";
14import { HostProcessArchitecture, HostProcessPlatform } from "@t3tools/shared/hostProcess";14import { HostProcessArchitecture, HostProcessPlatform } from "@t3tools/shared/hostProcess";
1515
16import * as ServerConfig from "../config.ts";16import * as ServerConfig from "../config.ts";
apps/server/src/telemetry/AnalyticsService.ts+3-3
...@@ -23,9 +23,9 @@ import * as Random from "effect/Random";...@@ -23,9 +23,9 @@ import * as Random from "effect/Random";
23import * as Ref from "effect/Ref";23import * as Ref from "effect/Ref";
24import * as Result from "effect/Result";24import * as Result from "effect/Result";
25import * as Semaphore from "effect/Semaphore";25import * as Semaphore from "effect/Semaphore";
26import * as HttpClient from "effect/unstable/http/HttpClient";26import * as HttpClient from "effect/http/HttpClient";
27import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";27import * as HttpClientRequest from "effect/http/HttpClientRequest";
28import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";28import * as HttpClientResponse from "effect/http/HttpClientResponse";
2929
30import packageJson from "../../package.json" with { type: "json" };30import packageJson from "../../package.json" with { type: "json" };
31import * as ServerConfig from "../config.ts";31import * as ServerConfig from "../config.ts";
apps/server/src/telemetry/Identify.ts+2-2
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import * as NodeOS from "node:os";1import * as NodeOS from "node:os";
2import * as Crypto from "effect/Crypto";2import * as Crypto from "effect/Crypto";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Encoding from "effect/Encoding";4import * as Hex from "effect/encoding/Hex";
5import * as FileSystem from "effect/FileSystem";5import * as FileSystem from "effect/FileSystem";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
...@@ -157,7 +157,7 @@ const readIdentityFile = (...@@ -157,7 +157,7 @@ const readIdentityFile = (
157const hash = (source: TelemetryIdentitySource, value: string) =>157const hash = (source: TelemetryIdentitySource, value: string) =>
158 Crypto.Crypto.pipe(158 Crypto.Crypto.pipe(
159 Effect.flatMap((crypto) => crypto.digest("SHA-256", new TextEncoder().encode(value))),159 Effect.flatMap((crypto) => crypto.digest("SHA-256", new TextEncoder().encode(value))),
160 Effect.map(Encoding.encodeHex),160 Effect.map(Hex.encode),
161 Effect.mapError(161 Effect.mapError(
162 (cause) =>162 (cause) =>
163 new TelemetryIdentityHashError({163 new TelemetryIdentityHashError({
apps/server/src/terminal/Manager.test.ts+5-5
...@@ -18,7 +18,7 @@ import * as Clock from "effect/Clock";...@@ -18,7 +18,7 @@ import * as Clock from "effect/Clock";
18import * as Deferred from "effect/Deferred";18import * as Deferred from "effect/Deferred";
19import * as Duration from "effect/Duration";19import * as Duration from "effect/Duration";
20import * as Effect from "effect/Effect";20import * as Effect from "effect/Effect";
21import * as Encoding from "effect/Encoding";21import * as Base64Url from "effect/encoding/Base64Url";
22import * as Exit from "effect/Exit";22import * as Exit from "effect/Exit";
23import * as Fiber from "effect/Fiber";23import * as Fiber from "effect/Fiber";
24import * as FileSystem from "effect/FileSystem";24import * as FileSystem from "effect/FileSystem";
...@@ -32,7 +32,7 @@ import * as Schema from "effect/Schema";...@@ -32,7 +32,7 @@ import * as Schema from "effect/Schema";
32import * as Scope from "effect/Scope";32import * as Scope from "effect/Scope";
33import * as Stream from "effect/Stream";33import * as Stream from "effect/Stream";
34import * as TestClock from "effect/testing/TestClock";34import * as TestClock from "effect/testing/TestClock";
35import { ChildProcessSpawner } from "effect/unstable/process";35import { ChildProcessSpawner } from "effect/process";
36import { expect } from "vite-plus/test";36import { expect } from "vite-plus/test";
3737
38import * as ServerSecretStore from "../auth/ServerSecretStore.ts";38import * as ServerSecretStore from "../auth/ServerSecretStore.ts";
...@@ -200,7 +200,7 @@ function restartInput(overrides: Partial<TerminalRestartInput> = {}): TerminalRe...@@ -200,7 +200,7 @@ function restartInput(overrides: Partial<TerminalRestartInput> = {}): TerminalRe
200200
201const historyLogPath = (logsDir: string, threadId = "thread-1") =>201const historyLogPath = (logsDir: string, threadId = "thread-1") =>
202 Effect.service(Path.Path).pipe(202 Effect.service(Path.Path).pipe(
203 Effect.map(({ join }) => join(logsDir, `terminal_${Encoding.encodeBase64Url(threadId)}.log`)),203 Effect.map(({ join }) => join(logsDir, `terminal_${Base64Url.encode(threadId)}.log`)),
204 );204 );
205205
206const multiTerminalHistoryLogPath = (206const multiTerminalHistoryLogPath = (
...@@ -210,12 +210,12 @@ const multiTerminalHistoryLogPath = (...@@ -210,12 +210,12 @@ const multiTerminalHistoryLogPath = (
210) =>210) =>
211 Effect.service(Path.Path).pipe(211 Effect.service(Path.Path).pipe(
212 Effect.map(({ join }) => {212 Effect.map(({ join }) => {
213 const threadPart = `terminal_${Encoding.encodeBase64Url(threadId)}`;213 const threadPart = `terminal_${Base64Url.encode(threadId)}`;
214 return join(214 return join(
215 logsDir,215 logsDir,
216 terminalId === DEFAULT_TERMINAL_ID216 terminalId === DEFAULT_TERMINAL_ID
217 ? `${threadPart}.log`217 ? `${threadPart}.log`
218 : `${threadPart}_${Encoding.encodeBase64Url(terminalId)}.log`,218 : `${threadPart}_${Base64Url.encode(terminalId)}.log`,
219 );219 );
220 }),220 }),
221 );221 );
apps/server/src/terminal/Manager.ts+3-3
...@@ -49,7 +49,7 @@ import { getTerminalLabel } from "@t3tools/shared/terminalLabels";...@@ -49,7 +49,7 @@ import { getTerminalLabel } from "@t3tools/shared/terminalLabels";
49import * as DateTime from "effect/DateTime";49import * as DateTime from "effect/DateTime";
50import * as Context from "effect/Context";50import * as Context from "effect/Context";
51import * as Effect from "effect/Effect";51import * as Effect from "effect/Effect";
52import * as Encoding from "effect/Encoding";52import * as Base64Url from "effect/encoding/Base64Url";
53import * as Equal from "effect/Equal";53import * as Equal from "effect/Equal";
54import * as Exit from "effect/Exit";54import * as Exit from "effect/Exit";
55import * as Fiber from "effect/Fiber";55import * as Fiber from "effect/Fiber";
...@@ -1228,11 +1228,11 @@ function legacySafeThreadId(threadId: string): string {...@@ -1228,11 +1228,11 @@ function legacySafeThreadId(threadId: string): string {
1228}1228}
12291229
1230function toSafeThreadId(threadId: string): string {1230function toSafeThreadId(threadId: string): string {
1231 return `terminal_${Encoding.encodeBase64Url(threadId)}`;1231 return `terminal_${Base64Url.encode(threadId)}`;
1232}1232}
12331233
1234function toSafeTerminalId(terminalId: string): string {1234function toSafeTerminalId(terminalId: string): string {
1235 return Encoding.encodeBase64Url(terminalId);1235 return Base64Url.encode(terminalId);
1236}1236}
12371237
1238function toSessionKey(threadId: string, terminalId: string): string {1238function toSessionKey(threadId: string, terminalId: string): string {
apps/server/src/terminal/OutputProtocol.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Queue from "effect/Queue";...@@ -6,7 +6,7 @@ import * as Queue from "effect/Queue";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as TestClock from "effect/testing/TestClock";8import * as TestClock from "effect/testing/TestClock";
9import { Rpc, RpcGroup, RpcMessage, RpcSerialization, RpcServer } from "effect/unstable/rpc";9import { Rpc, RpcGroup, RpcMessage, RpcSerialization, RpcServer } from "effect/rpc";
1010
11import { withTerminalOutputWindow } from "./OutputProtocol.ts";11import { withTerminalOutputWindow } from "./OutputProtocol.ts";
1212
apps/server/src/terminal/OutputProtocol.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { WS_METHODS } from "@t3tools/contracts";1import { WS_METHODS } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import type { RpcServer } from "effect/unstable/rpc";3import type { RpcServer } from "effect/rpc";
44
5const MAX_PENDING_CHUNKS = 8;5const MAX_PENDING_CHUNKS = 8;
6const MAX_PENDING_BYTES = 64 * 1024;6const MAX_PENDING_BYTES = 64 * 1024;
apps/server/src/textGeneration/ClaudeTextGeneration.ts+1-1
...@@ -12,7 +12,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -12,7 +12,7 @@ import * as FileSystem from "effect/FileSystem";
12import * as Option from "effect/Option";12import * as Option from "effect/Option";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcess, ChildProcessSpawner } from "effect/process";
1616
17import { type ClaudeSettings, type ModelSelection } from "@t3tools/contracts";17import { type ClaudeSettings, type ModelSelection } from "@t3tools/contracts";
18import { formatGeneratedBranchName, sanitizeFeatureBranchName } from "@t3tools/shared/git";18import { formatGeneratedBranchName, sanitizeFeatureBranchName } from "@t3tools/shared/git";
apps/server/src/textGeneration/CodexTextGeneration.ts+1-1
...@@ -5,7 +5,7 @@ import * as Path from "effect/Path";...@@ -5,7 +5,7 @@ import * as Path from "effect/Path";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as Scope from "effect/Scope";6import * as Scope from "effect/Scope";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";8import { ChildProcess, ChildProcessSpawner } from "effect/process";
99
10import {10import {
11 type CodexSettings,11 type CodexSettings,
apps/server/src/textGeneration/GrokTextGeneration.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import * as Ref from "effect/Ref";4import * as Ref from "effect/Ref";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import { ChildProcessSpawner } from "effect/unstable/process";6import { ChildProcessSpawner } from "effect/process";
7import type * as EffectAcpErrors from "effect-acp/errors";7import type * as EffectAcpErrors from "effect-acp/errors";
88
9import { type GrokSettings, type ModelSelection } from "@t3tools/contracts";9import { type GrokSettings, type ModelSelection } from "@t3tools/contracts";
apps/server/src/textGeneration/PiTextGeneration.ts+1-1
...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Queue from "effect/Queue";9import * as Queue from "effect/Queue";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import { ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcessSpawner } from "effect/process";
1212
13import { TextGenerationError, type ModelSelection, type PiSettings } from "@t3tools/contracts";13import { TextGenerationError, type ModelSelection, type PiSettings } from "@t3tools/contracts";
14import { formatGeneratedBranchName, sanitizeFeatureBranchName } from "@t3tools/shared/git";14import { formatGeneratedBranchName, sanitizeFeatureBranchName } from "@t3tools/shared/git";
apps/server/src/usage/UsageService.test.ts+1-1
...@@ -27,7 +27,7 @@ import * as Layer from "effect/Layer";...@@ -27,7 +27,7 @@ import * as Layer from "effect/Layer";
27import * as Scheduler from "effect/Scheduler";27import * as Scheduler from "effect/Scheduler";
28import * as Schema from "effect/Schema";28import * as Schema from "effect/Schema";
29import * as TestClock from "effect/testing/TestClock";29import * as TestClock from "effect/testing/TestClock";
30import { HttpClient, HttpClientResponse } from "effect/unstable/http";30import { HttpClient, HttpClientResponse } from "effect/http";
3131
32import * as ServerConfig from "../config.ts";32import * as ServerConfig from "../config.ts";
33import * as ServerSettings from "../serverSettings.ts";33import * as ServerSettings from "../serverSettings.ts";
apps/server/src/usage/UsageService.ts+1-1
...@@ -42,7 +42,7 @@ import * as Option from "effect/Option";...@@ -42,7 +42,7 @@ import * as Option from "effect/Option";
42import * as Path from "effect/Path";42import * as Path from "effect/Path";
43import * as Schema from "effect/Schema";43import * as Schema from "effect/Schema";
44import * as Semaphore from "effect/Semaphore";44import * as Semaphore from "effect/Semaphore";
45import { HttpClient, HttpClientResponse } from "effect/unstable/http";45import { HttpClient, HttpClientResponse } from "effect/http";
4646
47import * as ServerConfig from "../config.ts";47import * as ServerConfig from "../config.ts";
48import { expandHomePath } from "../pathExpansion.ts";48import { expandHomePath } from "../pathExpansion.ts";
apps/server/src/usage/cliproxyApi.test.ts+1-1
...@@ -2,7 +2,7 @@ import { describe, expect, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { describe, expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import * as TestClock from "effect/testing/TestClock";4import * as TestClock from "effect/testing/TestClock";
5import { HttpClient, HttpClientResponse } from "effect/unstable/http";5import { HttpClient, HttpClientResponse } from "effect/http";
66
7import { creditRedeemRequestId, makeCliproxyApi } from "./cliproxyApi.ts";7import { creditRedeemRequestId, makeCliproxyApi } from "./cliproxyApi.ts";
88
apps/server/src/usage/cliproxyApi.ts+1-1
...@@ -10,7 +10,7 @@ import {...@@ -10,7 +10,7 @@ import {
10import * as DateTime from "effect/DateTime";10import * as DateTime from "effect/DateTime";
11import * as Effect from "effect/Effect";11import * as Effect from "effect/Effect";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";13import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
1414
15import { codexPlanLabel } from "../provider/Layers/CodexProvider.ts";15import { codexPlanLabel } from "../provider/Layers/CodexProvider.ts";
16import { codexRateLimitsToLimits } from "../provider/Layers/codexUsageLimits.ts";16import { codexRateLimitsToLimits } from "../provider/Layers/codexUsageLimits.ts";
apps/server/src/vcs/GitVcsDriver.test.ts+1-1
...@@ -11,7 +11,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -11,7 +11,7 @@ import * as FileSystem from "effect/FileSystem";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as PlatformError from "effect/PlatformError";13import * as PlatformError from "effect/PlatformError";
14import { ChildProcessSpawner } from "effect/unstable/process";14import { ChildProcessSpawner } from "effect/process";
15import { assert, it } from "@effect/vitest";15import { assert, it } from "@effect/vitest";
1616
17import { CheckpointRef, GitCommandError, VcsProcessExitError } from "@t3tools/contracts";17import { CheckpointRef, GitCommandError, VcsProcessExitError } from "@t3tools/contracts";
apps/server/src/vcs/GitVcsDriver.ts+1-1
...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import { ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcessSpawner } from "effect/process";
1212
13import {13import {
14 GitCommandError,14 GitCommandError,
apps/server/src/vcs/GitVcsDriverCore.test.ts+1-1
...@@ -20,7 +20,7 @@ import * as Schema from "effect/Schema";...@@ -20,7 +20,7 @@ import * as Schema from "effect/Schema";
20import * as Sink from "effect/Sink";20import * as Sink from "effect/Sink";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import * as TestClock from "effect/testing/TestClock";22import * as TestClock from "effect/testing/TestClock";
23import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";23import { ChildProcess, ChildProcessSpawner } from "effect/process";
2424
25import {25import {
26 GitCommandError,26 GitCommandError,
apps/server/src/vcs/GitVcsDriverCore.ts+3-3
...@@ -4,7 +4,7 @@ import * as Crypto from "effect/Crypto";...@@ -4,7 +4,7 @@ import * as Crypto from "effect/Crypto";
4import * as DateTime from "effect/DateTime";4import * as DateTime from "effect/DateTime";
5import * as Duration from "effect/Duration";5import * as Duration from "effect/Duration";
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import * as Encoding from "effect/Encoding";7import * as Hex from "effect/encoding/Hex";
8import * as Exit from "effect/Exit";8import * as Exit from "effect/Exit";
9import * as FileSystem from "effect/FileSystem";9import * as FileSystem from "effect/FileSystem";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
...@@ -16,7 +16,7 @@ import * as Schema from "effect/Schema";...@@ -16,7 +16,7 @@ import * as Schema from "effect/Schema";
16import * as Scope from "effect/Scope";16import * as Scope from "effect/Scope";
17import * as Semaphore from "effect/Semaphore";17import * as Semaphore from "effect/Semaphore";
18import * as Stream from "effect/Stream";18import * as Stream from "effect/Stream";
19import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";19import { ChildProcess, ChildProcessSpawner } from "effect/process";
2020
21import {21import {
22 GitCommandError,22 GitCommandError,
...@@ -2782,7 +2782,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*...@@ -2782,7 +2782,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
2782 const baseDiff = baseResult.stdout;2782 const baseDiff = baseResult.stdout;
2783 const hashDiff = (diff: string, files: ReadonlyArray<ReviewDiffFileStat>) =>2783 const hashDiff = (diff: string, files: ReadonlyArray<ReviewDiffFileStat>) =>
2784 crypto.digest("SHA-256", new TextEncoder().encode(JSON.stringify([diff, files]))).pipe(2784 crypto.digest("SHA-256", new TextEncoder().encode(JSON.stringify([diff, files]))).pipe(
2785 Effect.map(Encoding.encodeHex),2785 Effect.map(Hex.encode),
2786 Effect.mapError(2786 Effect.mapError(
2787 (cause) =>2787 (cause) =>
2788 new GitCommandError({2788 new GitCommandError({
apps/server/src/vcs/VcsDriverRegistry.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, it, describe } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, it, describe } from "@effect/vitest";
2import * as NodeServices from "@effect/platform-node/NodeServices";2import * as NodeServices from "@effect/platform-node/NodeServices";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import { ChildProcessSpawner } from "effect/unstable/process";5import { ChildProcessSpawner } from "effect/process";
66
7import * as VcsProcess from "./VcsProcess.ts";7import * as VcsProcess from "./VcsProcess.ts";
8import * as VcsProjectConfig from "./VcsProjectConfig.ts";8import * as VcsProjectConfig from "./VcsProjectConfig.ts";
apps/server/src/vcs/VcsProcess.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as Queue from "effect/Queue";...@@ -12,7 +12,7 @@ import * as Queue from "effect/Queue";
12import * as Ref from "effect/Ref";12import * as Ref from "effect/Ref";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import { TestClock } from "effect/testing";14import { TestClock } from "effect/testing";
15import { ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcessSpawner } from "effect/process";
1616
17import {17import {
18 VcsProcessExitError,18 VcsProcessExitError,
apps/server/src/vcs/VcsProcess.ts+1-1
...@@ -5,7 +5,7 @@ import * as Layer from "effect/Layer";...@@ -5,7 +5,7 @@ import * as Layer from "effect/Layer";
5import * as Match from "effect/Match";5import * as Match from "effect/Match";
6import * as Schedule from "effect/Schedule";6import * as Schedule from "effect/Schedule";
7import * as Semaphore from "effect/Semaphore";7import * as Semaphore from "effect/Semaphore";
8import { ChildProcessSpawner } from "effect/unstable/process";8import { ChildProcessSpawner } from "effect/process";
99
10import {10import {
11 type VcsError,11 type VcsError,
apps/server/src/vcs/VcsProvisioningService.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as DateTime from "effect/DateTime";...@@ -3,7 +3,7 @@ import * as DateTime from "effect/DateTime";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import { ChildProcessSpawner } from "effect/unstable/process";6import { ChildProcessSpawner } from "effect/process";
77
8import * as VcsDriver from "./VcsDriver.ts";8import * as VcsDriver from "./VcsDriver.ts";
9import * as VcsDriverRegistry from "./VcsDriverRegistry.ts";9import * as VcsDriverRegistry from "./VcsDriverRegistry.ts";
apps/server/src/ws.test.ts+1-1
...@@ -16,7 +16,7 @@ import * as Path from "effect/Path";...@@ -16,7 +16,7 @@ import * as Path from "effect/Path";
16import * as Queue from "effect/Queue";16import * as Queue from "effect/Queue";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import * as TestClock from "effect/testing/TestClock";18import * as TestClock from "effect/testing/TestClock";
19import { ChildProcessSpawner } from "effect/unstable/process";19import { ChildProcessSpawner } from "effect/process";
2020
21import * as ExternalLauncher from "./process/externalLauncher.ts";21import * as ExternalLauncher from "./process/externalLauncher.ts";
22import {22import {
apps/server/src/ws.ts+5-5
...@@ -5,7 +5,7 @@ import * as NodeCrypto from "node:crypto";...@@ -5,7 +5,7 @@ import * as NodeCrypto from "node:crypto";
55
6import * as DateTime from "effect/DateTime";6import * as DateTime from "effect/DateTime";
7import * as Duration from "effect/Duration";7import * as Duration from "effect/Duration";
8import * as Encoding from "effect/Encoding";8import * as Base64 from "effect/encoding/Base64";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Fiber from "effect/Fiber";10import * as Fiber from "effect/Fiber";
11import * as FileSystem from "effect/FileSystem";11import * as FileSystem from "effect/FileSystem";
...@@ -105,8 +105,8 @@ import {...@@ -105,8 +105,8 @@ import {
105 HttpServerRequest,105 HttpServerRequest,
106 HttpServerRespondable,106 HttpServerRespondable,
107 HttpServerResponse,107 HttpServerResponse,
108} from "effect/unstable/http";108} from "effect/http";
109import { RpcSerialization, RpcServer } from "effect/unstable/rpc";109import { RpcSerialization, RpcServer } from "effect/rpc";
110110
111import * as CheckpointDiffQuery from "./checkpointing/CheckpointDiffQuery.ts";111import * as CheckpointDiffQuery from "./checkpointing/CheckpointDiffQuery.ts";
112import * as ServerConfig from "./config.ts";112import * as ServerConfig from "./config.ts";
...@@ -223,7 +223,7 @@ import * as TraceDiagnostics from "./diagnostics/TraceDiagnostics.ts";...@@ -223,7 +223,7 @@ import * as TraceDiagnostics from "./diagnostics/TraceDiagnostics.ts";
223import * as PullRequestService from "./pullRequest/PullRequestService.ts";223import * as PullRequestService from "./pullRequest/PullRequestService.ts";
224import { listLinkedPullRequestThreads } from "./pullRequest/linkedThreads.ts";224import { listLinkedPullRequestThreads } from "./pullRequest/linkedThreads.ts";
225import { pullRequestSyncKey } from "./pullRequest/pullRequestSyncKey.ts";225import { pullRequestSyncKey } from "./pullRequest/pullRequestSyncKey.ts";
226import * as SqlClient from "effect/unstable/sql/SqlClient";226import * as SqlClient from "effect/sql/SqlClient";
227import * as PullRequestSyncReactor from "./orchestration-v2/PullRequestSyncReactor.ts";227import * as PullRequestSyncReactor from "./orchestration-v2/PullRequestSyncReactor.ts";
228import * as SourceControlDiscovery from "./sourceControl/SourceControlDiscovery.ts";228import * as SourceControlDiscovery from "./sourceControl/SourceControlDiscovery.ts";
229import * as SourceControlRepositoryService from "./sourceControl/SourceControlRepositoryService.ts";229import * as SourceControlRepositoryService from "./sourceControl/SourceControlRepositoryService.ts";
...@@ -383,7 +383,7 @@ const persistChatAttachments = Effect.fn("ws.assets.persistChatAttachments")(fun...@@ -383,7 +383,7 @@ const persistChatAttachments = Effect.fn("ws.assets.persistChatAttachments")(fun
383 message: `Attachment ${attachment.name} has an invalid image payload.`,383 message: `Attachment ${attachment.name} has an invalid image payload.`,
384 });384 });
385 }385 }
386 const bytes = yield* Effect.fromResult(Encoding.decodeBase64(parsed.base64)).pipe(386 const bytes = yield* Effect.fromResult(Base64.decode(parsed.base64)).pipe(
387 Effect.mapError(387 Effect.mapError(
388 (cause) =>388 (cause) =>
389 new PersistChatAttachmentsError({389 new PersistChatAttachmentsError({
apps/web/src/assets/assetUrls.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7} from "@t3tools/client-runtime/state/assets";7} from "@t3tools/client-runtime/state/assets";
8import { squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";8import { squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";
9import type { AssetResource, EnvironmentId } from "@t3tools/contracts";9import type { AssetResource, EnvironmentId } from "@t3tools/contracts";
10import { AsyncResult } from "effect/unstable/reactivity";10import { AsyncResult } from "effect/reactivity";
11import { useCallback, useMemo } from "react";11import { useCallback, useMemo } from "react";
1212
13import { assetEnvironment } from "~/state/assets";13import { assetEnvironment } from "~/state/assets";
apps/web/src/authBootstrap.test.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import * as DateTime from "effect/DateTime";8import * as DateTime from "effect/DateTime";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import { HttpClientError, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";10import { HttpClientError, HttpClientRequest, HttpClientResponse } from "effect/http";
11import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";11import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
1212
13import { installEnvironmentHttpTest } from "../test/environmentHttpTest";13import { installEnvironmentHttpTest } from "../test/environmentHttpTest";
apps/web/src/browser/browserRecording.ts+1-1
...@@ -2,7 +2,7 @@ import { DESKTOP_PREVIEW_RECORDING_CAPTURE_TRIGGER } from "@t3tools/contracts";...@@ -2,7 +2,7 @@ import { DESKTOP_PREVIEW_RECORDING_CAPTURE_TRIGGER } from "@t3tools/contracts";
2import type { DesktopPreviewRecordingArtifact, ScopedThreadRef } from "@t3tools/contracts";2import type { DesktopPreviewRecordingArtifact, ScopedThreadRef } from "@t3tools/contracts";
3import { useAtomValue } from "@effect/atom-react";3import { useAtomValue } from "@effect/atom-react";
4import * as Schema from "effect/Schema";4import * as Schema from "effect/Schema";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
66
7import { previewBridge } from "~/components/preview/previewBridge";7import { previewBridge } from "~/components/preview/previewBridge";
8import { ensureClientSettingsHydrated, getClientSettings } from "~/hooks/useSettings";8import { ensureClientSettingsHydrated, getClientSettings } from "~/hooks/useSettings";
apps/web/src/browser/openFileInPreview.ts+1-1
...@@ -13,7 +13,7 @@ import {...@@ -13,7 +13,7 @@ import {
13} from "@t3tools/client-runtime/state/runtime";13} from "@t3tools/client-runtime/state/runtime";
14import * as Cause from "effect/Cause";14import * as Cause from "effect/Cause";
15import * as Data from "effect/Data";15import * as Data from "effect/Data";
16import { AsyncResult } from "effect/unstable/reactivity";16import { AsyncResult } from "effect/reactivity";
1717
18import { resolveAssetUrl } from "~/assets/assetUrls";18import { resolveAssetUrl } from "~/assets/assetUrls";
19import {19import {
apps/web/src/browser/previewWebviewConfigState.ts+1-1
...@@ -7,7 +7,7 @@ import type {...@@ -7,7 +7,7 @@ import type {
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import { AsyncResult, Atom } from "effect/unstable/reactivity";10import { AsyncResult, Atom } from "effect/reactivity";
1111
12import { previewBridge } from "~/components/preview/previewBridge";12import { previewBridge } from "~/components/preview/previewBridge";
1313
apps/web/src/cloud/linkEnvironment.test.ts+1-1
...@@ -11,7 +11,7 @@ import * as Layer from "effect/Layer";...@@ -11,7 +11,7 @@ import * as Layer from "effect/Layer";
11import * as Option from "effect/Option";11import * as Option from "effect/Option";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import * as SubscriptionRef from "effect/SubscriptionRef";13import * as SubscriptionRef from "effect/SubscriptionRef";
14import { HttpClient } from "effect/unstable/http";14import { HttpClient } from "effect/http";
15import { afterEach, beforeEach, vi } from "vite-plus/test";15import { afterEach, beforeEach, vi } from "vite-plus/test";
16import {16import {
17 AVAILABLE_CONNECTION_STATE,17 AVAILABLE_CONNECTION_STATE,
apps/web/src/cloud/linkEnvironment.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import * as Schema from "effect/Schema";4import * as Schema from "effect/Schema";
5import * as Stream from "effect/Stream";5import * as Stream from "effect/Stream";
6import { HttpClient } from "effect/unstable/http";6import { HttpClient } from "effect/http";
7import {7import {
8 EnvironmentCloudEndpointUnavailableError,8 EnvironmentCloudEndpointUnavailableError,
9 type EnvironmentCloudLinkStateResult,9 type EnvironmentCloudLinkStateResult,
apps/web/src/cloud/managedRelayState.ts+1-1
...@@ -18,7 +18,7 @@ import type { EnvironmentId } from "@t3tools/contracts";...@@ -18,7 +18,7 @@ import type { EnvironmentId } from "@t3tools/contracts";
18import * as Context from "effect/Context";18import * as Context from "effect/Context";
19import * as Effect from "effect/Effect";19import * as Effect from "effect/Effect";
20import * as Layer from "effect/Layer";20import * as Layer from "effect/Layer";
21import { AsyncResult, Atom } from "effect/unstable/reactivity";21import { AsyncResult, Atom } from "effect/reactivity";
22import { useCallback, useEffect } from "react";22import { useCallback, useEffect } from "react";
2323
24import { runtime } from "../lib/runtime";24import { runtime } from "../lib/runtime";
apps/web/src/cloud/primaryCloudLinkState.ts+2-2
...@@ -5,8 +5,8 @@ import * as Context from "effect/Context";...@@ -5,8 +5,8 @@ import * as Context from "effect/Context";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import { AsyncResult, Atom } from "effect/unstable/reactivity";8import { AsyncResult, Atom } from "effect/reactivity";
9import { HttpClient } from "effect/unstable/http";9import { HttpClient } from "effect/http";
10import { useCallback, useMemo } from "react";10import { useCallback, useMemo } from "react";
1111
12import { usePrimaryEnvironment } from "../state/environments";12import { usePrimaryEnvironment } from "../state/environments";
apps/web/src/components/ChatMarkdown.tsx+1-1
...@@ -53,7 +53,7 @@ import { inlineCodeFilePathCandidate } from "@t3tools/client-runtime/markdown-li...@@ -53,7 +53,7 @@ import { inlineCodeFilePathCandidate } from "@t3tools/client-runtime/markdown-li
53import { mediaFileReference, mediaUrlReference } from "@t3tools/client-runtime/media-reference";53import { mediaFileReference, mediaUrlReference } from "@t3tools/client-runtime/media-reference";
54import { mediaKindFromPath, mediaMimeTypeFromExtension } from "@t3tools/shared/filePreview";54import { mediaKindFromPath, mediaMimeTypeFromExtension } from "@t3tools/shared/filePreview";
55import * as Cause from "effect/Cause";55import * as Cause from "effect/Cause";
56import { AsyncResult } from "effect/unstable/reactivity";56import { AsyncResult } from "effect/reactivity";
57import React, {57import React, {
58 Children,58 Children,
59 Suspense,59 Suspense,
apps/web/src/components/ChatView.logic.test.ts+1-1
...@@ -28,7 +28,7 @@ import type { CodexArtifactTemplate } from "@t3tools/client-runtime/codex-artifa...@@ -28,7 +28,7 @@ import type { CodexArtifactTemplate } from "@t3tools/client-runtime/codex-artifa
28import * as DateTime from "effect/DateTime";28import * as DateTime from "effect/DateTime";
29import * as Option from "effect/Option";29import * as Option from "effect/Option";
30import { afterEach, describe, expect, it, vi } from "vite-plus/test";30import { afterEach, describe, expect, it, vi } from "vite-plus/test";
31import { Atom, AsyncResult } from "effect/unstable/reactivity";31import { Atom, AsyncResult } from "effect/reactivity";
32import { appAtomRegistry } from "../rpc/atomRegistry";32import { appAtomRegistry } from "../rpc/atomRegistry";
33import { environmentThreadDetails } from "../state/threads";33import { environmentThreadDetails } from "../state/threads";
3434
apps/web/src/components/ChatView.tsx+2-2
...@@ -139,7 +139,7 @@ import { resolveThreadReferenceCopyTarget } from "@t3tools/shared/threadReferenc...@@ -139,7 +139,7 @@ import { resolveThreadReferenceCopyTarget } from "@t3tools/shared/threadReferenc
139import { nextTerminalId, resolveTerminalSessionLabel } from "@t3tools/shared/terminalLabels";139import { nextTerminalId, resolveTerminalSessionLabel } from "@t3tools/shared/terminalLabels";
140import { Debouncer } from "@tanstack/react-pacer";140import { Debouncer } from "@tanstack/react-pacer";
141import { useAtomValue } from "@effect/atom-react";141import { useAtomValue } from "@effect/atom-react";
142import { Atom } from "effect/unstable/reactivity";142import { Atom } from "effect/reactivity";
143import {143import {
144 Fragment,144 Fragment,
145 lazy,145 lazy,
...@@ -168,7 +168,7 @@ import {...@@ -168,7 +168,7 @@ import {
168 type AtomCommandResult,168 type AtomCommandResult,
169} from "@t3tools/client-runtime/state/runtime";169} from "@t3tools/client-runtime/state/runtime";
170import * as Cause from "effect/Cause";170import * as Cause from "effect/Cause";
171import { AsyncResult } from "effect/unstable/reactivity";171import { AsyncResult } from "effect/reactivity";
172import { isElectron } from "../env";172import { isElectron } from "../env";
173import { readLocalApi } from "../localApi";173import { readLocalApi } from "../localApi";
174import { useDiffPanelStore } from "../diffPanelStore";174import { useDiffPanelStore } from "../diffPanelStore";
apps/web/src/components/ProviderUpdateEnvironmentRows.test.tsx+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 ProviderInstanceId,6 ProviderInstanceId,
7 type ServerProvider,7 type ServerProvider,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import { AsyncResult } from "effect/unstable/reactivity";9import { AsyncResult } from "effect/reactivity";
1010
11import type {11import type {
12 LocalEnvironmentUpdateGroup,12 LocalEnvironmentUpdateGroup,
apps/web/src/components/ProviderUpdateLaunchNotification.logic.test.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 type ServerProvider,6 type ServerProvider,
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import * as Cause from "effect/Cause";8import * as Cause from "effect/Cause";
9import { AsyncResult } from "effect/unstable/reactivity";9import { AsyncResult } from "effect/reactivity";
1010
11import {11import {
12 buildLocalEnvironmentUpdateGroups,12 buildLocalEnvironmentUpdateGroups,
apps/web/src/components/ServerUpdateAction.test.tsx+1-1
...@@ -3,7 +3,7 @@ import { create, type ReactTestRenderer } from "react-test-renderer";...@@ -3,7 +3,7 @@ import { create, type ReactTestRenderer } from "react-test-renderer";
3import { renderToStaticMarkup } from "react-dom/server";3import { renderToStaticMarkup } from "react-dom/server";
4import type { EnvironmentId, ServerInstallation } from "@t3tools/contracts";4import type { EnvironmentId, ServerInstallation } from "@t3tools/contracts";
5import * as Cause from "effect/Cause";5import * as Cause from "effect/Cause";
6import { AsyncResult } from "effect/unstable/reactivity";6import { AsyncResult } from "effect/reactivity";
7import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";7import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
88
9const testState = vi.hoisted(() => ({9const testState = vi.hoisted(() => ({
apps/web/src/components/Sidebar.logic.test.ts+1-1
...@@ -4,7 +4,7 @@ import { deriveActiveWorkStartedAt } from "../session-logic.ts";...@@ -4,7 +4,7 @@ import { deriveActiveWorkStartedAt } from "../session-logic.ts";
4import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";4import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
5import { defaultAnimateLayoutChanges, type AnimateLayoutChanges } from "@dnd-kit/sortable";5import { defaultAnimateLayoutChanges, type AnimateLayoutChanges } from "@dnd-kit/sortable";
6import * as Cause from "effect/Cause";6import * as Cause from "effect/Cause";
7import { AsyncResult } from "effect/unstable/reactivity";7import { AsyncResult } from "effect/reactivity";
8import {8import {
9 animateSidebarLayoutChanges,9 animateSidebarLayoutChanges,
10 archiveSelectedThreadEntries,10 archiveSelectedThreadEntries,
apps/web/src/components/Sidebar.logic.ts+1-1
...@@ -10,7 +10,7 @@ import { defaultAnimateLayoutChanges, type AnimateLayoutChanges } from "@dnd-kit...@@ -10,7 +10,7 @@ import { defaultAnimateLayoutChanges, type AnimateLayoutChanges } from "@dnd-kit
10import { threadSearchMatchKey } from "@t3tools/client-runtime/state/thread-search";10import { threadSearchMatchKey } from "@t3tools/client-runtime/state/thread-search";
11import type { ContextMenuItem, EnvironmentId, ThreadId } from "@t3tools/contracts";11import type { ContextMenuItem, EnvironmentId, ThreadId } from "@t3tools/contracts";
12import type { SidebarProjectSortOrder, SidebarThreadSortOrder } from "@t3tools/contracts/settings";12import type { SidebarProjectSortOrder, SidebarThreadSortOrder } from "@t3tools/contracts/settings";
13import type { AsyncResult } from "effect/unstable/reactivity";13import type { AsyncResult } from "effect/reactivity";
14import { planPinnedReorder } from "@t3tools/client-runtime/state/thread-sort";14import { planPinnedReorder } from "@t3tools/client-runtime/state/thread-sort";
15import {15import {
16 effectiveSnoozed,16 effectiveSnoozed,
apps/web/src/components/ThreadStatusIndicators.subscriptions.test.tsx+2-2
...@@ -11,7 +11,7 @@ const state = vi.hoisted(() => ({ queries: [] as string[] }));...@@ -11,7 +11,7 @@ const state = vi.hoisted(() => ({ queries: [] as string[] }));
11vi.mock("../state/entities", () => ({ useProject: () => null, useServerConfigs: () => new Map() }));11vi.mock("../state/entities", () => ({ useProject: () => null, useServerConfigs: () => new Map() }));
12vi.mock("../uiStateStore", () => ({ useUiStateStore: () => undefined }));12vi.mock("../uiStateStore", () => ({ useUiStateStore: () => undefined }));
13vi.mock("../state/vcs", async () => {13vi.mock("../state/vcs", async () => {
14 const { AsyncResult, Atom } = await import("effect/unstable/reactivity");14 const { AsyncResult, Atom } = await import("effect/reactivity");
15 const statuses = Atom.family((cwd: string) =>15 const statuses = Atom.family((cwd: string) =>
16 Atom.make(() => {16 Atom.make(() => {
17 state.queries.push(`vcs:${cwd}`);17 state.queries.push(`vcs:${cwd}`);
...@@ -42,7 +42,7 @@ vi.mock("../state/vcs", async () => {...@@ -42,7 +42,7 @@ vi.mock("../state/vcs", async () => {
42});42});
43vi.mock("../state/pullRequests", async (importOriginal) => {43vi.mock("../state/pullRequests", async (importOriginal) => {
44 const original = await importOriginal<typeof import("../state/pullRequests")>();44 const original = await importOriginal<typeof import("../state/pullRequests")>();
45 const { AsyncResult, Atom } = await import("effect/unstable/reactivity");45 const { AsyncResult, Atom } = await import("effect/reactivity");
46 const { ProjectId } = await import("@t3tools/contracts");46 const { ProjectId } = await import("@t3tools/contracts");
47 const summaries = Atom.family((number: number) =>47 const summaries = Atom.family((number: number) =>
48 Atom.make(() => {48 Atom.make(() => {
apps/web/src/components/ThreadStatusIndicators.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { ProjectId, type PullRequestSummary, type VcsStatusResult } from "@t3tools/contracts";1import { ProjectId, type PullRequestSummary, type VcsStatusResult } from "@t3tools/contracts";
2import { describe, expect, it } from "@effect/vitest";2import { describe, expect, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import { AtomRegistry } from "effect/unstable/reactivity";4import { AtomRegistry } from "effect/reactivity";
5import type { AnimationEvent } from "react";5import type { AnimationEvent } from "react";
66
7import {7import {
apps/web/src/components/ThreadStatusIndicators.tsx+1-1
...@@ -13,7 +13,7 @@ import {...@@ -13,7 +13,7 @@ import {
13 type ThreadPullRequestLink,13 type ThreadPullRequestLink,
14 type VcsStatusResult,14 type VcsStatusResult,
15} from "@t3tools/contracts";15} from "@t3tools/contracts";
16import { Atom } from "effect/unstable/reactivity";16import { Atom } from "effect/reactivity";
17import { FolderGit2Icon, TerminalIcon } from "lucide-react";17import { FolderGit2Icon, TerminalIcon } from "lucide-react";
18import { useCallback, useMemo } from "react";18import { useCallback, useMemo } from "react";
19import { appAtomRegistry } from "../rpc/atomRegistry";19import { appAtomRegistry } from "../rpc/atomRegistry";
apps/web/src/components/chat/useAutoBalanceUpdateBanner.tsx+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import type { ServerUpdateState } from "@t3tools/client-runtime/state/server";2import type { ServerUpdateState } from "@t3tools/client-runtime/state/server";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
4import { useMemo, useState } from "react";4import { useMemo, useState } from "react";
55
6import type { EnvironmentPresentation } from "~/state/environments";6import type { EnvironmentPresentation } from "~/state/environments";
apps/web/src/components/cloud/CloudEnvironmentConnectList.test.tsx+1-1
...@@ -2,7 +2,7 @@ import type { Discovery } from "@t3tools/client-runtime/relay";...@@ -2,7 +2,7 @@ import type { Discovery } from "@t3tools/client-runtime/relay";
2import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";2import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";
3import { EnvironmentId, ORCHESTRATION_PROTOCOL_VERSION } from "@t3tools/contracts";3import { EnvironmentId, ORCHESTRATION_PROTOCOL_VERSION } from "@t3tools/contracts";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult } from "effect/unstable/reactivity";5import { AsyncResult } from "effect/reactivity";
6import { act, useState, type ButtonHTMLAttributes, type ReactNode } from "react";6import { act, useState, type ButtonHTMLAttributes, type ReactNode } from "react";
7import { create, type ReactTestRenderer } from "react-test-renderer";7import { create, type ReactTestRenderer } from "react-test-renderer";
8import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";8import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
apps/web/src/components/diffs/useReviewFilePatches.ts+2-2
...@@ -1,8 +1,8 @@...@@ -1,8 +1,8 @@
1import { RegistryContext, useAtomValue } from "@effect/atom-react";1import { RegistryContext, useAtomValue } from "@effect/atom-react";
2import type { FileDiffMetadata } from "@pierre/diffs";2import type { FileDiffMetadata } from "@pierre/diffs";
3import type { EnvironmentId, ReviewDiffPreviewSource } from "@t3tools/contracts";3import type { EnvironmentId, ReviewDiffPreviewSource } from "@t3tools/contracts";
4import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";4import * as AsyncResult from "effect/reactivity/AsyncResult";
5import * as Atom from "effect/unstable/reactivity/Atom";5import * as Atom from "effect/reactivity/Atom";
6import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";6import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
7import { getRenderablePatch, resolveFileDiffPath, type RenderablePatch } from "~/lib/diffRendering";7import { getRenderablePatch, resolveFileDiffPath, type RenderablePatch } from "~/lib/diffRendering";
8import { reviewEnvironment } from "~/state/review";8import { reviewEnvironment } from "~/state/review";
apps/web/src/components/files/fileSaveCoordinator.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { afterEach, describe, expect, it, vi } from "vite-plus/test";1import { afterEach, describe, expect, it, vi } from "vite-plus/test";
2import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";2import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";
3import * as Cause from "effect/Cause";3import * as Cause from "effect/Cause";
4import { AsyncResult } from "effect/unstable/reactivity";4import { AsyncResult } from "effect/reactivity";
55
6import { FileSaveCoordinator } from "./fileSaveCoordinator";6import { FileSaveCoordinator } from "./fileSaveCoordinator";
77
apps/web/src/components/files/projectFilesQueryState.test.tsx+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 type ProjectReadFileResult,5 type ProjectReadFileResult,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import { Atom, AtomRegistry } from "effect/unstable/reactivity";8import { Atom, AtomRegistry } from "effect/reactivity";
9import { beforeEach, describe, expect, it, vi } from "vite-plus/test";9import { beforeEach, describe, expect, it, vi } from "vite-plus/test";
1010
11const projectMocks = vi.hoisted(() => ({11const projectMocks = vi.hoisted(() => ({
apps/web/src/components/files/projectFilesQueryState.ts+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8import * as Cause from "effect/Cause";8import * as Cause from "effect/Cause";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import { AsyncResult, Atom } from "effect/unstable/reactivity";11import { AsyncResult, Atom } from "effect/reactivity";
12import { useCallback } from "react";12import { useCallback } from "react";
1313
14import { appAtomRegistry } from "~/rpc/atomRegistry";14import { appAtomRegistry } from "~/rpc/atomRegistry";
apps/web/src/components/files/useFileSaveCoordinator.test.tsx+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { EnvironmentId } from "@t3tools/contracts";1import { EnvironmentId } from "@t3tools/contracts";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
3import { act, StrictMode } from "react";3import { act, StrictMode } from "react";
4import { create, type ReactTestRenderer } from "react-test-renderer";4import { create, type ReactTestRenderer } from "react-test-renderer";
5import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";5import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
apps/web/src/components/onboarding/FirstRunGate.tsx+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { RefreshIcon } from "~/components/ui/refresh-icon";1import { RefreshIcon } from "~/components/ui/refresh-icon";
2import { useAtomValue } from "@effect/atom-react";2import { useAtomValue } from "@effect/atom-react";
3import { useLocation, useNavigate } from "@tanstack/react-router";3import { useLocation, useNavigate } from "@tanstack/react-router";
4import { Atom } from "effect/unstable/reactivity";4import { Atom } from "effect/reactivity";
5import { useEffect, useState } from "react";5import { useEffect, useState } from "react";
66
7import {7import {
apps/web/src/components/preview/PreviewAutomationHosts.test.tsx+1-1
...@@ -10,7 +10,7 @@ import {...@@ -10,7 +10,7 @@ import {
10} from "@t3tools/contracts";10} from "@t3tools/contracts";
11import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";11import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";
12import * as Cause from "effect/Cause";12import * as Cause from "effect/Cause";
13import { AsyncResult, Atom } from "effect/unstable/reactivity";13import { AsyncResult, Atom } from "effect/reactivity";
14import { act } from "react";14import { act } from "react";
15import { create, type ReactTestRenderer } from "react-test-renderer";15import { create, type ReactTestRenderer } from "react-test-renderer";
16import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";16import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
apps/web/src/components/preview/PreviewAutomationHosts.tsx+1-1
...@@ -22,7 +22,7 @@ import {...@@ -22,7 +22,7 @@ import {
22} from "@t3tools/contracts";22} from "@t3tools/contracts";
23import { resolvePreviewViewport } from "@t3tools/shared/previewViewport";23import { resolvePreviewViewport } from "@t3tools/shared/previewViewport";
24import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";24import { useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
25import { Atom } from "effect/unstable/reactivity";25import { Atom } from "effect/reactivity";
26import { useShallow } from "zustand/react/shallow";26import { useShallow } from "zustand/react/shallow";
2727
28import {28import {
apps/web/src/components/preview/addBrowserSurface.test.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 type PreviewSessionSnapshot,6 type PreviewSessionSnapshot,
7 type ScopedThreadRef,7 type ScopedThreadRef,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import { AsyncResult } from "effect/unstable/reactivity";9import { AsyncResult } from "effect/reactivity";
10import { beforeEach, describe, expect, it, vi } from "vite-plus/test";10import { beforeEach, describe, expect, it, vi } from "vite-plus/test";
1111
12import {12import {
apps/web/src/components/preview/closePreviewSession.test.ts+1-1
...@@ -4,7 +4,7 @@ import type {...@@ -4,7 +4,7 @@ import type {
4 ScopedThreadRef,4 ScopedThreadRef,
5} from "@t3tools/contracts";5} from "@t3tools/contracts";
6import * as Cause from "effect/Cause";6import * as Cause from "effect/Cause";
7import { AsyncResult } from "effect/unstable/reactivity";7import { AsyncResult } from "effect/reactivity";
8import { beforeEach, describe, expect, it, vi } from "vite-plus/test";8import { beforeEach, describe, expect, it, vi } from "vite-plus/test";
99
10import {10import {
apps/web/src/components/preview/openPreviewSession.test.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7 type ScopedThreadRef,7 type ScopedThreadRef,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import * as Cause from "effect/Cause";9import * as Cause from "effect/Cause";
10import { AsyncResult } from "effect/unstable/reactivity";10import { AsyncResult } from "effect/reactivity";
11import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";11import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
1212
13import * as browserDefaults from "~/browser/browserDefaults";13import * as browserDefaults from "~/browser/browserDefaults";
apps/web/src/components/preview/openPreviewSession.ts+1-1
...@@ -7,7 +7,7 @@ import type {...@@ -7,7 +7,7 @@ import type {
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";8import type { AtomCommandResult } from "@t3tools/client-runtime/state/runtime";
9import * as Cause from "effect/Cause";9import * as Cause from "effect/Cause";
10import { AsyncResult } from "effect/unstable/reactivity";10import { AsyncResult } from "effect/reactivity";
1111
12import {12import {
13 browserDefaultOpenProfileId,13 browserDefaultOpenProfileId,
apps/web/src/components/preview/openTerminalLinkInPreview.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { PreviewSessionSnapshot, ScopedThreadRef } from "@t3tools/contracts";1import type { PreviewSessionSnapshot, ScopedThreadRef } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
4import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";4import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
55
6import {6import {
apps/web/src/components/preview/previewAutomationRequestConsumer.test.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 PreviewTabId,6 PreviewTabId,
7 ThreadId,7 ThreadId,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";9import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
10import { describe, expect, it, vi } from "vite-plus/test";10import { describe, expect, it, vi } from "vite-plus/test";
1111
12import {12import {
apps/web/src/components/preview/previewAutomationRequestConsumer.ts+1-1
...@@ -4,7 +4,7 @@ import type {...@@ -4,7 +4,7 @@ import type {
4 PreviewAutomationResponse,4 PreviewAutomationResponse,
5 PreviewAutomationStreamEvent,5 PreviewAutomationStreamEvent,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import { AsyncResult, Atom } from "effect/unstable/reactivity";7import { AsyncResult, Atom } from "effect/reactivity";
88
9import {9import {
10 PreviewAutomationOperationError,10 PreviewAutomationOperationError,
apps/web/src/components/preview/usePreviewSession.ts+1-1
...@@ -4,7 +4,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -4,7 +4,7 @@ import { useAtomValue } from "@effect/atom-react";
4import { parseScopedThreadKey, scopedThreadKey } from "@t3tools/client-runtime/environment";4import { parseScopedThreadKey, scopedThreadKey } from "@t3tools/client-runtime/environment";
5import type { ScopedThreadRef } from "@t3tools/contracts";5import type { ScopedThreadRef } from "@t3tools/contracts";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import { AsyncResult, Atom } from "effect/unstable/reactivity";7import { AsyncResult, Atom } from "effect/reactivity";
88
9import {9import {
10 applyPreviewServerEvent,10 applyPreviewServerEvent,
apps/web/src/components/projectScriptEditor.test.tsx+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Cause from "effect/Cause";1import * as Cause from "effect/Cause";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
3import { act, StrictMode, type ReactNode } from "react";3import { act, StrictMode, type ReactNode } from "react";
4import { create, type ReactTestRenderer } from "react-test-renderer";4import { create, type ReactTestRenderer } from "react-test-renderer";
5import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";5import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
apps/web/src/components/pullRequest/LinkPullRequestDialog.tsx+1-1
...@@ -13,7 +13,7 @@ import { parsePullRequestReference } from "~/pullRequestReference";...@@ -13,7 +13,7 @@ import { parsePullRequestReference } from "~/pullRequestReference";
13import { useProjects, useThreadShell } from "~/state/entities";13import { useProjects, useThreadShell } from "~/state/entities";
14import { usePullRequestLinking } from "~/hooks/usePullRequestLinking";14import { usePullRequestLinking } from "~/hooks/usePullRequestLinking";
15import { appAtomRegistry } from "~/rpc/atomRegistry";15import { appAtomRegistry } from "~/rpc/atomRegistry";
16import { Atom } from "effect/unstable/reactivity";16import { Atom } from "effect/reactivity";
17import { Button } from "../ui/button";17import { Button } from "../ui/button";
18import {18import {
19 Dialog,19 Dialog,
apps/web/src/components/pullRequest/usePullRequestFilesViewed.test.tsx+1-1
...@@ -4,7 +4,7 @@ import {...@@ -4,7 +4,7 @@ import {
4 type PullRequestFilesViewedResult,4 type PullRequestFilesViewedResult,
5 type PullRequestRef,5 type PullRequestRef,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import { AsyncResult } from "effect/unstable/reactivity";7import { AsyncResult } from "effect/reactivity";
8import { act, StrictMode } from "react";8import { act, StrictMode } from "react";
9import { create, type ReactTestRenderer } from "react-test-renderer";9import { create, type ReactTestRenderer } from "react-test-renderer";
10import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";10import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
apps/web/src/components/settings/ConnectionsSettings.tsx+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8 TerminalIcon,8 TerminalIcon,
9} from "lucide-react";9} from "lucide-react";
10import { useAtomValue } from "@effect/atom-react";10import { useAtomValue } from "@effect/atom-react";
11import { Atom } from "effect/unstable/reactivity";11import { Atom } from "effect/reactivity";
12import {12import {
13 type KeyboardEvent,13 type KeyboardEvent,
14 type ReactNode,14 type ReactNode,
apps/web/src/components/settings/ProjectSettingsPanel.tsx+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 type AtomCommandResult,6 type AtomCommandResult,
7} from "@t3tools/client-runtime/state/runtime";7} from "@t3tools/client-runtime/state/runtime";
8import { scopeProjectRef, scopeThreadRef } from "@t3tools/client-runtime/environment";8import { scopeProjectRef, scopeThreadRef } from "@t3tools/client-runtime/environment";
9import { AsyncResult } from "effect/unstable/reactivity";9import { AsyncResult } from "effect/reactivity";
10import { type EnvironmentId, type ProjectIconOverride } from "@t3tools/contracts";10import { type EnvironmentId, type ProjectIconOverride } from "@t3tools/contracts";
11import { useLocation, useNavigate } from "@tanstack/react-router";11import { useLocation, useNavigate } from "@tanstack/react-router";
12import * as Cause from "effect/Cause";12import * as Cause from "effect/Cause";
apps/web/src/components/settings/SettingsScopeContext.tsx+1-1
...@@ -2,7 +2,7 @@ import { T3_PROJECT_FILE_NAME, type T3ProjectFile } from "@t3tools/contracts";...@@ -2,7 +2,7 @@ import { T3_PROJECT_FILE_NAME, type T3ProjectFile } from "@t3tools/contracts";
2import { parseT3ProjectFile } from "@t3tools/shared/t3ProjectFile";2import { parseT3ProjectFile } from "@t3tools/shared/t3ProjectFile";
3import { useAtomValue } from "@effect/atom-react";3import { useAtomValue } from "@effect/atom-react";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
6import { createContext, type ReactNode, useContext, useMemo } from "react";6import { createContext, type ReactNode, useContext, useMemo } from "react";
77
8import { useEnvironments, usePrimaryEnvironmentId } from "../../state/environments";8import { useEnvironments, usePrimaryEnvironmentId } from "../../state/environments";
apps/web/src/components/settings/useProjectScriptSettings.ts+1-1
...@@ -14,7 +14,7 @@ import {...@@ -14,7 +14,7 @@ import {
14import { resolveProjectScripts } from "@t3tools/shared/projectScripts";14import { resolveProjectScripts } from "@t3tools/shared/projectScripts";
15import { clearProjectSettingsOverrides } from "@t3tools/shared/projectSettings";15import { clearProjectSettingsOverrides } from "@t3tools/shared/projectSettings";
16import * as Cause from "effect/Cause";16import * as Cause from "effect/Cause";
17import { AsyncResult } from "effect/unstable/reactivity";17import { AsyncResult } from "effect/reactivity";
18import { useRef, useState } from "react";18import { useRef, useState } from "react";
1919
20import { isElectron } from "../../env";20import { isElectron } from "../../env";
apps/web/src/components/usage/UsagePriceOverrides.tsx+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import type { EnvironmentId } from "@t3tools/contracts";2import type { EnvironmentId } from "@t3tools/contracts";
3import { ChevronDownIcon, PlusIcon, RotateCcwIcon, XIcon } from "lucide-react";3import { ChevronDownIcon, PlusIcon, RotateCcwIcon, XIcon } from "lucide-react";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
6import { useRef, useState } from "react";6import { useRef, useState } from "react";
77
8import { isElectron } from "../../env";8import { isElectron } from "../../env";
apps/web/src/connection/platform.ts+1-1
...@@ -37,7 +37,7 @@ import * as Option from "effect/Option";...@@ -37,7 +37,7 @@ import * as Option from "effect/Option";
37import * as Queue from "effect/Queue";37import * as Queue from "effect/Queue";
38import * as Ref from "effect/Ref";38import * as Ref from "effect/Ref";
39import * as Stream from "effect/Stream";39import * as Stream from "effect/Stream";
40import { FetchHttpClient } from "effect/unstable/http";40import { FetchHttpClient } from "effect/http";
4141
42import { APP_VERSION } from "../branding";42import { APP_VERSION } from "../branding";
43import { readDesktopPrimaryBearerToken } from "../environments/primary/desktopAuth";43import { readDesktopPrimaryBearerToken } from "../environments/primary/desktopAuth";
apps/web/src/connection/runtime.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6} from "@t3tools/client-runtime/state/threads";6} from "@t3tools/client-runtime/state/threads";
7import { PullRequestDiffLoader } from "@t3tools/client-runtime/state/pull-requests";7import { PullRequestDiffLoader } from "@t3tools/client-runtime/state/pull-requests";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import { Atom } from "effect/unstable/reactivity";9import { Atom } from "effect/reactivity";
1010
11import { runtimeContextLayer } from "../lib/runtime";11import { runtimeContextLayer } from "../lib/runtime";
12import {12import {
apps/web/src/editorPreferences.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6} from "@t3tools/client-runtime/state/runtime";6} from "@t3tools/client-runtime/state/runtime";
7import * as Cause from "effect/Cause";7import * as Cause from "effect/Cause";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { AsyncResult } from "effect/unstable/reactivity";9import { AsyncResult } from "effect/reactivity";
10import { getLocalStorageItem, setLocalStorageItem, useLocalStorage } from "./hooks/useLocalStorage";10import { getLocalStorageItem, setLocalStorageItem, useLocalStorage } from "./hooks/useLocalStorage";
11import { useCallback, useMemo } from "react";11import { useCallback, useMemo } from "react";
12import { shellEnvironment } from "./state/shell";12import { shellEnvironment } from "./state/shell";
apps/web/src/environments/primary/auth.ts+1-1
...@@ -11,7 +11,7 @@ import { EnvironmentHttpCommonError, PRIMARY_LOCAL_ENVIRONMENT_ID } from "@t3too...@@ -11,7 +11,7 @@ import { EnvironmentHttpCommonError, PRIMARY_LOCAL_ENVIRONMENT_ID } from "@t3too
11import type { EnvironmentHttpCommonError as EnvironmentHttpCommonErrorType } from "@t3tools/contracts";11import type { EnvironmentHttpCommonError as EnvironmentHttpCommonErrorType } from "@t3tools/contracts";
12import * as Effect from "effect/Effect";12import * as Effect from "effect/Effect";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import { HttpClientError } from "effect/unstable/http";14import { HttpClientError } from "effect/http";
1515
16import {16import {
17 getPairingTokenFromUrl,17 getPairingTokenFromUrl,
apps/web/src/environments/primary/httpLayer.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { DesktopBridge } from "@t3tools/contracts";1import type { DesktopBridge } from "@t3tools/contracts";
2import { afterEach, describe, expect, it, vi } from "@effect/vitest";2import { afterEach, describe, expect, it, vi } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import { HttpClient } from "effect/unstable/http";4import { HttpClient } from "effect/http";
55
6import { __resetDesktopPrimaryAuthForTests } from "./desktopAuth";6import { __resetDesktopPrimaryAuthForTests } from "./desktopAuth";
7import { makePrimaryEnvironmentHttpLayer } from "./httpLayer";7import { makePrimaryEnvironmentHttpLayer } from "./httpLayer";
apps/web/src/environments/primary/httpLayer.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";1import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http";4import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/http";
55
6import { readDesktopPrimaryBearerToken } from "./desktopAuth";6import { readDesktopPrimaryBearerToken } from "./desktopAuth";
7import { resolvePrimaryEnvironmentHttpUrl } from "./target";7import { resolvePrimaryEnvironmentHttpUrl } from "./target";
apps/web/src/environments/primary/sessionState.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
6import { useCallback } from "react";6import { useCallback } from "react";
77
8import { isLocalEnvironmentDisabled } from "../../localEnvironment";8import { isLocalEnvironmentDisabled } from "../../localEnvironment";
apps/web/src/hooks/showThreadUndoNotice.test.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { AsyncResult } from "effect/unstable/reactivity";1import { AsyncResult } from "effect/reactivity";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";3import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
44
apps/web/src/hooks/useLoadBalancedEnvironment.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { RegistryContext, useAtomValue } from "@effect/atom-react";1import { RegistryContext, useAtomValue } from "@effect/atom-react";
2import { chooseLoadBalancedEnvironment } from "@t3tools/client-runtime/load-balancing";2import { chooseLoadBalancedEnvironment } from "@t3tools/client-runtime/load-balancing";
3import type { EnvironmentId } from "@t3tools/contracts";3import type { EnvironmentId } from "@t3tools/contracts";
4import { Atom } from "effect/unstable/reactivity";4import { Atom } from "effect/reactivity";
5import { useCallback, useContext, useMemo } from "react";5import { useCallback, useContext, useMemo } from "react";
66
7import { serverEnvironment } from "../state/server";7import { serverEnvironment } from "../state/server";
apps/web/src/hooks/useThreadActions.ts+1-1
...@@ -11,7 +11,7 @@ import { EnvironmentId, type ScopedThreadRef, ThreadId } from "@t3tools/contract...@@ -11,7 +11,7 @@ import { EnvironmentId, type ScopedThreadRef, ThreadId } from "@t3tools/contract
11import { resolveWorktreeCleanup } from "@t3tools/shared/projectSettings";11import { resolveWorktreeCleanup } from "@t3tools/shared/projectSettings";
12import * as Cause from "effect/Cause";12import * as Cause from "effect/Cause";
13import * as Schema from "effect/Schema";13import * as Schema from "effect/Schema";
14import { AsyncResult } from "effect/unstable/reactivity";14import { AsyncResult } from "effect/reactivity";
15import { useRouter } from "@tanstack/react-router";15import { useRouter } from "@tanstack/react-router";
16import { useCallback, useMemo, useRef } from "react";16import { useCallback, useMemo, useRef } from "react";
1717
apps/web/src/lib/assistantCitationNavigation.ts+3-3
...@@ -3,7 +3,7 @@ import {...@@ -3,7 +3,7 @@ import {
3 formatAssistantCitationHref,3 formatAssistantCitationHref,
4 parseAssistantCitationHref,4 parseAssistantCitationHref,
5} from "@t3tools/shared/assistantCitations";5} from "@t3tools/shared/assistantCitations";
6import * as Encoding from "effect/Encoding";6import * as Base64Url from "effect/encoding/Base64Url";
7import * as Result from "effect/Result";7import * as Result from "effect/Result";
88
9import { randomUUID } from "./utils";9import { randomUUID } from "./utils";
...@@ -18,7 +18,7 @@ const CITATION_HASH_PREFIX = "assistant-citation=";...@@ -18,7 +18,7 @@ const CITATION_HASH_PREFIX = "assistant-citation=";
1818
19/** Base64url keeps router hash normalization from decoding quote whitespace or source IDs. */19/** Base64url keeps router hash normalization from decoding quote whitespace or source IDs. */
20export function assistantCitationHash(citation: AssistantCitation) {20export function assistantCitationHash(citation: AssistantCitation) {
21 return `${CITATION_HASH_PREFIX}${Encoding.encodeBase64Url(formatAssistantCitationHref(citation))}`;21 return `${CITATION_HASH_PREFIX}${Base64Url.encode(formatAssistantCitationHref(citation))}`;
22}22}
2323
24export function assistantCitationFromLocation(href: string) {24export function assistantCitationFromLocation(href: string) {
...@@ -28,7 +28,7 @@ export function assistantCitationFromLocation(href: string) {...@@ -28,7 +28,7 @@ export function assistantCitationFromLocation(href: string) {
28 if (!hash.startsWith(CITATION_HASH_PREFIX) || hash.length > 140_000) return null;28 if (!hash.startsWith(CITATION_HASH_PREFIX) || hash.length > 140_000) return null;
29 try {29 try {
30 return parseAssistantCitationHref(30 return parseAssistantCitationHref(
31 Result.getOrThrow(Encoding.decodeBase64UrlString(hash.slice(CITATION_HASH_PREFIX.length))),31 Result.getOrThrow(Base64Url.decodeString(hash.slice(CITATION_HASH_PREFIX.length))),
32 );32 );
33 } catch {33 } catch {
34 return null;34 return null;
apps/web/src/lib/attachmentUploadQueue.test.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { EnvironmentId } from "@t3tools/contracts";1import { EnvironmentId } from "@t3tools/contracts";
2import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";2import { afterEach, beforeEach, describe, expect, it, vi } from "vite-plus/test";
3import { Atom, AsyncResult } from "effect/unstable/reactivity";3import { Atom, AsyncResult } from "effect/reactivity";
4import { appAtomRegistry } from "../rpc/atomRegistry";4import { appAtomRegistry } from "../rpc/atomRegistry";
55
6import {6import {
...@@ -28,7 +28,7 @@ vi.mock("@t3tools/client-runtime/state/runtime", () => ({...@@ -28,7 +28,7 @@ vi.mock("@t3tools/client-runtime/state/runtime", () => ({
28}));28}));
2929
30vi.mock("../rpc/atomRegistry", async () => {30vi.mock("../rpc/atomRegistry", async () => {
31 const { AtomRegistry } = await import("effect/unstable/reactivity");31 const { AtomRegistry } = await import("effect/reactivity");
32 return { appAtomRegistry: AtomRegistry.make() };32 return { appAtomRegistry: AtomRegistry.make() };
33});33});
3434
apps/web/src/lib/attachmentUploadQueue.ts+1-1
...@@ -13,7 +13,7 @@ import {...@@ -13,7 +13,7 @@ import {
13} from "@t3tools/client-runtime/state/attachments";13} from "@t3tools/client-runtime/state/attachments";
14import { create } from "zustand";14import { create } from "zustand";
15import * as Option from "effect/Option";15import * as Option from "effect/Option";
16import { AsyncResult } from "effect/unstable/reactivity";16import { AsyncResult } from "effect/reactivity";
1717
18import {18import {
19 DraftId,19 DraftId,
apps/web/src/lib/diffFileContents.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { FileDiffMetadata } from "@pierre/diffs";1import type { FileDiffMetadata } from "@pierre/diffs";
2import { EnvironmentId, type ReviewDiffFileContentsResult } from "@t3tools/contracts";2import { EnvironmentId, type ReviewDiffFileContentsResult } from "@t3tools/contracts";
3import * as Cause from "effect/Cause";3import * as Cause from "effect/Cause";
4import { AsyncResult } from "effect/unstable/reactivity";4import { AsyncResult } from "effect/reactivity";
5import { describe, expect, it, vi } from "vite-plus/test";5import { describe, expect, it, vi } from "vite-plus/test";
66
7import { createGitDiffFileContentsLoader } from "./diffFileContents";7import { createGitDiffFileContentsLoader } from "./diffFileContents";
apps/web/src/lib/discardComposerDraft.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Cause from "effect/Cause";1import * as Cause from "effect/Cause";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
33
4import {4import {
5 type ComposerThreadTarget,5 type ComposerThreadTarget,
apps/web/src/lib/runtime.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import * as ManagedRuntime from "effect/ManagedRuntime";1import * as ManagedRuntime from "effect/ManagedRuntime";
2import type * as Effect from "effect/Effect";2import type * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Socket from "effect/unstable/socket/Socket";4import * as Socket from "effect/socket/Socket";
55
6import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";6import { remoteHttpClientLayer } from "@t3tools/client-runtime/rpc";
7import { makeRelayClientTracingLayer } from "@t3tools/shared/relayTracing";7import { makeRelayClientTracingLayer } from "@t3tools/shared/relayTracing";
apps/web/src/lib/utils.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { MessageId, ProjectId, ThreadId } from "@t3tools/contracts";1import { MessageId, ProjectId, ThreadId } from "@t3tools/contracts";
2import { type CxOptions, cx } from "class-variance-authority";2import { type CxOptions, cx } from "class-variance-authority";
3import * as Encoding from "effect/Encoding";3import * as Hex from "effect/encoding/Hex";
4import { extendTailwindMerge } from "tailwind-merge";4import { extendTailwindMerge } from "tailwind-merge";
5import { DraftId } from "../composerDraftStore";5import { DraftId } from "../composerDraftStore";
66
...@@ -38,7 +38,7 @@ export function randomUUID(): string {...@@ -38,7 +38,7 @@ export function randomUUID(): string {
38 const bytes = globalThis.crypto.getRandomValues(new Uint8Array(16));38 const bytes = globalThis.crypto.getRandomValues(new Uint8Array(16));
39 bytes[6] = (bytes[6]! & 0x0f) | 0x40;39 bytes[6] = (bytes[6]! & 0x0f) | 0x40;
40 bytes[8] = (bytes[8]! & 0x3f) | 0x80;40 bytes[8] = (bytes[8]! & 0x3f) | 0x80;
41 const hex = Encoding.encodeHex(bytes);41 const hex = Hex.encode(bytes);
42 return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;42 return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
43}43}
4444
apps/web/src/observability/clientTracing.ts+2-2
...@@ -2,8 +2,8 @@ import * as Exit from "effect/Exit";...@@ -2,8 +2,8 @@ import * as Exit from "effect/Exit";
2import * as Layer from "effect/Layer";2import * as Layer from "effect/Layer";
3import * as ManagedRuntime from "effect/ManagedRuntime";3import * as ManagedRuntime from "effect/ManagedRuntime";
4import * as Scope from "effect/Scope";4import * as Scope from "effect/Scope";
5import { HttpClient } from "effect/unstable/http";5import { HttpClient } from "effect/http";
6import { OtlpExporter, OtlpSerialization, OtlpTracer } from "effect/unstable/observability";6import { OtlpExporter, OtlpSerialization, OtlpTracer } from "effect/observability";
77
8import { settleAsyncResult, squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";8import { settleAsyncResult, squashAtomCommandFailure } from "@t3tools/client-runtime/state/runtime";
9import { safeErrorLogAttributes } from "@t3tools/client-runtime/errors";9import { safeErrorLogAttributes } from "@t3tools/client-runtime/errors";
apps/web/src/onboarding/useProjectScans.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { RegistryContext, useAtomValue } from "@effect/atom-react";1import { RegistryContext, useAtomValue } from "@effect/atom-react";
2import type { EnvironmentId } from "@t3tools/contracts";2import type { EnvironmentId } from "@t3tools/contracts";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import { AsyncResult, Atom } from "effect/unstable/reactivity";4import { AsyncResult, Atom } from "effect/reactivity";
5import { useContext, useMemo } from "react";5import { useContext, useMemo } from "react";
66
7import { agentSessionScan } from "../state/agentSessions";7import { agentSessionScan } from "../state/agentSessions";
apps/web/src/previewStateStore.ts+1-1
...@@ -15,7 +15,7 @@ import {...@@ -15,7 +15,7 @@ import {
15 type PreviewSessionSnapshot,15 type PreviewSessionSnapshot,
16 type ScopedThreadRef,16 type ScopedThreadRef,
17} from "@t3tools/contracts";17} from "@t3tools/contracts";
18import { Atom } from "effect/unstable/reactivity";18import { Atom } from "effect/reactivity";
1919
20import { PREVIEW_RECENT_URL_LIMIT } from "./components/preview/previewConstants";20import { PREVIEW_RECENT_URL_LIMIT } from "./components/preview/previewConstants";
21import { appAtomRegistry } from "./rpc/atomRegistry";21import { appAtomRegistry } from "./rpc/atomRegistry";
apps/web/src/rpc/atomRegistry.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { RegistryContext } from "@effect/atom-react";1import { RegistryContext } from "@effect/atom-react";
2import { AtomRegistry } from "effect/unstable/reactivity";2import { AtomRegistry } from "effect/reactivity";
3import { createElement } from "react";3import { createElement } from "react";
44
5export const appAtomRegistry = AtomRegistry.make();5export const appAtomRegistry = AtomRegistry.make();
apps/web/src/rpc/requestLatencyState.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { useAtomValue } from "@effect/atom-react";1import { useAtomValue } from "@effect/atom-react";
2import { WS_METHODS } from "@t3tools/contracts";2import { WS_METHODS } from "@t3tools/contracts";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
44
5import { appAtomRegistry } from "./atomRegistry";5import { appAtomRegistry } from "./atomRegistry";
66
apps/web/src/state/assets.ts+1-1
...@@ -2,7 +2,7 @@ import {...@@ -2,7 +2,7 @@ import {
2 createAssetEnvironmentAtoms,2 createAssetEnvironmentAtoms,
3 createProjectFaviconUrlAtomFamily,3 createProjectFaviconUrlAtomFamily,
4} from "@t3tools/client-runtime/state/assets";4} from "@t3tools/client-runtime/state/assets";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
66
7import { connectionAtomRuntime } from "../connection/runtime";7import { connectionAtomRuntime } from "../connection/runtime";
8import { projectFaviconCache } from "../assets/projectFaviconCache";8import { projectFaviconCache } from "../assets/projectFaviconCache";
apps/web/src/state/desktopNetworkAccess.test.ts+2-2
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { AdvertisedEndpoint, DesktopServerExposureState } from "@t3tools/contracts";1import type { AdvertisedEndpoint, DesktopServerExposureState } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";3import * as AsyncResult from "effect/reactivity/AsyncResult";
4import { AtomRegistry } from "effect/unstable/reactivity";4import { AtomRegistry } from "effect/reactivity";
5import { describe, expect, it, vi } from "vite-plus/test";5import { describe, expect, it, vi } from "vite-plus/test";
66
7import { createDesktopNetworkAccessStateAtom } from "./desktopNetworkAccess";7import { createDesktopNetworkAccessStateAtom } from "./desktopNetworkAccess";
apps/web/src/state/desktopNetworkAccess.ts+1-1
...@@ -5,7 +5,7 @@ import type {...@@ -5,7 +5,7 @@ import type {
5} from "@t3tools/contracts";5} from "@t3tools/contracts";
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import { appAtomRegistry } from "~/rpc/atomRegistry";10import { appAtomRegistry } from "~/rpc/atomRegistry";
1111
apps/web/src/state/desktopSshHosts.test.ts+2-2
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { DesktopDiscoveredSshHost } from "@t3tools/contracts";1import type { DesktopDiscoveredSshHost } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import { AtomRegistry } from "effect/unstable/reactivity";3import { AtomRegistry } from "effect/reactivity";
4import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";4import * as AsyncResult from "effect/reactivity/AsyncResult";
5import { describe, expect, it, vi } from "vite-plus/test";5import { describe, expect, it, vi } from "vite-plus/test";
66
7import { createDesktopSshHostsStateAtom, filterDiscoveredSshHosts } from "./desktopSshHosts";7import { createDesktopSshHostsStateAtom, filterDiscoveredSshHosts } from "./desktopSshHosts";
apps/web/src/state/desktopSshHosts.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { DesktopBridge, DesktopDiscoveredSshHost } from "@t3tools/contracts";1import type { DesktopBridge, DesktopDiscoveredSshHost } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import { Atom } from "effect/unstable/reactivity";4import { Atom } from "effect/reactivity";
55
6type DesktopSshDiscoveryBridge = Pick<DesktopBridge, "discoverSshHosts">;6type DesktopSshDiscoveryBridge = Pick<DesktopBridge, "discoverSshHosts">;
77
apps/web/src/state/desktopUpdate.test.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { DesktopUpdateState } from "@t3tools/contracts";1import type { DesktopUpdateState } from "@t3tools/contracts";
2import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";2import * as AsyncResult from "effect/reactivity/AsyncResult";
3import { AtomRegistry } from "effect/unstable/reactivity";3import { AtomRegistry } from "effect/reactivity";
4import { afterEach, describe, expect, it, vi } from "vite-plus/test";4import { afterEach, describe, expect, it, vi } from "vite-plus/test";
55
6import { createDesktopUpdateStateAtom, DesktopUpdateStateReadError } from "./desktopUpdate";6import { createDesktopUpdateStateAtom, DesktopUpdateStateReadError } from "./desktopUpdate";
apps/web/src/state/desktopUpdate.ts+2-2
...@@ -4,8 +4,8 @@ import * as Effect from "effect/Effect";...@@ -4,8 +4,8 @@ import * as Effect from "effect/Effect";
4import * as Queue from "effect/Queue";4import * as Queue from "effect/Queue";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as Stream from "effect/Stream";6import * as Stream from "effect/Stream";
7import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";7import * as AsyncResult from "effect/reactivity/AsyncResult";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10type DesktopUpdateBridge = Pick<DesktopBridge, "getUpdateState" | "onUpdateState">;10type DesktopUpdateBridge = Pick<DesktopBridge, "getUpdateState" | "onUpdateState">;
1111
apps/web/src/state/desktopWslState.test.ts+2-2
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { DesktopWslState } from "@t3tools/contracts";1import type { DesktopWslState } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import * as AsyncResult from "effect/unstable/reactivity/AsyncResult";3import * as AsyncResult from "effect/reactivity/AsyncResult";
4import { AtomRegistry } from "effect/unstable/reactivity";4import { AtomRegistry } from "effect/reactivity";
5import { describe, expect, it, vi } from "vite-plus/test";5import { describe, expect, it, vi } from "vite-plus/test";
66
7import { createDesktopWslStateAtom } from "./desktopWslState";7import { createDesktopWslStateAtom } from "./desktopWslState";
apps/web/src/state/desktopWslState.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { DesktopBridge, DesktopWslState } from "@t3tools/contracts";1import type { DesktopBridge, DesktopWslState } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import { Atom } from "effect/unstable/reactivity";4import { Atom } from "effect/reactivity";
55
6import { appAtomRegistry } from "~/rpc/atomRegistry";6import { appAtomRegistry } from "~/rpc/atomRegistry";
77
apps/web/src/state/device.ts+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8import type { DeviceServiceState, EnvironmentId } from "@t3tools/contracts";8import type { DeviceServiceState, EnvironmentId } from "@t3tools/contracts";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import { AsyncResult, Atom } from "effect/unstable/reactivity";11import { AsyncResult, Atom } from "effect/reactivity";
1212
13import { connectionAtomRuntime } from "../connection/runtime";13import { connectionAtomRuntime } from "../connection/runtime";
14import { appAtomRegistry } from "../rpc/atomRegistry";14import { appAtomRegistry } from "../rpc/atomRegistry";
apps/web/src/state/entities.ts+1-1
...@@ -11,7 +11,7 @@ import {...@@ -11,7 +11,7 @@ import {
11} from "@t3tools/client-runtime/state/threads";11} from "@t3tools/client-runtime/state/threads";
12import type { ScopedProjectRef, ScopedThreadRef, ServerConfig } from "@t3tools/contracts";12import type { ScopedProjectRef, ScopedThreadRef, ServerConfig } from "@t3tools/contracts";
13import type { EnvironmentId, OrchestrationV2ProjectedTurnItem } from "@t3tools/contracts";13import type { EnvironmentId, OrchestrationV2ProjectedTurnItem } from "@t3tools/contracts";
14import { Atom } from "effect/unstable/reactivity";14import { Atom } from "effect/reactivity";
15import { appAtomRegistry } from "../rpc/atomRegistry";15import { appAtomRegistry } from "../rpc/atomRegistry";
16import { environmentProjects } from "./projects";16import { environmentProjects } from "./projects";
17import { environmentServerConfigsAtom } from "./server";17import { environmentServerConfigsAtom } from "./server";
apps/web/src/state/paginatedBranches.test.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import type { VcsListRefsResult } from "@t3tools/contracts";1import type { VcsListRefsResult } from "@t3tools/contracts";
2import { AsyncResult } from "effect/unstable/reactivity";2import { AsyncResult } from "effect/reactivity";
3import { describe, expect, it } from "vite-plus/test";3import { describe, expect, it } from "vite-plus/test";
44
5import {5import {
apps/web/src/state/paginatedBranches.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { VcsListRefsResult } from "@t3tools/contracts";1import type { VcsListRefsResult } from "@t3tools/contracts";
2import * as Option from "effect/Option";2import * as Option from "effect/Option";
3import { AsyncResult } from "effect/unstable/reactivity";3import { AsyncResult } from "effect/reactivity";
44
5const DEFAULT_NEXT_PAGE_DISTANCE_PX = 96;5const DEFAULT_NEXT_PAGE_DISTANCE_PX = 96;
66
apps/web/src/state/presentation.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 createEnvironmentSummaryAtoms,5 createEnvironmentSummaryAtoms,
6} from "@t3tools/client-runtime/state/presentation";6} from "@t3tools/client-runtime/state/presentation";
7import type { EnvironmentId } from "@t3tools/contracts";7import type { EnvironmentId } from "@t3tools/contracts";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import { environmentCatalog } from "../connection/catalog";10import { environmentCatalog } from "../connection/catalog";
11import { serverEnvironment } from "./server";11import { serverEnvironment } from "./server";
apps/web/src/state/primaryEnvironment.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { Atom } from "effect/unstable/reactivity";1import { Atom } from "effect/reactivity";
22
3import { environmentCatalog } from "../connection/catalog";3import { environmentCatalog } from "../connection/catalog";
44
apps/web/src/state/projectClones.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import { parseScopedProjectKey, scopedProjectKey } from "@t3tools/client-runtime/environment";2import { parseScopedProjectKey, scopedProjectKey } from "@t3tools/client-runtime/environment";
3import type { EnvironmentId, ProjectCloneSnapshot, ScopedProjectRef } from "@t3tools/contracts";3import type { EnvironmentId, ProjectCloneSnapshot, ScopedProjectRef } from "@t3tools/contracts";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
66
7import { environmentServerConfigsAtom } from "./server";7import { environmentServerConfigsAtom } from "./server";
8import { sourceControlEnvironment } from "./sourceControl";8import { sourceControlEnvironment } from "./sourceControl";
apps/web/src/state/pullRequests.ts+1-1
...@@ -13,7 +13,7 @@ import type {...@@ -13,7 +13,7 @@ import type {
13 PullRequestSummary,13 PullRequestSummary,
14} from "@t3tools/contracts";14} from "@t3tools/contracts";
15import * as Option from "effect/Option";15import * as Option from "effect/Option";
16import { AsyncResult, Atom } from "effect/unstable/reactivity";16import { AsyncResult, Atom } from "effect/reactivity";
17import { useCallback, useLayoutEffect, useMemo } from "react";17import { useCallback, useLayoutEffect, useMemo } from "react";
1818
19import { connectionAtomRuntime } from "../connection/runtime";19import { connectionAtomRuntime } from "../connection/runtime";
apps/web/src/state/queries.ts+1-1
...@@ -20,7 +20,7 @@ import type {...@@ -20,7 +20,7 @@ import type {
20} from "@t3tools/contracts";20} from "@t3tools/contracts";
21import * as Cause from "effect/Cause";21import * as Cause from "effect/Cause";
22import * as Option from "effect/Option";22import * as Option from "effect/Option";
23import { AsyncResult, Atom } from "effect/unstable/reactivity";23import { AsyncResult, Atom } from "effect/reactivity";
24import { useCallback, useEffect, useMemo, useState } from "react";24import { useCallback, useEffect, useMemo, useState } from "react";
2525
26import { appAtomRegistry } from "../rpc/atomRegistry";26import { appAtomRegistry } from "../rpc/atomRegistry";
apps/web/src/state/query.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { useAtomRefresh, useAtomValue } from "@effect/atom-react";1import { useAtomRefresh, useAtomValue } from "@effect/atom-react";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import { AsyncResult, Atom } from "effect/unstable/reactivity";4import { AsyncResult, Atom } from "effect/reactivity";
55
6const EMPTY_ASYNC_RESULT_ATOM = Atom.make(AsyncResult.initial<never, never>(false)).pipe(6const EMPTY_ASYNC_RESULT_ATOM = Atom.make(AsyncResult.initial<never, never>(false)).pipe(
7 Atom.withLabel("web-environment-query:empty"),7 Atom.withLabel("web-environment-query:empty"),
apps/web/src/state/server.ts+1-1
...@@ -14,7 +14,7 @@ import { createOutdatedServerUpdateCommand } from "@t3tools/client-runtime/state...@@ -14,7 +14,7 @@ import { createOutdatedServerUpdateCommand } from "@t3tools/client-runtime/state
14import { createEnvironmentServerConfigsAtom } from "@t3tools/client-runtime/state/shell";14import { createEnvironmentServerConfigsAtom } from "@t3tools/client-runtime/state/shell";
15import { mergeWithDefaultKeybindings } from "@t3tools/shared/keybindings";15import { mergeWithDefaultKeybindings } from "@t3tools/shared/keybindings";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import { AsyncResult, Atom } from "effect/unstable/reactivity";17import { AsyncResult, Atom } from "effect/reactivity";
1818
19import { environmentCatalog } from "../connection/catalog";19import { environmentCatalog } from "../connection/catalog";
20import { connectionAtomRuntime } from "../connection/runtime";20import { connectionAtomRuntime } from "../connection/runtime";
apps/web/src/state/session.ts+1-1
...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";...@@ -2,7 +2,7 @@ import { useAtomValue } from "@effect/atom-react";
2import { createEnvironmentSessionAtoms } from "@t3tools/client-runtime/state/session";2import { createEnvironmentSessionAtoms } from "@t3tools/client-runtime/state/session";
3import type { EnvironmentId } from "@t3tools/contracts";3import type { EnvironmentId } from "@t3tools/contracts";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
66
7import { connectionAtomRuntime } from "../connection/runtime";7import { connectionAtomRuntime } from "../connection/runtime";
8import { appAtomRegistry } from "../rpc/atomRegistry";8import { appAtomRegistry } from "../rpc/atomRegistry";
apps/web/src/state/shell.test.ts+1-1
...@@ -6,7 +6,7 @@ import type { EnvironmentCatalogState } from "@t3tools/client-runtime/state/conn...@@ -6,7 +6,7 @@ import type { EnvironmentCatalogState } from "@t3tools/client-runtime/state/conn
6import type { EnvironmentShellState } from "@t3tools/client-runtime/state/shell";6import type { EnvironmentShellState } from "@t3tools/client-runtime/state/shell";
7import { EnvironmentId } from "@t3tools/contracts";7import { EnvironmentId } from "@t3tools/contracts";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import { Atom, AtomRegistry } from "effect/unstable/reactivity";9import { Atom, AtomRegistry } from "effect/reactivity";
10import { describe, expect, it } from "vite-plus/test";10import { describe, expect, it } from "vite-plus/test";
1111
12import { createAllEnvironmentProjectSnapshotsReadyAtom } from "./shell";12import { createAllEnvironmentProjectSnapshotsReadyAtom } from "./shell";
apps/web/src/state/shell.ts+1-1
...@@ -14,7 +14,7 @@ import {...@@ -14,7 +14,7 @@ import {
14} from "@t3tools/client-runtime/state/connections";14} from "@t3tools/client-runtime/state/connections";
15import type { EnvironmentId } from "@t3tools/contracts";15import type { EnvironmentId } from "@t3tools/contracts";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import { AsyncResult, Atom } from "effect/unstable/reactivity";17import { AsyncResult, Atom } from "effect/reactivity";
1818
19import { environmentCatalog } from "../connection/catalog";19import { environmentCatalog } from "../connection/catalog";
20import { connectionAtomRuntime } from "../connection/runtime";20import { connectionAtomRuntime } from "../connection/runtime";
apps/web/src/state/sourceControlActions.ts+1-1
...@@ -18,7 +18,7 @@ import type {...@@ -18,7 +18,7 @@ import type {
18} from "@t3tools/contracts";18} from "@t3tools/contracts";
19import * as Cause from "effect/Cause";19import * as Cause from "effect/Cause";
20import * as Option from "effect/Option";20import * as Option from "effect/Option";
21import { AsyncResult } from "effect/unstable/reactivity";21import { AsyncResult } from "effect/reactivity";
22import { useCallback } from "react";22import { useCallback } from "react";
2323
24import { appAtomRegistry } from "../rpc/atomRegistry";24import { appAtomRegistry } from "../rpc/atomRegistry";
apps/web/src/state/threads.test.ts+1-1
...@@ -11,7 +11,7 @@ import {...@@ -11,7 +11,7 @@ import {
11} from "@t3tools/contracts";11} from "@t3tools/contracts";
12import { makeThreadProjectionFixture } from "../test-fixtures";12import { makeThreadProjectionFixture } from "../test-fixtures";
13import * as Option from "effect/Option";13import * as Option from "effect/Option";
14import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";14import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
15import { describe, expect, it } from "vite-plus/test";15import { describe, expect, it } from "vite-plus/test";
1616
17import { createRunningThreadKeepAliveAtom } from "./threads";17import { createRunningThreadKeepAliveAtom } from "./threads";
apps/web/src/state/threads.ts+1-1
...@@ -11,7 +11,7 @@ import {...@@ -11,7 +11,7 @@ import {
11} from "@t3tools/client-runtime/state/threads";11} from "@t3tools/client-runtime/state/threads";
12import type { EnvironmentId, OrchestrationV2ThreadShell, ThreadId } from "@t3tools/contracts";12import type { EnvironmentId, OrchestrationV2ThreadShell, ThreadId } from "@t3tools/contracts";
13import * as Option from "effect/Option";13import * as Option from "effect/Option";
14import { AsyncResult, Atom } from "effect/unstable/reactivity";14import { AsyncResult, Atom } from "effect/reactivity";
1515
16import { environmentCatalog } from "../connection/catalog";16import { environmentCatalog } from "../connection/catalog";
17import { connectionAtomRuntime } from "../connection/runtime";17import { connectionAtomRuntime } from "../connection/runtime";
apps/web/src/state/usage.ts+1-1
...@@ -16,7 +16,7 @@ import {...@@ -16,7 +16,7 @@ import {
16} from "@t3tools/contracts";16} from "@t3tools/contracts";
17import { needsCursorKeychainAccess, refreshUsage } from "@t3tools/client-runtime/state/usage";17import { needsCursorKeychainAccess, refreshUsage } from "@t3tools/client-runtime/state/usage";
18import * as Option from "effect/Option";18import * as Option from "effect/Option";
19import { AsyncResult, Atom } from "effect/unstable/reactivity";19import { AsyncResult, Atom } from "effect/reactivity";
20import { useCallback, useMemo } from "react";20import { useCallback, useMemo } from "react";
2121
22import { mergeUsage, type EnvironmentUsage, type MergedUsage } from "@t3tools/shared/usageMerge";22import { mergeUsage, type EnvironmentUsage, type MergedUsage } from "@t3tools/shared/usageMerge";
apps/web/src/state/use-atom-query-runner.ts+1-1
...@@ -4,7 +4,7 @@ import {...@@ -4,7 +4,7 @@ import {
4 type AtomQueryOptions,4 type AtomQueryOptions,
5 type AtomCommandResult,5 type AtomCommandResult,
6} from "@t3tools/client-runtime/state/runtime";6} from "@t3tools/client-runtime/state/runtime";
7import { AsyncResult, type Atom } from "effect/unstable/reactivity";7import { AsyncResult, type Atom } from "effect/reactivity";
8import { useCallback, useContext } from "react";8import { useCallback, useContext } from "react";
99
10export function useAtomQueryRunner<T, A, E>(10export function useAtomQueryRunner<T, A, E>(
apps/web/src/state/v2ItemSupport.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7} from "@t3tools/client-runtime/state/item-support";7} from "@t3tools/client-runtime/state/item-support";
8import type { EnvironmentId, ThreadId, TurnItemId } from "@t3tools/contracts";8import type { EnvironmentId, ThreadId, TurnItemId } from "@t3tools/contracts";
9import { scopeThreadRef } from "@t3tools/client-runtime/environment";9import { scopeThreadRef } from "@t3tools/client-runtime/environment";
10import { Atom } from "effect/unstable/reactivity";10import { Atom } from "effect/reactivity";
1111
12import { environmentThreadDetails } from "./threads";12import { environmentThreadDetails } from "./threads";
1313
apps/web/src/state/waitForAtomValue.test.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import { Atom, AtomRegistry } from "effect/unstable/reactivity";1import { Atom, AtomRegistry } from "effect/reactivity";
2import { describe, expect, it, vi } from "vite-plus/test";2import { describe, expect, it, vi } from "vite-plus/test";
33
4import { waitForAtomValue } from "./waitForAtomValue";4import { waitForAtomValue } from "./waitForAtomValue";
apps/web/src/state/waitForAtomValue.ts+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import type { Atom, AtomRegistry } from "effect/unstable/reactivity";1import type { Atom, AtomRegistry } from "effect/reactivity";
22
3export async function waitForAtomValue<A>(input: {3export async function waitForAtomValue<A>(input: {
4 readonly registry: AtomRegistry.AtomRegistry;4 readonly registry: AtomRegistry.AtomRegistry;
apps/web/test/environmentHttpTest.ts+2-2
...@@ -18,8 +18,8 @@ import type * as Context from "effect/Context";...@@ -18,8 +18,8 @@ import type * as Context from "effect/Context";
18import * as Effect from "effect/Effect";18import * as Effect from "effect/Effect";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import * as ManagedRuntime from "effect/ManagedRuntime";20import * as ManagedRuntime from "effect/ManagedRuntime";
21import { HttpApiTest } from "effect/unstable/httpapi";21import { HttpApiTest } from "effect/http-api";
22import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";22import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
2323
24import { PrimaryEnvironmentHttpClient } from "../src/environments/primary/httpClient";24import { PrimaryEnvironmentHttpClient } from "../src/environments/primary/httpClient";
25import { __setPrimaryHttpRunnerForTests } from "../src/lib/runtime";25import { __setPrimaryHttpRunnerForTests } from "../src/lib/runtime";
infra/relay/package.json+1-1
...@@ -18,7 +18,7 @@...@@ -18,7 +18,7 @@
18 "@t3tools/client-runtime": "workspace:*",18 "@t3tools/client-runtime": "workspace:*",
19 "@t3tools/contracts": "workspace:*",19 "@t3tools/contracts": "workspace:*",
20 "@t3tools/shared": "workspace:*",20 "@t3tools/shared": "workspace:*",
21 "alchemy": "2.0.0-beta.79",21 "alchemy": "2.0.0-beta.80",
22 "drizzle-orm": "1.0.0-rc.5-ab785fc",22 "drizzle-orm": "1.0.0-rc.5-ab785fc",
23 "effect": "catalog:"23 "effect": "catalog:"
24 },24 },
infra/relay/scripts/android-push-smoke.ts+1-1
...@@ -6,7 +6,7 @@ import * as Clock from "effect/Clock";...@@ -6,7 +6,7 @@ import * as Clock from "effect/Clock";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Redacted from "effect/Redacted";7import * as Redacted from "effect/Redacted";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";9import * as FetchHttpClient from "effect/http/FetchHttpClient";
1010
11import * as RelayConfiguration from "../src/Config.ts";11import * as RelayConfiguration from "../src/Config.ts";
12import * as WebCrypto from "../src/WebCrypto.ts";12import * as WebCrypto from "../src/WebCrypto.ts";
infra/relay/scripts/android-push-watch.ts+4-4
...@@ -19,10 +19,10 @@ import * as Layer from "effect/Layer";...@@ -19,10 +19,10 @@ import * as Layer from "effect/Layer";
19import * as Redacted from "effect/Redacted";19import * as Redacted from "effect/Redacted";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";22import * as FetchHttpClient from "effect/http/FetchHttpClient";
23import * as RpcClient from "effect/unstable/rpc/RpcClient";23import * as RpcClient from "effect/rpc/RpcClient";
24import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";24import * as RpcSerialization from "effect/rpc/RpcSerialization";
25import * as Socket from "effect/unstable/socket/Socket";25import * as Socket from "effect/socket/Socket";
2626
27import * as RelayConfiguration from "../src/Config.ts";27import * as RelayConfiguration from "../src/Config.ts";
28import { androidActivityData, fitFcmData } from "../src/agentActivity/fcmPayloads.ts";28import { androidActivityData, fitFcmData } from "../src/agentActivity/fcmPayloads.ts";
infra/relay/src/agentActivity/ApnsClient.test.ts+3-3
...@@ -11,9 +11,9 @@ import * as Layer from "effect/Layer";...@@ -11,9 +11,9 @@ import * as Layer from "effect/Layer";
11import * as Redacted from "effect/Redacted";11import * as Redacted from "effect/Redacted";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as TestClock from "effect/testing/TestClock";13import * as TestClock from "effect/testing/TestClock";
14import * as HttpClient from "effect/unstable/http/HttpClient";14import * as HttpClient from "effect/http/HttpClient";
15import * as HttpClientError from "effect/unstable/http/HttpClientError";15import * as HttpClientError from "effect/http/HttpClientError";
16import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";16import * as HttpClientResponse from "effect/http/HttpClientResponse";
1717
18import type { ApnsCredentials } from "../Config.ts";18import type { ApnsCredentials } from "../Config.ts";
19import * as ApnsClient from "./ApnsClient.ts";19import * as ApnsClient from "./ApnsClient.ts";
infra/relay/src/agentActivity/ApnsClient.ts+3-3
...@@ -4,9 +4,9 @@ import * as Effect from "effect/Effect";...@@ -4,9 +4,9 @@ import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as Headers from "effect/unstable/http/Headers";7import * as Headers from "effect/http/Headers";
8import * as HttpClient from "effect/unstable/http/HttpClient";8import * as HttpClient from "effect/http/HttpClient";
9import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";9import * as HttpClientRequest from "effect/http/HttpClientRequest";
10import { ApnsEnvironment, type ApnsCredentials } from "../Config.ts";10import { ApnsEnvironment, type ApnsCredentials } from "../Config.ts";
11import type { ApnsLiveActivityAlert, ApnsNotificationPayload } from "./apnsDeliveryJobs.ts";11import type { ApnsLiveActivityAlert, ApnsNotificationPayload } from "./apnsDeliveryJobs.ts";
12import type { ApnsJwtEncodingError, ApnsJwtSigningError } from "./apnsJwt.ts";12import type { ApnsJwtEncodingError, ApnsJwtSigningError } from "./apnsJwt.ts";
infra/relay/src/agentActivity/ApnsDeliveries.test.ts+1-6
...@@ -14,12 +14,7 @@ import * as Redacted from "effect/Redacted";...@@ -14,12 +14,7 @@ import * as Redacted from "effect/Redacted";
14import * as References from "effect/References";14import * as References from "effect/References";
15import * as Stream from "effect/Stream";15import * as Stream from "effect/Stream";
16import * as TestClock from "effect/testing/TestClock";16import * as TestClock from "effect/testing/TestClock";
17import {17import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
18 FetchHttpClient,
19 HttpClient,
20 HttpClientRequest,
21 HttpClientResponse,
22} from "effect/unstable/http";
2318
24import {19import {
25 makeApnsDeliveryJobPayload,20 makeApnsDeliveryJobPayload,
infra/relay/src/agentActivity/FcmClient.test.ts+3-3
...@@ -7,9 +7,9 @@ import * as Layer from "effect/Layer";...@@ -7,9 +7,9 @@ import * as Layer from "effect/Layer";
7import * as Redacted from "effect/Redacted";7import * as Redacted from "effect/Redacted";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as TestClock from "effect/testing/TestClock";9import * as TestClock from "effect/testing/TestClock";
10import * as HttpClient from "effect/unstable/http/HttpClient";10import * as HttpClient from "effect/http/HttpClient";
11import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";11import * as HttpClientResponse from "effect/http/HttpClientResponse";
12import type * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";12import type * as HttpClientRequest from "effect/http/HttpClientRequest";
1313
14import * as RelayConfiguration from "../Config.ts";14import * as RelayConfiguration from "../Config.ts";
15import * as FcmClient from "./FcmClient.ts";15import * as FcmClient from "./FcmClient.ts";
infra/relay/src/agentActivity/FcmClient.ts+2-2
...@@ -5,8 +5,8 @@ import * as Layer from "effect/Layer";...@@ -5,8 +5,8 @@ import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import * as Redacted from "effect/Redacted";6import * as Redacted from "effect/Redacted";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as HttpClient from "effect/unstable/http/HttpClient";8import * as HttpClient from "effect/http/HttpClient";
9import * as HttpClientRequest from "effect/unstable/http/HttpClientRequest";9import * as HttpClientRequest from "effect/http/HttpClientRequest";
1010
11import * as RelayConfiguration from "../Config.ts";11import * as RelayConfiguration from "../Config.ts";
12import * as FcmAssertionSigner from "./FcmAssertionSigner.ts";12import * as FcmAssertionSigner from "./FcmAssertionSigner.ts";
infra/relay/src/agentActivity/MobileRegistrations.test.ts+1-1
...@@ -9,7 +9,7 @@ import * as Effect from "effect/Effect";...@@ -9,7 +9,7 @@ import * as Effect from "effect/Effect";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Logger from "effect/Logger";10import * as Logger from "effect/Logger";
11import * as Redacted from "effect/Redacted";11import * as Redacted from "effect/Redacted";
12import { FetchHttpClient } from "effect/unstable/http";12import { FetchHttpClient } from "effect/http";
1313
14import * as Devices from "./Devices.ts";14import * as Devices from "./Devices.ts";
15import * as AgentActivityRows from "./AgentActivityRows.ts";15import * as AgentActivityRows from "./AgentActivityRows.ts";
infra/relay/src/agentActivity/apnsJwt.ts+5-5
...@@ -3,7 +3,7 @@ import * as NodeCrypto from "node:crypto";...@@ -3,7 +3,7 @@ import * as NodeCrypto from "node:crypto";
3import { p256 } from "@noble/curves/nist";3import { p256 } from "@noble/curves/nist";
4import { sha256 } from "@noble/hashes/sha2";4import { sha256 } from "@noble/hashes/sha2";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import * as Encoding from "effect/Encoding";6import * as Base64Url from "effect/encoding/Base64Url";
7import * as Redacted from "effect/Redacted";7import * as Redacted from "effect/Redacted";
8import * as Result from "effect/Result";8import * as Result from "effect/Result";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
...@@ -95,8 +95,8 @@ export const makeApnsJwt = Effect.fn("relay.apns.make_jwt")(function* (input: Ap...@@ -95,8 +95,8 @@ export const makeApnsJwt = Effect.fn("relay.apns.make_jwt")(function* (input: Ap
95 );95 );
9696
97 const privateKey = Redacted.value(input.privateKey);97 const privateKey = Redacted.value(input.privateKey);
98 const header = Encoding.encodeBase64Url(headerJson);98 const header = Base64Url.encode(headerJson);
99 const payload = Encoding.encodeBase64Url(payloadJson);99 const payload = Base64Url.encode(payloadJson);
100 const signingInput = `${header}.${payload}`;100 const signingInput = `${header}.${payload}`;
101101
102 return yield* Effect.try({102 return yield* Effect.try({
...@@ -110,7 +110,7 @@ export const makeApnsJwt = Effect.fn("relay.apns.make_jwt")(function* (input: Ap...@@ -110,7 +110,7 @@ export const makeApnsJwt = Effect.fn("relay.apns.make_jwt")(function* (input: Ap
110 const signature = p256110 const signature = p256
111 .sign(sha256(new TextEncoder().encode(signingInput)), scalar, { prehash: false })111 .sign(sha256(new TextEncoder().encode(signingInput)), scalar, { prehash: false })
112 .toCompactRawBytes();112 .toCompactRawBytes();
113 return `${signingInput}.${Encoding.encodeBase64Url(signature)}`;113 return `${signingInput}.${Base64Url.encode(signature)}`;
114 },114 },
115 catch: (cause) =>115 catch: (cause) =>
116 new ApnsJwtSigningError({116 new ApnsJwtSigningError({
...@@ -138,7 +138,7 @@ function apnsSigningScalar(privateKeyPem: string): Uint8Array {...@@ -138,7 +138,7 @@ function apnsSigningScalar(privateKeyPem: string): Uint8Array {
138 throw new Error("APNs signing key is not a P-256 private key.");138 throw new Error("APNs signing key is not a P-256 private key.");
139 }139 }
140 const scalar = Result.getOrThrowWith(140 const scalar = Result.getOrThrowWith(
141 Encoding.decodeBase64Url(jwk.d),141 Base64Url.decode(jwk.d),
142 () => new Error("APNs signing key scalar is not valid base64url."),142 () => new Error("APNs signing key scalar is not valid base64url."),
143 );143 );
144 signingScalarCache.set(privateKeyPem, scalar);144 signingScalarCache.set(privateKeyPem, scalar);
infra/relay/src/environments/EnvironmentConnector.test.ts+1-1
...@@ -25,7 +25,7 @@ import * as Result from "effect/Result";...@@ -25,7 +25,7 @@ import * as Result from "effect/Result";
25import * as Schema from "effect/Schema";25import * as Schema from "effect/Schema";
26import * as TestClock from "effect/testing/TestClock";26import * as TestClock from "effect/testing/TestClock";
27import * as Tracer from "effect/Tracer";27import * as Tracer from "effect/Tracer";
28import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";28import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
2929
30import * as EnvironmentLinks from "./EnvironmentLinks.ts";30import * as EnvironmentLinks from "./EnvironmentLinks.ts";
31import * as RelayConfiguration from "../Config.ts";31import * as RelayConfiguration from "../Config.ts";
infra/relay/src/environments/EnvironmentConnector.ts+3-3
...@@ -36,9 +36,9 @@ import * as Layer from "effect/Layer";...@@ -36,9 +36,9 @@ import * as Layer from "effect/Layer";
36import * as Option from "effect/Option";36import * as Option from "effect/Option";
37import * as Redacted from "effect/Redacted";37import * as Redacted from "effect/Redacted";
38import * as Schema from "effect/Schema";38import * as Schema from "effect/Schema";
39import * as FetchHttpClient from "effect/unstable/http/FetchHttpClient";39import * as FetchHttpClient from "effect/http/FetchHttpClient";
40import * as HttpClient from "effect/unstable/http/HttpClient";40import * as HttpClient from "effect/http/HttpClient";
41import * as HttpClientError from "effect/unstable/http/HttpClientError";41import * as HttpClientError from "effect/http/HttpClientError";
4242
43import * as EnvironmentLinks from "./EnvironmentLinks.ts";43import * as EnvironmentLinks from "./EnvironmentLinks.ts";
44import * as ManagedEndpointAllocations from "./ManagedEndpointAllocations.ts";44import * as ManagedEndpointAllocations from "./ManagedEndpointAllocations.ts";
infra/relay/src/environments/EnvironmentCredentials.ts+2-4
...@@ -2,7 +2,7 @@ import * as Context from "effect/Context";...@@ -2,7 +2,7 @@ import * as Context from "effect/Context";
2import * as Crypto from "effect/Crypto";2import * as Crypto from "effect/Crypto";
3import * as DateTime from "effect/DateTime";3import * as DateTime from "effect/DateTime";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Encoding from "effect/Encoding";5import * as Base64Url from "effect/encoding/Base64Url";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
...@@ -85,9 +85,7 @@ const make = Effect.gen(function* () {...@@ -85,9 +85,7 @@ const make = Effect.gen(function* () {
85 const db = yield* RelayDb.RelayDb;85 const db = yield* RelayDb.RelayDb;
86 const crypto = yield* Crypto.Crypto;86 const crypto = yield* Crypto.Crypto;
87 const hashToken = (token: string) =>87 const hashToken = (token: string) =>
88 crypto88 crypto.digest("SHA-256", new TextEncoder().encode(token)).pipe(Effect.map(Base64Url.encode));
89 .digest("SHA-256", new TextEncoder().encode(token))
90 .pipe(Effect.map(Encoding.encodeBase64Url));
91 const randomTokenPart = (segments: number) =>89 const randomTokenPart = (segments: number) =>
92 Effect.map(Effect.all(Array.from({ length: segments }, () => crypto.randomUUIDv4)), (values) =>90 Effect.map(Effect.all(Array.from({ length: segments }, () => crypto.randomUUIDv4)), (values) =>
93 values.join("").replaceAll("-", ""),91 values.join("").replaceAll("-", ""),
infra/relay/src/environments/EnvironmentPublishSignatures.ts+2-2
...@@ -14,7 +14,7 @@ import * as Context from "effect/Context";...@@ -14,7 +14,7 @@ import * as Context from "effect/Context";
14import * as Crypto from "effect/Crypto";14import * as Crypto from "effect/Crypto";
15import * as DateTime from "effect/DateTime";15import * as DateTime from "effect/DateTime";
16import * as Effect from "effect/Effect";16import * as Effect from "effect/Effect";
17import * as Encoding from "effect/Encoding";17import * as Base64Url from "effect/encoding/Base64Url";
18import * as Layer from "effect/Layer";18import * as Layer from "effect/Layer";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
2020
...@@ -100,7 +100,7 @@ function environmentPublishReplayThumbprintData(input: {...@@ -100,7 +100,7 @@ function environmentPublishReplayThumbprintData(input: {
100}100}
101101
102const formatEnvironmentPublishReplayThumbprint = (digest: Uint8Array) =>102const formatEnvironmentPublishReplayThumbprint = (digest: Uint8Array) =>
103 `env-publish:${Encoding.encodeBase64Url(digest)}`;103 `env-publish:${Base64Url.encode(digest)}`;
104104
105const make = Effect.gen(function* () {105const make = Effect.gen(function* () {
106 const proofReplay = yield* DpopProofs.DpopProofReplay;106 const proofReplay = yield* DpopProofs.DpopProofReplay;
infra/relay/src/environments/ManagedEndpointAllocations.ts+1-1
...@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";...@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";
7import * as Layer from "effect/Layer";7import * as Layer from "effect/Layer";
8import * as Option from "effect/Option";8import * as Option from "effect/Option";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as SqlError from "effect/unstable/sql/SqlError";10import * as SqlError from "effect/sql/SqlError";
1111
12import * as RelayDb from "../db.ts";12import * as RelayDb from "../db.ts";
13import { isManagedEndpointHostname, managedEndpointForHostname } from "../deploymentConfig.ts";13import { isManagedEndpointHostname, managedEndpointForHostname } from "../deploymentConfig.ts";
infra/relay/src/environments/ManagedEndpointProvider.ts+2-2
...@@ -5,7 +5,7 @@ import * as Context from "effect/Context";...@@ -5,7 +5,7 @@ import * as Context from "effect/Context";
5import * as Crypto from "effect/Crypto";5import * as Crypto from "effect/Crypto";
6import * as DateTime from "effect/DateTime";6import * as DateTime from "effect/DateTime";
7import * as Effect from "effect/Effect";7import * as Effect from "effect/Effect";
8import * as Encoding from "effect/Encoding";8import * as Hex from "effect/encoding/Hex";
9import * as Layer from "effect/Layer";9import * as Layer from "effect/Layer";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
...@@ -922,7 +922,7 @@ export const make = Effect.gen(function* () {...@@ -922,7 +922,7 @@ export const make = Effect.gen(function* () {
922 ),922 ),
923 )923 )
924 .pipe(924 .pipe(
925 Effect.map(Encoding.encodeHex),925 Effect.map(Hex.encode),
926 Effect.mapError(926 Effect.mapError(
927 (cause) =>927 (cause) =>
928 new ManagedEndpointProvisioningFailed({928 new ManagedEndpointProvisioningFailed({
infra/relay/src/http/Api.test.ts+7-7
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1import * as HttpServer from "effect/unstable/http/HttpServer";1import * as HttpServer from "effect/http/HttpServer";
2import {2import {
3 RelayClientAuth,3 RelayClientAuth,
4 RelayClientPrincipal,4 RelayClientPrincipal,
...@@ -25,12 +25,12 @@ import * as Predicate from "effect/Predicate";...@@ -25,12 +25,12 @@ import * as Predicate from "effect/Predicate";
25import * as Redacted from "effect/Redacted";25import * as Redacted from "effect/Redacted";
26import * as TestClock from "effect/testing/TestClock";26import * as TestClock from "effect/testing/TestClock";
27import * as Tracer from "effect/Tracer";27import * as Tracer from "effect/Tracer";
28import * as Etag from "effect/unstable/http/Etag";28import * as Etag from "effect/http/Etag";
29import * as HttpRouter from "effect/unstable/http/HttpRouter";29import * as HttpRouter from "effect/http/HttpRouter";
30import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";30import * as HttpServerRequest from "effect/http/HttpServerRequest";
31import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";31import * as HttpServerResponse from "effect/http/HttpServerResponse";
32import * as HttpApi from "effect/unstable/httpapi/HttpApi";32import * as HttpApi from "effect/http-api/HttpApi";
33import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";33import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
34import { EnvironmentId } from "@t3tools/contracts";34import { EnvironmentId } from "@t3tools/contracts";
35import {35import {
36 RelayEnvironmentAuth,36 RelayEnvironmentAuth,
infra/relay/src/http/Api.ts+8-8
...@@ -11,14 +11,14 @@ import * as Record from "effect/Record";...@@ -11,14 +11,14 @@ import * as Record from "effect/Record";
11import * as Redacted from "effect/Redacted";11import * as Redacted from "effect/Redacted";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as Tracer from "effect/Tracer";13import * as Tracer from "effect/Tracer";
14import * as HttpEffect from "effect/unstable/http/HttpEffect";14import * as HttpEffect from "effect/http/HttpEffect";
15import * as HttpMiddleware from "effect/unstable/http/HttpMiddleware";15import * as HttpMiddleware from "effect/http/HttpMiddleware";
16import * as HttpRouter from "effect/unstable/http/HttpRouter";16import * as HttpRouter from "effect/http/HttpRouter";
17import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";17import * as HttpServerRequest from "effect/http/HttpServerRequest";
18import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";18import * as HttpServerResponse from "effect/http/HttpServerResponse";
19import * as HttpTraceContext from "effect/unstable/http/HttpTraceContext";19import * as HttpTraceContext from "effect/http/HttpTraceContext";
20import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";20import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
21import * as HttpApiError from "effect/unstable/httpapi/HttpApiError";21import * as HttpApiError from "effect/http-api/HttpApiError";
22import { encodeOAuthScope } from "@t3tools/shared/oauthScope";22import { encodeOAuthScope } from "@t3tools/shared/oauthScope";
23import { httpHeaderRedactionLayer } from "@t3tools/shared/httpObservability";23import { httpHeaderRedactionLayer } from "@t3tools/shared/httpObservability";
2424
infra/relay/src/observability.test.ts+4-4
...@@ -4,10 +4,10 @@ import * as Deferred from "effect/Deferred";...@@ -4,10 +4,10 @@ import * as Deferred from "effect/Deferred";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Redacted from "effect/Redacted";5import * as Redacted from "effect/Redacted";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
7import * as HttpServer from "effect/unstable/http/HttpServer";7import * as HttpServer from "effect/http/HttpServer";
8import * as HttpServerRequest from "effect/unstable/http/HttpServerRequest";8import * as HttpServerRequest from "effect/http/HttpServerRequest";
9import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";9import * as HttpServerResponse from "effect/http/HttpServerResponse";
10import type { OtlpTracer } from "effect/unstable/observability";10import type { OtlpTracer } from "effect/observability";
1111
12import * as EnvironmentConnector from "./environments/EnvironmentConnector.ts";12import * as EnvironmentConnector from "./environments/EnvironmentConnector.ts";
13import { makeRelayTraceLayer } from "./observability.ts";13import { makeRelayTraceLayer } from "./observability.ts";
infra/relay/src/observability.ts+1-1
...@@ -9,7 +9,7 @@ import * as Option from "effect/Option";...@@ -9,7 +9,7 @@ import * as Option from "effect/Option";
9import * as Redacted from "effect/Redacted";9import * as Redacted from "effect/Redacted";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as Tracer from "effect/Tracer";11import * as Tracer from "effect/Tracer";
12import { OtlpExporter, OtlpSerialization, OtlpTracer } from "effect/unstable/observability";12import { OtlpExporter, OtlpSerialization, OtlpTracer } from "effect/observability";
1313
14import { relayResourceNameForStage } from "./deploymentConfig.ts";14import { relayResourceNameForStage } from "./deploymentConfig.ts";
1515
infra/relay/src/worker.ts+5-5
...@@ -10,11 +10,11 @@ import * as Layer from "effect/Layer";...@@ -10,11 +10,11 @@ import * as Layer from "effect/Layer";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import * as Redacted from "effect/Redacted";11import * as Redacted from "effect/Redacted";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import * as Etag from "effect/unstable/http/Etag";13import * as Etag from "effect/http/Etag";
14import * as HttpPlatform from "effect/unstable/http/HttpPlatform";14import * as HttpPlatform from "effect/http/HttpPlatform";
15import * as HttpRouter from "effect/unstable/http/HttpRouter";15import * as HttpRouter from "effect/http/HttpRouter";
16import * as HttpApiBuilder from "effect/unstable/httpapi/HttpApiBuilder";16import * as HttpApiBuilder from "effect/http-api/HttpApiBuilder";
17import * as HttpApiScalar from "effect/unstable/httpapi/HttpApiScalar";17import * as HttpApiScalar from "effect/http-api/HttpApiScalar";
1818
19import { RelayApi } from "@t3tools/contracts/relay";19import { RelayApi } from "@t3tools/contracts/relay";
2020
oxlint-plugin-t3code/test/utils.ts+1-1
...@@ -8,7 +8,7 @@ import * as PlatformError from "effect/PlatformError";...@@ -8,7 +8,7 @@ import * as PlatformError from "effect/PlatformError";
8import * as Predicate from "effect/Predicate";8import * as Predicate from "effect/Predicate";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcess, ChildProcessSpawner } from "effect/process";
12import * as NodeModule from "node:module";12import * as NodeModule from "node:module";
1313
14// oxlint is only a transitive dependency (via vite-plus), so its bin placement14// oxlint is only a transitive dependency (via vite-plus), so its bin placement
packages/client-runtime/src/authorization/service.ts+1-1
...@@ -37,7 +37,7 @@ import * as Ref from "effect/Ref";...@@ -37,7 +37,7 @@ import * as Ref from "effect/Ref";
37import * as Result from "effect/Result";37import * as Result from "effect/Result";
38import * as Scope from "effect/Scope";38import * as Scope from "effect/Scope";
39import * as Semaphore from "effect/Semaphore";39import * as Semaphore from "effect/Semaphore";
40import * as HttpClient from "effect/unstable/http/HttpClient";40import * as HttpClient from "effect/http/HttpClient";
4141
42import {42import {
43 DPOP_ACCESS_TOKEN_REFRESH_SKEW_MS,43 DPOP_ACCESS_TOKEN_REFRESH_SKEW_MS,
packages/client-runtime/src/connection/driver.ts+1-1
...@@ -4,7 +4,7 @@ import * as Exit from "effect/Exit";...@@ -4,7 +4,7 @@ import * as Exit from "effect/Exit";
4import * as Fiber from "effect/Fiber";4import * as Fiber from "effect/Fiber";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Scope from "effect/Scope";6import * as Scope from "effect/Scope";
7import * as HttpClient from "effect/unstable/http/HttpClient";7import * as HttpClient from "effect/http/HttpClient";
88
9import type { ConnectionCatalogEntry, ConnectionRoute } from "./catalog.ts";9import type { ConnectionCatalogEntry, ConnectionRoute } from "./catalog.ts";
10import type {10import type {
packages/client-runtime/src/connection/onboarding.ts+1-1
...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as SubscriptionRef from "effect/SubscriptionRef";8import * as SubscriptionRef from "effect/SubscriptionRef";
9import * as HttpClient from "effect/unstable/http/HttpClient";9import * as HttpClient from "effect/http/HttpClient";
1010
11import { bootstrapRemoteBearerSession } from "../authorization/remote.ts";11import { bootstrapRemoteBearerSession } from "../authorization/remote.ts";
12import { deriveWsBaseUrl, normalizeHttpBaseUrl } from "../environment/endpoint.ts";12import { deriveWsBaseUrl, normalizeHttpBaseUrl } from "../environment/endpoint.ts";
packages/client-runtime/src/connection/outdatedHostUpdate.test.ts+3-3
...@@ -10,9 +10,9 @@ import * as Layer from "effect/Layer";...@@ -10,9 +10,9 @@ import * as Layer from "effect/Layer";
10import * as Option from "effect/Option";10import * as Option from "effect/Option";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import * as SubscriptionRef from "effect/SubscriptionRef";12import * as SubscriptionRef from "effect/SubscriptionRef";
13import * as HttpClient from "effect/unstable/http/HttpClient";13import * as HttpClient from "effect/http/HttpClient";
14import * as HttpClientResponse from "effect/unstable/http/HttpClientResponse";14import * as HttpClientResponse from "effect/http/HttpClientResponse";
15import * as Socket from "effect/unstable/socket/Socket";15import * as Socket from "effect/socket/Socket";
1616
17import type { ConnectionCatalogEntry } from "./catalog.ts";17import type { ConnectionCatalogEntry } from "./catalog.ts";
18import { orchestrationProtocolCompatibilityError } from "./compatibility.ts";18import { orchestrationProtocolCompatibilityError } from "./compatibility.ts";
packages/client-runtime/src/connection/outdatedHostUpdate.ts+4-4
...@@ -15,10 +15,10 @@ import * as Schedule from "effect/Schedule";...@@ -15,10 +15,10 @@ import * as Schedule from "effect/Schedule";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import * as Stream from "effect/Stream";16import * as Stream from "effect/Stream";
17import * as SubscriptionRef from "effect/SubscriptionRef";17import * as SubscriptionRef from "effect/SubscriptionRef";
18import * as HttpClient from "effect/unstable/http/HttpClient";18import * as HttpClient from "effect/http/HttpClient";
19import * as RpcClient from "effect/unstable/rpc/RpcClient";19import * as RpcClient from "effect/rpc/RpcClient";
20import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";20import * as RpcSerialization from "effect/rpc/RpcSerialization";
21import * as Socket from "effect/unstable/socket/Socket";21import * as Socket from "effect/socket/Socket";
2222
23import { fetchRemoteEnvironmentDescriptor } from "../environment/descriptor.ts";23import { fetchRemoteEnvironmentDescriptor } from "../environment/descriptor.ts";
24import { makeWsRpcProtocolClient } from "../rpc/protocol.ts";24import { makeWsRpcProtocolClient } from "../rpc/protocol.ts";
packages/client-runtime/src/connection/resolver.ts+1-1
...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as HttpClient from "effect/unstable/http/HttpClient";11import * as HttpClient from "effect/http/HttpClient";
1212
13import { appendClientConnectionParams } from "../authorization/remote.ts";13import { appendClientConnectionParams } from "../authorization/remote.ts";
14import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";14import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
packages/client-runtime/src/operations/commands.performance.test.ts+1-1
...@@ -17,7 +17,7 @@ import * as Layer from "effect/Layer";...@@ -17,7 +17,7 @@ import * as Layer from "effect/Layer";
17import * as Option from "effect/Option";17import * as Option from "effect/Option";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import * as SubscriptionRef from "effect/SubscriptionRef";19import * as SubscriptionRef from "effect/SubscriptionRef";
20import type * as RpcMessage from "effect/unstable/rpc/RpcMessage";20import type * as RpcMessage from "effect/rpc/RpcMessage";
2121
22import {22import {
23 AVAILABLE_CONNECTION_STATE,23 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/projectFaviconCache.ts+2-2
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 getProjectFaviconResourceKey,5 getProjectFaviconResourceKey,
6 isProjectFaviconFallbackUrl,6 isProjectFaviconFallbackUrl,
7} from "@t3tools/shared/projectFavicon";7} from "@t3tools/shared/projectFavicon";
8import * as Encoding from "effect/Encoding";8import * as Base64 from "effect/encoding/Base64";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
1111
...@@ -111,7 +111,7 @@ export function createProjectFaviconImageLoader(input: {...@@ -111,7 +111,7 @@ export function createProjectFaviconImageLoader(input: {
111 if (!mimeType) throw new Error("Project icon has no image type.");111 if (!mimeType) throw new Error("Project icon has no image type.");
112 const bytes = await readBounded(response, PROJECT_FAVICON_MAX_SOURCE_BYTES);112 const bytes = await readBounded(response, PROJECT_FAVICON_MAX_SOURCE_BYTES);
113 signal.throwIfAborted();113 signal.throwIfAborted();
114 const dataUrl = `data:${mimeType};base64,${Encoding.encodeBase64(bytes)}`;114 const dataUrl = `data:${mimeType};base64,${Base64.encode(bytes)}`;
115 if (isImageDataUrl(dataUrl)) return dataUrl;115 if (isImageDataUrl(dataUrl)) return dataUrl;
116 if (mimeType === "image/svg+xml") throw new Error("Project icon exceeds the cache limit.");116 if (mimeType === "image/svg+xml") throw new Error("Project icon exceeds the cache limit.");
117 return input.downscale({ url, mimeType, bytes }, signal);117 return input.downscale({ url, mimeType, bytes }, signal);
packages/client-runtime/src/relay/managedRelay.ts+3-3
...@@ -41,9 +41,9 @@ import * as Layer from "effect/Layer";...@@ -41,9 +41,9 @@ import * as Layer from "effect/Layer";
41import * as Option from "effect/Option";41import * as Option from "effect/Option";
42import * as Schema from "effect/Schema";42import * as Schema from "effect/Schema";
43import * as SynchronizedRef from "effect/SynchronizedRef";43import * as SynchronizedRef from "effect/SynchronizedRef";
44import * as HttpClientError from "effect/unstable/http/HttpClientError";44import * as HttpClientError from "effect/http/HttpClientError";
45import type * as HttpMethod from "effect/unstable/http/HttpMethod";45import type * as HttpMethod from "effect/http/HttpMethod";
46import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";46import * as HttpApiClient from "effect/http-api/HttpApiClient";
47import { NETWORK_BLOCKING_HINT } from "../errors/network.ts";47import { NETWORK_BLOCKING_HINT } from "../errors/network.ts";
4848
49export interface ManagedRelayDpopProofInput {49export interface ManagedRelayDpopProofInput {
packages/client-runtime/src/relay/managedRelayState.test.ts+1-1
...@@ -10,7 +10,7 @@ import * as Effect from "effect/Effect";...@@ -10,7 +10,7 @@ import * as Effect from "effect/Effect";
10import * as Fiber from "effect/Fiber";10import * as Fiber from "effect/Fiber";
11import * as Layer from "effect/Layer";11import * as Layer from "effect/Layer";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import { Atom, AtomRegistry } from "effect/unstable/reactivity";13import { Atom, AtomRegistry } from "effect/reactivity";
14import { afterEach, vi } from "vite-plus/test";14import { afterEach, vi } from "vite-plus/test";
1515
16import { DPOP_UNKNOWN_HINT } from "./errorPresentation.ts";16import { DPOP_UNKNOWN_HINT } from "./errorPresentation.ts";
packages/client-runtime/src/relay/managedRelayState.ts+1-1
...@@ -15,7 +15,7 @@ import * as Effect from "effect/Effect";...@@ -15,7 +15,7 @@ import * as Effect from "effect/Effect";
15import * as Option from "effect/Option";15import * as Option from "effect/Option";
16import * as Schema from "effect/Schema";16import * as Schema from "effect/Schema";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";18import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1919
20import { findErrorTraceId } from "../errors/errorTrace.ts";20import { findErrorTraceId } from "../errors/errorTrace.ts";
21import * as ManagedRelay from "./managedRelay.ts";21import * as ManagedRelay from "./managedRelay.ts";
packages/client-runtime/src/remotePerformance.bench.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import * as Effect from "effect/Effect";8import * as Effect from "effect/Effect";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import { HttpClient, HttpClientResponse } from "effect/unstable/http";10import { HttpClient, HttpClientResponse } from "effect/http";
11import { describe, test } from "vite-plus/test";11import { describe, test } from "vite-plus/test";
1212
13import { issueRemoteWebSocketTicket } from "./authorization/remote.ts";13import { issueRemoteWebSocketTicket } from "./authorization/remote.ts";
packages/client-runtime/src/rpc/client.test.ts+1-1
...@@ -22,7 +22,7 @@ import * as Ref from "effect/Ref";...@@ -22,7 +22,7 @@ import * as Ref from "effect/Ref";
22import * as Stream from "effect/Stream";22import * as Stream from "effect/Stream";
23import * as SubscriptionRef from "effect/SubscriptionRef";23import * as SubscriptionRef from "effect/SubscriptionRef";
24import * as TestClock from "effect/testing/TestClock";24import * as TestClock from "effect/testing/TestClock";
25import { RpcClientError } from "effect/unstable/rpc";25import { RpcClientError } from "effect/rpc";
2626
27import {27import {
28 AVAILABLE_CONNECTION_STATE,28 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/rpc/client.ts+1-1
...@@ -12,7 +12,7 @@ import * as Schema from "effect/Schema";...@@ -12,7 +12,7 @@ import * as Schema from "effect/Schema";
12import * as Schedule from "effect/Schedule";12import * as Schedule from "effect/Schedule";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import * as SubscriptionRef from "effect/SubscriptionRef";14import * as SubscriptionRef from "effect/SubscriptionRef";
15import { RpcClientError } from "effect/unstable/rpc";15import { RpcClientError } from "effect/rpc";
1616
17import * as EnvironmentSupervisor from "../connection/supervisor.ts";17import * as EnvironmentSupervisor from "../connection/supervisor.ts";
18import type { WsRpcProtocolClient } from "../rpc/protocol.ts";18import type { WsRpcProtocolClient } from "../rpc/protocol.ts";
packages/client-runtime/src/rpc/http.ts+2-2
...@@ -15,8 +15,8 @@ import * as Effect from "effect/Effect";...@@ -15,8 +15,8 @@ import * as Effect from "effect/Effect";
15import * as Layer from "effect/Layer";15import * as Layer from "effect/Layer";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import * as Schema from "effect/Schema";17import * as Schema from "effect/Schema";
18import { FetchHttpClient, HttpClient, HttpClientError } from "effect/unstable/http";18import { FetchHttpClient, HttpClient, HttpClientError } from "effect/http";
19import * as HttpApiClient from "effect/unstable/httpapi/HttpApiClient";19import * as HttpApiClient from "effect/http-api/HttpApiClient";
2020
21const isEnvironmentHttpCommonError = Schema.is(EnvironmentHttpCommonError);21const isEnvironmentHttpCommonError = Schema.is(EnvironmentHttpCommonError);
2222
packages/client-runtime/src/rpc/protocol.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { WsRpcGroup } from "@t3tools/contracts";1import { WsRpcGroup } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { RpcClient } from "effect/unstable/rpc";3import { RpcClient } from "effect/rpc";
44
5export const makeWsRpcProtocolClient = RpcClient.make(WsRpcGroup);5export const makeWsRpcProtocolClient = RpcClient.make(WsRpcGroup);
6type RpcClientFactory = typeof makeWsRpcProtocolClient;6type RpcClientFactory = typeof makeWsRpcProtocolClient;
packages/client-runtime/src/rpc/session.test.ts+1-1
...@@ -23,7 +23,7 @@ import * as Schema from "effect/Schema";...@@ -23,7 +23,7 @@ import * as Schema from "effect/Schema";
23import * as Stream from "effect/Stream";23import * as Stream from "effect/Stream";
24import * as SubscriptionRef from "effect/SubscriptionRef";24import * as SubscriptionRef from "effect/SubscriptionRef";
25import * as TestClock from "effect/testing/TestClock";25import * as TestClock from "effect/testing/TestClock";
26import * as Socket from "effect/unstable/socket/Socket";26import * as Socket from "effect/socket/Socket";
2727
28import {28import {
29 AVAILABLE_CONNECTION_STATE,29 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/rpc/session.ts+5-5
...@@ -18,11 +18,11 @@ import * as Schedule from "effect/Schedule";...@@ -18,11 +18,11 @@ import * as Schedule from "effect/Schedule";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import type * as Scope from "effect/Scope";19import type * as Scope from "effect/Scope";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import type * as Rpc from "effect/unstable/rpc/Rpc";21import type * as Rpc from "effect/rpc/Rpc";
22import * as RpcClient from "effect/unstable/rpc/RpcClient";22import * as RpcClient from "effect/rpc/RpcClient";
23import * as RpcClientError from "effect/unstable/rpc/RpcClientError";23import * as RpcClientError from "effect/rpc/RpcClientError";
24import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";24import * as RpcSerialization from "effect/rpc/RpcSerialization";
25import * as Socket from "effect/unstable/socket/Socket";25import * as Socket from "effect/socket/Socket";
2626
27import { makeWsRpcProtocolClient, type WsRpcProtocolClient } from "./protocol.ts";27import { makeWsRpcProtocolClient, type WsRpcProtocolClient } from "./protocol.ts";
28import { NETWORK_BLOCKING_HINT } from "../errors/network.ts";28import { NETWORK_BLOCKING_HINT } from "../errors/network.ts";
packages/client-runtime/src/state/archivedThreads.test.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { EnvironmentId, type OrchestrationV2ArchivedShellSnapshot } from "@t3tools/contracts";1import { EnvironmentId, type OrchestrationV2ArchivedShellSnapshot } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";3import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
4import { expect, it } from "vite-plus/test";4import { expect, it } from "vite-plus/test";
55
6import {6import {
packages/client-runtime/src/state/archivedThreads.ts+1-1
...@@ -3,7 +3,7 @@ import * as Arr from "effect/Array";...@@ -3,7 +3,7 @@ import * as Arr from "effect/Array";
3import { pipe } from "effect/Function";3import { pipe } from "effect/Function";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Order from "effect/Order";5import * as Order from "effect/Order";
6import { AsyncResult, Atom } from "effect/unstable/reactivity";6import { AsyncResult, Atom } from "effect/reactivity";
77
8export interface ArchivedSnapshotEntry {8export interface ArchivedSnapshotEntry {
9 readonly environmentId: EnvironmentId;9 readonly environmentId: EnvironmentId;
packages/client-runtime/src/state/assets.test.ts+1-1
...@@ -17,7 +17,7 @@ import * as Stream from "effect/Stream";...@@ -17,7 +17,7 @@ import * as Stream from "effect/Stream";
17import * as SubscriptionRef from "effect/SubscriptionRef";17import * as SubscriptionRef from "effect/SubscriptionRef";
18import * as Option from "effect/Option";18import * as Option from "effect/Option";
19import * as Layer from "effect/Layer";19import * as Layer from "effect/Layer";
20import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";20import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
2121
22import * as EnvironmentRegistry from "../connection/registry.ts";22import * as EnvironmentRegistry from "../connection/registry.ts";
23import {23import {
packages/client-runtime/src/state/assets.ts+1-1
...@@ -17,7 +17,7 @@ import * as Effect from "effect/Effect";...@@ -17,7 +17,7 @@ import * as Effect from "effect/Effect";
17import * as Option from "effect/Option";17import * as Option from "effect/Option";
18import * as Result from "effect/Result";18import * as Result from "effect/Result";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";20import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
2121
22import * as EnvironmentRegistry from "../connection/registry.ts";22import * as EnvironmentRegistry from "../connection/registry.ts";
23import * as EnvironmentSupervisor from "../connection/supervisor.ts";23import * as EnvironmentSupervisor from "../connection/supervisor.ts";
packages/client-runtime/src/state/attachments.test.ts+1-1
...@@ -7,7 +7,7 @@ import {...@@ -7,7 +7,7 @@ import {
7 type AttachmentDeleteInput,7 type AttachmentDeleteInput,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import * as Effect from "effect/Effect";9import * as Effect from "effect/Effect";
10import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";10import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1111
12import type { AtomCommand } from "./runtime.ts";12import type { AtomCommand } from "./runtime.ts";
13import {13import {
packages/client-runtime/src/state/attachments.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6 type AttachmentDeleteInput,6 type AttachmentDeleteInput,
7 type EnvironmentId,7 type EnvironmentId,
8} from "@t3tools/contracts";8} from "@t3tools/contracts";
9import type { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";9import type { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1010
11import type { EnvironmentRegistry } from "../connection/registry.ts";11import type { EnvironmentRegistry } from "../connection/registry.ts";
12import {12import {
packages/client-runtime/src/state/auth.ts+1-1
...@@ -5,7 +5,7 @@ import type {...@@ -5,7 +5,7 @@ import type {
5} from "@t3tools/contracts";5} from "@t3tools/contracts";
6import { WS_METHODS } from "@t3tools/contracts";6import { WS_METHODS } from "@t3tools/contracts";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import type { EnvironmentRegistry } from "../connection/registry.ts";10import type { EnvironmentRegistry } from "../connection/registry.ts";
11import { subscribe } from "../rpc/client.ts";11import { subscribe } from "../rpc/client.ts";
packages/client-runtime/src/state/boundedThreadSnapshotHttp.ts+1-1
...@@ -3,7 +3,7 @@ import * as Cause from "effect/Cause";...@@ -3,7 +3,7 @@ import * as Cause from "effect/Cause";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import { HttpClient } from "effect/unstable/http";6import { HttpClient } from "effect/http";
77
8import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";8import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
9import type { PreparedConnection } from "../connection/model.ts";9import type { PreparedConnection } from "../connection/model.ts";
packages/client-runtime/src/state/connections.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import * as Stream from "effect/Stream";4import * as Stream from "effect/Stream";
5import * as SubscriptionRef from "effect/SubscriptionRef";5import * as SubscriptionRef from "effect/SubscriptionRef";
6import { AsyncResult, Atom } from "effect/unstable/reactivity";6import { AsyncResult, Atom } from "effect/reactivity";
77
8import * as EnvironmentRegistry from "../connection/registry.ts";8import * as EnvironmentRegistry from "../connection/registry.ts";
9import type { ConnectionCatalogEntry } from "../connection/catalog.ts";9import type { ConnectionCatalogEntry } from "../connection/catalog.ts";
packages/client-runtime/src/state/device.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { type DeviceToolVersions, WS_METHODS } from "@t3tools/contracts";1import { type DeviceToolVersions, WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import type { EnvironmentRegistry } from "../connection/registry.ts";4import type { EnvironmentRegistry } from "../connection/registry.ts";
5import {5import {
packages/client-runtime/src/state/deviceHubAccess.ts+1-1
...@@ -12,7 +12,7 @@...@@ -12,7 +12,7 @@
12 * Callers fetch a fresh one each time they (re)connect a stream.12 * Callers fetch a fresh one each time they (re)connect a stream.
13 */13 */
14import * as Effect from "effect/Effect";14import * as Effect from "effect/Effect";
15import type { HttpClient } from "effect/unstable/http";15import type { HttpClient } from "effect/http";
1616
17import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";17import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
18import type { PreparedConnection } from "../connection/model.ts";18import type { PreparedConnection } from "../connection/model.ts";
packages/client-runtime/src/state/environmentHttpAuth.test.ts+1-1
...@@ -17,7 +17,7 @@ import * as Layer from "effect/Layer";...@@ -17,7 +17,7 @@ import * as Layer from "effect/Layer";
17import * as Option from "effect/Option";17import * as Option from "effect/Option";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import { TestClock } from "effect/testing";19import { TestClock } from "effect/testing";
20import type { HttpClient } from "effect/unstable/http";20import type { HttpClient } from "effect/http";
2121
22import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";22import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
23import {23import {
packages/client-runtime/src/state/environmentHttpAuth.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 ORCHESTRATION_PROTOCOL_VERSION_TEXT,5 ORCHESTRATION_PROTOCOL_VERSION_TEXT,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Result from "effect/Result";7import * as Result from "effect/Result";
8import { FetchHttpClient, type HttpMethod } from "effect/unstable/http";8import { FetchHttpClient, type HttpMethod } from "effect/http";
99
10import type { RemoteEnvironmentAuthorization } from "../authorization/service.ts";10import type { RemoteEnvironmentAuthorization } from "../authorization/service.ts";
11import type { PreparedConnection, PreparedHttpAuthorization } from "../connection/model.ts";11import type { PreparedConnection, PreparedHttpAuthorization } from "../connection/model.ts";
packages/client-runtime/src/state/filesystem.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { type FilesystemBrowseEntry, WS_METHODS } from "@t3tools/contracts";1import { type FilesystemBrowseEntry, WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import type { EnvironmentConnectionPhase } from "../connection/presentation.ts";4import type { EnvironmentConnectionPhase } from "../connection/presentation.ts";
5import type { EnvironmentRegistry } from "../connection/registry.ts";5import type { EnvironmentRegistry } from "../connection/registry.ts";
packages/client-runtime/src/state/git.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { WS_METHODS } from "@t3tools/contracts";1import { WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import { createEnvironmentRpcCommand, createEnvironmentRpcQueryAtomFamily } from "./runtime.ts";4import { createEnvironmentRpcCommand, createEnvironmentRpcQueryAtomFamily } from "./runtime.ts";
5import type { EnvironmentRegistry } from "../connection/registry.ts";5import type { EnvironmentRegistry } from "../connection/registry.ts";
packages/client-runtime/src/state/orchestration.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { ORCHESTRATION_V2_WS_METHODS } from "@t3tools/contracts";1import { ORCHESTRATION_V2_WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import {4import {
5 createEnvironmentRpcCommand,5 createEnvironmentRpcCommand,
packages/client-runtime/src/state/outdatedServerUpdate.ts+3-3
...@@ -2,9 +2,9 @@ import type { EnvironmentId, ServerSelfUpdateInput } from "@t3tools/contracts";...@@ -2,9 +2,9 @@ import type { EnvironmentId, ServerSelfUpdateInput } from "@t3tools/contracts";
2import * as Cause from "effect/Cause";2import * as Cause from "effect/Cause";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Exit from "effect/Exit";4import * as Exit from "effect/Exit";
5import type * as HttpClient from "effect/unstable/http/HttpClient";5import type * as HttpClient from "effect/http/HttpClient";
6import type { Atom } from "effect/unstable/reactivity";6import type { Atom } from "effect/reactivity";
7import type * as Socket from "effect/unstable/socket/Socket";7import type * as Socket from "effect/socket/Socket";
88
9import { updateOutdatedHost } from "../connection/outdatedHostUpdate.ts";9import { updateOutdatedHost } from "../connection/outdatedHostUpdate.ts";
10import type * as ConnectionResolver from "../connection/resolver.ts";10import type * as ConnectionResolver from "../connection/resolver.ts";
packages/client-runtime/src/state/presentation.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { describe, expect, it } from "@effect/vitest";1import { describe, expect, it } from "@effect/vitest";
2import { EnvironmentId, type ServerConfig } from "@t3tools/contracts";2import { EnvironmentId, type ServerConfig } from "@t3tools/contracts";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";4import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
55
6import { AVAILABLE_CONNECTION_STATE, PrimaryConnectionTarget } from "../connection/model.ts";6import { AVAILABLE_CONNECTION_STATE, PrimaryConnectionTarget } from "../connection/model.ts";
7import {7import {
packages/client-runtime/src/state/presentation.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 type ServerConfig,5 type ServerConfig,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import { AsyncResult, Atom } from "effect/unstable/reactivity";8import { AsyncResult, Atom } from "effect/reactivity";
99
10import { AVAILABLE_CONNECTION_STATE, type SupervisorConnectionState } from "../connection/model.ts";10import { AVAILABLE_CONNECTION_STATE, type SupervisorConnectionState } from "../connection/model.ts";
11import {11import {
packages/client-runtime/src/state/preview.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { WS_METHODS } from "@t3tools/contracts";1import { WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import type { EnvironmentRegistry } from "../connection/registry.ts";4import type { EnvironmentRegistry } from "../connection/registry.ts";
5import {5import {
packages/client-runtime/src/state/projectCommands.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Fiber from "effect/Fiber";...@@ -6,7 +6,7 @@ import * as Fiber from "effect/Fiber";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as SubscriptionRef from "effect/SubscriptionRef";8import * as SubscriptionRef from "effect/SubscriptionRef";
9import { Atom, AtomRegistry } from "effect/unstable/reactivity";9import { Atom, AtomRegistry } from "effect/reactivity";
1010
11import * as EnvironmentRegistry from "../connection/registry.ts";11import * as EnvironmentRegistry from "../connection/registry.ts";
12import * as EnvironmentSupervisor from "../connection/supervisor.ts";12import * as EnvironmentSupervisor from "../connection/supervisor.ts";
packages/client-runtime/src/state/projectCommands.ts+1-1
...@@ -11,7 +11,7 @@ import * as Option from "effect/Option";...@@ -11,7 +11,7 @@ import * as Option from "effect/Option";
11import * as Predicate from "effect/Predicate";11import * as Predicate from "effect/Predicate";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import { Atom, AtomRegistry } from "effect/unstable/reactivity";14import { Atom, AtomRegistry } from "effect/reactivity";
1515
16import { type EnvironmentRpcInput, request } from "../rpc/client.ts";16import { type EnvironmentRpcInput, request } from "../rpc/client.ts";
17import type { EnvironmentProject } from "./models.ts";17import type { EnvironmentProject } from "./models.ts";
packages/client-runtime/src/state/projectEntities.ts+1-1
...@@ -5,7 +5,7 @@ import type {...@@ -5,7 +5,7 @@ import type {
5 ProjectId,5 ProjectId,
6 ScopedProjectRef,6 ScopedProjectRef,
7} from "@t3tools/contracts";7} from "@t3tools/contracts";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import type { EnvironmentProject } from "./models.ts";10import type { EnvironmentProject } from "./models.ts";
11import { scopeProject } from "./models.ts";11import { scopeProject } from "./models.ts";
packages/client-runtime/src/state/pullRequestDiffHttp.ts+1-1
...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import { HttpClient } from "effect/unstable/http";11import { HttpClient } from "effect/http";
1212
13import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";13import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
14import type { PreparedConnection } from "../connection/model.ts";14import type { PreparedConnection } from "../connection/model.ts";
packages/client-runtime/src/state/pullRequests.test.ts+1-1
...@@ -17,7 +17,7 @@ import * as Option from "effect/Option";...@@ -17,7 +17,7 @@ import * as Option from "effect/Option";
17import * as PubSub from "effect/PubSub";17import * as PubSub from "effect/PubSub";
18import * as Stream from "effect/Stream";18import * as Stream from "effect/Stream";
19import * as SubscriptionRef from "effect/SubscriptionRef";19import * as SubscriptionRef from "effect/SubscriptionRef";
20import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";20import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
2121
22import {22import {
23 AVAILABLE_CONNECTION_STATE,23 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/pullRequests.ts+1-1
...@@ -15,7 +15,7 @@ import * as Data from "effect/Data";...@@ -15,7 +15,7 @@ import * as Data from "effect/Data";
15import * as Effect from "effect/Effect";15import * as Effect from "effect/Effect";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import * as SubscriptionRef from "effect/SubscriptionRef";17import * as SubscriptionRef from "effect/SubscriptionRef";
18import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";18import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1919
20import {20import {
21 createAtomCommandScheduler,21 createAtomCommandScheduler,
packages/client-runtime/src/state/relayDiscovery.ts+1-1
...@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect";...@@ -2,7 +2,7 @@ import * as Effect from "effect/Effect";
2import * as Option from "effect/Option";2import * as Option from "effect/Option";
3import * as Stream from "effect/Stream";3import * as Stream from "effect/Stream";
4import * as SubscriptionRef from "effect/SubscriptionRef";4import * as SubscriptionRef from "effect/SubscriptionRef";
5import { AsyncResult, Atom } from "effect/unstable/reactivity";5import { AsyncResult, Atom } from "effect/reactivity";
66
7import * as RelayEnvironmentDiscovery from "../relay/discovery.ts";7import * as RelayEnvironmentDiscovery from "../relay/discovery.ts";
8import { createRuntimeCommand } from "./runtime.ts";8import { createRuntimeCommand } from "./runtime.ts";
packages/client-runtime/src/state/review.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6import * as Effect from "effect/Effect";6import * as Effect from "effect/Effect";
7import * as Semaphore from "effect/Semaphore";7import * as Semaphore from "effect/Semaphore";
8import { request } from "../rpc/client.ts";8import { request } from "../rpc/client.ts";
9import { Atom } from "effect/unstable/reactivity";9import { Atom } from "effect/reactivity";
1010
11import {11import {
12 createAtomCommandScheduler,12 createAtomCommandScheduler,
packages/client-runtime/src/state/runtime.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as Queue from "effect/Queue";...@@ -12,7 +12,7 @@ import * as Queue from "effect/Queue";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import * as SubscriptionRef from "effect/SubscriptionRef";14import * as SubscriptionRef from "effect/SubscriptionRef";
15import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";15import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1616
17import {17import {
18 AVAILABLE_CONNECTION_STATE,18 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/runtime.ts+1-1
...@@ -5,7 +5,7 @@ import * as Exit from "effect/Exit";...@@ -5,7 +5,7 @@ import * as Exit from "effect/Exit";
5import * as Option from "effect/Option";5import * as Option from "effect/Option";
6import * as Stream from "effect/Stream";6import * as Stream from "effect/Stream";
7import * as SubscriptionRef from "effect/SubscriptionRef";7import * as SubscriptionRef from "effect/SubscriptionRef";
8import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";8import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
99
10import type { ConnectionAttemptError } from "../connection/model.ts";10import type { ConnectionAttemptError } from "../connection/model.ts";
11import * as EnvironmentRegistry from "../connection/registry.ts";11import * as EnvironmentRegistry from "../connection/registry.ts";
packages/client-runtime/src/state/server.test.ts+2-2
...@@ -19,8 +19,8 @@ import * as Scope from "effect/Scope";...@@ -19,8 +19,8 @@ import * as Scope from "effect/Scope";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import * as SubscriptionRef from "effect/SubscriptionRef";20import * as SubscriptionRef from "effect/SubscriptionRef";
21import * as TestClock from "effect/testing/TestClock";21import * as TestClock from "effect/testing/TestClock";
22import { RpcClientError } from "effect/unstable/rpc";22import { RpcClientError } from "effect/rpc";
23import * as Socket from "effect/unstable/socket/Socket";23import * as Socket from "effect/socket/Socket";
2424
25import {25import {
26 AVAILABLE_CONNECTION_STATE,26 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/server.ts+1-1
...@@ -21,7 +21,7 @@ import * as Result from "effect/Result";...@@ -21,7 +21,7 @@ import * as Result from "effect/Result";
21import * as Schema from "effect/Schema";21import * as Schema from "effect/Schema";
22import * as Stream from "effect/Stream";22import * as Stream from "effect/Stream";
23import * as SubscriptionRef from "effect/SubscriptionRef";23import * as SubscriptionRef from "effect/SubscriptionRef";
24import { AsyncResult, Atom } from "effect/unstable/reactivity";24import { AsyncResult, Atom } from "effect/reactivity";
2525
26import {26import {
27 createAtomCommandScheduler,27 createAtomCommandScheduler,
packages/client-runtime/src/state/serverUsage.test.ts+1-1
...@@ -18,7 +18,7 @@ import * as Option from "effect/Option";...@@ -18,7 +18,7 @@ import * as Option from "effect/Option";
18import * as Queue from "effect/Queue";18import * as Queue from "effect/Queue";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import * as SubscriptionRef from "effect/SubscriptionRef";20import * as SubscriptionRef from "effect/SubscriptionRef";
21import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";21import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
2222
23import {23import {
24 AVAILABLE_CONNECTION_STATE,24 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/session.ts+2-2
...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";...@@ -3,8 +3,8 @@ import * as Effect from "effect/Effect";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import * as Stream from "effect/Stream";4import * as Stream from "effect/Stream";
5import * as SubscriptionRef from "effect/SubscriptionRef";5import * as SubscriptionRef from "effect/SubscriptionRef";
6import type { HttpClient } from "effect/unstable/http";6import type { HttpClient } from "effect/http";
7import { AsyncResult, Atom } from "effect/unstable/reactivity";7import { AsyncResult, Atom } from "effect/reactivity";
88
9import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";9import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
10import * as EnvironmentRegistry from "../connection/registry.ts";10import * as EnvironmentRegistry from "../connection/registry.ts";
packages/client-runtime/src/state/shell.test.ts+1-1
...@@ -3,7 +3,7 @@ import { EnvironmentId } from "@t3tools/contracts";...@@ -3,7 +3,7 @@ import { EnvironmentId } from "@t3tools/contracts";
3import { describe, expect, it } from "@effect/vitest";3import { describe, expect, it } from "@effect/vitest";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as DateTime from "effect/DateTime";5import * as DateTime from "effect/DateTime";
6import { Atom, AtomRegistry } from "effect/unstable/reactivity";6import { Atom, AtomRegistry } from "effect/reactivity";
77
8import { PrimaryConnectionTarget } from "../connection/model.ts";8import { PrimaryConnectionTarget } from "../connection/model.ts";
9import type { EnvironmentShellState } from "./shell.ts";9import type { EnvironmentShellState } from "./shell.ts";
packages/client-runtime/src/state/shell.ts+1-1
...@@ -13,7 +13,7 @@ import * as Ref from "effect/Ref";...@@ -13,7 +13,7 @@ import * as Ref from "effect/Ref";
13import * as Semaphore from "effect/Semaphore";13import * as Semaphore from "effect/Semaphore";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import * as SubscriptionRef from "effect/SubscriptionRef";15import * as SubscriptionRef from "effect/SubscriptionRef";
16import { AsyncResult, Atom } from "effect/unstable/reactivity";16import { AsyncResult, Atom } from "effect/reactivity";
1717
18import * as EnvironmentRegistry from "../connection/registry.ts";18import * as EnvironmentRegistry from "../connection/registry.ts";
19import { connectionProjectionPhase } from "../connection/model.ts";19import { connectionProjectionPhase } from "../connection/model.ts";
packages/client-runtime/src/state/shellCommands.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { WS_METHODS } from "@t3tools/contracts";1import { WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import { createEnvironmentRpcCommand } from "./runtime.ts";4import { createEnvironmentRpcCommand } from "./runtime.ts";
5import type { EnvironmentRegistry } from "../connection/registry.ts";5import type { EnvironmentRegistry } from "../connection/registry.ts";
packages/client-runtime/src/state/shellSnapshotHttp.ts+1-1
...@@ -4,7 +4,7 @@ import * as Context from "effect/Context";...@@ -4,7 +4,7 @@ import * as Context from "effect/Context";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import { HttpClient } from "effect/unstable/http";7import { HttpClient } from "effect/http";
88
9import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";9import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
10import type { PreparedConnection } from "../connection/model.ts";10import type { PreparedConnection } from "../connection/model.ts";
packages/client-runtime/src/state/snapshots.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { EnvironmentId, OrchestrationV2ShellSnapshot } from "@t3tools/contracts";1import type { EnvironmentId, OrchestrationV2ShellSnapshot } from "@t3tools/contracts";
2import * as Option from "effect/Option";2import * as Option from "effect/Option";
3import { AsyncResult, Atom } from "effect/unstable/reactivity";3import { AsyncResult, Atom } from "effect/reactivity";
44
5import type { EnvironmentShellState } from "./shell.ts";5import type { EnvironmentShellState } from "./shell.ts";
66
packages/client-runtime/src/state/sourceControl.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";...@@ -8,7 +8,7 @@ import * as Effect from "effect/Effect";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as SubscriptionRef from "effect/SubscriptionRef";10import * as SubscriptionRef from "effect/SubscriptionRef";
11import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";11import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1212
13import {13import {
14 AVAILABLE_CONNECTION_STATE,14 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/sourceControl.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { WS_METHODS } from "@t3tools/contracts";1import { WS_METHODS } from "@t3tools/contracts";
2import { Atom } from "effect/unstable/reactivity";2import { Atom } from "effect/reactivity";
33
4import {4import {
5 createAtomCommandScheduler,5 createAtomCommandScheduler,
packages/client-runtime/src/state/terminal.ts+3-3
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { type TerminalSummary, WS_METHODS } from "@t3tools/contracts";1import { type TerminalSummary, WS_METHODS } from "@t3tools/contracts";
2import * as Stream from "effect/Stream";2import * as Stream from "effect/Stream";
3import { Atom } from "effect/unstable/reactivity";3import { Atom } from "effect/reactivity";
44
5import {5import {
6 createAtomCommandScheduler,6 createAtomCommandScheduler,
...@@ -42,7 +42,7 @@ export function createTerminalEnvironmentAtoms<R, E>(...@@ -42,7 +42,7 @@ export function createTerminalEnvironmentAtoms<R, E>(
42 subscribe: (input: EnvironmentRpcInput<typeof WS_METHODS.terminalAttach>) =>42 subscribe: (input: EnvironmentRpcInput<typeof WS_METHODS.terminalAttach>) =>
43 Stream.suspend(() =>43 Stream.suspend(() =>
44 subscribe(WS_METHODS.terminalAttach, input).pipe(44 subscribe(WS_METHODS.terminalAttach, input).pipe(
45 Stream.scan(nextTerminalAttachSeedState(), applyTerminalAttachStreamEvent),45 Stream.scan(nextTerminalAttachSeedState, applyTerminalAttachStreamEvent),
46 ),46 ),
47 ),47 ),
48 }),48 }),
...@@ -54,7 +54,7 @@ export function createTerminalEnvironmentAtoms<R, E>(...@@ -54,7 +54,7 @@ export function createTerminalEnvironmentAtoms<R, E>(
54 label: "environment-data:terminal:metadata",54 label: "environment-data:terminal:metadata",
55 subscribe: (_input: null) =>55 subscribe: (_input: null) =>
56 subscribe(WS_METHODS.subscribeTerminalMetadata, {}).pipe(56 subscribe(WS_METHODS.subscribeTerminalMetadata, {}).pipe(
57 Stream.scan([] as ReadonlyArray<TerminalSummary>, applyTerminalMetadataStreamEvent),57 Stream.scan((): ReadonlyArray<TerminalSummary> => [], applyTerminalMetadataStreamEvent),
58 ),58 ),
59 }),59 }),
60 open: createEnvironmentRpcCommand(runtime, {60 open: createEnvironmentRpcCommand(runtime, {
packages/client-runtime/src/state/threadCommands.test.ts+1-1
...@@ -18,7 +18,7 @@ import * as Layer from "effect/Layer";...@@ -18,7 +18,7 @@ import * as Layer from "effect/Layer";
18import * as Option from "effect/Option";18import * as Option from "effect/Option";
19import * as Queue from "effect/Queue";19import * as Queue from "effect/Queue";
20import * as SubscriptionRef from "effect/SubscriptionRef";20import * as SubscriptionRef from "effect/SubscriptionRef";
21import { Atom, AtomRegistry } from "effect/unstable/reactivity";21import { Atom, AtomRegistry } from "effect/reactivity";
2222
23import * as EnvironmentRegistry from "../connection/registry.ts";23import * as EnvironmentRegistry from "../connection/registry.ts";
24import * as EnvironmentSupervisor from "../connection/supervisor.ts";24import * as EnvironmentSupervisor from "../connection/supervisor.ts";
packages/client-runtime/src/state/threadCommands.ts+1-1
...@@ -2,7 +2,7 @@ import type { ThreadId } from "@t3tools/contracts";...@@ -2,7 +2,7 @@ import type { ThreadId } from "@t3tools/contracts";
2import * as Crypto from "effect/Crypto";2import * as Crypto from "effect/Crypto";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import { Atom } from "effect/unstable/reactivity";5import { Atom } from "effect/reactivity";
6import {6import {
7 WS_METHODS,7 WS_METHODS,
8 type EnvironmentId,8 type EnvironmentId,
packages/client-runtime/src/state/threadDetail.test.ts+1-1
...@@ -11,7 +11,7 @@ import {...@@ -11,7 +11,7 @@ import {
11 type ScopedThreadRef,11 type ScopedThreadRef,
12} from "@t3tools/contracts";12} from "@t3tools/contracts";
13import * as Option from "effect/Option";13import * as Option from "effect/Option";
14import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";14import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
15import { describe, expect, it } from "vite-plus/test";15import { describe, expect, it } from "vite-plus/test";
1616
17import { v2Projection, v2Now } from "./orchestrationV2TestFixtures.ts";17import { v2Projection, v2Now } from "./orchestrationV2TestFixtures.ts";
packages/client-runtime/src/state/threadDetail.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import type { OrchestrationV2ThreadProjection, ScopedThreadRef } from "@t3tools/contracts";1import type { OrchestrationV2ThreadProjection, ScopedThreadRef } from "@t3tools/contracts";
2import * as Option from "effect/Option";2import * as Option from "effect/Option";
3import { AsyncResult, Atom } from "effect/unstable/reactivity";3import { AsyncResult, Atom } from "effect/reactivity";
44
5import {5import {
6 deriveThreadQueueWorkflowState,6 deriveThreadQueueWorkflowState,
packages/client-runtime/src/state/threadFeedback.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { describe, expect, it } from "vite-plus/test";1import { describe, expect, it } from "vite-plus/test";
2import { MessageId } from "@t3tools/contracts";2import { MessageId } from "@t3tools/contracts";
3import * as Cause from "effect/Cause";3import * as Cause from "effect/Cause";
4import { AsyncResult } from "effect/unstable/reactivity";4import { AsyncResult } from "effect/reactivity";
55
6import {6import {
7 beginCodexFeedbackSubmission,7 beginCodexFeedbackSubmission,
packages/client-runtime/src/state/threadLifecycle.ts+1-1
...@@ -5,7 +5,7 @@ import type {...@@ -5,7 +5,7 @@ import type {
5 ThreadId,5 ThreadId,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as DateTime from "effect/DateTime";7import * as DateTime from "effect/DateTime";
8import { Atom } from "effect/unstable/reactivity";8import { Atom } from "effect/reactivity";
99
10import type { AtomCommand } from "./runtime.ts";10import type { AtomCommand } from "./runtime.ts";
1111
packages/client-runtime/src/state/threadSearch.test.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 type OrchestrationSearchThreadsResult,5 type OrchestrationSearchThreadsResult,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Cause from "effect/Cause";7import * as Cause from "effect/Cause";
8import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";8import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
9import { expect, it } from "vite-plus/test";9import { expect, it } from "vite-plus/test";
1010
11import {11import {
packages/client-runtime/src/state/threadSearch.ts+1-1
...@@ -6,7 +6,7 @@ import {...@@ -6,7 +6,7 @@ import {
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import { AsyncResult, Atom } from "effect/unstable/reactivity";9import { AsyncResult, Atom } from "effect/reactivity";
1010
11export interface EnvironmentThreadSearchMatch extends OrchestrationThreadSearchMatch {11export interface EnvironmentThreadSearchMatch extends OrchestrationThreadSearchMatch {
12 readonly environmentId: EnvironmentId;12 readonly environmentId: EnvironmentId;
packages/client-runtime/src/state/threadShell.test.ts+1-1
...@@ -5,7 +5,7 @@ import {...@@ -5,7 +5,7 @@ import {
5 type OrchestrationV2ShellSnapshot,5 type OrchestrationV2ShellSnapshot,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import { Atom, AtomRegistry } from "effect/unstable/reactivity";8import { Atom, AtomRegistry } from "effect/reactivity";
9import { describe, expect, it } from "vite-plus/test";9import { describe, expect, it } from "vite-plus/test";
1010
11import { PrimaryConnectionTarget } from "../connection/model.ts";11import { PrimaryConnectionTarget } from "../connection/model.ts";
packages/client-runtime/src/state/threadShell.ts+1-1
...@@ -7,7 +7,7 @@ import type {...@@ -7,7 +7,7 @@ import type {
7 ScopedThreadRef,7 ScopedThreadRef,
8 ThreadId,8 ThreadId,
9} from "@t3tools/contracts";9} from "@t3tools/contracts";
10import { Atom } from "effect/unstable/reactivity";10import { Atom } from "effect/reactivity";
1111
12import type { EnvironmentThreadShell } from "./models.ts";12import type { EnvironmentThreadShell } from "./models.ts";
13import { presentThreadShell } from "./models.ts";13import { presentThreadShell } from "./models.ts";
packages/client-runtime/src/state/threads-atoms.test.ts+2-2
...@@ -13,13 +13,13 @@ import { afterEach, describe, expect, it, vi } from "@effect/vitest";...@@ -13,13 +13,13 @@ import { afterEach, describe, expect, it, vi } from "@effect/vitest";
13import * as Deferred from "effect/Deferred";13import * as Deferred from "effect/Deferred";
14import * as Effect from "effect/Effect";14import * as Effect from "effect/Effect";
15import * as Fiber from "effect/Fiber";15import * as Fiber from "effect/Fiber";
16import { HttpClient, HttpClientResponse } from "effect/unstable/http";16import { HttpClient, HttpClientResponse } from "effect/http";
17import * as Layer from "effect/Layer";17import * as Layer from "effect/Layer";
18import * as Option from "effect/Option";18import * as Option from "effect/Option";
19import * as Queue from "effect/Queue";19import * as Queue from "effect/Queue";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import * as SubscriptionRef from "effect/SubscriptionRef";21import * as SubscriptionRef from "effect/SubscriptionRef";
22import { Atom, AtomRegistry } from "effect/unstable/reactivity";22import { Atom, AtomRegistry } from "effect/reactivity";
2323
24import type { ConnectionCatalogEntry } from "../connection/catalog.ts";24import type { ConnectionCatalogEntry } from "../connection/catalog.ts";
25import * as EnvironmentRegistry from "../connection/registry.ts";25import * as EnvironmentRegistry from "../connection/registry.ts";
packages/client-runtime/src/state/threads-sync.test.ts+1-1
...@@ -23,7 +23,7 @@ import * as Scope from "effect/Scope";...@@ -23,7 +23,7 @@ import * as Scope from "effect/Scope";
23import * as Stream from "effect/Stream";23import * as Stream from "effect/Stream";
24import * as SubscriptionRef from "effect/SubscriptionRef";24import * as SubscriptionRef from "effect/SubscriptionRef";
25import * as TestClock from "effect/testing/TestClock";25import * as TestClock from "effect/testing/TestClock";
26import { HttpClient, HttpClientResponse } from "effect/unstable/http";26import { HttpClient, HttpClientResponse } from "effect/http";
2727
28import type { WsRpcProtocolClient } from "../rpc/protocol.ts";28import type { WsRpcProtocolClient } from "../rpc/protocol.ts";
29import {29import {
packages/client-runtime/src/state/threads.ts+2-2
...@@ -17,8 +17,8 @@ import * as Result from "effect/Result";...@@ -17,8 +17,8 @@ import * as Result from "effect/Result";
17import * as Semaphore from "effect/Semaphore";17import * as Semaphore from "effect/Semaphore";
18import * as Stream from "effect/Stream";18import * as Stream from "effect/Stream";
19import * as SubscriptionRef from "effect/SubscriptionRef";19import * as SubscriptionRef from "effect/SubscriptionRef";
20import { HttpClient } from "effect/unstable/http";20import { HttpClient } from "effect/http";
21import { Atom } from "effect/unstable/reactivity";21import { Atom } from "effect/reactivity";
2222
23import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";23import * as RemoteEnvironmentAuthorization from "../authorization/service.ts";
24import * as EnvironmentRegistry from "../connection/registry.ts";24import * as EnvironmentRegistry from "../connection/registry.ts";
packages/client-runtime/src/state/usage.test.ts+1-1
...@@ -8,7 +8,7 @@ import {...@@ -8,7 +8,7 @@ import {
8 type UsageSummary,8 type UsageSummary,
9} from "@t3tools/contracts";9} from "@t3tools/contracts";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";11import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
12import { afterEach, describe, expect, it, vi } from "vite-plus/test";12import { afterEach, describe, expect, it, vi } from "vite-plus/test";
1313
14import type { EnvironmentPresentation } from "../connection/presentation.ts";14import type { EnvironmentPresentation } from "../connection/presentation.ts";
packages/client-runtime/src/state/usage.ts+1-1
...@@ -5,7 +5,7 @@ import type {...@@ -5,7 +5,7 @@ import type {
5 UsageSummaryInput,5 UsageSummaryInput,
6} from "@t3tools/contracts";6} from "@t3tools/contracts";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import type { AtomRegistry } from "effect/unstable/reactivity";8import type { AtomRegistry } from "effect/reactivity";
99
10import { EnvironmentRpcUnavailableError } from "../rpc/client.ts";10import { EnvironmentRpcUnavailableError } from "../rpc/client.ts";
11import type { createEnvironmentPresentationAtoms } from "./presentation.ts";11import type { createEnvironmentPresentationAtoms } from "./presentation.ts";
packages/client-runtime/src/state/vcs.test.ts+1-1
...@@ -13,7 +13,7 @@ import * as Ref from "effect/Ref";...@@ -13,7 +13,7 @@ import * as Ref from "effect/Ref";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import * as SubscriptionRef from "effect/SubscriptionRef";14import * as SubscriptionRef from "effect/SubscriptionRef";
15import * as TestClock from "effect/testing/TestClock";15import * as TestClock from "effect/testing/TestClock";
16import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";16import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1717
18import {18import {
19 AVAILABLE_CONNECTION_STATE,19 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/vcs.ts+1-1
...@@ -13,7 +13,7 @@ import * as Result from "effect/Result";...@@ -13,7 +13,7 @@ import * as Result from "effect/Result";
13import * as Schedule from "effect/Schedule";13import * as Schedule from "effect/Schedule";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import * as SubscriptionRef from "effect/SubscriptionRef";15import * as SubscriptionRef from "effect/SubscriptionRef";
16import { Atom, AtomRegistry } from "effect/unstable/reactivity";16import { Atom, AtomRegistry } from "effect/reactivity";
1717
18import {18import {
19 createEnvironmentRpcCommand,19 createEnvironmentRpcCommand,
packages/client-runtime/src/state/vcsAction.test.ts+1-1
...@@ -15,7 +15,7 @@ import * as Option from "effect/Option";...@@ -15,7 +15,7 @@ import * as Option from "effect/Option";
15import * as Schema from "effect/Schema";15import * as Schema from "effect/Schema";
16import * as Stream from "effect/Stream";16import * as Stream from "effect/Stream";
17import * as SubscriptionRef from "effect/SubscriptionRef";17import * as SubscriptionRef from "effect/SubscriptionRef";
18import { AsyncResult, Atom, AtomRegistry } from "effect/unstable/reactivity";18import { AsyncResult, Atom, AtomRegistry } from "effect/reactivity";
1919
20import {20import {
21 AVAILABLE_CONNECTION_STATE,21 AVAILABLE_CONNECTION_STATE,
packages/client-runtime/src/state/vcsAction.ts+1-1
...@@ -15,7 +15,7 @@ import * as DateTime from "effect/DateTime";...@@ -15,7 +15,7 @@ import * as DateTime from "effect/DateTime";
15import * as Effect from "effect/Effect";15import * as Effect from "effect/Effect";
16import * as Schema from "effect/Schema";16import * as Schema from "effect/Schema";
17import * as Stream from "effect/Stream";17import * as Stream from "effect/Stream";
18import { AsyncResult, Atom, type AtomRegistry } from "effect/unstable/reactivity";18import { AsyncResult, Atom, type AtomRegistry } from "effect/reactivity";
1919
20import type { EnvironmentRegistry } from "../connection/registry.ts";20import type { EnvironmentRegistry } from "../connection/registry.ts";
21import * as Persistence from "../platform/persistence.ts";21import * as Persistence from "../platform/persistence.ts";
packages/client-runtime/src/state/vcsRefInvalidation.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import type { EnvironmentId } from "@t3tools/contracts";1import type { EnvironmentId } from "@t3tools/contracts";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as PartitionedSemaphore from "effect/PartitionedSemaphore";3import * as PartitionedSemaphore from "effect/PartitionedSemaphore";
4import { Atom, type AtomRegistry } from "effect/unstable/reactivity";4import { Atom, type AtomRegistry } from "effect/reactivity";
55
6import { safeErrorLogAttributes } from "../errors/safeLog.ts";6import { safeErrorLogAttributes } from "../errors/safeLog.ts";
7import * as Persistence from "../platform/persistence.ts";7import * as Persistence from "../platform/persistence.ts";
packages/contracts/src/auth.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import * as Schema from "effect/Schema";1import * as Schema from "effect/Schema";
2import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema";2import * as HttpApiSchema from "effect/http-api/HttpApiSchema";
33
4import {4import {
5 AuthSessionId,5 AuthSessionId,
packages/contracts/src/baseSchemas.ts+2-2
...@@ -271,8 +271,8 @@ const knownTags = (...@@ -271,8 +271,8 @@ const knownTags = (
271/**271/**
272 * Construct a branded identifier. Enforces non-empty trimmed strings272 * Construct a branded identifier. Enforces non-empty trimmed strings
273 */273 */
274const makeEntityId = <Brand extends string>(brand: Brand) => {274const makeEntityId = <Brand extends string>(brand: Parameters<typeof Schema.brand<Brand>>[0]) => {
275 return TrimmedNonEmptyString.pipe(Schema.brand(brand));275 return TrimmedNonEmptyString.pipe(Schema.brand<Brand>(brand));
276};276};
277277
278export const ThreadId = makeEntityId("ThreadId");278export const ThreadId = makeEntityId("ThreadId");
packages/contracts/src/environmentHttp.ts+6-6
...@@ -1,12 +1,12 @@...@@ -1,12 +1,12 @@
1import * as Context from "effect/Context";1import * as Context from "effect/Context";
2import type * as DateTime from "effect/DateTime";2import type * as DateTime from "effect/DateTime";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import * as HttpApi from "effect/unstable/httpapi/HttpApi";4import * as HttpApi from "effect/http-api/HttpApi";
5import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint";5import * as HttpApiEndpoint from "effect/http-api/HttpApiEndpoint";
6import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup";6import * as HttpApiGroup from "effect/http-api/HttpApiGroup";
7import * as HttpApiMiddleware from "effect/unstable/httpapi/HttpApiMiddleware";7import * as HttpApiMiddleware from "effect/http-api/HttpApiMiddleware";
8import * as HttpServerRespondable from "effect/unstable/http/HttpServerRespondable";8import * as HttpServerRespondable from "effect/http/HttpServerRespondable";
9import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";9import * as HttpServerResponse from "effect/http/HttpServerResponse";
1010
11import {11import {
12 AuthAccessTokenResult,12 AuthAccessTokenResult,
packages/contracts/src/pullRequest.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Schema from "effect/Schema";1import * as Schema from "effect/Schema";
2import * as HttpServerRespondable from "effect/unstable/http/HttpServerRespondable";2import * as HttpServerRespondable from "effect/http/HttpServerRespondable";
3import * as HttpServerResponse from "effect/unstable/http/HttpServerResponse";3import * as HttpServerResponse from "effect/http/HttpServerResponse";
44
5import {5import {
6 IsoDateTime,6 IsoDateTime,
packages/contracts/src/relay.test.ts+1-1
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1import { describe, expect, it } from "vite-plus/test";1import { describe, expect, it } from "vite-plus/test";
2import * as OpenApi from "effect/unstable/httpapi/OpenApi";2import * as OpenApi from "effect/http-api/OpenApi";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
44
5import { RelayApi, RelayDeviceRegistrationRequest } from "./relay.ts";5import { RelayApi, RelayDeviceRegistrationRequest } from "./relay.ts";
packages/contracts/src/relay.ts+7-7
...@@ -1,12 +1,12 @@...@@ -1,12 +1,12 @@
1import * as Context from "effect/Context";1import * as Context from "effect/Context";
2import * as Schema from "effect/Schema";2import * as Schema from "effect/Schema";
3import * as HttpApi from "effect/unstable/httpapi/HttpApi";3import * as HttpApi from "effect/http-api/HttpApi";
4import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint";4import * as HttpApiEndpoint from "effect/http-api/HttpApiEndpoint";
5import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup";5import * as HttpApiGroup from "effect/http-api/HttpApiGroup";
6import * as HttpApiMiddleware from "effect/unstable/httpapi/HttpApiMiddleware";6import * as HttpApiMiddleware from "effect/http-api/HttpApiMiddleware";
7import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema";7import * as HttpApiSchema from "effect/http-api/HttpApiSchema";
8import * as HttpApiSecurity from "effect/unstable/httpapi/HttpApiSecurity";8import * as HttpApiSecurity from "effect/http-api/HttpApiSecurity";
9import * as OpenApi from "effect/unstable/httpapi/OpenApi";9import * as OpenApi from "effect/http-api/OpenApi";
1010
11import {11import {
12 DpopFailureReason,12 DpopFailureReason,
packages/contracts/src/rpc.ts+3-3
...@@ -7,9 +7,9 @@ import {...@@ -7,9 +7,9 @@ import {
7 ChatGptHandoffState,7 ChatGptHandoffState,
8} from "./providerSetup.ts";8} from "./providerSetup.ts";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as Rpc from "effect/unstable/rpc/Rpc";10import * as Rpc from "effect/rpc/Rpc";
11import * as RpcGroup from "effect/unstable/rpc/RpcGroup";11import * as RpcGroup from "effect/rpc/RpcGroup";
12import * as RpcMiddleware from "effect/unstable/rpc/RpcMiddleware";12import * as RpcMiddleware from "effect/rpc/RpcMiddleware";
13import { NonNegativeInt, TrimmedNonEmptyString } from "./baseSchemas.ts";13import { NonNegativeInt, TrimmedNonEmptyString } from "./baseSchemas.ts";
14import {14import {
15 CodexAuthCallbackInput,15 CodexAuthCallbackInput,
packages/effect-acp/scripts/generate.ts+3-3
...@@ -9,9 +9,9 @@ import * as Layer from "effect/Layer";...@@ -9,9 +9,9 @@ import * as Layer from "effect/Layer";
9import * as Logger from "effect/Logger";9import * as Logger from "effect/Logger";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { Command, Flag } from "effect/unstable/cli";12import { Command, Flag } from "effect/cli";
13import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/unstable/http";13import { FetchHttpClient, HttpClient, HttpClientResponse } from "effect/http";
14import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";14import { ChildProcess, ChildProcessSpawner } from "effect/process";
1515
16const V2_SCHEMA_RELEASE = "schema-v2.0.0-alpha.3";16const V2_SCHEMA_RELEASE = "schema-v2.0.0-alpha.3";
17const V1_SCHEMA_RELEASE = "schema-v1.21.0";17const V1_SCHEMA_RELEASE = "schema-v1.21.0";
packages/effect-acp/src/_internal/shared.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as Schema from "effect/Schema";2import * as Schema from "effect/Schema";
3import { RpcClientError } from "effect/unstable/rpc";3import { RpcClientError } from "effect/rpc";
44
5import * as AcpSchema from "../_generated/schema.gen.ts";5import * as AcpSchema from "../_generated/schema.gen.ts";
6import * as AcpError from "../errors.ts";6import * as AcpError from "../errors.ts";
packages/effect-acp/src/_internal/stdio.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, describe, it } from "@effect/vitest";1import { assert, describe, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as PlatformError from "effect/PlatformError";3import * as PlatformError from "effect/PlatformError";
4import { ChildProcessSpawner } from "effect/unstable/process";4import { ChildProcessSpawner } from "effect/process";
55
6import * as AcpError from "../errors.ts";6import * as AcpError from "../errors.ts";
7import { makeTerminationError } from "./stdio.ts";7import { makeTerminationError } from "./stdio.ts";
packages/effect-acp/src/_internal/stdio.ts+1-1
...@@ -4,7 +4,7 @@ import * as Cause from "effect/Cause";...@@ -4,7 +4,7 @@ import * as Cause from "effect/Cause";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Sink from "effect/Sink";5import * as Sink from "effect/Sink";
6import * as Stdio from "effect/Stdio";6import * as Stdio from "effect/Stdio";
7import { ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcessSpawner } from "effect/process";
88
9import * as AcpError from "../errors.ts";9import * as AcpError from "../errors.ts";
1010
packages/effect-acp/src/agent.ts+3-3
...@@ -5,9 +5,9 @@ import * as Schema from "effect/Schema";...@@ -5,9 +5,9 @@ import * as Schema from "effect/Schema";
5import * as Scope from "effect/Scope";5import * as Scope from "effect/Scope";
6import * as Stream from "effect/Stream";6import * as Stream from "effect/Stream";
7import * as Stdio from "effect/Stdio";7import * as Stdio from "effect/Stdio";
8import * as RpcClient from "effect/unstable/rpc/RpcClient";8import * as RpcClient from "effect/rpc/RpcClient";
9import * as RpcMessage from "effect/unstable/rpc/RpcMessage";9import * as RpcMessage from "effect/rpc/RpcMessage";
10import * as RpcServer from "effect/unstable/rpc/RpcServer";10import * as RpcServer from "effect/rpc/RpcServer";
1111
12import * as AcpSchema from "./schema.ts";12import * as AcpSchema from "./schema.ts";
13import { AGENT_METHODS, CLIENT_METHODS } from "./_generated/meta.gen.ts";13import { AGENT_METHODS, CLIENT_METHODS } from "./_generated/meta.gen.ts";
packages/effect-acp/src/client.test.ts+1-1
...@@ -10,7 +10,7 @@ import * as Ref from "effect/Ref";...@@ -10,7 +10,7 @@ import * as Ref from "effect/Ref";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as Scope from "effect/Scope";11import * as Scope from "effect/Scope";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";13import { ChildProcess, ChildProcessSpawner } from "effect/process";
1414
15import * as NodeServices from "@effect/platform-node/NodeServices";15import * as NodeServices from "@effect/platform-node/NodeServices";
16import { it, assert } from "@effect/vitest";16import { it, assert } from "@effect/vitest";
packages/effect-acp/src/client.ts+4-4
...@@ -6,10 +6,10 @@ import * as Schema from "effect/Schema";...@@ -6,10 +6,10 @@ import * as Schema from "effect/Schema";
6import * as Predicate from "effect/Predicate";6import * as Predicate from "effect/Predicate";
7import * as Scope from "effect/Scope";7import * as Scope from "effect/Scope";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import * as RpcClient from "effect/unstable/rpc/RpcClient";9import * as RpcClient from "effect/rpc/RpcClient";
10import * as RpcMessage from "effect/unstable/rpc/RpcMessage";10import * as RpcMessage from "effect/rpc/RpcMessage";
11import * as RpcServer from "effect/unstable/rpc/RpcServer";11import * as RpcServer from "effect/rpc/RpcServer";
12import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";12import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
1313
14import * as AcpError from "./errors.ts";14import * as AcpError from "./errors.ts";
15import * as AcpProtocol from "./protocol.ts";15import * as AcpProtocol from "./protocol.ts";
packages/effect-acp/src/errors.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { describe, expect, it } from "@effect/vitest";1import { describe, expect, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as Schema from "effect/Schema";3import * as Schema from "effect/Schema";
4import * as RpcClientError from "effect/unstable/rpc/RpcClientError";4import * as RpcClientError from "effect/rpc/RpcClientError";
55
6import * as AcpSchema from "./_generated/schema.gen.ts";6import * as AcpSchema from "./_generated/schema.gen.ts";
7import { callRpc, runHandler } from "./_internal/shared.ts";7import { callRpc, runHandler } from "./_internal/shared.ts";
packages/effect-acp/src/protocol.test.ts+1-1
...@@ -11,7 +11,7 @@ import * as Sink from "effect/Sink";...@@ -11,7 +11,7 @@ import * as Sink from "effect/Sink";
11import * as Stdio from "effect/Stdio";11import * as Stdio from "effect/Stdio";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import * as Ref from "effect/Ref";13import * as Ref from "effect/Ref";
14import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";14import { ChildProcess, ChildProcessSpawner } from "effect/process";
1515
16import { it, assert } from "@effect/vitest";16import { it, assert } from "@effect/vitest";
17import * as NodeServices from "@effect/platform-node/NodeServices";17import * as NodeServices from "@effect/platform-node/NodeServices";
packages/effect-acp/src/protocol.ts+25-6
...@@ -10,11 +10,11 @@ import * as Schema from "effect/Schema";...@@ -10,11 +10,11 @@ import * as Schema from "effect/Schema";
10import * as Scope from "effect/Scope";10import * as Scope from "effect/Scope";
11import * as Stream from "effect/Stream";11import * as Stream from "effect/Stream";
12import * as Stdio from "effect/Stdio";12import * as Stdio from "effect/Stdio";
13import * as RpcClient from "effect/unstable/rpc/RpcClient";13import * as RpcClient from "effect/rpc/RpcClient";
14import * as RpcClientError from "effect/unstable/rpc/RpcClientError";14import * as RpcClientError from "effect/rpc/RpcClientError";
15import * as RpcMessage from "effect/unstable/rpc/RpcMessage";15import * as RpcMessage from "effect/rpc/RpcMessage";
16import * as RpcSerialization from "effect/unstable/rpc/RpcSerialization";16import * as RpcSerialization from "effect/rpc/RpcSerialization";
17import * as RpcServer from "effect/unstable/rpc/RpcServer";17import * as RpcServer from "effect/rpc/RpcServer";
1818
19import * as AcpSchema from "./schema.ts";19import * as AcpSchema from "./schema.ts";
20import * as AcpSchemaV1 from "./_generated/schema-v1.gen.ts";20import * as AcpSchemaV1 from "./_generated/schema-v1.gen.ts";
...@@ -144,6 +144,25 @@ const decodeElicitationComplete = Schema.decodeUnknownEffect(...@@ -144,6 +144,25 @@ const decodeElicitationComplete = Schema.decodeUnknownEffect(
144 AcpSchema.CompleteElicitationNotification,144 AcpSchema.CompleteElicitationNotification,
145);145);
146const parserFactory = RpcSerialization.ndJsonRpc();146const parserFactory = RpcSerialization.ndJsonRpc();
147// ndJsonRpc skips lines that are not JSON. A malformed agent line has to end the
148// session, so frames are split here and each one goes through the strict codec.
149const makeStrictNdJsonRpcParser = () => {
150 const codec = RpcSerialization.jsonRpc().makeUnsafe();
151 const decoder = new TextDecoder();
152 let buffer = "";
153 return {
154 decode: (bytes: Uint8Array | string): ReadonlyArray<unknown> => {
155 buffer += typeof bytes === "string" ? bytes : decoder.decode(bytes, { stream: true });
156 const lines = buffer.split("\n");
157 buffer = lines.pop() ?? "";
158 return lines.flatMap((line) => codec.decode(line));
159 },
160 encode: (response: Parameters<typeof codec.encode>[0]) => {
161 const encoded = codec.encode(response);
162 return encoded === undefined ? undefined : `${encoded}\n`;
163 },
164 };
165};
147const MAX_BUFFERED_RAW_NOTIFICATIONS = 32;166const MAX_BUFFERED_RAW_NOTIFICATIONS = 32;
148// Outbound JSON-RPC notification: no `id`, so peers never treat it as a request.167// Outbound JSON-RPC notification: no `id`, so peers never treat it as a request.
149const encodeJsonRpcNotification = Schema.encodeUnknownExit(168const encodeJsonRpcNotification = Schema.encodeUnknownExit(
...@@ -189,7 +208,7 @@ function normalizeAcpJsonRpcError(...@@ -189,7 +208,7 @@ function normalizeAcpJsonRpcError(
189export const makeAcpPatchedProtocol = Effect.fn("makeAcpPatchedProtocol")(function* (208export const makeAcpPatchedProtocol = Effect.fn("makeAcpPatchedProtocol")(function* (
190 options: AcpPatchedProtocolOptions,209 options: AcpPatchedProtocolOptions,
191): Effect.fn.Return<AcpPatchedProtocol, never, Scope.Scope> {210): Effect.fn.Return<AcpPatchedProtocol, never, Scope.Scope> {
192 const parser = parserFactory.makeUnsafe();211 const parser = makeStrictNdJsonRpcParser();
193 const serverQueue = yield* Queue.unbounded<RpcMessage.FromClientEncoded>();212 const serverQueue = yield* Queue.unbounded<RpcMessage.FromClientEncoded>();
194 const clientQueue = yield* Queue.unbounded<RpcMessage.FromServerEncoded>();213 const clientQueue = yield* Queue.unbounded<RpcMessage.FromServerEncoded>();
195 const notificationQueue = yield* Queue.sliding<AcpIncomingNotification>(214 const notificationQueue = yield* Queue.sliding<AcpIncomingNotification>(
packages/effect-acp/src/rpc.ts+2-2
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as AcpCompat from "./compat.ts";1import * as AcpCompat from "./compat.ts";
2import * as Rpc from "effect/unstable/rpc/Rpc";2import * as Rpc from "effect/rpc/Rpc";
3import * as RpcGroup from "effect/unstable/rpc/RpcGroup";3import * as RpcGroup from "effect/rpc/RpcGroup";
4import * as Schema from "effect/Schema";4import * as Schema from "effect/Schema";
55
6import * as AcpSchema from "./_generated/schema.gen.ts";6import * as AcpSchema from "./_generated/schema.gen.ts";
packages/effect-codex-app-server/scripts/generate.ts+2-7
...@@ -9,13 +9,8 @@ import * as Layer from "effect/Layer";...@@ -9,13 +9,8 @@ import * as Layer from "effect/Layer";
9import * as Logger from "effect/Logger";9import * as Logger from "effect/Logger";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import {12import { FetchHttpClient, HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
13 FetchHttpClient,13import { ChildProcess, ChildProcessSpawner } from "effect/process";
14 HttpClient,
15 HttpClientRequest,
16 HttpClientResponse,
17} from "effect/unstable/http";
18import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";
1914
20const UPSTREAM_REF = "687a119f0fcaace47e1f1abcc77cec6c813fd6da";15const UPSTREAM_REF = "687a119f0fcaace47e1f1abcc77cec6c813fd6da";
21const USER_AGENT = "effect-codex-app-server-generator";16const USER_AGENT = "effect-codex-app-server-generator";
packages/effect-codex-app-server/src/_internal/stdio.test.ts+1-1
...@@ -1,7 +1,7 @@...@@ -1,7 +1,7 @@
1import { assert, describe, it } from "@effect/vitest";1import { assert, describe, it } from "@effect/vitest";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import * as PlatformError from "effect/PlatformError";3import * as PlatformError from "effect/PlatformError";
4import { ChildProcessSpawner } from "effect/unstable/process";4import { ChildProcessSpawner } from "effect/process";
55
6import * as CodexError from "../errors.ts";6import * as CodexError from "../errors.ts";
7import { makeTerminationError } from "./stdio.ts";7import { makeTerminationError } from "./stdio.ts";
packages/effect-codex-app-server/src/_internal/stdio.ts+1-1
...@@ -4,7 +4,7 @@ import * as Queue from "effect/Queue";...@@ -4,7 +4,7 @@ import * as Queue from "effect/Queue";
4import * as Sink from "effect/Sink";4import * as Sink from "effect/Sink";
5import * as Stdio from "effect/Stdio";5import * as Stdio from "effect/Stdio";
6import * as Stream from "effect/Stream";6import * as Stream from "effect/Stream";
7import { ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcessSpawner } from "effect/process";
88
9import * as CodexError from "../errors.ts";9import * as CodexError from "../errors.ts";
1010
packages/effect-codex-app-server/src/client.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as Path from "effect/Path";...@@ -4,7 +4,7 @@ import * as Path from "effect/Path";
4import * as Effect from "effect/Effect";4import * as Effect from "effect/Effect";
5import * as Ref from "effect/Ref";5import * as Ref from "effect/Ref";
6import * as Scope from "effect/Scope";6import * as Scope from "effect/Scope";
7import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";7import { ChildProcess, ChildProcessSpawner } from "effect/process";
88
9import * as NodeServices from "@effect/platform-node/NodeServices";9import * as NodeServices from "@effect/platform-node/NodeServices";
10import { assert, it } from "@effect/vitest";10import { assert, it } from "@effect/vitest";
packages/effect-codex-app-server/src/client.ts+1-1
...@@ -5,7 +5,7 @@ import * as Schema from "effect/Schema";...@@ -5,7 +5,7 @@ import * as Schema from "effect/Schema";
5import * as Scope from "effect/Scope";5import * as Scope from "effect/Scope";
6import * as Stdio from "effect/Stdio";6import * as Stdio from "effect/Stdio";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import * as ChildProcessSpawner from "effect/unstable/process/ChildProcessSpawner";8import * as ChildProcessSpawner from "effect/process/ChildProcessSpawner";
99
10import * as CodexRpc from "./_generated/meta.gen.ts";10import * as CodexRpc from "./_generated/meta.gen.ts";
11import * as CodexSchema from "./_generated/schema.gen.ts";11import * as CodexSchema from "./_generated/schema.gen.ts";
packages/effect-codex-app-server/test/examples/codex-app-server-probe.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Console from "effect/Console";1import * as Console from "effect/Console";
2import * as Effect from "effect/Effect";2import * as Effect from "effect/Effect";
3import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";3import { ChildProcess, ChildProcessSpawner } from "effect/process";
44
5import * as NodeRuntime from "@effect/platform-node/NodeRuntime";5import * as NodeRuntime from "@effect/platform-node/NodeRuntime";
6import * as NodeServices from "@effect/platform-node/NodeServices";6import * as NodeServices from "@effect/platform-node/NodeServices";
packages/shared/src/dpop.ts+6-6
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import { p256 } from "@noble/curves/nist";1import { p256 } from "@noble/curves/nist";
2import { sha256 } from "@noble/hashes/sha2";2import { sha256 } from "@noble/hashes/sha2";
3import * as Encoding from "effect/Encoding";3import * as Base64Url from "effect/encoding/Base64Url";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Result from "effect/Result";5import * as Result from "effect/Result";
6import * as Schema from "effect/Schema";6import * as Schema from "effect/Schema";
...@@ -69,15 +69,15 @@ export type DpopVerificationResult =...@@ -69,15 +69,15 @@ export type DpopVerificationResult =
69 };69 };
7070
71function base64UrlToBytes(value: string): Uint8Array {71function base64UrlToBytes(value: string): Uint8Array {
72 return Result.getOrThrow(Encoding.decodeBase64Url(value));72 return Result.getOrThrow(Base64Url.decode(value));
73}73}
7474
75function decodeBase64UrlDpopJwtHeader(value: string) {75function decodeBase64UrlDpopJwtHeader(value: string) {
76 return decodeDpopJwtHeaderJson(Result.getOrThrow(Encoding.decodeBase64UrlString(value)));76 return decodeDpopJwtHeaderJson(Result.getOrThrow(Base64Url.decodeString(value)));
77}77}
7878
79function decodeBase64UrlDpopJwtPayload(value: string) {79function decodeBase64UrlDpopJwtPayload(value: string) {
80 return decodeDpopJwtPayloadJson(Result.getOrThrow(Encoding.decodeBase64UrlString(value)));80 return decodeDpopJwtPayloadJson(Result.getOrThrow(Base64Url.decodeString(value)));
81}81}
8282
83function dpopThumbprintInput(jwk: DpopPublicJwkType): string {83function dpopThumbprintInput(jwk: DpopPublicJwkType): string {
...@@ -90,11 +90,11 @@ function dpopThumbprintInput(jwk: DpopPublicJwkType): string {...@@ -90,11 +90,11 @@ function dpopThumbprintInput(jwk: DpopPublicJwkType): string {
90}90}
9191
92export function computeDpopJwkThumbprint(jwk: DpopPublicJwkType): string {92export function computeDpopJwkThumbprint(jwk: DpopPublicJwkType): string {
93 return Encoding.encodeBase64Url(sha256(new TextEncoder().encode(dpopThumbprintInput(jwk))));93 return Base64Url.encode(sha256(new TextEncoder().encode(dpopThumbprintInput(jwk))));
94}94}
9595
96export function computeDpopAccessTokenHash(accessToken: string): string {96export function computeDpopAccessTokenHash(accessToken: string): string {
97 return Encoding.encodeBase64Url(sha256(new TextEncoder().encode(accessToken)));97 return Base64Url.encode(sha256(new TextEncoder().encode(accessToken)));
98}98}
9999
100function publicKeyBytesFromJwk(jwk: DpopPublicJwkType): Uint8Array {100function publicKeyBytesFromJwk(jwk: DpopPublicJwkType): Uint8Array {
packages/shared/src/httpObservability.ts+1-1
...@@ -1,6 +1,6 @@...@@ -1,6 +1,6 @@
1import * as Effect from "effect/Effect";1import * as Effect from "effect/Effect";
2import * as Layer from "effect/Layer";2import * as Layer from "effect/Layer";
3import * as Headers from "effect/unstable/http/Headers";3import * as Headers from "effect/http/Headers";
44
5export const httpHeaderRedactionLayer = Layer.effect(5export const httpHeaderRedactionLayer = Layer.effect(
6 Headers.CurrentRedactedNames,6 Headers.CurrentRedactedNames,
packages/shared/src/httpReadiness.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as Option from "effect/Option";3import * as Option from "effect/Option";
4import * as Ref from "effect/Ref";4import * as Ref from "effect/Ref";
5import * as Schedule from "effect/Schedule";5import * as Schedule from "effect/Schedule";
6import { HttpClient, HttpClientRequest } from "effect/unstable/http";6import { HttpClient, HttpClientRequest } from "effect/http";
77
8const DEFAULT_HTTP_READY_PROBE_TIMEOUT_MS = 1_000;8const DEFAULT_HTTP_READY_PROBE_TIMEOUT_MS = 1_000;
99
packages/shared/src/nodeSqliteClient.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";...@@ -5,7 +5,7 @@ import * as Effect from "effect/Effect";
5import * as FileSystem from "effect/FileSystem";5import * as FileSystem from "effect/FileSystem";
6import * as Layer from "effect/Layer";6import * as Layer from "effect/Layer";
7import * as Path from "effect/Path";7import * as Path from "effect/Path";
8import * as SqlClient from "effect/unstable/sql/SqlClient";8import * as SqlClient from "effect/sql/SqlClient";
99
10import * as SqliteClient from "./nodeSqliteClient.ts";10import * as SqliteClient from "./nodeSqliteClient.ts";
1111
packages/shared/src/nodeSqliteClient.ts+5-5
...@@ -19,11 +19,11 @@ import * as Scope from "effect/Scope";...@@ -19,11 +19,11 @@ import * as Scope from "effect/Scope";
19import * as Semaphore from "effect/Semaphore";19import * as Semaphore from "effect/Semaphore";
20import * as Context from "effect/Context";20import * as Context from "effect/Context";
21import * as Stream from "effect/Stream";21import * as Stream from "effect/Stream";
22import * as Reactivity from "effect/unstable/reactivity/Reactivity";22import * as Reactivity from "effect/reactivity/Reactivity";
23import * as Client from "effect/unstable/sql/SqlClient";23import * as Client from "effect/sql/SqlClient";
24import type { Connection } from "effect/unstable/sql/SqlConnection";24import type { Connection } from "effect/sql/SqlConnection";
25import { SqlError, classifySqliteError } from "effect/unstable/sql/SqlError";25import { SqlError, classifySqliteError } from "effect/sql/SqlError";
26import * as Statement from "effect/unstable/sql/Statement";26import * as Statement from "effect/sql/Statement";
2727
28const ATTR_DB_SYSTEM_NAME = "db.system.name";28const ATTR_DB_SYSTEM_NAME = "db.system.name";
2929
packages/shared/src/observability.ts+1-1
...@@ -7,7 +7,7 @@ import * as Schema from "effect/Schema";...@@ -7,7 +7,7 @@ import * as Schema from "effect/Schema";
7import * as SchemaIssue from "effect/SchemaIssue";7import * as SchemaIssue from "effect/SchemaIssue";
8import * as SchemaTransformation from "effect/SchemaTransformation";8import * as SchemaTransformation from "effect/SchemaTransformation";
9import * as Tracer from "effect/Tracer";9import * as Tracer from "effect/Tracer";
10import { OtlpResource, OtlpTracer, OtlpSerialization } from "effect/unstable/observability";10import { OtlpResource, OtlpTracer, OtlpSerialization } from "effect/observability";
1111
12import { RotatingFileSink } from "./logging.ts";12import { RotatingFileSink } from "./logging.ts";
1313
packages/shared/src/otelEnvironment.test.ts+1-1
...@@ -2,7 +2,7 @@ import { assert, describe, it } from "@effect/vitest";...@@ -2,7 +2,7 @@ import { assert, describe, it } from "@effect/vitest";
2import * as ConfigProvider from "effect/ConfigProvider";2import * as ConfigProvider from "effect/ConfigProvider";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as Layer from "effect/Layer";4import * as Layer from "effect/Layer";
5import * as OtlpResource from "effect/unstable/observability/OtlpResource";5import * as OtlpResource from "effect/observability/OtlpResource";
66
7import * as OtelEnvironment from "./otelEnvironment.ts";7import * as OtelEnvironment from "./otelEnvironment.ts";
88
packages/shared/src/otelEnvironment.ts+3-1
...@@ -65,7 +65,9 @@ interface Flag {...@@ -65,7 +65,9 @@ interface Flag {
65const TrimmedLowercase = Schema.String.pipe(65const TrimmedLowercase = Schema.String.pipe(
66 Schema.decodeTo(66 Schema.decodeTo(
67 Schema.String,67 Schema.String,
68 SchemaTransformation.trim().compose(SchemaTransformation.toLowerCase()),68 SchemaTransformation.trim().pipe(
69 SchemaTransformation.composeTransformation(SchemaTransformation.toLowerCase()),
70 ),
69 ),71 ),
70);72);
7173
packages/shared/src/relayClient.test.ts+6-6
...@@ -3,13 +3,13 @@ import * as NodeServices from "@effect/platform-node/NodeServices";...@@ -3,13 +3,13 @@ import * as NodeServices from "@effect/platform-node/NodeServices";
3import { describe, expect, it } from "@effect/vitest";3import { describe, expect, it } from "@effect/vitest";
4import * as ConfigProvider from "effect/ConfigProvider";4import * as ConfigProvider from "effect/ConfigProvider";
5import * as Effect from "effect/Effect";5import * as Effect from "effect/Effect";
6import * as Encoding from "effect/Encoding";6import * as Hex from "effect/encoding/Hex";
7import * as FileSystem from "effect/FileSystem";7import * as FileSystem from "effect/FileSystem";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Sink from "effect/Sink";9import * as Sink from "effect/Sink";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import { HttpClient, HttpClientResponse } from "effect/unstable/http";11import { HttpClient, HttpClientResponse } from "effect/http";
12import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";12import { ChildProcess, ChildProcessSpawner } from "effect/process";
13import { HostProcessArchitecture, HostProcessPlatform } from "./hostProcess.ts";13import { HostProcessArchitecture, HostProcessPlatform } from "./hostProcess.ts";
1414
15import * as RelayClient from "./relayClient.ts";15import * as RelayClient from "./relayClient.ts";
...@@ -122,7 +122,7 @@ describe("RelayClient", () => {...@@ -122,7 +122,7 @@ describe("RelayClient", () => {
122 baseDir,122 baseDir,
123 releaseAsset: {123 releaseAsset: {
124 url: "https://example.test/cloudflared",124 url: "https://example.test/cloudflared",
125 sha256: Encoding.encodeHex(sha256(bytes)),125 sha256: Hex.encode(sha256(bytes)),
126 archive: "binary",126 archive: "binary",
127 },127 },
128 });128 });
...@@ -178,7 +178,7 @@ describe("RelayClient", () => {...@@ -178,7 +178,7 @@ describe("RelayClient", () => {
178 baseDir,178 baseDir,
179 releaseAsset: {179 releaseAsset: {
180 url: "https://example.test/cloudflared",180 url: "https://example.test/cloudflared",
181 sha256: Encoding.encodeHex(sha256(new TextEncoder().encode("expected"))),181 sha256: Hex.encode(sha256(new TextEncoder().encode("expected"))),
182 archive: "binary",182 archive: "binary",
183 },183 },
184 });184 });
...@@ -211,7 +211,7 @@ describe("RelayClient", () => {...@@ -211,7 +211,7 @@ describe("RelayClient", () => {
211 baseDir,211 baseDir,
212 releaseAsset: {212 releaseAsset: {
213 url: "https://example.test/cloudflared",213 url: "https://example.test/cloudflared",
214 sha256: Encoding.encodeHex(sha256(bytes)),214 sha256: Hex.encode(sha256(bytes)),
215 archive: "binary",215 archive: "binary",
216 },216 },
217 });217 });
packages/shared/src/relayClient.ts+4-4
...@@ -8,15 +8,15 @@ import * as Context from "effect/Context";...@@ -8,15 +8,15 @@ import * as Context from "effect/Context";
8import * as Crypto from "effect/Crypto";8import * as Crypto from "effect/Crypto";
9import * as Data from "effect/Data";9import * as Data from "effect/Data";
10import * as Effect from "effect/Effect";10import * as Effect from "effect/Effect";
11import * as Encoding from "effect/Encoding";11import * as Hex from "effect/encoding/Hex";
12import * as FileSystem from "effect/FileSystem";12import * as FileSystem from "effect/FileSystem";
13import * as Layer from "effect/Layer";13import * as Layer from "effect/Layer";
14import * as Option from "effect/Option";14import * as Option from "effect/Option";
15import * as Path from "effect/Path";15import * as Path from "effect/Path";
16import * as PlatformError from "effect/PlatformError";16import * as PlatformError from "effect/PlatformError";
17import * as Semaphore from "effect/Semaphore";17import * as Semaphore from "effect/Semaphore";
18import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/unstable/http";18import { HttpClient, HttpClientRequest, HttpClientResponse } from "effect/http";
19import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";19import { ChildProcess, ChildProcessSpawner } from "effect/process";
20import { HostProcessArchitecture, HostProcessPlatform } from "./hostProcess.ts";20import { HostProcessArchitecture, HostProcessPlatform } from "./hostProcess.ts";
2121
22export const CLOUDFLARED_VERSION = "2026.5.2";22export const CLOUDFLARED_VERSION = "2026.5.2";
...@@ -316,7 +316,7 @@ export const makeCloudflaredRelayClient = Effect.fn("cloudflared.make")(function...@@ -316,7 +316,7 @@ export const makeCloudflaredRelayClient = Effect.fn("cloudflared.make")(function
316 }),316 }),
317 ),317 ),
318 );318 );
319 if (Encoding.encodeHex(checksum) !== asset.sha256) {319 if (Hex.encode(checksum) !== asset.sha256) {
320 return yield* new RelayClientInstallError({320 return yield* new RelayClientInstallError({
321 reason: "invalid_checksum",321 reason: "invalid_checksum",
322 message: "Downloaded relay client checksum did not match the pinned release.",322 message: "Downloaded relay client checksum did not match the pinned release.",
packages/shared/src/relayTracing.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Tracer from "effect/Tracer";5import * as Tracer from "effect/Tracer";
6import { FetchHttpClient } from "effect/unstable/http";6import { FetchHttpClient } from "effect/http";
7import { vi } from "vite-plus/test";7import { vi } from "vite-plus/test";
88
9import {9import {
packages/shared/src/relayTracing.ts+2-2
...@@ -5,8 +5,8 @@ import * as Exit from "effect/Exit";...@@ -5,8 +5,8 @@ import * as Exit from "effect/Exit";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Option from "effect/Option";6import * as Option from "effect/Option";
7import * as Tracer from "effect/Tracer";7import * as Tracer from "effect/Tracer";
8import type { HttpClient } from "effect/unstable/http";8import type { HttpClient } from "effect/http";
9import { OtlpSerialization, OtlpTracer } from "effect/unstable/observability";9import { OtlpSerialization, OtlpTracer } from "effect/observability";
1010
11export interface RelayClientTracingConfig {11export interface RelayClientTracingConfig {
12 readonly tracesUrl: string;12 readonly tracesUrl: string;
packages/shared/src/schemaJson.ts+4-7
...@@ -163,7 +163,7 @@ export const formatSchemaError = (cause: Cause.Cause<Schema.SchemaError>) => {...@@ -163,7 +163,7 @@ export const formatSchemaError = (cause: Cause.Cause<Schema.SchemaError>) => {
163 */163 */
164const decodeJsonString = Schema.decodeEffect(Schema.fromJsonString(Schema.Unknown));164const decodeJsonString = Schema.decodeEffect(Schema.fromJsonString(Schema.Unknown));
165165
166const parseLenientJsonGetter = SchemaGetter.onSome((input: string) => {166const parseLenientJsonGetter = SchemaGetter.transformEffect((input: string) => {
167 // Strip single-line comments - alternation preserves quoted strings.167 // Strip single-line comments - alternation preserves quoted strings.
168 let stripped = input.replace(168 let stripped = input.replace(
169 /("(?:[^"\\]|\\.)*")|\/\/[^\n]*/g,169 /("(?:[^"\\]|\\.)*")|\/\/[^\n]*/g,
...@@ -185,10 +185,7 @@ const parseLenientJsonGetter = SchemaGetter.onSome((input: string) => {...@@ -185,10 +185,7 @@ const parseLenientJsonGetter = SchemaGetter.onSome((input: string) => {
185 stringLiteral ? match : (bracket ?? ""),185 stringLiteral ? match : (bracket ?? ""),
186 );186 );
187187
188 return decodeJsonString(stripped).pipe(188 return decodeJsonString(stripped).pipe(Effect.mapError((error) => error.issue));
189 Effect.asSome,
190 Effect.mapError((error) => error.issue),
191 );
192});189});
193190
194/**191/**
...@@ -203,8 +200,8 @@ const fromLenientJsonString = new SchemaTransformation.Transformation(...@@ -203,8 +200,8 @@ const fromLenientJsonString = new SchemaTransformation.Transformation(
203 SchemaGetter.stringifyJson(),200 SchemaGetter.stringifyJson(),
204);201);
205202
206const prettyJsonString = SchemaGetter.parseJson<string>().compose(203const prettyJsonString = SchemaGetter.parseJson<string>().pipe(
207 SchemaGetter.stringifyJson({ space: 2 }),204 SchemaGetter.compose(SchemaGetter.stringifyJson({ space: 2 })),
208);205);
209206
210/**207/**
packages/ssh/src/command.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Result from "effect/Result";...@@ -8,7 +8,7 @@ import * as Result from "effect/Result";
8import * as Sink from "effect/Sink";8import * as Sink from "effect/Sink";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import * as TestClock from "effect/testing/TestClock";10import * as TestClock from "effect/testing/TestClock";
11import { ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcessSpawner } from "effect/process";
1212
13import {13import {
14 baseSshArgs,14 baseSshArgs,
packages/ssh/src/command.ts+1-1
...@@ -9,7 +9,7 @@ import * as Option from "effect/Option";...@@ -9,7 +9,7 @@ import * as Option from "effect/Option";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import * as Scope from "effect/Scope";10import * as Scope from "effect/Scope";
11import * as Stream from "effect/Stream";11import * as Stream from "effect/Stream";
12import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";12import { ChildProcess, ChildProcessSpawner } from "effect/process";
1313
14import { buildSshChildEnvironment, type SshAuthOptions } from "./auth.ts";14import { buildSshChildEnvironment, type SshAuthOptions } from "./auth.ts";
15import { SshCommandError, SshInvalidTargetError } from "./errors.ts";15import { SshCommandError, SshInvalidTargetError } from "./errors.ts";
packages/ssh/src/runnerProcess.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -8,7 +8,7 @@ import * as FileSystem from "effect/FileSystem";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcess, ChildProcessSpawner } from "effect/process";
12import * as NodeNet from "node:net";12import * as NodeNet from "node:net";
1313
14import { buildRemoteStopScript, buildRemoteT3RunnerScript } from "./tunnel.ts";14import { buildRemoteStopScript, buildRemoteT3RunnerScript } from "./tunnel.ts";
packages/ssh/src/tunnel.test.ts+2-2
...@@ -12,8 +12,8 @@ import * as Result from "effect/Result";...@@ -12,8 +12,8 @@ import * as Result from "effect/Result";
12import * as Sink from "effect/Sink";12import * as Sink from "effect/Sink";
13import * as Stream from "effect/Stream";13import * as Stream from "effect/Stream";
14import { TestClock } from "effect/testing";14import { TestClock } from "effect/testing";
15import { HttpClient, HttpClientResponse } from "effect/unstable/http";15import { HttpClient, HttpClientResponse } from "effect/http";
16import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";16import { ChildProcess, ChildProcessSpawner } from "effect/process";
1717
18import * as SshAuth from "./auth.ts";18import * as SshAuth from "./auth.ts";
19import { SshCommandError } from "./errors.ts";19import { SshCommandError } from "./errors.ts";
packages/ssh/src/tunnel.ts+8-6
...@@ -20,8 +20,8 @@ import * as Path from "effect/Path";...@@ -20,8 +20,8 @@ import * as Path from "effect/Path";
20import * as Schema from "effect/Schema";20import * as Schema from "effect/Schema";
21import * as Scope from "effect/Scope";21import * as Scope from "effect/Scope";
22import * as Stream from "effect/Stream";22import * as Stream from "effect/Stream";
23import { HttpClient } from "effect/unstable/http";23import { HttpClient } from "effect/http";
24import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";24import { ChildProcess, ChildProcessSpawner } from "effect/process";
2525
26import * as SshAuth from "./auth.ts";26import * as SshAuth from "./auth.ts";
27import {27import {
...@@ -93,7 +93,7 @@ interface SshTunnelEntry {...@@ -93,7 +93,7 @@ interface SshTunnelEntry {
93 readonly httpBaseUrl: string;93 readonly httpBaseUrl: string;
94 readonly wsBaseUrl: string;94 readonly wsBaseUrl: string;
95 readonly process: ChildProcessSpawner.ChildProcessHandle;95 readonly process: ChildProcessSpawner.ChildProcessHandle;
96 readonly scope: Scope.Scope;96 readonly scope: Scope.Closeable;
97}97}
9898
99type SshEnvironmentEffectContext =99type SshEnvironmentEffectContext =
...@@ -1104,6 +1104,7 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:...@@ -1104,6 +1104,7 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:
1104 readonly wsBaseUrl: string;1104 readonly wsBaseUrl: string;
1105 readonly authOptions: SshAuth.SshAuthOptions;1105 readonly authOptions: SshAuth.SshAuthOptions;
1106 readonly remoteServerKind: "external" | "managed" | null;1106 readonly remoteServerKind: "external" | "managed" | null;
1107 readonly scope: Scope.Closeable;
1107}): Effect.fn.Return<1108}): Effect.fn.Return<
1108 SshTunnelEntry,1109 SshTunnelEntry,
1109 SshCommandError | SshInvalidTargetError | SshReadinessError,1110 SshCommandError | SshInvalidTargetError | SshReadinessError,
...@@ -1112,7 +1113,6 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:...@@ -1112,7 +1113,6 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:
1112 | Path.Path1113 | Path.Path
1113 | HttpClient.HttpClient1114 | HttpClient.HttpClient
1114 | NetService.NetService1115 | NetService.NetService
1115 | Scope.Scope
1116> {1116> {
1117 const hostSpec = yield* buildSshHostSpecEffect(input.resolvedTarget);1117 const hostSpec = yield* buildSshHostSpecEffect(input.resolvedTarget);
1118 const childEnvironment = yield* SshAuth.buildSshChildEnvironment({1118 const childEnvironment = yield* SshAuth.buildSshChildEnvironment({
...@@ -1159,7 +1159,7 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:...@@ -1159,7 +1159,7 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:
1159 const sshCommand = yield* resolveSshCommand;1159 const sshCommand = yield* resolveSshCommand;
1160 const tunnelCommand = [sshCommand, ...args];1160 const tunnelCommand = [sshCommand, ...args];
1161 const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;1161 const spawner = yield* ChildProcessSpawner.ChildProcessSpawner;
1162 const scope = yield* Scope.Scope;1162 const { scope } = input;
1163 yield* Effect.logDebug("ssh.tunnel.spawn.start", {1163 yield* Effect.logDebug("ssh.tunnel.spawn.start", {
1164 ...sshTargetLogFields(input.resolvedTarget),1164 ...sshTargetLogFields(input.resolvedTarget),
1165 command: tunnelCommand,1165 command: tunnelCommand,
...@@ -1180,6 +1180,7 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:...@@ -1180,6 +1180,7 @@ const startSshTunnel = Effect.fn("ssh/tunnel.startSshTunnel")(function* (input:
1180 }),1180 }),
1181 )1181 )
1182 .pipe(1182 .pipe(
1183 Effect.provideService(Scope.Scope, scope),
1183 Effect.mapError(1184 Effect.mapError(
1184 (cause) =>1185 (cause) =>
1185 new SshCommandError({1186 new SshCommandError({
...@@ -1528,7 +1529,8 @@ const makeSshEnvironmentManager = Effect.fn("ssh/tunnel.SshEnvironmentManager.ma...@@ -1528,7 +1529,8 @@ const makeSshEnvironmentManager = Effect.fn("ssh/tunnel.SshEnvironmentManager.ma
1528 wsBaseUrl,1529 wsBaseUrl,
1529 authOptions,1530 authOptions,
1530 remoteServerKind: remoteLaunch.remoteServerKind,1531 remoteServerKind: remoteLaunch.remoteServerKind,
1531 }).pipe(Effect.provideService(Scope.Scope, entryScope)),1532 scope: entryScope,
1533 }),
1532 }).pipe(1534 }).pipe(
1533 Effect.onExit((exit) =>1535 Effect.onExit((exit) =>
1534 Exit.isSuccess(exit) ? Effect.void : Scope.close(entryScope, Exit.void).pipe(Effect.ignore),1536 Exit.isSuccess(exit) ? Effect.void : Scope.close(entryScope, Exit.void).pipe(Effect.ignore),
packages/tailscale/src/tailscale.test.ts+1-1
...@@ -7,7 +7,7 @@ import * as PlatformError from "effect/PlatformError";...@@ -7,7 +7,7 @@ import * as PlatformError from "effect/PlatformError";
7import * as Sink from "effect/Sink";7import * as Sink from "effect/Sink";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import * as TestClock from "effect/testing/TestClock";9import * as TestClock from "effect/testing/TestClock";
10import { ChildProcessSpawner } from "effect/unstable/process";10import { ChildProcessSpawner } from "effect/process";
11import { HostProcessPlatform } from "@t3tools/shared/hostProcess";11import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
1212
13import {13import {
packages/tailscale/src/tailscale.ts+2-2
...@@ -4,8 +4,8 @@ import * as Effect from "effect/Effect";...@@ -4,8 +4,8 @@ import * as Effect from "effect/Effect";
4import * as Option from "effect/Option";4import * as Option from "effect/Option";
5import * as Schema from "effect/Schema";5import * as Schema from "effect/Schema";
6import * as Stream from "effect/Stream";6import * as Stream from "effect/Stream";
7import { HttpClient, HttpClientRequest } from "effect/unstable/http";7import { HttpClient, HttpClientRequest } from "effect/http";
8import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";8import { ChildProcess, ChildProcessSpawner } from "effect/process";
99
10export const DEFAULT_TAILSCALE_SERVE_PORT = 443;10export const DEFAULT_TAILSCALE_SERVE_PORT = 443;
11export const TAILSCALE_STATUS_TIMEOUT = Duration.millis(1_500);11export const TAILSCALE_STATUS_TIMEOUT = Duration.millis(1_500);
patches/@effect__vitest@4.0.0-rc.115.patch deleted-106
...@@ -1,106 +0,0 @@
1diff --git a/dist/index.d.ts b/dist/index.d.ts
2index f0b2bcc..1b9bc38 100644
3--- a/dist/index.d.ts
4+++ b/dist/index.d.ts
5@@ -7,11 +7,11 @@ import type * as Layer from "effect/Layer";
6 import type * as Schema from "effect/Schema";
7 import type * as Scope from "effect/Scope";
8 import type * as Arbitrary from "effect/unstable/arbitrary/Arbitrary";
9-import * as V from "vitest";
10+import * as V from "vite-plus/test";
11 /**
12 * @since 4.0.0
13 */
14-export * from "vitest";
15+export * from "vite-plus/test";
16 /**
17 * @since 4.0.0
18 */
19diff --git a/dist/index.js b/dist/index.js
20index d941a25..90e4618 100644
21--- a/dist/index.js
22+++ b/dist/index.js
23@@ -1,9 +1,9 @@
24-import * as V from "vitest";
25+import * as V from "vite-plus/test";
26 import * as internal from "./internal/internal.js";
27 /**
28 * @since 4.0.0
29 */
30-export * from "vitest";
31+export * from "vite-plus/test";
32 /**
33 * @since 4.0.0
34 */
35diff --git a/dist/internal/internal.js b/dist/internal/internal.js
36index 25ab056..d5cce3a 100644
37--- a/dist/internal/internal.js
38+++ b/dist/internal/internal.js
39@@ -12,7 +12,7 @@ import * as Scope from "effect/Scope";
40 import * as TestClock from "effect/testing/TestClock";
41 import * as TestConsole from "effect/testing/TestConsole";
42 import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary";
43-import * as V from "vitest";
44+import * as V from "vite-plus/test";
45 const getCurrentSuite = V.TestRunner.getCurrentSuite;
46 const runPromise = /*#__PURE__*/Effect.fnUntraced(function* (effect, _ctx) {
47 const exit = yield* Effect.exit(effect);
48diff --git a/dist/utils.js b/dist/utils.js
49index 4871215..2c46e2b 100644
50--- a/dist/utils.js
51+++ b/dist/utils.js
52@@ -4,7 +4,7 @@ import * as Option from "effect/Option";
53 import * as Predicate from "effect/Predicate";
54 import * as Result from "effect/Result";
55 import * as assert from "node:assert";
56-import { assert as vassert } from "vitest";
57+import { assert as vassert } from "vite-plus/test";
58 // ----------------------------
59 // Primitives
60 // ----------------------------
61diff --git a/src/index.ts b/src/index.ts
62index 7726aac..7375f10 100644
63--- a/src/index.ts
64+++ b/src/index.ts
65@@ -7,13 +7,13 @@ import type * as Layer from "effect/Layer"
66 import type * as Schema from "effect/Schema"
67 import type * as Scope from "effect/Scope"
68 import type * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"
69-import * as V from "vitest"
70+import * as V from "vite-plus/test"
71 import * as internal from "./internal/internal.ts"
72
73 /**
74 * @since 4.0.0
75 */
76-export * from "vitest"
77+export * from "vite-plus/test"
78
79 /**
80 * @since 4.0.0
81diff --git a/src/internal/internal.ts b/src/internal/internal.ts
82index 3e001b1..5b7aa2a 100644
83--- a/src/internal/internal.ts
84+++ b/src/internal/internal.ts
85@@ -14,7 +14,7 @@ import * as Scope from "effect/Scope"
86 import * as TestClock from "effect/testing/TestClock"
87 import * as TestConsole from "effect/testing/TestConsole"
88 import * as Arbitrary from "effect/unstable/arbitrary/Arbitrary"
89-import * as V from "vitest"
90+import * as V from "vite-plus/test"
91 import type * as Vitest from "../index.ts"
92
93 const getCurrentSuite = V.TestRunner.getCurrentSuite
94diff --git a/src/utils.ts b/src/utils.ts
95index 4a4612c..846bcc9 100644
96--- a/src/utils.ts
97+++ b/src/utils.ts
98@@ -16,7 +16,7 @@ import * as Option from "effect/Option"
99 import * as Predicate from "effect/Predicate"
100 import * as Result from "effect/Result"
101 import * as assert from "node:assert"
102-import { assert as vassert } from "vitest"
103+import { assert as vassert } from "vite-plus/test"
104
105 // ----------------------------
106 // Primitives
patches/@effect__vitest@4.0.1.patch created+120
...@@ -0,0 +1,120 @@
1diff --git a/dist/index.d.ts b/dist/index.d.ts
2index 530795c..237d090 100644
3--- a/dist/index.d.ts
4+++ b/dist/index.d.ts
5@@ -7,14 +7,14 @@ import type * as Effect from "effect/Effect";
6 import type * as Layer from "effect/Layer";
7 import type * as Schema from "effect/Schema";
8 import type * as Scope from "effect/Scope";
9-import type * as V from "vitest";
10+import type * as V from "vite-plus/test";
11 /**
12 * Re-exports the `vitest` API unchanged.
13 *
14 * @stability unstable
15 * @since 4.0.0
16 */
17-export * from "vitest";
18+export * from "vite-plus/test";
19 /**
20 * @stability unstable
21 * @since 4.0.0
22diff --git a/dist/index.js b/dist/index.js
23index 740429f..b5c69b8 100644
24--- a/dist/index.js
25+++ b/dist/index.js
26@@ -5,7 +5,7 @@ import * as internal from "./internal/internal.js";
27 * @stability unstable
28 * @since 4.0.0
29 */
30-export * from "vitest";
31+export * from "vite-plus/test";
32 /**
33 * @since 4.0.0
34 */
35diff --git a/dist/internal/internal.js b/dist/internal/internal.js
36index 7138319..4092c67 100644
37--- a/dist/internal/internal.js
38+++ b/dist/internal/internal.js
39@@ -12,7 +12,7 @@ import * as Schedule from "effect/Schedule";
40 import * as Scope from "effect/Scope";
41 import * as TestClock from "effect/testing/TestClock";
42 import * as TestConsole from "effect/testing/TestConsole";
43-import * as V from "vitest";
44+import * as V from "vite-plus/test";
45 const getCurrentSuite = V.TestRunner.getCurrentSuite;
46 const runPromise = /*#__PURE__*/Effect.fnUntraced(function* (effect, _ctx) {
47 const exit = yield* Effect.exit(effect);
48diff --git a/dist/utils.js b/dist/utils.js
49index 75a243d..08a4c89 100644
50--- a/dist/utils.js
51+++ b/dist/utils.js
52@@ -4,7 +4,7 @@ import * as Option from "effect/Option";
53 import * as Predicate from "effect/Predicate";
54 import * as Result from "effect/Result";
55 import * as assert from "node:assert";
56-import { assert as vassert } from "vitest";
57+import { assert as vassert } from "vite-plus/test";
58 // ----------------------------
59 // Primitives
60 // ----------------------------
61diff --git a/package.json b/package.json
62index d64c43d..939548e 100644
63--- a/package.json
64+++ b/package.json
65@@ -37,7 +37,6 @@
66 "provenance": true
67 },
68 "peerDependencies": {
69- "vitest": ">=5.0.0 <6.0.0",
70 "effect": "^4.0.1"
71 },
72 "devDependencies": {
73diff --git a/src/index.ts b/src/index.ts
74index 20c0497..2b16d32 100644
75--- a/src/index.ts
76+++ b/src/index.ts
77@@ -7,7 +7,7 @@ import type * as Effect from "effect/Effect"
78 import type * as Layer from "effect/Layer"
79 import type * as Schema from "effect/Schema"
80 import type * as Scope from "effect/Scope"
81-import type * as V from "vitest"
82+import type * as V from "vite-plus/test"
83 import * as internal from "./internal/internal.ts"
84
85 /**
86@@ -16,7 +16,7 @@ import * as internal from "./internal/internal.ts"
87 * @stability unstable
88 * @since 4.0.0
89 */
90-export * from "vitest"
91+export * from "vite-plus/test"
92
93 /**
94 * @stability unstable
95diff --git a/src/internal/internal.ts b/src/internal/internal.ts
96index b43385b..4da79fd 100644
97--- a/src/internal/internal.ts
98+++ b/src/internal/internal.ts
99@@ -14,7 +14,7 @@ import type * as Schema from "effect/Schema"
100 import * as Scope from "effect/Scope"
101 import * as TestClock from "effect/testing/TestClock"
102 import * as TestConsole from "effect/testing/TestConsole"
103-import * as V from "vitest"
104+import * as V from "vite-plus/test"
105 import type * as Vitest from "../index.ts"
106
107 const getCurrentSuite = V.TestRunner.getCurrentSuite
108diff --git a/src/utils.ts b/src/utils.ts
109index 8ce3409..259be29 100644
110--- a/src/utils.ts
111+++ b/src/utils.ts
112@@ -16,7 +16,7 @@ import * as Option from "effect/Option"
113 import * as Predicate from "effect/Predicate"
114 import * as Result from "effect/Result"
115 import * as assert from "node:assert"
116-import { assert as vassert } from "vitest"
117+import { assert as vassert } from "vite-plus/test"
118
119 // ----------------------------
120 // Primitives
patches/@opencode__client@2.0.23.patch created+439
...@@ -0,0 +1,439 @@
1diff --git a/dist/chunks/service-version-21favj1f.js b/dist/chunks/service-version-21favj1f.js
2index 3e26e34..56068ac 100644
3--- a/dist/chunks/service-version-21favj1f.js
4+++ b/dist/chunks/service-version-21favj1f.js
5@@ -22,7 +22,7 @@ __export(exports_client, {
6 make: () => make2
7 });
8 import { Cause, Context, Effect, Stream } from "effect";
9-import { HttpClient, HttpClientRequest } from "effect/unstable/http";
10+import { HttpClient, HttpClientRequest } from "effect/http";
11 var CurrentHeaders = Context.Reference("@opencode/client/effect/rpc/headers", {
12 defaultValue: () => {
13 return;
14diff --git a/dist/chunks/service-version-7yt87z36.js b/dist/chunks/service-version-7yt87z36.js
15index 3559e55..aa2ace8 100644
16--- a/dist/chunks/service-version-7yt87z36.js
17+++ b/dist/chunks/service-version-7yt87z36.js
18@@ -14,9 +14,9 @@ __export(exports_client2, {
19 make: () => make3
20 });
21 import { Effect, Stream, Schema } from "effect";
22-import { Sse } from "effect/unstable/encoding";
23-import { HttpClientError } from "effect/unstable/http";
24-import { HttpApiClient } from "effect/unstable/httpapi";
25+import { Sse } from "effect/encoding";
26+import { HttpClientError } from "effect/http";
27+import { HttpApiClient } from "effect/http-api";
28 var mapClientError = (error) => HttpClientError.isHttpClientError(error) || Schema.isSchemaError(error) || Sse.Retry.is(error) ? new ClientError2({ cause: error }) : error;
29 var preserveEffect = () => (effect) => effect;
30 var preserveStream = () => (stream) => stream;
31diff --git a/dist/effect/client.d.ts b/dist/effect/client.d.ts
32index b6ccbb5..98ab36b 100644
33--- a/dist/effect/client.d.ts
34+++ b/dist/effect/client.d.ts
35@@ -1,6 +1,6 @@
36 export * as OpenCode from "./client.js";
37 import { Effect, Stream } from "effect";
38-import { HttpClient } from "effect/unstable/http";
39+import { HttpClient } from "effect/http";
40 import { ClientError } from "./generated/index.js";
41 import { RpcClientRuntime } from "./rpc.js";
42 import type { RpcCallOptions } from "../promise/rpc.js";
43@@ -2290,239 +2290,239 @@ export declare const make: (options?: {
44 readonly metadata?: {
45 readonly [x: string]: unknown;
46 } | undefined;
47- }, 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>;
48+ }, 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>;
49 };
50- rpc: RpcClientRuntime.RpcApi<import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | import("@opencode/schema/rpc").SystemError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, RpcCallOptions, 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> & {
51- call: (input: import("./api.js").RpcCallInput) => Effect.Effect<import("./api.js").RpcCallOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").RpcError | import("@opencode/protocol/errors").RpcInternalError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
52+ rpc: RpcClientRuntime.RpcApi<import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | import("@opencode/schema/rpc").SystemError | ClientError | import("effect/http/HttpClientError").HttpClientError, RpcCallOptions, 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> & {
53+ call: (input: import("./api.js").RpcCallInput) => Effect.Effect<import("./api.js").RpcCallOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").RpcError | import("@opencode/protocol/errors").RpcInternalError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
54 };
55 server: {
56- info: () => Effect.Effect<import("./api.js").ServerInfoOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
57- pair: () => Effect.Effect<import("./api.js").ServerPairOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
58- connect: (input: import("./api.js").ServerConnectInput) => Effect.Effect<import("./api.js").ServerConnectOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
59+ info: () => Effect.Effect<import("./api.js").ServerInfoOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
60+ pair: () => Effect.Effect<import("./api.js").ServerPairOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
61+ connect: (input: import("./api.js").ServerConnectInput) => Effect.Effect<import("./api.js").ServerConnectOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
62 };
63 location: {
64- get: (input?: import("./api.js").LocationGetInput) => Effect.Effect<import("@opencode/schema/location").PublicInfo, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
65- reload: () => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
66+ get: (input?: import("./api.js").LocationGetInput) => Effect.Effect<import("@opencode/schema/location").PublicInfo, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
67+ reload: () => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
68 };
69 agent: {
70- list: (input?: import("./api.js").AgentListInput) => Effect.Effect<import("./api.js").AgentListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
71- get: (input: import("./api.js").AgentGetInput) => Effect.Effect<import("./api.js").AgentGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").AgentNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
72+ list: (input?: import("./api.js").AgentListInput) => Effect.Effect<import("./api.js").AgentListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
73+ get: (input: import("./api.js").AgentGetInput) => Effect.Effect<import("./api.js").AgentGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").AgentNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
74 };
75 plugin: {
76- list: (input?: import("./api.js").PluginListInput) => Effect.Effect<import("./api.js").PluginListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
77- check: (input?: import("./api.js").PluginCheckInput) => Effect.Effect<import("./api.js").PluginCheckOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
78- update: (input: import("./api.js").PluginUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
79+ list: (input?: import("./api.js").PluginListInput) => Effect.Effect<import("./api.js").PluginListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
80+ check: (input?: import("./api.js").PluginCheckInput) => Effect.Effect<import("./api.js").PluginCheckOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
81+ update: (input: import("./api.js").PluginUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
82 };
83 session: {
84- list: (input?: import("./api.js").SessionListInput) => Effect.Effect<import("./api.js").SessionListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").InvalidCursorError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
85- stats: (input?: import("./api.js").SessionStatsInput) => Effect.Effect<import("./api.js").SessionStatsOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
86- create: (input?: import("./api.js").SessionCreateInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
87- import: (input: import("./api.js").SessionImportInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
88- export: (input: import("./api.js").SessionExportInput) => Effect.Effect<import("./api.js").SessionExportOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
89- active: () => Effect.Effect<import("./api.js").SessionActiveOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
90- get: (input: import("./api.js").SessionGetInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
91- remove: (input: import("./api.js").SessionRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
92- fork: (input: import("./api.js").SessionForkInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
93- switchAgent: (input: import("./api.js").SessionSwitchAgentInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
94- switchModel: (input: import("./api.js").SessionSwitchModelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
95- update: (input: import("./api.js").SessionUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
96- move: (input: import("./api.js").SessionMoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
97- prompt: (input: import("./api.js").SessionPromptInput) => Effect.Effect<import("@opencode/schema/session-inbox").User, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
98- command: (input: import("./api.js").SessionCommandInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").CommandNotFoundError | import("@opencode/protocol/errors").CommandExecutionError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
99- skill: (input: import("./api.js").SessionSkillInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").SkillNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
100- synthetic: (input: import("./api.js").SessionSyntheticInput) => Effect.Effect<import("@opencode/schema/session-inbox").Synthetic, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
101- shell: (input: import("./api.js").SessionShellInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
102- compact: (input: import("./api.js").SessionCompactInput) => Effect.Effect<import("@opencode/schema/session-inbox").Compaction, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
103- wait: (input: import("./api.js").SessionWaitInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
104+ list: (input?: import("./api.js").SessionListInput) => Effect.Effect<import("./api.js").SessionListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").InvalidCursorError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
105+ stats: (input?: import("./api.js").SessionStatsInput) => Effect.Effect<import("./api.js").SessionStatsOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
106+ create: (input?: import("./api.js").SessionCreateInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
107+ import: (input: import("./api.js").SessionImportInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
108+ export: (input: import("./api.js").SessionExportInput) => Effect.Effect<import("./api.js").SessionExportOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
109+ active: () => Effect.Effect<import("./api.js").SessionActiveOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
110+ get: (input: import("./api.js").SessionGetInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
111+ remove: (input: import("./api.js").SessionRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
112+ fork: (input: import("./api.js").SessionForkInput) => Effect.Effect<import("@opencode/schema/session").Info, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
113+ switchAgent: (input: import("./api.js").SessionSwitchAgentInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
114+ switchModel: (input: import("./api.js").SessionSwitchModelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
115+ update: (input: import("./api.js").SessionUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
116+ move: (input: import("./api.js").SessionMoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
117+ prompt: (input: import("./api.js").SessionPromptInput) => Effect.Effect<import("@opencode/schema/session-inbox").User, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
118+ command: (input: import("./api.js").SessionCommandInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").CommandNotFoundError | import("@opencode/protocol/errors").CommandExecutionError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
119+ skill: (input: import("./api.js").SessionSkillInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").SkillNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
120+ synthetic: (input: import("./api.js").SessionSyntheticInput) => Effect.Effect<import("@opencode/schema/session-inbox").Synthetic, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
121+ shell: (input: import("./api.js").SessionShellInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
122+ compact: (input: import("./api.js").SessionCompactInput) => Effect.Effect<import("@opencode/schema/session-inbox").Compaction, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
123+ wait: (input: import("./api.js").SessionWaitInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
124 revert: {
125- stage: (input: import("./api.js").SessionRevertStageInput) => Effect.Effect<import("@opencode/schema/session-revert").Revert, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionBusyError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
126- clear: (input: import("./api.js").SessionRevertClearInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionBusyError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
127- commit: (input: import("./api.js").SessionRevertCommitInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionBusyError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
128+ stage: (input: import("./api.js").SessionRevertStageInput) => Effect.Effect<import("@opencode/schema/session-revert").Revert, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionBusyError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
129+ clear: (input: import("./api.js").SessionRevertClearInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionBusyError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
130+ commit: (input: import("./api.js").SessionRevertCommitInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionBusyError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
131 };
132- context: (input: import("./api.js").SessionContextInput) => Effect.Effect<import("./api.js").SessionContextOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
133- diff: (input: import("./api.js").SessionDiffInput) => Effect.Effect<import("./api.js").SessionDiffOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
134+ context: (input: import("./api.js").SessionContextInput) => Effect.Effect<import("./api.js").SessionContextOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
135+ diff: (input: import("./api.js").SessionDiffInput) => Effect.Effect<import("./api.js").SessionDiffOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
136 inbox: {
137- list: (input: import("./api.js").SessionInboxListInput) => Effect.Effect<import("./api.js").SessionInboxListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
138- cancel: (input: import("./api.js").SessionInboxCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
139- update: (input: import("./api.js").SessionInboxUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
140+ list: (input: import("./api.js").SessionInboxListInput) => Effect.Effect<import("./api.js").SessionInboxListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
141+ cancel: (input: import("./api.js").SessionInboxCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
142+ update: (input: import("./api.js").SessionInboxUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
143 };
144 instructions: {
145 entry: {
146- list: (input: import("./api.js").SessionInstructionsEntryListInput) => Effect.Effect<import("./api.js").SessionInstructionsEntryListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
147- put: (input: import("./api.js").SessionInstructionsEntryPutInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/schema/instruction-entry").ValueTooLargeError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
148- remove: (input: import("./api.js").SessionInstructionsEntryRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
149+ list: (input: import("./api.js").SessionInstructionsEntryListInput) => Effect.Effect<import("./api.js").SessionInstructionsEntryListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
150+ put: (input: import("./api.js").SessionInstructionsEntryPutInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/schema/instruction-entry").ValueTooLargeError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
151+ remove: (input: import("./api.js").SessionInstructionsEntryRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
152 };
153 };
154- generate: (input: import("./api.js").SessionGenerateInput) => Effect.Effect<import("./api.js").SessionGenerateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
155- log: (input: import("./api.js").SessionLogInput) => Stream.Stream<import("./api.js").SessionLogOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError | import("effect/unstable/encoding/Sse").Retry | import("effect/unstable/encoding/Sse").SseError, never>;
156- interrupt: (input: import("./api.js").SessionInterruptInput) => Effect.Effect<import("./api.js").SessionInterruptOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
157- background: (input: import("./api.js").SessionBackgroundInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
158+ generate: (input: import("./api.js").SessionGenerateInput) => Effect.Effect<import("./api.js").SessionGenerateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
159+ log: (input: import("./api.js").SessionLogInput) => Stream.Stream<import("./api.js").SessionLogOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError | import("effect/encoding/Sse").Retry | import("effect/encoding/Sse").SseError, never>;
160+ interrupt: (input: import("./api.js").SessionInterruptInput) => Effect.Effect<import("./api.js").SessionInterruptOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
161+ background: (input: import("./api.js").SessionBackgroundInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
162 message: {
163- get: (input: import("./api.js").SessionMessageGetInput) => Effect.Effect<import("@opencode/schema/session-message").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
164+ get: (input: import("./api.js").SessionMessageGetInput) => Effect.Effect<import("@opencode/schema/session-message").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").MessageNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
165 };
166 form: {
167- list: (input: import("./api.js").SessionFormListInput) => Effect.Effect<import("./api.js").SessionFormListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
168- create: (input: import("./api.js").SessionFormCreateInput) => Effect.Effect<import("@opencode/schema/form").Info, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
169- get: (input: import("./api.js").SessionFormGetInput) => Effect.Effect<import("@opencode/schema/form").Detail, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").FormNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
170- reply: (input: import("./api.js").SessionFormReplyInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").FormNotFoundError | import("@opencode/protocol/errors").FormAlreadySettledError | import("@opencode/protocol/errors").FormInvalidAnswerError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
171- cancel: (input: import("./api.js").SessionFormCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").FormNotFoundError | import("@opencode/protocol/errors").FormAlreadySettledError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
172+ list: (input: import("./api.js").SessionFormListInput) => Effect.Effect<import("./api.js").SessionFormListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
173+ create: (input: import("./api.js").SessionFormCreateInput) => Effect.Effect<import("@opencode/schema/form").Info, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
174+ get: (input: import("./api.js").SessionFormGetInput) => Effect.Effect<import("@opencode/schema/form").Detail, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").FormNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
175+ reply: (input: import("./api.js").SessionFormReplyInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").FormNotFoundError | import("@opencode/protocol/errors").FormAlreadySettledError | import("@opencode/protocol/errors").FormInvalidAnswerError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
176+ cancel: (input: import("./api.js").SessionFormCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").FormNotFoundError | import("@opencode/protocol/errors").FormAlreadySettledError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
177 };
178- environment: (input: import("./api.js").SessionEnvironmentInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
179- view: (input: import("./api.js").SessionViewInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
180+ environment: (input: import("./api.js").SessionEnvironmentInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
181+ view: (input: import("./api.js").SessionViewInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
182 };
183 message: {
184- list: (input: import("./api.js").MessageListInput) => Effect.Effect<import("./api.js").MessageListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").InvalidCursorError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
185+ list: (input: import("./api.js").MessageListInput) => Effect.Effect<import("./api.js").MessageListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").UnknownError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").InvalidCursorError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
186 };
187 model: {
188- list: (input?: import("./api.js").ModelListInput) => Effect.Effect<import("./api.js").ModelListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
189- default: (input?: import("./api.js").ModelDefaultInput) => Effect.Effect<import("./api.js").ModelDefaultOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
190+ list: (input?: import("./api.js").ModelListInput) => Effect.Effect<import("./api.js").ModelListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
191+ default: (input?: import("./api.js").ModelDefaultInput) => Effect.Effect<import("./api.js").ModelDefaultOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
192 };
193 generate: {
194- text: (input: import("./api.js").GenerateTextInput) => Effect.Effect<import("./api.js").GenerateTextOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
195+ text: (input: import("./api.js").GenerateTextInput) => Effect.Effect<import("./api.js").GenerateTextOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
196 };
197 provider: {
198- list: (input?: import("./api.js").ProviderListInput) => Effect.Effect<import("./api.js").ProviderListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
199- get: (input: import("./api.js").ProviderGetInput) => Effect.Effect<import("./api.js").ProviderGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").ProviderNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
200+ list: (input?: import("./api.js").ProviderListInput) => Effect.Effect<import("./api.js").ProviderListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
201+ get: (input: import("./api.js").ProviderGetInput) => Effect.Effect<import("./api.js").ProviderGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").ProviderNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
202 };
203 integration: {
204- list: (input?: import("./api.js").IntegrationListInput) => Effect.Effect<import("./api.js").IntegrationListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
205- get: (input: import("./api.js").IntegrationGetInput) => Effect.Effect<import("./api.js").IntegrationGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
206+ list: (input?: import("./api.js").IntegrationListInput) => Effect.Effect<import("./api.js").IntegrationListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
207+ get: (input: import("./api.js").IntegrationGetInput) => Effect.Effect<import("./api.js").IntegrationGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
208 wellknown: {
209- add: (input: import("./api.js").IntegrationWellknownAddInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
210+ add: (input: import("./api.js").IntegrationWellknownAddInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
211 };
212 connect: {
213- key: (input: import("./api.js").IntegrationConnectKeyInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
214+ key: (input: import("./api.js").IntegrationConnectKeyInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
215 };
216 oauth: {
217- connect: (input: import("./api.js").IntegrationOauthConnectInput) => Effect.Effect<import("./api.js").IntegrationOauthConnectOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
218- status: (input: import("./api.js").IntegrationOauthStatusInput) => Effect.Effect<import("./api.js").IntegrationOauthStatusOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationAttemptNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
219- complete: (input: import("./api.js").IntegrationOauthCompleteInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationAttemptNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
220- cancel: (input: import("./api.js").IntegrationOauthCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
221+ connect: (input: import("./api.js").IntegrationOauthConnectInput) => Effect.Effect<import("./api.js").IntegrationOauthConnectOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
222+ status: (input: import("./api.js").IntegrationOauthStatusInput) => Effect.Effect<import("./api.js").IntegrationOauthStatusOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationAttemptNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
223+ complete: (input: import("./api.js").IntegrationOauthCompleteInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationAttemptNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
224+ cancel: (input: import("./api.js").IntegrationOauthCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
225 };
226 command: {
227- connect: (input: import("./api.js").IntegrationCommandConnectInput) => Effect.Effect<import("./api.js").IntegrationCommandConnectOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationMethodNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
228- status: (input: import("./api.js").IntegrationCommandStatusInput) => Effect.Effect<import("./api.js").IntegrationCommandStatusOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationAttemptNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
229- cancel: (input: import("./api.js").IntegrationCommandCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
230+ connect: (input: import("./api.js").IntegrationCommandConnectInput) => Effect.Effect<import("./api.js").IntegrationCommandConnectOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationMethodNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
231+ status: (input: import("./api.js").IntegrationCommandStatusInput) => Effect.Effect<import("./api.js").IntegrationCommandStatusOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").IntegrationNotFoundError | import("@opencode/protocol/errors").IntegrationAttemptNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
232+ cancel: (input: import("./api.js").IntegrationCommandCancelInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
233 };
234 };
235 mcp: {
236- list: (input?: import("./api.js").McpListInput) => Effect.Effect<import("./api.js").McpListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
237- add: (input: import("./api.js").McpAddInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
238- remove: (input: import("./api.js").McpRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").McpServerNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
239- connect: (input: import("./api.js").McpConnectInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").McpServerNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
240- disconnect: (input: import("./api.js").McpDisconnectInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").McpServerNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
241+ list: (input?: import("./api.js").McpListInput) => Effect.Effect<import("./api.js").McpListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
242+ add: (input: import("./api.js").McpAddInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
243+ remove: (input: import("./api.js").McpRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").McpServerNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
244+ connect: (input: import("./api.js").McpConnectInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").McpServerNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
245+ disconnect: (input: import("./api.js").McpDisconnectInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").McpServerNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
246 resource: {
247- catalog: (input?: import("./api.js").McpResourceCatalogInput) => Effect.Effect<import("./api.js").McpResourceCatalogOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
248+ catalog: (input?: import("./api.js").McpResourceCatalogInput) => Effect.Effect<import("./api.js").McpResourceCatalogOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
249 };
250 };
251 credential: {
252- list: () => Effect.Effect<import("./api.js").CredentialListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
253- create: (input: import("./api.js").CredentialCreateInput) => Effect.Effect<import("@opencode/schema/credential").Entry, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
254- update: (input: import("./api.js").CredentialUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
255- activate: (input: import("./api.js").CredentialActivateInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
256- remove: (input: import("./api.js").CredentialRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
257+ list: () => Effect.Effect<import("./api.js").CredentialListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
258+ create: (input: import("./api.js").CredentialCreateInput) => Effect.Effect<import("@opencode/schema/credential").Entry, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
259+ update: (input: import("./api.js").CredentialUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
260+ activate: (input: import("./api.js").CredentialActivateInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
261+ remove: (input: import("./api.js").CredentialRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
262 };
263 project: {
264- list: () => Effect.Effect<import("./api.js").ProjectListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
265- update: (input: import("./api.js").ProjectUpdateInput) => Effect.Effect<import("@opencode/schema/project").Info, import("@opencode/protocol/errors").LocationNotFoundError | 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>;
266+ list: () => Effect.Effect<import("./api.js").ProjectListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
267+ update: (input: import("./api.js").ProjectUpdateInput) => Effect.Effect<import("@opencode/schema/project").Info, import("@opencode/protocol/errors").LocationNotFoundError | 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>;
268 };
269 form: {
270- list: (input?: import("./api.js").FormListInput) => Effect.Effect<import("./api.js").FormListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
271+ list: (input?: import("./api.js").FormListInput) => Effect.Effect<import("./api.js").FormListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
272 };
273 permission: {
274 request: {
275- list: (input?: import("./api.js").PermissionRequestListInput) => Effect.Effect<import("./api.js").PermissionRequestListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
276+ list: (input?: import("./api.js").PermissionRequestListInput) => Effect.Effect<import("./api.js").PermissionRequestListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
277 };
278 saved: {
279- list: (input?: import("./api.js").PermissionSavedListInput) => Effect.Effect<import("./api.js").PermissionSavedListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
280- remove: (input: import("./api.js").PermissionSavedRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
281+ list: (input?: import("./api.js").PermissionSavedListInput) => Effect.Effect<import("./api.js").PermissionSavedListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
282+ remove: (input: import("./api.js").PermissionSavedRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
283 };
284- create: (input: import("./api.js").PermissionCreateInput) => Effect.Effect<import("./api.js").PermissionCreateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
285- list: (input: import("./api.js").PermissionListInput) => Effect.Effect<import("./api.js").PermissionListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
286- get: (input: import("./api.js").PermissionGetInput) => Effect.Effect<import("@opencode/schema/permission").Request, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").PermissionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
287- reply: (input: import("./api.js").PermissionReplyInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").PermissionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
288+ create: (input: import("./api.js").PermissionCreateInput) => Effect.Effect<import("./api.js").PermissionCreateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
289+ list: (input: import("./api.js").PermissionListInput) => Effect.Effect<import("./api.js").PermissionListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
290+ get: (input: import("./api.js").PermissionGetInput) => Effect.Effect<import("@opencode/schema/permission").Request, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").PermissionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
291+ reply: (input: import("./api.js").PermissionReplyInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").SessionNotFoundError | import("@opencode/protocol/errors").PermissionNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
292 };
293 file: {
294- list: (input?: import("./api.js").FileListInput) => Effect.Effect<import("./api.js").FileListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
295- find: (input: import("./api.js").FileFindInput) => Effect.Effect<import("./api.js").FileFindOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
296+ list: (input?: import("./api.js").FileListInput) => Effect.Effect<import("./api.js").FileListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
297+ find: (input: import("./api.js").FileFindInput) => Effect.Effect<import("./api.js").FileFindOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
298 };
299 command: {
300- list: (input?: import("./api.js").CommandListInput) => Effect.Effect<import("./api.js").CommandListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
301+ list: (input?: import("./api.js").CommandListInput) => Effect.Effect<import("./api.js").CommandListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
302 };
303 skill: {
304- list: (input?: import("./api.js").SkillListInput) => Effect.Effect<import("./api.js").SkillListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
305+ list: (input?: import("./api.js").SkillListInput) => Effect.Effect<import("./api.js").SkillListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
306 };
307 pty: {
308- list: (input?: import("./api.js").PtyListInput) => Effect.Effect<import("./api.js").PtyListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
309- create: (input?: import("./api.js").PtyCreateInput) => Effect.Effect<import("./api.js").PtyCreateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
310- get: (input: import("./api.js").PtyGetInput) => Effect.Effect<import("./api.js").PtyGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
311- update: (input: import("./api.js").PtyUpdateInput) => Effect.Effect<import("./api.js").PtyUpdateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
312- remove: (input: import("./api.js").PtyRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
313+ list: (input?: import("./api.js").PtyListInput) => Effect.Effect<import("./api.js").PtyListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
314+ create: (input?: import("./api.js").PtyCreateInput) => Effect.Effect<import("./api.js").PtyCreateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
315+ get: (input: import("./api.js").PtyGetInput) => Effect.Effect<import("./api.js").PtyGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
316+ update: (input: import("./api.js").PtyUpdateInput) => Effect.Effect<import("./api.js").PtyUpdateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
317+ remove: (input: import("./api.js").PtyRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
318 connect: {
319- token: (input: import("./api.js").PtyConnectTokenInput) => Effect.Effect<import("./api.js").PtyConnectTokenOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ForbiddenError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
320+ token: (input: import("./api.js").PtyConnectTokenInput) => Effect.Effect<import("./api.js").PtyConnectTokenOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ForbiddenError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
321 };
322 };
323 experimental: {
324 persistentPty: {
325- read: (input: import("./api.js").ExperimentalPersistentPtyReadInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyReadOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
326- list: (input: import("./api.js").ExperimentalPersistentPtyListInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
327- create: (input: import("./api.js").ExperimentalPersistentPtyCreateInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyCreateOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
328- shutdown: () => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
329- handoff: () => Effect.Effect<import("./api.js").ExperimentalPersistentPtyHandoffOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
330- get: (input: import("./api.js").ExperimentalPersistentPtyGetInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyGetOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
331- update: (input: import("./api.js").ExperimentalPersistentPtyUpdateInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyUpdateOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
332- snapshot: (input: import("./api.js").ExperimentalPersistentPtySnapshotInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtySnapshotOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
333- remove: (input: import("./api.js").ExperimentalPersistentPtyRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
334- connectToken: (input: import("./api.js").ExperimentalPersistentPtyConnectTokenInput) => Effect.Effect<import("@opencode/schema/pty-ticket").ConnectToken, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").ForbiddenError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
335+ read: (input: import("./api.js").ExperimentalPersistentPtyReadInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyReadOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
336+ list: (input: import("./api.js").ExperimentalPersistentPtyListInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
337+ create: (input: import("./api.js").ExperimentalPersistentPtyCreateInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyCreateOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
338+ shutdown: () => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
339+ handoff: () => Effect.Effect<import("./api.js").ExperimentalPersistentPtyHandoffOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
340+ get: (input: import("./api.js").ExperimentalPersistentPtyGetInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyGetOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
341+ update: (input: import("./api.js").ExperimentalPersistentPtyUpdateInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtyUpdateOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
342+ snapshot: (input: import("./api.js").ExperimentalPersistentPtySnapshotInput) => Effect.Effect<import("./api.js").ExperimentalPersistentPtySnapshotOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
343+ remove: (input: import("./api.js").ExperimentalPersistentPtyRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
344+ connectToken: (input: import("./api.js").ExperimentalPersistentPtyConnectTokenInput) => Effect.Effect<import("@opencode/schema/pty-ticket").ConnectToken, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("@opencode/protocol/errors").ForbiddenError | import("@opencode/protocol/errors").PtyNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
345 };
346 };
347 shell: {
348- list: (input?: import("./api.js").ShellListInput) => Effect.Effect<import("./api.js").ShellListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
349- create: (input: import("./api.js").ShellCreateInput) => Effect.Effect<import("./api.js").ShellCreateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
350- get: (input: import("./api.js").ShellGetInput) => Effect.Effect<import("./api.js").ShellGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ShellNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
351- output: (input: import("./api.js").ShellOutputInput) => Effect.Effect<import("./api.js").ShellOutputOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ShellNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
352- remove: (input: import("./api.js").ShellRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
353+ list: (input?: import("./api.js").ShellListInput) => Effect.Effect<import("./api.js").ShellListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
354+ create: (input: import("./api.js").ShellCreateInput) => Effect.Effect<import("./api.js").ShellCreateOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
355+ get: (input: import("./api.js").ShellGetInput) => Effect.Effect<import("./api.js").ShellGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ShellNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
356+ output: (input: import("./api.js").ShellOutputInput) => Effect.Effect<import("./api.js").ShellOutputOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ShellNotFoundError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
357+ remove: (input: import("./api.js").ShellRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
358 };
359 reference: {
360- list: (input?: import("./api.js").ReferenceListInput) => Effect.Effect<import("./api.js").ReferenceListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
361+ list: (input?: import("./api.js").ReferenceListInput) => Effect.Effect<import("./api.js").ReferenceListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
362 };
363 worktree: {
364 list: (input: import("./api.js").WorktreeListInput) => Effect.Effect<readonly {
365 readonly directory: string & import("effect/Brand").Brand<"AbsolutePath">;
366 readonly strategy?: string | undefined;
367- }[], 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>;
368- create: (input: import("./api.js").WorktreeCreateInput) => Effect.Effect<import("@opencode/schema/worktree").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/worktree").WorktreeError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
369- remove: (input: import("./api.js").WorktreeRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/worktree").WorktreeError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
370- refresh: (input: import("./api.js").WorktreeRefreshInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/worktree").WorktreeError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
371+ }[], 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>;
372+ create: (input: import("./api.js").WorktreeCreateInput) => Effect.Effect<import("@opencode/schema/worktree").Info, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/worktree").WorktreeError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
373+ remove: (input: import("./api.js").WorktreeRemoveInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/worktree").WorktreeError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
374+ refresh: (input: import("./api.js").WorktreeRefreshInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ProjectNotFoundError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/worktree").WorktreeError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
375 };
376 vcs: {
377- init: (input?: import("./api.js").VcsInitInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/vcs").VcsInitNotSupportedError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
378- get: (input?: import("./api.js").VcsGetInput) => Effect.Effect<import("./api.js").VcsGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
379- base: (input?: import("./api.js").VcsBaseInput) => Effect.Effect<import("./api.js").VcsBaseOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
380- status: (input?: import("./api.js").VcsStatusInput) => Effect.Effect<import("./api.js").VcsStatusOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
381+ init: (input?: import("./api.js").VcsInitInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ConflictError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | import("@opencode/protocol/groups/vcs").VcsInitNotSupportedError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
382+ get: (input?: import("./api.js").VcsGetInput) => Effect.Effect<import("./api.js").VcsGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
383+ base: (input?: import("./api.js").VcsBaseInput) => Effect.Effect<import("./api.js").VcsBaseOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
384+ status: (input?: import("./api.js").VcsStatusInput) => Effect.Effect<import("./api.js").VcsStatusOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
385 branch: {
386- list: (input?: import("./api.js").VcsBranchListInput) => Effect.Effect<import("./api.js").VcsBranchListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
387+ list: (input?: import("./api.js").VcsBranchListInput) => Effect.Effect<import("./api.js").VcsBranchListOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
388 };
389- diff: (input: import("./api.js").VcsDiffInput) => Effect.Effect<import("./api.js").VcsDiffOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
390+ diff: (input: import("./api.js").VcsDiffInput) => Effect.Effect<import("./api.js").VcsDiffOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
391 };
392 debug: {
393 location: {
394- list: () => Effect.Effect<import("./api.js").DebugLocationListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
395- evict: (input?: import("./api.js").DebugLocationEvictInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
396+ list: () => Effect.Effect<import("./api.js").DebugLocationListOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
397+ evict: (input?: import("./api.js").DebugLocationEvictInput) => Effect.Effect<void, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
398 };
399 };
400 migration: {
401 v1: {
402- status: () => Effect.Effect<import("./api.js").MigrationV1StatusOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
403+ status: () => Effect.Effect<import("./api.js").MigrationV1StatusOutput, import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
404 };
405 };
406 websearch: {
407- providers: (input?: import("./api.js").WebsearchProvidersInput) => Effect.Effect<import("./api.js").WebsearchProvidersOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
408- query: (input: import("./api.js").WebsearchQueryInput) => Effect.Effect<import("./api.js").WebsearchQueryOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
409+ providers: (input?: import("./api.js").WebsearchProvidersInput) => Effect.Effect<import("./api.js").WebsearchProvidersOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
410+ query: (input: import("./api.js").WebsearchQueryInput) => Effect.Effect<import("./api.js").WebsearchQueryOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("@opencode/protocol/errors").ServiceUnavailableError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
411 };
412 config: {
413- get: (input?: import("./api.js").ConfigGetInput) => Effect.Effect<import("./api.js").ConfigGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
414- shells: () => Effect.Effect<import("./api.js").ConfigShellsOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
415- update: (input: import("./api.js").ConfigUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/unstable/http/HttpClientError").HttpClientError, never>;
416+ get: (input?: import("./api.js").ConfigGetInput) => Effect.Effect<import("./api.js").ConfigGetOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
417+ shells: () => Effect.Effect<import("./api.js").ConfigShellsOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
418+ update: (input: import("./api.js").ConfigUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | import("effect/Schema").SchemaError | ClientError | import("effect/http/HttpClientError").HttpClientError, never>;
419 };
420 }, never, HttpClient.HttpClient>;
421diff --git a/dist/effect/generated/client.d.ts b/dist/effect/generated/client.d.ts
422index 0261a21..278f3fb 100644
423--- a/dist/effect/generated/client.d.ts
424+++ b/dist/effect/generated/client.d.ts
425@@ -1,6 +1,6 @@
426 import { Effect, Stream, Schema } from "effect";
427-import { Sse } from "effect/unstable/encoding";
428-import { HttpClientError } from "effect/unstable/http";
429+import { Sse } from "effect/encoding";
430+import { HttpClientError } from "effect/http";
431 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";
432 import { ClientError } from "./client-error.js";
433 export declare const make: (options?: {
434@@ -2524,4 +2524,4 @@ export declare const make: (options?: {
435 shells: () => Effect.Effect<ConfigShellsOutput, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | Schema.SchemaError | ClientError | HttpClientError.HttpClientError, never>;
436 update: (input: ConfigUpdateInput) => Effect.Effect<void, import("@opencode/protocol/errors").LocationNotFoundError | import("@opencode/protocol/errors").InvalidRequestError | import("@opencode/protocol/errors").UnauthorizedError | Schema.SchemaError | ClientError | HttpClientError.HttpClientError, never>;
437 };
438-}, never, import("effect/unstable/http/HttpClient").HttpClient>;
439+}, never, import("effect/http/HttpClient").HttpClient>;
patches/@opencode__protocol@2.0.23.patch created+844
...@@ -0,0 +1,844 @@
1diff --git a/dist/api.d.ts b/dist/api.d.ts
2index 68fe350..7c8f3f5 100644
3--- a/dist/api.d.ts
4+++ b/dist/api.d.ts
5@@ -1,5 +1,5 @@
6 import { Context } from "effect";
7-import { HttpApi, HttpApiGroup, HttpApiMiddleware } from "effect/unstable/httpapi";
8+import { HttpApi, HttpApiGroup, HttpApiMiddleware } from "effect/http-api";
9 import { SchemaErrorMiddleware } from "./middleware/schema-error.js";
10 import { GenerateGroup } from "./groups/generate.js";
11 import { MessageGroup } from "./groups/message.js";
12diff --git a/dist/api.js b/dist/api.js
13index c68e3ea..0ed6447 100644
14--- a/dist/api.js
15+++ b/dist/api.js
16@@ -1,5 +1,5 @@
17 import { Context } from "effect";
18-import { HttpApi, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/unstable/httpapi";
19+import { HttpApi, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/http-api";
20 import { SchemaErrorMiddleware } from "./middleware/schema-error.js";
21 import { GenerateGroup } from "./groups/generate.js";
22 import { MessageGroup } from "./groups/message.js";
23diff --git a/dist/client.d.ts b/dist/client.d.ts
24index 8a7bdec..d1fc694 100644
25--- a/dist/client.d.ts
26+++ b/dist/client.d.ts
27@@ -1,7 +1,7 @@
28 import { LocationNotFoundError, InvalidRequestError, SessionNotFoundError } from "./errors.js";
29 import type { Api } from "./api.js";
30 import type { Context } from "effect";
31-import { HttpApiMiddleware } from "effect/unstable/httpapi";
32+import { HttpApiMiddleware } from "effect/http-api";
33 import type { EventGroup } from "./groups/event.js";
34 declare const LocationMiddleware_base: HttpApiMiddleware.ServiceClass<LocationMiddleware, "@opencode/client/LocationMiddleware", {
35 requires: never;
36diff --git a/dist/client.js b/dist/client.js
37index bb2249f..a7f7aa9 100644
38--- a/dist/client.js
39+++ b/dist/client.js
40@@ -1,6 +1,6 @@
41 import { LocationNotFoundError, InvalidRequestError, SessionNotFoundError } from "./errors.js";
42 import { makeDefaultApi } from "./api.js";
43-import { HttpApiMiddleware } from "effect/unstable/httpapi";
44+import { HttpApiMiddleware } from "effect/http-api";
45 class LocationMiddleware extends HttpApiMiddleware.Service()("@opencode/client/LocationMiddleware", { error: [LocationNotFoundError] }) {
46 }
47 class SessionLocationMiddleware extends HttpApiMiddleware.Service()("@opencode/client/SessionLocationMiddleware", { error: [InvalidRequestError, SessionNotFoundError, LocationNotFoundError] }) {
48diff --git a/dist/groups/agent.d.ts b/dist/groups/agent.d.ts
49index ef9632e..57ba96c 100644
50--- a/dist/groups/agent.d.ts
51+++ b/dist/groups/agent.d.ts
52@@ -1,6 +1,6 @@
53 import { Agent } from "@opencode/schema/agent";
54 import { Schema } from "effect";
55-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
56+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
57 import { AgentNotFoundError } from "../errors.js";
58 export declare const AgentGroup: HttpApiGroup.HttpApiGroup<"server.agent", HttpApiEndpoint.HttpApiEndpoint<"agent.list", "GET", "/api/agent", never, Schema.toCodecStringTree<Schema.Struct<{
59 readonly location: Schema.optional<Schema.Struct<{
60diff --git a/dist/groups/agent.js b/dist/groups/agent.js
61index 130bcc5..edcebfc 100644
62--- a/dist/groups/agent.js
63+++ b/dist/groups/agent.js
64@@ -1,7 +1,7 @@
65 import { Agent } from "@opencode/schema/agent";
66 import { Location } from "@opencode/schema/location";
67 import { Schema } from "effect";
68-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
69+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
70 import { LocationQuery, locationQueryOpenApi } from "./location.js";
71 import { AgentNotFoundError } from "../errors.js";
72 export const AgentGroup = HttpApiGroup.make("server.agent")
73diff --git a/dist/groups/command.d.ts b/dist/groups/command.d.ts
74index b24f481..373b95c 100644
75--- a/dist/groups/command.d.ts
76+++ b/dist/groups/command.d.ts
77@@ -1,5 +1,5 @@
78 import { Schema } from "effect";
79-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
80+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
81 export declare const CommandGroup: HttpApiGroup.HttpApiGroup<"server.command", HttpApiEndpoint.HttpApiEndpoint<"command.list", "GET", "/api/command", never, Schema.toCodecStringTree<Schema.Struct<{
82 readonly location: Schema.optional<Schema.Struct<{
83 readonly directory: Schema.optional<Schema.String>;
84diff --git a/dist/groups/command.js b/dist/groups/command.js
85index cd89b47..341eb23 100644
86--- a/dist/groups/command.js
87+++ b/dist/groups/command.js
88@@ -1,7 +1,7 @@
89 import { Command } from "@opencode/schema/command";
90 import { Location } from "@opencode/schema/location";
91 import { Schema } from "effect";
92-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
93+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
94 import { LocationQuery, locationQueryOpenApi } from "./location.js";
95 export const CommandGroup = HttpApiGroup.make("server.command")
96 .add(HttpApiEndpoint.get("command.list", "/api/command", {
97diff --git a/dist/groups/config.d.ts b/dist/groups/config.d.ts
98index 31f1042..0432fc2 100644
99--- a/dist/groups/config.d.ts
100+++ b/dist/groups/config.d.ts
101@@ -1,6 +1,6 @@
102 import { Config } from "@opencode/schema/config";
103 import { Schema } from "effect";
104-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
105+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
106 export declare const ConfigGroup: HttpApiGroup.HttpApiGroup<"server.config", HttpApiEndpoint.HttpApiEndpoint<"config.get", "GET", "/api/config", never, Schema.toCodecStringTree<Schema.Struct<{
107 readonly location: Schema.optional<Schema.Struct<{
108 readonly directory: Schema.optional<Schema.String>;
109diff --git a/dist/groups/config.js b/dist/groups/config.js
110index 228002a..14748f6 100644
111--- a/dist/groups/config.js
112+++ b/dist/groups/config.js
113@@ -1,7 +1,7 @@
114 import { Config } from "@opencode/schema/config";
115 import { ConfigShell } from "@opencode/schema/config/shell";
116 import { Schema } from "effect";
117-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
118+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
119 import { LocationQuery, locationQueryOpenApi } from "./location.js";
120 export const ConfigGroup = HttpApiGroup.make("server.config")
121 .add(HttpApiEndpoint.get("config.get", "/api/config", {
122diff --git a/dist/groups/credential.d.ts b/dist/groups/credential.d.ts
123index 12de0a3..a4c616e 100644
124--- a/dist/groups/credential.d.ts
125+++ b/dist/groups/credential.d.ts
126@@ -1,5 +1,5 @@
127 import { Schema } from "effect";
128-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
129+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
130 import { ConflictError } from "../errors.js";
131 export declare const CredentialGroup: HttpApiGroup.HttpApiGroup<"server.credential", HttpApiEndpoint.HttpApiEndpoint<"credential.list", "GET", "/api/credential", never, never, never, never, Schema.toCodecJson<Schema.Struct<{
132 readonly data: Schema.$Array<Schema.Struct<{
133diff --git a/dist/groups/credential.js b/dist/groups/credential.js
134index bbdf76c..8e8ce95 100644
135--- a/dist/groups/credential.js
136+++ b/dist/groups/credential.js
137@@ -1,6 +1,6 @@
138 import { Credential } from "@opencode/schema/credential";
139 import { Schema } from "effect";
140-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
141+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
142 import { ConflictError } from "../errors.js";
143 export const CredentialGroup = HttpApiGroup.make("server.credential")
144 .add(HttpApiEndpoint.get("credential.list", "/api/credential", {
145diff --git a/dist/groups/debug.d.ts b/dist/groups/debug.d.ts
146index accad9f..5a74541 100644
147--- a/dist/groups/debug.d.ts
148+++ b/dist/groups/debug.d.ts
149@@ -1,5 +1,5 @@
150 import { Schema } from "effect";
151-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
152+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
153 export declare const DebugGroup: HttpApiGroup.HttpApiGroup<"server.debug", HttpApiEndpoint.HttpApiEndpoint<"debug.location", "GET", "/api/debug/location", never, never, never, never, Schema.toCodecJson<Schema.$Array<Schema.Struct<{
154 readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
155 }>>>, never, never, never> | HttpApiEndpoint.HttpApiEndpoint<"debug.location.evict", "DELETE", "/api/debug/location", never, Schema.toCodecStringTree<Schema.Struct<{
156diff --git a/dist/groups/debug.js b/dist/groups/debug.js
157index 8062413..9721272 100644
158--- a/dist/groups/debug.js
159+++ b/dist/groups/debug.js
160@@ -1,6 +1,6 @@
161 import { Location } from "@opencode/schema/location";
162 import { Schema } from "effect";
163-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
164+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
165 import { LocationQuery, locationQueryOpenApi } from "./location.js";
166 export const DebugGroup = HttpApiGroup.make("server.debug")
167 .add(HttpApiEndpoint.get("debug.location", "/api/debug/location", {
168diff --git a/dist/groups/event.d.ts b/dist/groups/event.d.ts
169index 3275a63..7ddc811 100644
170--- a/dist/groups/event.d.ts
171+++ b/dist/groups/event.d.ts
172@@ -1,7 +1,7 @@
173 import { Event } from "@opencode/schema/event";
174 import type { Definition } from "@opencode/schema/event";
175 import { Schema } from "effect";
176-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
177+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
178 export declare const makeEventGroup: <const Definitions extends ReadonlyArray<Definition>>(definitions: Definitions) => HttpApiGroup.HttpApiGroup<"server.event", HttpApiEndpoint.HttpApiEndpoint<"event.subscribe", "GET", "/api/event", never, never, never, never, HttpApiSchema.StreamSse<HttpApiSchema.SseEventFromData<Schema.Union<readonly [...Definitions, Schema.Struct<{
179 readonly id: Schema.brand<Schema.String, "Event.ID"> & {
180 create: () => string & import("effect/Brand").Brand<"Event.ID">;
181diff --git a/dist/groups/event.js b/dist/groups/event.js
182index 7d086fe..667e078 100644
183--- a/dist/groups/event.js
184+++ b/dist/groups/event.js
185@@ -2,7 +2,7 @@ import { Event } from "@opencode/schema/event";
186 import { EventManifest } from "@opencode/schema/event-manifest";
187 import { Location } from "@opencode/schema/location";
188 import { Schema } from "effect";
189-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
190+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
191 const fields = {
192 id: Event.ID,
193 metadata: Schema.optional(Schema.Record(Schema.String, Schema.Unknown)),
194diff --git a/dist/groups/form.d.ts b/dist/groups/form.d.ts
195index ef9289e..efff3f0 100644
196--- a/dist/groups/form.d.ts
197+++ b/dist/groups/form.d.ts
198@@ -1,5 +1,5 @@
199 import { Context, Schema } from "effect";
200-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware } from "effect/unstable/httpapi";
201+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware } from "effect/http-api";
202 export declare const makeFormGroup: <LocationId extends HttpApiMiddleware.AnyId, LocationService>(locationMiddleware: Context.Key<LocationId, LocationService>) => HttpApiGroup.HttpApiGroup<"server.form", HttpApiEndpoint.HttpApiEndpoint<"form.list", "GET", "/api/form", never, Schema.toCodecStringTree<Schema.Struct<{
203 readonly location: Schema.optional<Schema.Struct<{
204 readonly directory: Schema.optional<Schema.String>;
205diff --git a/dist/groups/form.js b/dist/groups/form.js
206index 7b97820..d68d534 100644
207--- a/dist/groups/form.js
208+++ b/dist/groups/form.js
209@@ -1,7 +1,7 @@
210 import { Form } from "@opencode/schema/form";
211 import { Location } from "@opencode/schema/location";
212 import { Context, Schema } from "effect";
213-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/unstable/httpapi";
214+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, OpenApi } from "effect/http-api";
215 import { LocationQuery, locationQueryOpenApi } from "./location.js";
216 export const makeFormGroup = (locationMiddleware) => HttpApiGroup.make("server.form")
217 .add(HttpApiEndpoint.get("form.list", "/api/form", {
218diff --git a/dist/groups/fs.d.ts b/dist/groups/fs.d.ts
219index c8294ac..af3ac60 100644
220--- a/dist/groups/fs.d.ts
221+++ b/dist/groups/fs.d.ts
222@@ -1,5 +1,5 @@
223 import { Schema } from "effect";
224-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
225+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
226 import { FileNotFoundError } from "../errors.js";
227 export declare const FileSystemGroup: HttpApiGroup.HttpApiGroup<"server.fs", HttpApiEndpoint.HttpApiEndpoint<"fs.read", "GET", "/api/fs/read/*", never, Schema.toCodecStringTree<Schema.Struct<{
228 readonly location: Schema.optional<Schema.Struct<{
229diff --git a/dist/groups/fs.js b/dist/groups/fs.js
230index 313dbeb..68ff2ef 100644
231--- a/dist/groups/fs.js
232+++ b/dist/groups/fs.js
233@@ -2,7 +2,7 @@ import { FileSystem } from "@opencode/schema/filesystem";
234 import { Location } from "@opencode/schema/location";
235 import { PositiveInt } from "@opencode/schema/schema";
236 import { Schema } from "effect";
237-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
238+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
239 import { FileNotFoundError } from "../errors.js";
240 import { LocationQuery, locationQueryOpenApi } from "./location.js";
241 const ListQuery = Schema.Struct({
242diff --git a/dist/groups/generate.d.ts b/dist/groups/generate.d.ts
243index aa50f1b..182cd36 100644
244--- a/dist/groups/generate.d.ts
245+++ b/dist/groups/generate.d.ts
246@@ -1,5 +1,5 @@
247 import { Schema } from "effect";
248-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
249+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
250 import { LocationNotFoundError, InvalidRequestError, ServiceUnavailableError } from "../errors.js";
251 export declare const GenerateGroup: HttpApiGroup.HttpApiGroup<"server.generate", HttpApiEndpoint.HttpApiEndpoint<"generate.text", "POST", "/api/experimental/generate", never, never, Schema.toCodecJson<Schema.Struct<{
252 readonly prompt: Schema.String;
253diff --git a/dist/groups/generate.js b/dist/groups/generate.js
254index 4faaee7..f7f5a57 100644
255--- a/dist/groups/generate.js
256+++ b/dist/groups/generate.js
257@@ -1,6 +1,6 @@
258 import { Model } from "@opencode/schema/model";
259 import { Schema } from "effect";
260-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
261+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
262 import { LocationNotFoundError, InvalidRequestError, ServiceUnavailableError } from "../errors.js";
263 export const GenerateGroup = HttpApiGroup.make("server.generate")
264 .add(HttpApiEndpoint.post("generate.text", "/api/experimental/generate", {
265diff --git a/dist/groups/integration.d.ts b/dist/groups/integration.d.ts
266index e7b4bf8..d3b5d1f 100644
267--- a/dist/groups/integration.d.ts
268+++ b/dist/groups/integration.d.ts
269@@ -1,6 +1,6 @@
270 import { Integration } from "@opencode/schema/integration";
271 import { Schema } from "effect";
272-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
273+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
274 import { IntegrationAttemptNotFoundError, IntegrationMethodNotFoundError, IntegrationNotFoundError, InvalidRequestError } from "../errors.js";
275 export declare const IntegrationGroup: HttpApiGroup.HttpApiGroup<"server.integration", HttpApiEndpoint.HttpApiEndpoint<"integration.list", "GET", "/api/integration", never, Schema.toCodecStringTree<Schema.Struct<{
276 readonly location: Schema.optional<Schema.Struct<{
277diff --git a/dist/groups/integration.js b/dist/groups/integration.js
278index 6ca6f55..27b3792 100644
279--- a/dist/groups/integration.js
280+++ b/dist/groups/integration.js
281@@ -2,7 +2,7 @@ import { Integration } from "@opencode/schema/integration";
282 import { Location } from "@opencode/schema/location";
283 import { Form } from "@opencode/schema/form";
284 import { Schema } from "effect";
285-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
286+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
287 import { IntegrationAttemptNotFoundError, IntegrationMethodNotFoundError, IntegrationNotFoundError, InvalidRequestError, } from "../errors.js";
288 import { LocationQuery, locationQueryOpenApi } from "./location.js";
289 export const IntegrationGroup = HttpApiGroup.make("server.integration")
290diff --git a/dist/groups/location.d.ts b/dist/groups/location.d.ts
291index 5f3ef6b..96cdcd3 100644
292--- a/dist/groups/location.d.ts
293+++ b/dist/groups/location.d.ts
294@@ -1,5 +1,5 @@
295 import { Context, Schema } from "effect";
296-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/unstable/httpapi";
297+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/http-api";
298 import { ServiceUnavailableError } from "../errors.js";
299 export declare const LocationQuery: Schema.Struct<{
300 readonly location: Schema.optional<Schema.Struct<{
301diff --git a/dist/groups/location.js b/dist/groups/location.js
302index 7fa63bf..10f4969 100644
303--- a/dist/groups/location.js
304+++ b/dist/groups/location.js
305@@ -1,6 +1,6 @@
306 import { Location } from "@opencode/schema/location";
307 import { Context, Schema } from "effect";
308-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
309+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/http-api";
310 import { ServiceUnavailableError } from "../errors.js";
311 export const LocationQuery = Schema.Struct({
312 location: Schema.optional(Schema.Struct({
313diff --git a/dist/groups/mcp.d.ts b/dist/groups/mcp.d.ts
314index fc661e0..8c7dbe8 100644
315--- a/dist/groups/mcp.d.ts
316+++ b/dist/groups/mcp.d.ts
317@@ -1,6 +1,6 @@
318 import { Mcp } from "@opencode/schema/mcp";
319 import { Schema } from "effect";
320-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
321+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
322 import { McpServerNotFoundError } from "../errors.js";
323 export declare const McpGroup: HttpApiGroup.HttpApiGroup<"server.mcp", HttpApiEndpoint.HttpApiEndpoint<"mcp.list", "GET", "/api/mcp", never, Schema.toCodecStringTree<Schema.Struct<{
324 readonly location: Schema.optional<Schema.Struct<{
325diff --git a/dist/groups/mcp.js b/dist/groups/mcp.js
326index 60fdde9..658d875 100644
327--- a/dist/groups/mcp.js
328+++ b/dist/groups/mcp.js
329@@ -1,7 +1,7 @@
330 import { Mcp } from "@opencode/schema/mcp";
331 import { Location } from "@opencode/schema/location";
332 import { Schema } from "effect";
333-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
334+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
335 import { McpServerNotFoundError } from "../errors.js";
336 import { LocationQuery, locationQueryOpenApi } from "./location.js";
337 export const McpGroup = HttpApiGroup.make("server.mcp")
338diff --git a/dist/groups/message.d.ts b/dist/groups/message.d.ts
339index c9d470d..a50943a 100644
340--- a/dist/groups/message.d.ts
341+++ b/dist/groups/message.d.ts
342@@ -1,5 +1,5 @@
343 import { Schema } from "effect";
344-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
345+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
346 import { InvalidCursorError, SessionNotFoundError, UnknownError } from "../errors.js";
347 export declare const SessionMessagesQuery: Schema.Struct<{
348 readonly limit: Schema.optional<Schema.NumberFromString>;
349diff --git a/dist/groups/message.js b/dist/groups/message.js
350index 135878a..9c546b0 100644
351--- a/dist/groups/message.js
352+++ b/dist/groups/message.js
353@@ -2,7 +2,7 @@ import { Session } from "@opencode/schema/session";
354 import { SessionMessage } from "@opencode/schema/session-message";
355 import { Location } from "@opencode/schema/location";
356 import { Schema, Struct } from "effect";
357-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
358+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
359 import { InvalidCursorError, SessionNotFoundError, UnknownError } from "../errors.js";
360 export const SessionMessagesQuery = Schema.Struct({
361 limit: Schema.optional(Schema.NumberFromString.check(Schema.isInt(), Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(200))).annotate({
362diff --git a/dist/groups/migration.d.ts b/dist/groups/migration.d.ts
363index 627b223..4a9323d 100644
364--- a/dist/groups/migration.d.ts
365+++ b/dist/groups/migration.d.ts
366@@ -1,5 +1,5 @@
367 import { Schema } from "effect";
368-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
369+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
370 export declare const V1MigrationStatus: Schema.Union<readonly [Schema.Struct<{
371 readonly status: Schema.Literals<readonly ["required", "completed"]>;
372 }>, Schema.Struct<{
373diff --git a/dist/groups/migration.js b/dist/groups/migration.js
374index 20cf324..ef048e9 100644
375--- a/dist/groups/migration.js
376+++ b/dist/groups/migration.js
377@@ -1,5 +1,5 @@
378 import { Schema } from "effect";
379-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
380+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
381 const V1MigrationProgress = Schema.Struct({
382 label: Schema.String,
383 numerator: Schema.optional(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),
384diff --git a/dist/groups/model.d.ts b/dist/groups/model.d.ts
385index 8bb1daa..787fe05 100644
386--- a/dist/groups/model.d.ts
387+++ b/dist/groups/model.d.ts
388@@ -1,6 +1,6 @@
389 import { Model } from "@opencode/schema/model";
390 import { Schema } from "effect";
391-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
392+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
393 import { ServiceUnavailableError } from "../errors.js";
394 export declare const ModelGroup: HttpApiGroup.HttpApiGroup<"server.model", HttpApiEndpoint.HttpApiEndpoint<"model.list", "GET", "/api/model", never, Schema.toCodecStringTree<Schema.Struct<{
395 readonly location: Schema.optional<Schema.Struct<{
396diff --git a/dist/groups/model.js b/dist/groups/model.js
397index 47d96e7..3d89ba9 100644
398--- a/dist/groups/model.js
399+++ b/dist/groups/model.js
400@@ -1,7 +1,7 @@
401 import { Model } from "@opencode/schema/model";
402 import { Location } from "@opencode/schema/location";
403 import { Schema } from "effect";
404-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
405+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
406 import { ServiceUnavailableError } from "../errors.js";
407 import { LocationQuery, locationQueryOpenApi } from "./location.js";
408 export const ModelGroup = HttpApiGroup.make("server.model")
409diff --git a/dist/groups/permission.d.ts b/dist/groups/permission.d.ts
410index 767b088..a881422 100644
411--- a/dist/groups/permission.d.ts
412+++ b/dist/groups/permission.d.ts
413@@ -1,5 +1,5 @@
414 import { Context, Schema } from "effect";
415-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/unstable/httpapi";
416+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/http-api";
417 import { LocationNotFoundError, PermissionNotFoundError, SessionNotFoundError } from "../errors.js";
418 export declare const makePermissionGroup: <LocationId extends HttpApiMiddleware.AnyId, LocationService, SessionLocationId extends HttpApiMiddleware.AnyId, SessionLocationService>(locationMiddleware: Context.Key<LocationId, LocationService>, sessionLocationMiddleware: Context.Key<SessionLocationId, SessionLocationService>) => HttpApiGroup.HttpApiGroup<"server.permission", HttpApiEndpoint.HttpApiEndpoint<"permission.request.list", "GET", "/api/permission/request", never, Schema.toCodecStringTree<Schema.Struct<{
419 readonly location: Schema.optional<Schema.Struct<{
420diff --git a/dist/groups/permission.js b/dist/groups/permission.js
421index 9ab7bf8..b8bba46 100644
422--- a/dist/groups/permission.js
423+++ b/dist/groups/permission.js
424@@ -5,7 +5,7 @@ import { PermissionSaved } from "@opencode/schema/permission-saved";
425 import { Project } from "@opencode/schema/project";
426 import { Session } from "@opencode/schema/session";
427 import { Context, Schema } from "effect";
428-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
429+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/http-api";
430 import { LocationNotFoundError, PermissionNotFoundError, SessionNotFoundError } from "../errors.js";
431 import { LocationQuery, locationQueryOpenApi } from "./location.js";
432 export const makePermissionGroup = (locationMiddleware, sessionLocationMiddleware) => HttpApiGroup.make("server.permission")
433diff --git a/dist/groups/persistent-pty.d.ts b/dist/groups/persistent-pty.d.ts
434index efb7472..b6b786b 100644
435--- a/dist/groups/persistent-pty.d.ts
436+++ b/dist/groups/persistent-pty.d.ts
437@@ -1,5 +1,5 @@
438 import { Schema } from "effect";
439-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
440+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
441 import { ForbiddenError, InvalidRequestError, PtyNotFoundError, ServiceUnavailableError } from "../errors.js";
442 import { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE } from "./pty.js";
443 export { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE };
444diff --git a/dist/groups/persistent-pty.js b/dist/groups/persistent-pty.js
445index 85ad02f..b64c896 100644
446--- a/dist/groups/persistent-pty.js
447+++ b/dist/groups/persistent-pty.js
448@@ -3,7 +3,7 @@ import { Pty } from "@opencode/schema/pty";
449 import { PtyTicket } from "@opencode/schema/pty-ticket";
450 import { Session } from "@opencode/schema/session";
451 import { Schema } from "effect";
452-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
453+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
454 import { ForbiddenError, InvalidRequestError, PtyNotFoundError, ServiceUnavailableError } from "../errors.js";
455 import { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE } from "./pty.js";
456 export { PTY_CONNECT_TICKET_QUERY, PTY_CONNECT_TOKEN_HEADER, PTY_CONNECT_TOKEN_HEADER_VALUE };
457diff --git a/dist/groups/plugin.d.ts b/dist/groups/plugin.d.ts
458index 30d0f78..8bd4ecd 100644
459--- a/dist/groups/plugin.d.ts
460+++ b/dist/groups/plugin.d.ts
461@@ -1,5 +1,5 @@
462 import { Schema } from "effect";
463-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
464+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
465 import { InvalidRequestError, ServiceUnavailableError } from "../errors.js";
466 export declare const PluginGroup: HttpApiGroup.HttpApiGroup<"server.plugin", HttpApiEndpoint.HttpApiEndpoint<"plugin.list", "GET", "/api/plugin", never, Schema.toCodecStringTree<Schema.Struct<{
467 readonly location: Schema.optional<Schema.Struct<{
468diff --git a/dist/groups/plugin.js b/dist/groups/plugin.js
469index 90d5b91..dd72e92 100644
470--- a/dist/groups/plugin.js
471+++ b/dist/groups/plugin.js
472@@ -1,7 +1,7 @@
473 import { Location } from "@opencode/schema/location";
474 import { Plugin } from "@opencode/schema/plugin";
475 import { Schema } from "effect";
476-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
477+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
478 import { InvalidRequestError, ServiceUnavailableError } from "../errors.js";
479 import { LocationQuery, locationQueryOpenApi } from "./location.js";
480 export const PluginGroup = HttpApiGroup.make("server.plugin")
481diff --git a/dist/groups/project.d.ts b/dist/groups/project.d.ts
482index e4558f6..ab6952a 100644
483--- a/dist/groups/project.d.ts
484+++ b/dist/groups/project.d.ts
485@@ -1,5 +1,5 @@
486 import { Schema } from "effect";
487-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
488+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
489 import { ProjectNotFoundError } from "../errors.js";
490 export declare const ProjectGroup: HttpApiGroup.HttpApiGroup<"server.project", HttpApiEndpoint.HttpApiEndpoint<"project.list", "GET", "/api/project", never, never, never, never, Schema.toCodecJson<Schema.$Array<Schema.Struct<{
491 readonly id: Schema.brand<Schema.String, "Project.ID"> & {
492diff --git a/dist/groups/project.js b/dist/groups/project.js
493index 7424c4e..b67f839 100644
494--- a/dist/groups/project.js
495+++ b/dist/groups/project.js
496@@ -1,6 +1,6 @@
497 import { Project } from "@opencode/schema/project";
498 import { Schema, Struct } from "effect";
499-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
500+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
501 import { ProjectNotFoundError } from "../errors.js";
502 const root = "/api/project";
503 const UpdatePayload = Schema.Struct(Struct.omit(Project.UpdateInput.fields, ["projectID"]));
504diff --git a/dist/groups/provider.d.ts b/dist/groups/provider.d.ts
505index 2671555..89118fe 100644
506--- a/dist/groups/provider.d.ts
507+++ b/dist/groups/provider.d.ts
508@@ -1,6 +1,6 @@
509 import { Provider } from "@opencode/schema/provider";
510 import { Schema } from "effect";
511-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
512+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
513 import { ProviderNotFoundError, ServiceUnavailableError } from "../errors.js";
514 export declare const ProviderGroup: HttpApiGroup.HttpApiGroup<"server.provider", HttpApiEndpoint.HttpApiEndpoint<"provider.list", "GET", "/api/provider", never, Schema.toCodecStringTree<Schema.Struct<{
515 readonly location: Schema.optional<Schema.Struct<{
516diff --git a/dist/groups/provider.js b/dist/groups/provider.js
517index b587f80..20f52fa 100644
518--- a/dist/groups/provider.js
519+++ b/dist/groups/provider.js
520@@ -1,7 +1,7 @@
521 import { Provider } from "@opencode/schema/provider";
522 import { Location } from "@opencode/schema/location";
523 import { Schema } from "effect";
524-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
525+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
526 import { ProviderNotFoundError, ServiceUnavailableError } from "../errors.js";
527 import { LocationQuery, locationQueryOpenApi } from "./location.js";
528 export const ProviderGroup = HttpApiGroup.make("server.provider")
529diff --git a/dist/groups/pty.d.ts b/dist/groups/pty.d.ts
530index a1ec2fb..7bbe99b 100644
531--- a/dist/groups/pty.d.ts
532+++ b/dist/groups/pty.d.ts
533@@ -1,5 +1,5 @@
534 import { Schema } from "effect";
535-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
536+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
537 import { ForbiddenError, PtyNotFoundError } from "../errors.js";
538 export declare const PTY_CONNECT_TICKET_QUERY = "ticket";
539 export declare const PTY_CONNECT_TOKEN_HEADER = "x-opencode-ticket";
540diff --git a/dist/groups/pty.js b/dist/groups/pty.js
541index dd17efa..88eb22b 100644
542--- a/dist/groups/pty.js
543+++ b/dist/groups/pty.js
544@@ -2,7 +2,7 @@ import { Pty } from "@opencode/schema/pty";
545 import { PtyTicket } from "@opencode/schema/pty-ticket";
546 import { Location } from "@opencode/schema/location";
547 import { Schema } from "effect";
548-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
549+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
550 import { ForbiddenError, PtyNotFoundError } from "../errors.js";
551 import { LocationQuery, locationQueryOpenApi } from "./location.js";
552 export const PTY_CONNECT_TICKET_QUERY = "ticket";
553diff --git a/dist/groups/reference.d.ts b/dist/groups/reference.d.ts
554index 5ac4e70..09f3d67 100644
555--- a/dist/groups/reference.d.ts
556+++ b/dist/groups/reference.d.ts
557@@ -1,5 +1,5 @@
558 import { Schema } from "effect";
559-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
560+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
561 export declare const ReferenceGroup: HttpApiGroup.HttpApiGroup<"server.reference", HttpApiEndpoint.HttpApiEndpoint<"reference.list", "GET", "/api/reference", never, Schema.toCodecStringTree<Schema.Struct<{
562 readonly location: Schema.optional<Schema.Struct<{
563 readonly directory: Schema.optional<Schema.String>;
564diff --git a/dist/groups/reference.js b/dist/groups/reference.js
565index e96827b..e615fd1 100644
566--- a/dist/groups/reference.js
567+++ b/dist/groups/reference.js
568@@ -1,7 +1,7 @@
569 import { Location } from "@opencode/schema/location";
570 import { Reference } from "@opencode/schema/reference";
571 import { Schema, Struct } from "effect";
572-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
573+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
574 import { LocationQuery, locationQueryOpenApi } from "./location.js";
575 const PublicLocalSource = Schema.Struct(Struct.omit(Reference.LocalSource.fields, ["description", "hidden"])).annotate({
576 identifier: "Reference.LocalSource",
577diff --git a/dist/groups/rpc.d.ts b/dist/groups/rpc.d.ts
578index 3790115..08e86ec 100644
579--- a/dist/groups/rpc.d.ts
580+++ b/dist/groups/rpc.d.ts
581@@ -1,5 +1,5 @@
582 import { Schema } from "effect";
583-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
584+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
585 import { RpcError, RpcInternalError } from "../errors.js";
586 export declare const RpcInput: Schema.Struct<{
587 readonly input: Schema.decodeTo<Schema.optional<Schema.toType<Schema.Unknown>>, Schema.optionalKey<Schema.Unknown>, never, never>;
588diff --git a/dist/groups/rpc.js b/dist/groups/rpc.js
589index c12866c..36dadc6 100644
590--- a/dist/groups/rpc.js
591+++ b/dist/groups/rpc.js
592@@ -1,6 +1,6 @@
593 import { optional } from "@opencode/schema/schema";
594 import { Schema } from "effect";
595-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
596+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
597 import { RpcError, RpcInternalError } from "../errors.js";
598 import { LocationQuery, locationQueryOpenApi } from "./location.js";
599 export const RpcInput = Schema.Struct({ input: optional(Schema.Unknown) }).annotate({ identifier: "Rpc.Input" });
600diff --git a/dist/groups/server.d.ts b/dist/groups/server.d.ts
601index b02cf39..5e605d6 100644
602--- a/dist/groups/server.d.ts
603+++ b/dist/groups/server.d.ts
604@@ -1,5 +1,5 @@
605 import { Schema } from "effect";
606-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
607+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
608 import { UnauthorizedError } from "../errors.js";
609 export declare const ServerInfo: Schema.Struct<{
610 readonly version: Schema.String;
611diff --git a/dist/groups/server.js b/dist/groups/server.js
612index c2415ec..ab9fef3 100644
613--- a/dist/groups/server.js
614+++ b/dist/groups/server.js
615@@ -1,5 +1,5 @@
616 import { Schema } from "effect";
617-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
618+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
619 import { UnauthorizedError } from "../errors.js";
620 export const ServerInfo = Schema.Struct({
621 version: Schema.String,
622diff --git a/dist/groups/session.d.ts b/dist/groups/session.d.ts
623index 316bfb1..adbea93 100644
624--- a/dist/groups/session.d.ts
625+++ b/dist/groups/session.d.ts
626@@ -2,7 +2,7 @@ import { PromptInput } from "@opencode/schema/prompt-input";
627 import { InstructionEntry } from "@opencode/schema/instruction-entry";
628 import { Event } from "@opencode/schema/event";
629 import { Context, Effect, Schema } from "effect";
630-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/unstable/httpapi";
631+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema } from "effect/http-api";
632 import { ConflictError, LocationNotFoundError, CommandExecutionError, CommandNotFoundError, FormAlreadySettledError, FormInvalidAnswerError, FormNotFoundError, InvalidCursorError, InvalidRequestError, MessageNotFoundError, ServiceUnavailableError, SessionBusyError, SessionNotFoundError, SkillNotFoundError, UnknownError } from "../errors.js";
633 declare const SessionsCursorInput: Schema.Union<readonly [Schema.Struct<{
634 readonly directory: Schema.brand<Schema.String, "AbsolutePath">;
635diff --git a/dist/groups/session.js b/dist/groups/session.js
636index 64fe213..c835084 100644
637--- a/dist/groups/session.js
638+++ b/dist/groups/session.js
639@@ -7,8 +7,9 @@ import { InstructionEntry } from "@opencode/schema/instruction-entry";
640 import { Project } from "@opencode/schema/project";
641 import { AbsolutePath, DateTimeUtcFromMillis, NonNegativeInt, PositiveInt, RelativePath, statics, } from "@opencode/schema/schema";
642 import { Event } from "@opencode/schema/event";
643-import { Context, Effect, Encoding, Result, Schema, SchemaGetter, Struct } from "effect";
644-import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
645+import * as Base64Url from "effect/encoding/Base64Url";
646+import { Context, Effect, Result, Schema, SchemaGetter, Struct } from "effect";
647+import { HttpApiEndpoint, HttpApiGroup, HttpApiMiddleware, HttpApiSchema, OpenApi } from "effect/http-api";
648 import { ConflictError, LocationNotFoundError, CommandExecutionError, CommandNotFoundError, FormAlreadySettledError, FormInvalidAnswerError, FormNotFoundError, InvalidCursorError, InvalidRequestError, MessageNotFoundError, ServiceUnavailableError, SessionBusyError, SessionNotFoundError, SkillNotFoundError, UnknownError, } from "../errors.js";
649 import { Agent } from "@opencode/schema/agent";
650 import { Skill } from "@opencode/schema/skill";
651@@ -65,9 +66,9 @@ const invalidCursor = "Invalid cursor";
652 export const SessionsCursor = Schema.String.pipe(Schema.brand("SessionsCursor"), statics((schema) => {
653 const make = schema.make.bind(schema);
654 return {
655- make: (input) => make(Encoding.encodeBase64Url(encodeSessionsCursor(input))),
656+ make: (input) => make(Base64Url.encode(encodeSessionsCursor(input))),
657 parse: (input) => Effect.suspend(() => {
658- const result = Encoding.decodeBase64UrlString(input);
659+ const result = Base64Url.decodeString(input);
660 return Result.isFailure(result)
661 ? Effect.fail(invalidCursor)
662 : decodeSessionsCursor(result.success).pipe(Effect.mapError(() => invalidCursor));
663diff --git a/dist/groups/shell.d.ts b/dist/groups/shell.d.ts
664index 55b3455..dd1cfe3 100644
665--- a/dist/groups/shell.d.ts
666+++ b/dist/groups/shell.d.ts
667@@ -1,5 +1,5 @@
668 import { Schema } from "effect";
669-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
670+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
671 import { ShellNotFoundError } from "../errors.js";
672 export declare const ShellGroup: HttpApiGroup.HttpApiGroup<"server.shell", HttpApiEndpoint.HttpApiEndpoint<"shell.list", "GET", "/api/shell", never, Schema.toCodecStringTree<Schema.Struct<{
673 readonly location: Schema.optional<Schema.Struct<{
674diff --git a/dist/groups/shell.js b/dist/groups/shell.js
675index 2a8b690..ca57be9 100644
676--- a/dist/groups/shell.js
677+++ b/dist/groups/shell.js
678@@ -1,7 +1,7 @@
679 import { Shell } from "@opencode/schema/shell";
680 import { Location } from "@opencode/schema/location";
681 import { Schema } from "effect";
682-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
683+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
684 import { ShellNotFoundError } from "../errors.js";
685 import { LocationQuery, locationQueryOpenApi } from "./location.js";
686 export const ShellGroup = HttpApiGroup.make("server.shell")
687diff --git a/dist/groups/skill.d.ts b/dist/groups/skill.d.ts
688index 91a34c5..8a40476 100644
689--- a/dist/groups/skill.d.ts
690+++ b/dist/groups/skill.d.ts
691@@ -1,5 +1,5 @@
692 import { Schema } from "effect";
693-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
694+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
695 export declare const SkillGroup: HttpApiGroup.HttpApiGroup<"server.skill", HttpApiEndpoint.HttpApiEndpoint<"skill.list", "GET", "/api/skill", never, Schema.toCodecStringTree<Schema.Struct<{
696 readonly location: Schema.optional<Schema.Struct<{
697 readonly directory: Schema.optional<Schema.String>;
698diff --git a/dist/groups/skill.js b/dist/groups/skill.js
699index a55e3ed..b419ad2 100644
700--- a/dist/groups/skill.js
701+++ b/dist/groups/skill.js
702@@ -1,7 +1,7 @@
703 import { Skill } from "@opencode/schema/skill";
704 import { Location } from "@opencode/schema/location";
705 import { Schema } from "effect";
706-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
707+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
708 import { LocationQuery, locationQueryOpenApi } from "./location.js";
709 export const SkillGroup = HttpApiGroup.make("server.skill")
710 .add(HttpApiEndpoint.get("skill.list", "/api/skill", {
711diff --git a/dist/groups/vcs.d.ts b/dist/groups/vcs.d.ts
712index 7672482..d129386 100644
713--- a/dist/groups/vcs.d.ts
714+++ b/dist/groups/vcs.d.ts
715@@ -1,5 +1,5 @@
716 import { Schema } from "effect";
717-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
718+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
719 import { ConflictError, InvalidRequestError, ServiceUnavailableError } from "../errors.js";
720 declare const VcsInitNotSupportedError_base: Schema.Class<VcsInitNotSupportedError, Schema.TaggedStruct<"VcsInitNotSupportedError", {
721 readonly providerID: Schema.String;
722diff --git a/dist/groups/vcs.js b/dist/groups/vcs.js
723index 0c80563..436c996 100644
724--- a/dist/groups/vcs.js
725+++ b/dist/groups/vcs.js
726@@ -3,7 +3,7 @@ import { Location } from "@opencode/schema/location";
727 import { NonNegativeInt, PositiveInt, optional } from "@opencode/schema/schema";
728 import { Vcs } from "@opencode/schema/vcs";
729 import { Schema } from "effect";
730-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
731+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
732 import { LocationQuery, locationQueryOpenApi } from "./location.js";
733 import { ConflictError, InvalidRequestError, ServiceUnavailableError } from "../errors.js";
734 const InitQuery = Schema.Struct({
735diff --git a/dist/groups/websearch.d.ts b/dist/groups/websearch.d.ts
736index 6532991..1f59338 100644
737--- a/dist/groups/websearch.d.ts
738+++ b/dist/groups/websearch.d.ts
739@@ -1,6 +1,6 @@
740 import { WebSearch } from "@opencode/schema/websearch";
741 import { Schema } from "effect";
742-import { HttpApiEndpoint, HttpApiGroup } from "effect/unstable/httpapi";
743+import { HttpApiEndpoint, HttpApiGroup } from "effect/http-api";
744 import { InvalidRequestError, ServiceUnavailableError } from "../errors.js";
745 export declare const WebSearchGroup: HttpApiGroup.HttpApiGroup<"server.websearch", HttpApiEndpoint.HttpApiEndpoint<"websearch.providers", "GET", "/api/websearch/provider", never, Schema.toCodecStringTree<Schema.Struct<{
746 readonly location: Schema.optional<Schema.Struct<{
747diff --git a/dist/groups/websearch.js b/dist/groups/websearch.js
748index ef2da5f..d486e9e 100644
749--- a/dist/groups/websearch.js
750+++ b/dist/groups/websearch.js
751@@ -1,7 +1,7 @@
752 import { Location } from "@opencode/schema/location";
753 import { WebSearch } from "@opencode/schema/websearch";
754 import { Schema } from "effect";
755-import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/unstable/httpapi";
756+import { HttpApiEndpoint, HttpApiGroup, OpenApi } from "effect/http-api";
757 import { InvalidRequestError, ServiceUnavailableError } from "../errors.js";
758 import { LocationQuery, locationQueryOpenApi } from "./location.js";
759 export const WebSearchGroup = HttpApiGroup.make("server.websearch")
760diff --git a/dist/groups/worktree.d.ts b/dist/groups/worktree.d.ts
761index 2e680e5..5dd54b6 100644
762--- a/dist/groups/worktree.d.ts
763+++ b/dist/groups/worktree.d.ts
764@@ -1,5 +1,5 @@
765 import { Schema } from "effect";
766-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/unstable/httpapi";
767+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from "effect/http-api";
768 import { ProjectNotFoundError } from "../errors.js";
769 declare const WorktreeError_base: Schema.Class<WorktreeError, Schema.TaggedStruct<"WorktreeError", {
770 readonly name: Schema.Literal<"WorktreeError">;
771diff --git a/dist/groups/worktree.js b/dist/groups/worktree.js
772index 67bed29..0a501b1 100644
773--- a/dist/groups/worktree.js
774+++ b/dist/groups/worktree.js
775@@ -1,6 +1,6 @@
776 import { Worktree } from "@opencode/schema/worktree";
777 import { Schema } from "effect";
778-import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/unstable/httpapi";
779+import { HttpApiEndpoint, HttpApiGroup, HttpApiSchema, OpenApi } from "effect/http-api";
780 import { Project } from "@opencode/schema/project";
781 import { ProjectNotFoundError } from "../errors.js";
782 const root = "/api/worktree";
783diff --git a/dist/middleware/authorization.d.ts b/dist/middleware/authorization.d.ts
784index 2d043d9..f84b1df 100644
785--- a/dist/middleware/authorization.d.ts
786+++ b/dist/middleware/authorization.d.ts
787@@ -1,4 +1,4 @@
788-import { HttpApiMiddleware } from "effect/unstable/httpapi";
789+import { HttpApiMiddleware } from "effect/http-api";
790 import { UnauthorizedError } from "../errors.js";
791 declare const Authorization_base: HttpApiMiddleware.ServiceClass<Authorization, "@opencode/HttpApiAuthorization", {
792 requires: never;
793diff --git a/dist/middleware/authorization.js b/dist/middleware/authorization.js
794index caa2b43..1888d92 100644
795--- a/dist/middleware/authorization.js
796+++ b/dist/middleware/authorization.js
797@@ -1,4 +1,4 @@
798-import { HttpApiMiddleware } from "effect/unstable/httpapi";
799+import { HttpApiMiddleware } from "effect/http-api";
800 import { UnauthorizedError } from "../errors.js";
801 export class Authorization extends HttpApiMiddleware.Service()("@opencode/HttpApiAuthorization", {
802 error: UnauthorizedError,
803diff --git a/dist/middleware/schema-error.d.ts b/dist/middleware/schema-error.d.ts
804index 1391162..4bcdc50 100644
805--- a/dist/middleware/schema-error.d.ts
806+++ b/dist/middleware/schema-error.d.ts
807@@ -1,4 +1,4 @@
808-import { HttpApiMiddleware } from "effect/unstable/httpapi";
809+import { HttpApiMiddleware } from "effect/http-api";
810 import { InvalidRequestError } from "../errors.js";
811 declare const SchemaErrorMiddleware_base: HttpApiMiddleware.ServiceClass<SchemaErrorMiddleware, "@opencode/HttpApiSchemaError", {
812 requires: never;
813diff --git a/dist/middleware/schema-error.js b/dist/middleware/schema-error.js
814index b95e4dd..5d3f9bb 100644
815--- a/dist/middleware/schema-error.js
816+++ b/dist/middleware/schema-error.js
817@@ -1,4 +1,4 @@
818-import { HttpApiMiddleware } from "effect/unstable/httpapi";
819+import { HttpApiMiddleware } from "effect/http-api";
820 import { InvalidRequestError } from "../errors.js";
821 export class SchemaErrorMiddleware extends HttpApiMiddleware.Service()("@opencode/HttpApiSchemaError", { error: InvalidRequestError }) {
822 }
823diff --git a/dist/simulation.d.ts b/dist/simulation.d.ts
824index 36f1d26..36373b1 100644
825--- a/dist/simulation.d.ts
826+++ b/dist/simulation.d.ts
827@@ -1,5 +1,5 @@
828 import { Effect, Schema } from "effect";
829-import { Rpc, RpcGroup } from "effect/unstable/rpc";
830+import { Rpc, RpcGroup } from "effect/rpc";
831 export declare namespace JsonRpc {
832 const RequestFields: {
833 jsonrpc: Schema.Literal<"2.0">;
834diff --git a/dist/simulation.js b/dist/simulation.js
835index 3e52010..ce8f56e 100644
836--- a/dist/simulation.js
837+++ b/dist/simulation.js
838@@ -1,5 +1,5 @@
839 import { Effect, Schema } from "effect";
840-import { Rpc, RpcGroup } from "effect/unstable/rpc";
841+import { Rpc, RpcGroup } from "effect/rpc";
842 const JsonRpcID = Schema.Union([Schema.String, Schema.Number, Schema.Null]);
843 const decodeJson = Schema.decodeUnknownSync(Schema.Json);
844 export var JsonRpc;
patches/@opencode__schema@2.0.23.patch created+155
...@@ -0,0 +1,155 @@
1diff --git a/dist/event.js b/dist/event.js
2index a0f0831..c4d39e2 100644
3--- a/dist/event.js
4+++ b/dist/event.js
5@@ -4,7 +4,7 @@ import { optional } from "./schema.js";
6 import { ascending } from "./identifier.js";
7 import { Location } from "./location.js";
8 import { statics } from "./schema.js";
9-export const ID = Schema.String.check(Schema.isStartsWith("evt_")).pipe(Schema.brand("Event.ID"), statics((schema) => ({ create: () => schema.make("evt_" + ascending()) })));
10+export const ID = Schema.String.check(Schema.isStartingWith("evt_")).pipe(Schema.brand("Event.ID"), statics((schema) => ({ create: () => schema.make("evt_" + ascending()) })));
11 /**
12 * Position in one aggregate's durable log. Values originate from the durable
13 * event envelope and synced markers;
14diff --git a/dist/form.js b/dist/form.js
15index 920d0dd..bd4799d 100644
16--- a/dist/form.js
17+++ b/dist/form.js
18@@ -3,7 +3,7 @@ import { Schema } from "effect";
19 import { ephemeral, inventory } from "./event.js";
20 import { ascending } from "./identifier.js";
21 import { NonNegativeInt, optional, statics } from "./schema.js";
22-const IDSchema = Schema.String.check(Schema.isStartsWith("frm_")).pipe(Schema.brand("Form.ID"));
23+const IDSchema = Schema.String.check(Schema.isStartingWith("frm_")).pipe(Schema.brand("Form.ID"));
24 export const ID = IDSchema.pipe(statics((schema) => ({ create: (id) => schema.make(id ?? "frm_" + ascending()) })));
25 export const Metadata = Schema.Record(Schema.String, Schema.Unknown).annotate({ identifier: "Form.Metadata" });
26 export const Option = Schema.Struct({
27diff --git a/dist/permission.js b/dist/permission.js
28index d004da5..9b3f133 100644
29--- a/dist/permission.js
30+++ b/dist/permission.js
31@@ -5,7 +5,7 @@ import { ephemeral, inventory } from "./event.js";
32 import { ascending } from "./identifier.js";
33 import { SessionID } from "./session-id.js";
34 import { statics } from "./schema.js";
35-export const ID = Schema.String.check(Schema.isStartsWith("per")).pipe(Schema.brand("Permission.ID"), statics((schema) => ({ create: (id) => schema.make(id ?? "per_" + ascending()) })));
36+export const ID = Schema.String.check(Schema.isStartingWith("per")).pipe(Schema.brand("Permission.ID"), statics((schema) => ({ create: (id) => schema.make(id ?? "per_" + ascending()) })));
37 export const Source = Schema.Union([
38 Schema.Struct({
39 type: Schema.Literal("tool"),
40diff --git a/dist/pty.js b/dist/pty.js
41index b69f558..f5872fd 100644
42--- a/dist/pty.js
43+++ b/dist/pty.js
44@@ -4,7 +4,7 @@ import { optional } from "./schema.js";
45 import { ephemeral, inventory } from "./event.js";
46 import { ascending } from "./identifier.js";
47 import { NonNegativeInt, PositiveInt, statics } from "./schema.js";
48-const IDSchema = Schema.String.check(Schema.isStartsWith("pty")).pipe(Schema.brand("PtyID"));
49+const IDSchema = Schema.String.check(Schema.isStartingWith("pty")).pipe(Schema.brand("PtyID"));
50 export const ID = IDSchema.pipe(statics((schema) => {
51 const create = () => schema.make("pty_" + ascending());
52 return {
53diff --git a/dist/schema.js b/dist/schema.js
54index d90b9f6..ab09ced 100644
55--- a/dist/schema.js
56+++ b/dist/schema.js
57@@ -7,7 +7,17 @@ export const optional = (schema) => Schema.optionalKey(schema).pipe(Schema.decod
58 decode: SchemaGetter.passthrough({ strict: false }),
59 encode: SchemaGetter.transformOptional(Option.filter((value) => value !== undefined)),
60 }));
61-export const statics = (methods) => (schema) => Object.assign(schema, methods(schema));
62+export const statics = (methods) => (schema) => {
63+ // Effect 4.0.0 caches `make` as a non-configurable own property on first
64+ // read, so a static that overrides it is defined before anything reads it:
65+ // `methods` sees a view whose `make` comes from a fresh rebuild.
66+ const base = schema.rebuild(schema.ast);
67+ const view = new Proxy(schema, { get: (target, key) => (key === "make" ? base.make : Reflect.get(target, key)) });
68+ for (const [key, value] of Object.entries(methods(view))) {
69+ Object.defineProperty(schema, key, { value, writable: true, enumerable: true, configurable: true });
70+ }
71+ return schema;
72+};
73 export const DateTimeUtcFromMillis = Schema.Finite.pipe(Schema.decodeTo(Schema.DateTimeUtc, {
74 decode: SchemaGetter.transform((value) => DateTime.makeUnsafe(value)),
75 encode: SchemaGetter.transform((value) => DateTime.toEpochMillis(value)),
76diff --git a/dist/session-id.js b/dist/session-id.js
77index fe5f778..03ef1e6 100644
78--- a/dist/session-id.js
79+++ b/dist/session-id.js
80@@ -1,7 +1,7 @@
81 import { Schema } from "effect";
82 import { descending } from "./identifier.js";
83 import { statics } from "./schema.js";
84-export const SessionID = Schema.String.check(Schema.isStartsWith("ses")).pipe(Schema.brand("SessionID"), statics((schema) => {
85+export const SessionID = Schema.String.check(Schema.isStartingWith("ses")).pipe(Schema.brand("SessionID"), statics((schema) => {
86 const create = () => schema.make("ses_" + descending());
87 return {
88 create,
89diff --git a/dist/session-message.js b/dist/session-message.js
90index 9ddeda7..6a0a1e2 100644
91--- a/dist/session-message.js
92+++ b/dist/session-message.js
93@@ -18,7 +18,7 @@ import { Skill as SkillSchema } from "./skill.js";
94 import { Money } from "./money.js";
95 import { Snapshot } from "./snapshot.js";
96 import { TokenUsage } from "./token-usage.js";
97-export const ID = Schema.String.check(Schema.isStartsWith("msg_")).pipe(Schema.brand("Session.Message.ID"), statics((schema) => ({
98+export const ID = Schema.String.check(Schema.isStartingWith("msg_")).pipe(Schema.brand("Session.Message.ID"), statics((schema) => ({
99 create: () => schema.make("msg_" + ascending()),
100 fromEvent: (eventID) => schema.make(eventID.replace(/^evt_/, "msg_")),
101 })));
102diff --git a/dist/shell.js b/dist/shell.js
103index 75b981e..969160a 100644
104--- a/dist/shell.js
105+++ b/dist/shell.js
106@@ -4,7 +4,7 @@ import { optional } from "./schema.js";
107 import { ephemeral, inventory } from "./event.js";
108 import { ascending } from "./identifier.js";
109 import { NonNegativeInt, statics } from "./schema.js";
110-const IDSchema = Schema.String.check(Schema.isStartsWith("sh_")).pipe(Schema.brand("Shell.ID"));
111+const IDSchema = Schema.String.check(Schema.isStartingWith("sh_")).pipe(Schema.brand("Shell.ID"));
112 export const ID = IDSchema.pipe(statics((schema) => {
113 const create = () => schema.make("sh_" + ascending());
114 return {
115diff --git a/dist/v1/permission.js b/dist/v1/permission.js
116index 86af654..d4008e5 100644
117--- a/dist/v1/permission.js
118+++ b/dist/v1/permission.js
119@@ -5,7 +5,7 @@ import { ascending } from "../identifier.js";
120 import { Project } from "../project.js";
121 import { statics } from "../schema.js";
122 import { SessionID } from "../session-id.js";
123-export const ID = Schema.String.check(Schema.isStartsWith("per")).pipe(Schema.brand("PermissionV1.ID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "per_" + ascending()) })));
124+export const ID = Schema.String.check(Schema.isStartingWith("per")).pipe(Schema.brand("PermissionV1.ID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "per_" + ascending()) })));
125 export const Action = Schema.Literals(["allow", "deny", "ask"]).annotate({ identifier: "PermissionV1.Action" });
126 export const Rule = Schema.Struct({ permission: Schema.String, pattern: Schema.String, action: Action }).annotate({
127 identifier: "PermissionV1.Rule",
128diff --git a/dist/v1/session.js b/dist/v1/session.js
129index 867c87b..e06a17b 100644
130--- a/dist/v1/session.js
131+++ b/dist/v1/session.js
132@@ -11,8 +11,8 @@ import { WorkspaceID } from "../workspace-id.js";
133 import { PermissionV1 } from "./permission.js";
134 import { FileDiff } from "../file-diff.js";
135 const Timestamp = Schema.Finite.check(Schema.isGreaterThanOrEqualTo(0));
136-export const MessageID = Schema.String.check(Schema.isStartsWith("msg")).pipe(Schema.brand("SessionV1.MessageID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "msg_" + ascending()) })));
137-export const PartID = Schema.String.check(Schema.isStartsWith("prt")).pipe(Schema.brand("SessionV1.PartID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "prt_" + ascending()) })));
138+export const MessageID = Schema.String.check(Schema.isStartingWith("msg")).pipe(Schema.brand("SessionV1.MessageID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "msg_" + ascending()) })));
139+export const PartID = Schema.String.check(Schema.isStartingWith("prt")).pipe(Schema.brand("SessionV1.PartID"), statics((schema) => ({ ascending: (id) => schema.make(id ?? "prt_" + ascending()) })));
140 const namedError = (name, fields) => {
141 const schema = Schema.Struct({ name: Schema.Literal(name), data: Schema.Struct(fields) }).annotate({
142 identifier: name,
143diff --git a/dist/workspace-id.js b/dist/workspace-id.js
144index 4bed474..4ec8671 100644
145--- a/dist/workspace-id.js
146+++ b/dist/workspace-id.js
147@@ -1,7 +1,7 @@
148 import { Schema } from "effect";
149 import { ascending } from "./identifier.js";
150 import { statics } from "./schema.js";
151-export const WorkspaceID = Schema.String.check(Schema.isStartsWith("wrk")).pipe(Schema.brand("Workspace.ID"), statics((schema) => {
152+export const WorkspaceID = Schema.String.check(Schema.isStartingWith("wrk")).pipe(Schema.brand("Workspace.ID"), statics((schema) => {
153 const create = () => schema.make("wrk_" + ascending());
154 return {
155 ascending: (id) => {
patches/alchemy@2.0.0-beta.79.patch deleted-110
...@@ -1,110 +0,0 @@
1diff --git a/lib/Drizzle/Postgres.d.ts b/lib/Drizzle/Postgres.d.ts
2index ddba2e1e6ae85ca24e626ce2d7ea2bde92ef6f86..31335e2039a52ad2fe7a12d6bc820dbb04fe15a8 100644
3--- a/lib/Drizzle/Postgres.d.ts
4+++ b/lib/Drizzle/Postgres.d.ts
5@@ -4,6 +4,11 @@ import type { EffectPgDatabase } from "drizzle-orm/effect-postgres";
6 import type { EffectDrizzlePgConfig } from "drizzle-orm/pg-core/effect/utils";
7 import * as Effect from "effect/Effect";
8 import type * as Redacted from "effect/Redacted";
9+/**
10+ * `@effect/sql-pg` client settings that cannot be carried in the URL, e.g.
11+ * `prepare: false` for transaction-mode poolers such as Hyperdrive.
12+ */
13+export type PostgresClientOptions = Omit<PgClient.PgPoolConfig, "url" | "ssl">;
14 /**
15 * Open a Drizzle/Postgres database from a connection URL using the
16 * `drizzle-orm/effect-postgres` integration.
17@@ -39,7 +44,7 @@ import type * as Redacted from "effect/Redacted";
18 *
19 * @binding
20 */
21-export declare const Postgres: <TRelations extends AnyRelations = EmptyRelations, E = never, R = never>(connectionString: Effect.Effect<Redacted.Redacted<string>, E, R>, config?: EffectDrizzlePgConfig<TRelations>) => Effect.Effect<EffectPgDatabase<TRelations> & {
22+export declare const Postgres: <TRelations extends AnyRelations = EmptyRelations, E = never, R = never>(connectionString: Effect.Effect<Redacted.Redacted<string>, E, R>, config?: EffectDrizzlePgConfig<TRelations>, pgClient?: PostgresClientOptions) => Effect.Effect<EffectPgDatabase<TRelations> & {
23 $client: PgClient.PgClient;
24 }, never, never>;
25 //# sourceMappingURL=Postgres.d.ts.map
26\ No newline at end of file
27diff --git a/lib/Drizzle/Postgres.js b/lib/Drizzle/Postgres.js
28index fdd0942fc9da4f220e135bd9ce6c891dd837a948..e7452288b6b92e0aeacc26f37a10e85a3ba232e5 100644
29--- a/lib/Drizzle/Postgres.js
30+++ b/lib/Drizzle/Postgres.js
31@@ -38,13 +38,13 @@ import { proxyChain } from "../Util/proxy-chain.js";
32 *
33 * @binding
34 */
35-export const Postgres = (connectionString, config) => Effect.map(makeExecutionMemo(Effect.gen(function* () {
36+export const Postgres = (connectionString, config, pgClient) => Effect.map(makeExecutionMemo(Effect.gen(function* () {
37 const [PgClient, PgDrizzle] = yield* Effect.promise(() => Promise.all([
38 import("@effect/sql-pg/PgClient"),
39 import("drizzle-orm/effect-postgres"),
40 ]));
41 const url = yield* connectionString;
42- const pgCtx = yield* Layer.build(PgClient.layer(resolveConnectionOptions(url)));
43+ const pgCtx = yield* Layer.build(PgClient.layer({ ...pgClient, ...resolveConnectionOptions(url) }));
44 return yield* PgDrizzle.makeWithDefaults(config).pipe(Effect.provideContext(pgCtx));
45 })), (db) => proxyChain(db));
46 //# sourceMappingURL=Postgres.js.map
47\ No newline at end of file
48diff --git a/lib/Test/Vitest.js b/lib/Test/Vitest.js
49index 0ecf9ccff01bb6556bf3e471d5a93254d16224a7..c0f1237e6a98e698718b0bbde5de8eb58c859e8e 100644
50--- a/lib/Test/Vitest.js
51+++ b/lib/Test/Vitest.js
52@@ -3,7 +3,7 @@ import { it } from "@effect/vitest";
53 import * as Effect from "effect/Effect";
54 import * as Exit from "effect/Exit";
55 import * as Scope from "effect/Scope";
56-import { afterAll as vitestAfterAll, afterEach as vitestAfterEach, beforeAll as vitestBeforeAll, beforeEach as vitestBeforeEach, } from "vitest";
57+import { afterAll as vitestAfterAll, afterEach as vitestAfterEach, beforeAll as vitestBeforeAll, beforeEach as vitestBeforeEach, } from "vite-plus/test";
58 import * as Core from "./Core.js";
59 export { executeWhenReady, getWhenReady, guardContentType, guardedFetchLayer, rpcClientLayer, WorkerNotReady, } from "./Http.js";
60 export const defaultStage = Core.defaultStage;
61diff --git a/src/Drizzle/Postgres.ts b/src/Drizzle/Postgres.ts
62index 2d138914e834d5c47078c42b756129897506f51d..61ae549db6ee20e8809295e8d1543b3bc78f63ad 100644
63--- a/src/Drizzle/Postgres.ts
64+++ b/src/Drizzle/Postgres.ts
65@@ -48,6 +48,15 @@ import { proxyChain } from "../Util/proxy-chain.ts";
66 * @binding
67 */
68
69+/**
70+ * `@effect/sql-pg` client settings that cannot be carried in the URL, e.g.
71+ * `prepare: false` for transaction-mode poolers such as Hyperdrive.
72+ */
73+export type PostgresClientOptions = Omit<
74+ PgClient.PgPoolConfig,
75+ "url" | "ssl"
76+>;
77+
78 export const Postgres = <
79 TRelations extends AnyRelations = EmptyRelations,
80 E = never,
81@@ -55,6 +64,7 @@ export const Postgres = <
82 >(
83 connectionString: Effect.Effect<Redacted.Redacted<string>, E, R>,
84 config?: EffectDrizzlePgConfig<TRelations>,
85+ pgClient?: PostgresClientOptions,
86 ) =>
87 Effect.map(
88 makeExecutionMemo(
89@@ -67,7 +77,7 @@ export const Postgres = <
90 );
91 const url = yield* connectionString;
92 const pgCtx = yield* Layer.build(
93- PgClient.layer(resolveConnectionOptions(url)),
94+ PgClient.layer({ ...pgClient, ...resolveConnectionOptions(url) }),
95 );
96 return yield* PgDrizzle.makeWithDefaults(config).pipe(
97 Effect.provideContext(pgCtx),
98diff --git a/src/Test/Vitest.ts b/src/Test/Vitest.ts
99index c321e6d4924d0f6b3ae53292a12af88167692ccb..673929a81d066bdd6a2dd94e9c1d95bb69f3e3cd 100644
100--- a/src/Test/Vitest.ts
101+++ b/src/Test/Vitest.ts
102@@ -8,7 +8,7 @@ import {
103 afterEach as vitestAfterEach,
104 beforeAll as vitestBeforeAll,
105 beforeEach as vitestBeforeEach,
106-} from "vitest";
107+} from "vite-plus/test";
108
109 import type { AlchemyContext } from "../AlchemyContext.ts";
110 import type { CompiledStack } from "../Stack.ts";
patches/alchemy@2.0.0-beta.80.patch created+110
...@@ -0,0 +1,110 @@
1diff --git a/lib/Drizzle/Postgres.d.ts b/lib/Drizzle/Postgres.d.ts
2index ddba2e1..31335e2 100644
3--- a/lib/Drizzle/Postgres.d.ts
4+++ b/lib/Drizzle/Postgres.d.ts
5@@ -4,6 +4,11 @@ import type { EffectPgDatabase } from "drizzle-orm/effect-postgres";
6 import type { EffectDrizzlePgConfig } from "drizzle-orm/pg-core/effect/utils";
7 import * as Effect from "effect/Effect";
8 import type * as Redacted from "effect/Redacted";
9+/**
10+ * `@effect/sql-pg` client settings that cannot be carried in the URL, e.g.
11+ * `prepare: false` for transaction-mode poolers such as Hyperdrive.
12+ */
13+export type PostgresClientOptions = Omit<PgClient.PgPoolConfig, "url" | "ssl">;
14 /**
15 * Open a Drizzle/Postgres database from a connection URL using the
16 * `drizzle-orm/effect-postgres` integration.
17@@ -39,7 +44,7 @@ import type * as Redacted from "effect/Redacted";
18 *
19 * @binding
20 */
21-export declare const Postgres: <TRelations extends AnyRelations = EmptyRelations, E = never, R = never>(connectionString: Effect.Effect<Redacted.Redacted<string>, E, R>, config?: EffectDrizzlePgConfig<TRelations>) => Effect.Effect<EffectPgDatabase<TRelations> & {
22+export declare const Postgres: <TRelations extends AnyRelations = EmptyRelations, E = never, R = never>(connectionString: Effect.Effect<Redacted.Redacted<string>, E, R>, config?: EffectDrizzlePgConfig<TRelations>, pgClient?: PostgresClientOptions) => Effect.Effect<EffectPgDatabase<TRelations> & {
23 $client: PgClient.PgClient;
24 }, never, never>;
25 //# sourceMappingURL=Postgres.d.ts.map
26\ No newline at end of file
27diff --git a/lib/Drizzle/Postgres.js b/lib/Drizzle/Postgres.js
28index fdd0942..e745228 100644
29--- a/lib/Drizzle/Postgres.js
30+++ b/lib/Drizzle/Postgres.js
31@@ -38,13 +38,13 @@ import { proxyChain } from "../Util/proxy-chain.js";
32 *
33 * @binding
34 */
35-export const Postgres = (connectionString, config) => Effect.map(makeExecutionMemo(Effect.gen(function* () {
36+export const Postgres = (connectionString, config, pgClient) => Effect.map(makeExecutionMemo(Effect.gen(function* () {
37 const [PgClient, PgDrizzle] = yield* Effect.promise(() => Promise.all([
38 import("@effect/sql-pg/PgClient"),
39 import("drizzle-orm/effect-postgres"),
40 ]));
41 const url = yield* connectionString;
42- const pgCtx = yield* Layer.build(PgClient.layer(resolveConnectionOptions(url)));
43+ const pgCtx = yield* Layer.build(PgClient.layer({ ...pgClient, ...resolveConnectionOptions(url) }));
44 return yield* PgDrizzle.makeWithDefaults(config).pipe(Effect.provideContext(pgCtx));
45 })), (db) => proxyChain(db));
46 //# sourceMappingURL=Postgres.js.map
47\ No newline at end of file
48diff --git a/lib/Test/Vitest.js b/lib/Test/Vitest.js
49index bada542..f135b00 100644
50--- a/lib/Test/Vitest.js
51+++ b/lib/Test/Vitest.js
52@@ -3,7 +3,7 @@ import { it } from "@effect/vitest";
53 import * as Effect from "effect/Effect";
54 import * as Exit from "effect/Exit";
55 import * as Scope from "effect/Scope";
56-import { afterAll as vitestAfterAll, afterEach as vitestAfterEach, beforeAll as vitestBeforeAll, beforeEach as vitestBeforeEach, } from "vitest";
57+import { afterAll as vitestAfterAll, afterEach as vitestAfterEach, beforeAll as vitestBeforeAll, beforeEach as vitestBeforeEach, } from "vite-plus/test";
58 import * as Core from "./Core.js";
59 export { executeWhenReady, getWhenReady, guardContentType, guardedFetchLayer, rpcClientLayer, WorkerNotReady, } from "./Http.js";
60 export const defaultStage = Core.defaultStage;
61diff --git a/src/Drizzle/Postgres.ts b/src/Drizzle/Postgres.ts
62index 2d13891..61ae549 100644
63--- a/src/Drizzle/Postgres.ts
64+++ b/src/Drizzle/Postgres.ts
65@@ -48,6 +48,15 @@ import { proxyChain } from "../Util/proxy-chain.ts";
66 * @binding
67 */
68
69+/**
70+ * `@effect/sql-pg` client settings that cannot be carried in the URL, e.g.
71+ * `prepare: false` for transaction-mode poolers such as Hyperdrive.
72+ */
73+export type PostgresClientOptions = Omit<
74+ PgClient.PgPoolConfig,
75+ "url" | "ssl"
76+>;
77+
78 export const Postgres = <
79 TRelations extends AnyRelations = EmptyRelations,
80 E = never,
81@@ -55,6 +64,7 @@ export const Postgres = <
82 >(
83 connectionString: Effect.Effect<Redacted.Redacted<string>, E, R>,
84 config?: EffectDrizzlePgConfig<TRelations>,
85+ pgClient?: PostgresClientOptions,
86 ) =>
87 Effect.map(
88 makeExecutionMemo(
89@@ -67,7 +77,7 @@ export const Postgres = <
90 );
91 const url = yield* connectionString;
92 const pgCtx = yield* Layer.build(
93- PgClient.layer(resolveConnectionOptions(url)),
94+ PgClient.layer({ ...pgClient, ...resolveConnectionOptions(url) }),
95 );
96 return yield* PgDrizzle.makeWithDefaults(config).pipe(
97 Effect.provideContext(pgCtx),
98diff --git a/src/Test/Vitest.ts b/src/Test/Vitest.ts
99index 7dd3576..0bcfc4d 100644
100--- a/src/Test/Vitest.ts
101+++ b/src/Test/Vitest.ts
102@@ -8,7 +8,7 @@ import {
103 afterEach as vitestAfterEach,
104 beforeAll as vitestBeforeAll,
105 beforeEach as vitestBeforeEach,
106-} from "vitest";
107+} from "vite-plus/test";
108
109 import type { AlchemyContext } from "../AlchemyContext.ts";
110 import type { CompiledStack } from "../Stack.ts";
patches/effect@4.0.0-rc.115.patch deleted-353
...@@ -1,353 +0,0 @@
1diff --git a/dist/unstable/ai/McpServer.js b/dist/unstable/ai/McpServer.js
2index e8b9be4..9cffc5c 100644
3--- a/dist/unstable/ai/McpServer.js
4+++ b/dist/unstable/ai/McpServer.js
5@@ -450,6 +450,26 @@ const runWithProtocolState = /*#__PURE__*/Effect.fnUntraced(function* (options,
6 const defaultLogLevel = yield* CurrentLogLevel;
7 const isHttp = Option.isSome(yield* Effect.serviceOption(HttpRouter.HttpRouter));
8 const sessions = protocolState.sessions;
9+ if (isHttp && options.path !== undefined) {
10+ const router = yield* HttpRouter.HttpRouter;
11+ yield* router.add("DELETE", options.path, Effect.gen(function* () {
12+ const request = yield* HttpServerRequest.HttpServerRequest;
13+ const sessionId = request.headers[MCP_SESSION_ID_HEADER];
14+ if (sessionId === undefined) {
15+ return HttpServerResponse.empty({
16+ status: 400
17+ });
18+ }
19+ if (!sessions.bySessionId.delete(sessionId)) {
20+ return HttpServerResponse.empty({
21+ status: 404
22+ });
23+ }
24+ return HttpServerResponse.empty({
25+ status: 204
26+ });
27+ }));
28+ }
29 const clientProtocols = new Map();
30 const activeRequests = new Map();
31 const clientProfiles = new Map();
32@@ -948,7 +968,7 @@ export const layerHttp = options => {
33 const methodNotAllowed = request => isAllowedMcpOrigin(request, options.allowedOrigins) ? Effect.succeed(methodNotAllowedResponse) : Effect.succeed(HttpServerResponse.empty({
34 status: 403
35 }));
36- const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("DELETE", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
37+ const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
38 return Layer.merge(layerWithProtocolState(options), routes).pipe(Layer.provide(layerMcpProtocolHttp(options)), Layer.provide(protocolState), Layer.provide(RpcSerialization.layerJsonRpc()));
39 };
40 const layerMcpProtocolHttp = options => Layer.effect(RpcServer.Protocol)(Effect.gen(function* () {
41diff --git a/dist/unstable/http/HttpClientResponse.js b/dist/unstable/http/HttpClientResponse.js
42index 59a2b12..ef54250 100644
43--- a/dist/unstable/http/HttpClientResponse.js
44+++ b/dist/unstable/http/HttpClientResponse.js
45@@ -180,7 +180,7 @@ class WebHttpClientResponse extends Inspectable.Class {
46 if (this.cachedCookies) {
47 return this.cachedCookies;
48 }
49- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie());
50+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []);
51 }
52 get remoteAddress() {
53 return Option.none();
54diff --git a/dist/unstable/rpc/RpcClient.d.ts b/dist/unstable/rpc/RpcClient.d.ts
55index 1a471aa..7233784 100644
56--- a/dist/unstable/rpc/RpcClient.d.ts
57+++ b/dist/unstable/rpc/RpcClient.d.ts
58@@ -2,6 +2,7 @@ import * as Cause from "../../Cause.ts";
59 import * as Context from "../../Context.ts";
60 import type * as Duration from "../../Duration.ts";
61 import * as Effect from "../../Effect.ts";
62+import * as Exit from "../../Exit.ts";
63 import * as Layer from "../../Layer.ts";
64 import * as Queue from "../../Queue.ts";
65 import * as Schedule from "../../Schedule.ts";
66@@ -280,9 +281,40 @@ export declare const layerProtocolWorker: (options: {
67 readonly targetUtilization?: number | undefined;
68 readonly timeToLive: Duration.Input;
69 }) => Layer.Layer<Protocol, WorkerError, Worker.WorkerPlatform | Worker.Spawner>;
70+declare const RequestHooks_base: Context.ServiceClass<RequestHooks, "effect/rpc/RpcClient/RequestHooks", {
71+ readonly onRequestStart?: ((info: {
72+ readonly id: RequestId;
73+ readonly tag: string;
74+ readonly stream: boolean;
75+ }) => Effect.Effect<void>) | undefined;
76+ readonly onRequestChunk?: ((info: {
77+ readonly id: RequestId;
78+ readonly tag: string;
79+ readonly chunkCount: number;
80+ }) => Effect.Effect<void>) | undefined;
81+ readonly onRequestExit?: ((info: {
82+ readonly id: RequestId;
83+ readonly tag: string;
84+ readonly stream: boolean;
85+ readonly exit: Exit.Exit<unknown, unknown>;
86+ }) => Effect.Effect<void>) | undefined;
87+ readonly onRequestInterrupt?: ((info: {
88+ readonly id: RequestId;
89+ readonly tag?: string | undefined;
90+ }) => Effect.Effect<void>) | undefined;
91+}>;
92+/**
93+ * @since 4.0.0
94+ * @category RequestHooks
95+ */
96+export declare class RequestHooks extends RequestHooks_base {
97+}
98 declare const ConnectionHooks_base: Context.ServiceClass<ConnectionHooks, "effect/rpc/RpcClient/ConnectionHooks", {
99 readonly onConnect: Effect.Effect<void>;
100 readonly onDisconnect: Effect.Effect<void>;
101+ readonly onPing?: Effect.Effect<void> | undefined;
102+ readonly onPong?: Effect.Effect<void> | undefined;
103+ readonly onPingTimeout?: Effect.Effect<void> | undefined;
104 }>;
105 /**
106 * Represents optional client protocol hooks that run when a transport connects
107diff --git a/dist/unstable/rpc/RpcClient.js b/dist/unstable/rpc/RpcClient.js
108index c586c60..49886d8 100644
109--- a/dist/unstable/rpc/RpcClient.js
110+++ b/dist/unstable/rpc/RpcClient.js
111@@ -49,6 +49,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
112 const services = yield* Effect.context();
113 const scope = Context.get(services, Scope.Scope);
114 const entries = new Map();
115+ const hooks = yield* Effect.serviceOption(RequestHooks);
116 let isShutdown = false;
117 yield* Scope.addFinalizer(scope, Effect.withFiber(parent => {
118 isShutdown = true;
119@@ -86,6 +87,11 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
120 return Effect.interrupt;
121 }
122 const id = generateRequestId();
123+ const onStart = Option.isSome(hooks) && hooks.value.onRequestStart ? hooks.value.onRequestStart({
124+ id,
125+ tag: rpc._tag,
126+ stream: false
127+ }) : Effect.void;
128 const send = middleware(message => options.onFromClient({
129 message,
130 context,
131@@ -103,7 +109,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
132 headers: Headers.merge(parentFiber.getRef(CurrentHeaders), headers)
133 });
134 if (discard) {
135- return send;
136+ return onStart.pipe(Effect.andThen(send));
137 }
138 let fiber;
139 return Effect.onInterrupt(Effect.callback(resume => {
140@@ -121,7 +127,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
141 }
142 };
143 entries.set(id, entry);
144- fiber = send.pipe(span ? Effect.withParentSpan(span, {
145+ fiber = onStart.pipe(Effect.andThen(send), span ? Effect.withParentSpan(span, {
146 captureStackTrace: false
147 }) : identity, Effect.runForkWith(parentFiber.context));
148 fiber.addObserver(exit => {
149@@ -130,8 +136,9 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
150 }
151 });
152 }), interruptors => {
153+ const entry = entries.get(id);
154 entries.delete(id);
155- return Effect.andThen(Fiber.interrupt(fiber), sendInterrupt(id, Array.from(interruptors), context));
156+ return Effect.andThen(Fiber.interrupt(fiber), sendInterrupt(id, Array.from(interruptors), context, entry?.rpc._tag));
157 });
158 });
159 const onStreamRequest = Effect.fnUntraced(function* (rpc, middleware, payload, headers, streamBufferSize, context) {
160@@ -143,11 +150,18 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
161 });
162 const fiber = Fiber.getCurrent();
163 const id = generateRequestId();
164+ const onStart = Option.isSome(hooks) && hooks.value.onRequestStart ? hooks.value.onRequestStart({
165+ id,
166+ tag: rpc._tag,
167+ stream: true
168+ }) : Effect.void;
169 const scope = Context.getUnsafe(fiber.context, Scope.Scope);
170 yield* Scope.addFinalizerExit(scope, exit => {
171- if (!entries.has(id)) return Effect.void;
172+ const entry = entries.get(id);
173+ if (!entry) return Effect.void;
174 entries.delete(id);
175- return sendInterrupt(id, Exit.isFailure(exit) ? Array.from(Cause.interruptors(exit.cause)) : [], context);
176+ // Shutting down releases a socket reader blocked offering into this full buffer.
177+ return Queue.shutdown(entry.queue).pipe(Effect.andThen(sendInterrupt(id, Exit.isFailure(exit) ? Array.from(Cause.interruptors(exit.cause)) : [], context, entry.rpc._tag)));
178 });
179 const queue = yield* Queue.bounded(streamBufferSize);
180 entries.set(id, {
181@@ -155,9 +169,10 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
182 rpc,
183 queue,
184 scope,
185- context
186+ context,
187+ chunkCount: 0
188 });
189- yield* middleware(message => options.onFromClient({
190+ yield* onStart.pipe(Effect.andThen(middleware(message => options.onFromClient({
191 message,
192 context,
193 discard: false
194@@ -172,7 +187,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
195 sampled: span.sampled
196 } : {}),
197 headers: Headers.merge(fiber.getRef(CurrentHeaders), headers)
198- }).pipe(span ? Effect.withParentSpan(span, {
199+ }))).pipe(span ? Effect.withParentSpan(span, {
200 captureStackTrace: false
201 }) : identity, Effect.catchCause(error => Queue.failCause(queue, error)), Effect.interruptible, Effect.forkIn(scope, {
202 startImmediately: true
203@@ -202,7 +217,10 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
204 });
205 };
206 };
207- const sendInterrupt = (requestId, interruptors, context) => Effect.callback(resume => {
208+ const sendInterrupt = (requestId, interruptors, context, tag) => (Option.isSome(hooks) && hooks.value.onRequestInterrupt ? hooks.value.onRequestInterrupt({
209+ id: requestId,
210+ tag
211+ }) : Effect.void).pipe(Effect.andThen(Effect.callback(resume => {
212 const parentFiber = Fiber.getCurrent();
213 const fiber = options.onFromClient({
214 message: {
215@@ -216,7 +234,7 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
216 fiber.addObserver(() => {
217 resume(Effect.void);
218 });
219- });
220+ })));
221 const write = message => {
222 switch (message._tag) {
223 case "Chunk":
224@@ -224,7 +242,13 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
225 const requestId = message.requestId;
226 const entry = entries.get(requestId);
227 if (!entry || entry._tag !== "Queue") return Effect.void;
228- return Queue.offerAll(entry.queue, message.values).pipe(supportsAck ? Effect.flatMap(() => options.onFromClient({
229+ const chunkCount = entry.chunkCount += message.values.length;
230+ const onChunk = Option.isSome(hooks) && hooks.value.onRequestChunk ? hooks.value.onRequestChunk({
231+ id: requestId,
232+ tag: entry.rpc._tag,
233+ chunkCount
234+ }) : Effect.void;
235+ return Queue.offerAll(entry.queue, message.values).pipe(Effect.andThen(onChunk), supportsAck ? Effect.flatMap(() => options.onFromClient({
236 message: {
237 _tag: "Ack",
238 requestId: message.requestId
239@@ -239,11 +263,18 @@ export const makeNoSerialization = /*#__PURE__*/Effect.fnUntraced(function* (gro
240 const entry = entries.get(requestId);
241 if (!entry) return Effect.void;
242 entries.delete(requestId);
243+ const onExit = Option.isSome(hooks) && hooks.value.onRequestExit ? hooks.value.onRequestExit({
244+ id: requestId,
245+ tag: entry.rpc._tag,
246+ stream: entry._tag === "Queue",
247+ exit: message.exit
248+ }) : Effect.void;
249 if (entry._tag === "Effect") {
250- entry.resume(message.exit);
251- return Effect.void;
252+ return onExit.pipe(Effect.andThen(Effect.sync(() => {
253+ entry.resume(message.exit);
254+ })));
255 }
256- return message.exit._tag === "Success" ? Queue.end(entry.queue) : Queue.failCause(entry.queue, message.exit.cause);
257+ return onExit.pipe(Effect.andThen(message.exit._tag === "Success" ? Queue.end(entry.queue) : Queue.failCause(entry.queue, message.exit.cause)));
258 }
259 case "Defect":
260 {
261@@ -598,7 +629,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
262 // `parser` is replaced on every connect, and a stateful serialization
263 // encodes against the connection it is writing to, so the ping is encoded
264 // when it is sent rather than once up front.
265- const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing))));
266+ const pinger = yield* makePinger(Effect.suspend(() => writer.write(parser.encode(constPing))), Option.isSome(hooks) ? hooks.value : undefined);
267 let currentError;
268 const broadcast = response => Effect.forEach(clientIds, clientId => writeResponse(clientId, response));
269 const broadcastError = error => {
270@@ -618,8 +649,7 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
271 body: () => {
272 const response = responses[i++];
273 if (response._tag === "Pong") {
274- pinger.onPong();
275- return Effect.void;
276+ return pinger.onPong;
277 }
278 if (Object.hasOwn(response, "requestId")) {
279 const requestId = response.requestId;
280@@ -664,12 +694,12 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
281 yield* processData(frames[i]);
282 }
283 }
284- }).pipe(Effect.scoped, Effect.raceFirst(Effect.flatMap(pinger.timeout, () => Effect.fail(new Socket.SocketError({
285+ }).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({
286 reason: new Socket.SocketOpenError({
287 kind: "Timeout",
288 cause: new Error("ping timeout")
289 })
290- })))));
291+ })))))));
292 }).pipe(Option.isSome(hooks) ? Effect.ensuring(hooks.value.onDisconnect) : identity, Effect.tapCause(cause => {
293 const error = Cause.findError(cause);
294 const hasError = Result.isSuccess(error);
295@@ -710,20 +740,28 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
296 };
297 }));
298 const defaultRetryPolicy = /*#__PURE__*/Schedule.min([/*#__PURE__*/Schedule.exponential(500, 1.5), /*#__PURE__*/Schedule.spaced(5000)]);
299-const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing) {
300+const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing, hooks) {
301 let recievedPong = true;
302+ let missedPongs = 0;
303 const latch = Latch.makeUnsafe();
304 const reset = () => {
305 recievedPong = true;
306+ missedPongs = 0;
307 latch.closeUnsafe();
308 };
309- const onPong = () => {
310+ const onPong = Effect.sync(() => {
311 recievedPong = true;
312- };
313+ missedPongs = 0;
314+ }).pipe(Effect.andThen(hooks?.onPong ?? Effect.void));
315 yield* Effect.suspend(() => {
316- if (!recievedPong) return latch.open;
317+ if (!recievedPong) {
318+ missedPongs += 1;
319+ if (missedPongs >= 3) return latch.open;
320+ return (hooks?.onPing ?? Effect.void).pipe(Effect.andThen(writePing));
321+ }
322 recievedPong = false;
323- return writePing;
324+ missedPongs = 0;
325+ return (hooks?.onPing ?? Effect.void).pipe(Effect.andThen(writePing));
326 }).pipe(Effect.delay("5 seconds"), Effect.ignore, Effect.forever, Effect.interruptible, Effect.forkScoped);
327 return {
328 timeout: latch.await,
329@@ -874,6 +912,11 @@ export const makeProtocolWorker = options => Protocol.make(Effect.fnUntraced(fun
330 * @since 4.0.0
331 */
332 export const layerProtocolWorker = /*#__PURE__*/flow(makeProtocolWorker, /*#__PURE__*/Layer.effect(Protocol));
333+/**
334+ * @since 4.0.0
335+ * @category RequestHooks
336+ */
337+export class RequestHooks extends /*#__PURE__*/Context.Service()("effect/rpc/RpcClient/RequestHooks") {}
338 /**
339 * Represents optional client protocol hooks that run when a transport connects
340 * and disconnects.
341diff --git a/src/unstable/http/HttpClientResponse.ts b/src/unstable/http/HttpClientResponse.ts
342index cbf047f..c7d5cc2 100644
343--- a/src/unstable/http/HttpClientResponse.ts
344+++ b/src/unstable/http/HttpClientResponse.ts
345@@ -321,7 +321,7 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
346 if (this.cachedCookies) {
347 return this.cachedCookies
348 }
349- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie())
350+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? [])
351 }
352
353 get remoteAddress(): Option.Option<string> {
patches/effect@4.0.1.patch created+112
...@@ -0,0 +1,112 @@
1diff --git a/dist/ai/McpServer.js b/dist/ai/McpServer.js
2index 2da5941..9fada51 100644
3--- a/dist/ai/McpServer.js
4+++ b/dist/ai/McpServer.js
5@@ -1093,7 +1093,7 @@ export const layerHttp = options => {
6 const methodNotAllowed = request => isAllowedMcpOrigin(request, options.allowedOrigins) ? Effect.succeed(methodNotAllowedResponse) : Effect.succeed(HttpServerResponse.empty({
7 status: 403
8 }));
9- const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("DELETE", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
10+ const routes = Layer.mergeAll(HttpRouter.add("GET", options.path, methodNotAllowed), HttpRouter.add("PUT", options.path, methodNotAllowed), HttpRouter.add("PATCH", options.path, methodNotAllowed), HttpRouter.add("OPTIONS", options.path, methodNotAllowed));
11 return Layer.merge(layerWithRuntime(options, "http"), routes).pipe(Layer.provide(layerMcpProtocolHttp(options)), Layer.provide(runtime), Layer.provide(RpcSerialization.layerJsonRpc()));
12 };
13 const layerMcpProtocolHttp = options => Layer.effect(RpcServer.Protocol)(Effect.gen(function* () {
14@@ -1136,6 +1136,17 @@ const layerMcpProtocolHttp = options => Layer.effect(RpcServer.Protocol)(Effect.
15 }))) : response;
16 });
17 });
18+ yield* router.add("DELETE", options.path, request => {
19+ if (!isAllowedMcpOrigin(request, options.allowedOrigins)) {
20+ return Effect.succeed(HttpServerResponse.empty({
21+ status: 403
22+ }));
23+ }
24+ const sessionId = request.headers[MCP_SESSION_ID_HEADER];
25+ return Effect.succeed(HttpServerResponse.empty({
26+ status: sessionId === undefined ? 400 : runtime.terminateSession(sessionId) ? 204 : 404
27+ }));
28+ });
29 return protocol;
30 }));
31 const mcpHttpSerialization = /*#__PURE__*/(() => {
32diff --git a/dist/ai/internal/mcpRuntime.js b/dist/ai/internal/mcpRuntime.js
33index 06370fd..baa945b 100644
34--- a/dist/ai/internal/mcpRuntime.js
35+++ b/dist/ai/internal/mcpRuntime.js
36@@ -336,6 +336,7 @@ export const make = /*#__PURE__*/Effect.fnUntraced(function* (protocols) {
37 },
38 effectLogLevel: (clientId, headers, fallback) => stateful?.effectLogLevel(clientId, headers, fallback) ?? fallback,
39 disconnect: clientId => stateful?.disconnect(clientId),
40+ terminateSession: sessionId => stateful?.terminateSession(sessionId) ?? false,
41 deliveryClientIds: () => stateful?.initializedClientIds() ?? [],
42 canDeliver: (clientId, headers, notification, fallback) => stateful?.canDeliver(clientId, headers, notification, fallback) ?? true,
43 installHandlers: Effect.fnUntraced(function* (options) {
44diff --git a/dist/ai/internal/mcpStatefulRuntime.js b/dist/ai/internal/mcpStatefulRuntime.js
45index 9471bdf..4558603 100644
46--- a/dist/ai/internal/mcpStatefulRuntime.js
47+++ b/dist/ai/internal/mcpStatefulRuntime.js
48@@ -46,6 +46,7 @@ export const make = () => {
49 },
50 resolve: resolveSession,
51 resolveSessionId: sessionId => bySessionId.get(sessionId),
52+ terminateSession: sessionId => bySessionId.delete(sessionId),
53 setLogLevel: (level, clientId, headers) => Effect.sync(() => {
54 const session = resolveSession(clientId, headers);
55 if (session !== undefined) {
56diff --git a/dist/http/HttpClientResponse.js b/dist/http/HttpClientResponse.js
57index 42fba67..2b4981b 100644
58--- a/dist/http/HttpClientResponse.js
59+++ b/dist/http/HttpClientResponse.js
60@@ -195,7 +195,7 @@ class WebHttpClientResponse extends Inspectable.Class {
61 if (this.cachedCookies) {
62 return this.cachedCookies;
63 }
64- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie());
65+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? []);
66 }
67 get remoteAddress() {
68 return Option.none();
69diff --git a/dist/rpc/RpcClient.js b/dist/rpc/RpcClient.js
70index 8af2e2e..65acae4 100644
71--- a/dist/rpc/RpcClient.js
72+++ b/dist/rpc/RpcClient.js
73@@ -726,17 +726,25 @@ export const makeProtocolSocket = options => Protocol.make(Effect.fnUntraced(fun
74 const defaultRetryPolicy = /*#__PURE__*/Schedule.min([/*#__PURE__*/Schedule.exponential(500, 1.5), /*#__PURE__*/Schedule.spaced(5000)]);
75 const makePinger = /*#__PURE__*/Effect.fnUntraced(function* (writePing) {
76 let recievedPong = true;
77+ let missedPongs = 0;
78 const latch = Latch.makeUnsafe();
79 const reset = () => {
80 recievedPong = true;
81+ missedPongs = 0;
82 latch.closeUnsafe();
83 };
84 const onPong = () => {
85 recievedPong = true;
86+ missedPongs = 0;
87 };
88 yield* Effect.suspend(() => {
89- if (!recievedPong) return latch.open;
90+ if (!recievedPong) {
91+ missedPongs += 1;
92+ if (missedPongs >= 3) return latch.open;
93+ return writePing;
94+ }
95 recievedPong = false;
96+ missedPongs = 0;
97 return writePing;
98 }).pipe(Effect.delay("5 seconds"), Effect.ignore, Effect.forever, Effect.interruptible, Effect.forkScoped);
99 return {
100diff --git a/src/http/HttpClientResponse.ts b/src/http/HttpClientResponse.ts
101index c037015..a8b0d8b 100644
102--- a/src/http/HttpClientResponse.ts
103+++ b/src/http/HttpClientResponse.ts
104@@ -341,7 +341,7 @@ class WebHttpClientResponse extends Inspectable.Class implements HttpClientRespo
105 if (this.cachedCookies) {
106 return this.cachedCookies
107 }
108- return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie())
109+ return this.cachedCookies = Cookies.fromSetCookie(this.source.headers.getSetCookie?.() ?? [])
110 }
111
112 get remoteAddress(): Option.Option<string> {
pnpm-lock.yaml+662-436
...@@ -7,8 +7,8 @@ settings:...@@ -7,8 +7,8 @@ settings:
7catalogs:7catalogs:
8 default:8 default:
9 '@effect/openapi-generator':9 '@effect/openapi-generator':
10 specifier: 4.0.0-rc.11510 specifier: 4.0.1
11 version: 4.0.0-rc.11511 version: 4.0.1
12 '@effect/tsgo':12 '@effect/tsgo':
13 specifier: 0.41.013 specifier: 0.41.0
14 version: 0.41.014 version: 0.41.0
...@@ -30,9 +30,6 @@ catalogs:...@@ -30,9 +30,6 @@ catalogs:
30 typescript:30 typescript:
31 specifier: 7.0.231 specifier: 7.0.2
32 version: 7.0.232 version: 7.0.2
33 vite-plus:
34 specifier: 1.0.0
35 version: 1.0.0
3633
37overrides:34overrides:
38 '@exodus/bytes>@noble/hashes': 1.8.035 '@exodus/bytes>@noble/hashes': 1.8.0
...@@ -63,11 +60,11 @@ overrides:...@@ -63,11 +60,11 @@ overrides:
63 '@clerk/expo': 4.6.860 '@clerk/expo': 4.6.8
64 '@clerk/react': 6.16.161 '@clerk/react': 6.16.1
65 '@clerk/shared': 4.33.062 '@clerk/shared': 4.33.0
66 '@effect/atom-react': 4.0.0-rc.11563 '@effect/atom-react': 4.0.1
67 '@effect/platform-node': 4.0.0-rc.11564 '@effect/platform-node': 4.0.1
68 '@effect/platform-node-shared': 4.0.0-rc.11565 '@effect/platform-node-shared': 4.0.1
69 '@effect/sql-pg': 4.0.0-rc.11566 '@effect/sql-pg': 4.0.1
70 '@effect/vitest': 4.0.0-rc.11567 '@effect/vitest': 4.0.1
71 '@effect/vitest>vitest': '-'68 '@effect/vitest>vitest': '-'
72 '@expo/dom-webview': 58.0.269 '@expo/dom-webview': 58.0.2
73 '@expo/metro-config': 58.0.670 '@expo/metro-config': 58.0.6
...@@ -80,30 +77,34 @@ overrides:...@@ -80,30 +77,34 @@ overrides:
80 '@tailwindcss/oxide': 4.3.377 '@tailwindcss/oxide': 4.3.3
81 '@tailwindcss/vite': 4.3.378 '@tailwindcss/vite': 4.3.3
82 '@types/node': 24.12.479 '@types/node': 24.12.4
83 effect: 4.0.0-rc.11580 effect: 4.0.1
84 '@opencode/protocol>effect': 4.0.0-rc.11581 '@opencode/protocol>effect': 4.0.1
85 '@opencode/schema>effect': 4.0.0-rc.11582 '@opencode/schema>effect': 4.0.1
86 node-abi: 4.33.083 node-abi: 4.33.0
87 lightningcss: 1.33.084 lightningcss: 1.33.0
88 tailwindcss: 4.3.385 tailwindcss: 4.3.3
89 vite: npm:@voidzero-dev/vite-plus-core@1.0.086 vite: npm:@voidzero-dev/vite-plus-core@1.0.0
87 vite-plus: 1.0.0
90 yaml: ^2.9.088 yaml: ^2.9.0
9189
92packageExtensionsChecksum: sha256-34mvKz5PLlrn2Tt9jUJC1SbK5hRE+oxwqyC1J6r09oE=90packageExtensionsChecksum: sha256-FYDaKefjFcda1+vgiq8yMpZC4ehE5CyLi/bsCGLgTtY=
9391
94patchedDependencies:92patchedDependencies:
95 '@clerk/expo@4.6.8': b8b22ab733de5bea846ad9e88046c10582352fe9ad86f314f368b2a823f0f28193 '@clerk/expo@4.6.8': b8b22ab733de5bea846ad9e88046c10582352fe9ad86f314f368b2a823f0f281
96 '@effect/vitest@4.0.0-rc.115': 172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e90294 '@effect/vitest@4.0.1': 359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2
97 '@expo/metro-config@58.0.6': 90fa980e8b6480631fb2fbb04559834e3c612db40c550cd828f11be297d8d76095 '@expo/metro-config@58.0.6': 90fa980e8b6480631fb2fbb04559834e3c612db40c550cd828f11be297d8d760
98 '@ff-labs/fff-node@0.9.4': c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a896 '@ff-labs/fff-node@0.9.4': c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a8
99 '@legendapp/list@3.3.5': 680cc6a5c5b4a4032e467e7b3fde22f89a84c0ee2e6eac6fda737d6277cc080697 '@legendapp/list@3.3.5': 680cc6a5c5b4a4032e467e7b3fde22f89a84c0ee2e6eac6fda737d6277cc0806
98 '@opencode/client@2.0.23': f725d6e6d9af0d56dc6ed71b863518fbfc751af1773cff2311209d2c404cf4cd
99 '@opencode/protocol@2.0.23': 17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685
100 '@opencode/schema@2.0.23': 650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59
100 '@pierre/diffs@1.3.0-beta.10': 0ccee155b93b63d810e2c1a40c1fd676fb6fbcfa72cf6430dcedf1a3ae475ab4101 '@pierre/diffs@1.3.0-beta.10': 0ccee155b93b63d810e2c1a40c1fd676fb6fbcfa72cf6430dcedf1a3ae475ab4
101 '@react-native-ai/apple@0.12.0': 2d09870c2848d185cb05b53ed823a46e12dba519324d8dd8e584e28731990f9d102 '@react-native-ai/apple@0.12.0': 2d09870c2848d185cb05b53ed823a46e12dba519324d8dd8e584e28731990f9d
102 '@react-native-menu/menu@2.0.0': a4866ecfcd44f318043de839d20110c17e14909004900f002ffe12050376f2ba103 '@react-native-menu/menu@2.0.0': a4866ecfcd44f318043de839d20110c17e14909004900f002ffe12050376f2ba
103 '@react-navigation/native-stack@7.17.6': e667c3cef8c78bb9ff4882ee5bd23a432247b843060a9499eb5f07e9e2295552104 '@react-navigation/native-stack@7.17.6': e667c3cef8c78bb9ff4882ee5bd23a432247b843060a9499eb5f07e9e2295552
104 alchemy@2.0.0-beta.79: 2ad1ff594ebadb1d8653c94b9ac2762703788acdbd8432c22273e6c19da1f7a6105 alchemy@2.0.0-beta.80: bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd
105 dbus-next@0.10.2: cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4106 dbus-next@0.10.2: cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4
106 effect@4.0.0-rc.115: e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec107 effect@4.0.1: 612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1
107 expo-audio@58.0.4: c20cb927d6848c53e7bf6ec14fe12f19daae9210165d2dbaf4e0f97ce31e8742108 expo-audio@58.0.4: c20cb927d6848c53e7bf6ec14fe12f19daae9210165d2dbaf4e0f97ce31e8742
108 expo-blur@58.0.3: d0311b0c0b05bd94393bd9a84653cb42503d5f3c8a19eb2627c34ace08bedf18109 expo-blur@58.0.3: d0311b0c0b05bd94393bd9a84653cb42503d5f3c8a19eb2627c34ace08bedf18
109 expo-glass-effect@58.0.3: f750041c45ab838a3530451dc7b50d6640a79141037a1b0499c5e3412a860c57110 expo-glass-effect@58.0.3: f750041c45ab838a3530451dc7b50d6640a79141037a1b0499c5e3412a860c57
...@@ -136,7 +137,7 @@ importers:...@@ -136,7 +137,7 @@ importers:
136 specifier: 'catalog:'137 specifier: 'catalog:'
137 version: 7.0.2138 version: 7.0.2
138 vite-plus:139 vite-plus:
139 specifier: 'catalog:'140 specifier: 1.0.0
140 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)141 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)
141142
142 apps/desktop:143 apps/desktop:
...@@ -151,8 +152,8 @@ importers:...@@ -151,8 +152,8 @@ importers:
151 specifier: 0.13.0152 specifier: 0.13.0
152 version: 0.13.0153 version: 0.13.0
153 '@effect/platform-node':154 '@effect/platform-node':
154 specifier: 4.0.0-rc.115155 specifier: 4.0.1
155 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)156 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
156 '@napi-rs/keyring':157 '@napi-rs/keyring':
157 specifier: ^1.3.0158 specifier: ^1.3.0
158 version: 1.3.0159 version: 1.3.0
...@@ -175,8 +176,8 @@ importers:...@@ -175,8 +176,8 @@ importers:
175 specifier: 0.10.2176 specifier: 0.10.2
176 version: 0.10.2(patch_hash=cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4)177 version: 0.10.2(patch_hash=cfff57561b0ee59b5addb3b2e6c6f20906e967507a530ab67e8db8108e520ba4)
177 effect:178 effect:
178 specifier: 4.0.0-rc.115179 specifier: 4.0.1
179 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)180 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
180 electron:181 electron:
181 specifier: 44.4.2182 specifier: 44.4.2
182 version: 44.4.2183 version: 44.4.2
...@@ -197,8 +198,8 @@ importers:...@@ -197,8 +198,8 @@ importers:
197 version: 0.1.44(react@19.2.6)198 version: 0.1.44(react@19.2.6)
198 devDependencies:199 devDependencies:
199 '@effect/vitest':200 '@effect/vitest':
200 specifier: 4.0.0-rc.115201 specifier: 4.0.1
201 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))202 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
202 '@types/node':203 '@types/node':
203 specifier: 24.12.4204 specifier: 24.12.4
204 version: 24.12.4205 version: 24.12.4
...@@ -215,8 +216,8 @@ importers:...@@ -215,8 +216,8 @@ importers:
215 specifier: 4.3.3216 specifier: 4.3.3
216 version: 4.3.3217 version: 4.3.3
217 vite-plus:218 vite-plus:
218 specifier: 'catalog:'219 specifier: 1.0.0
219 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)220 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)
220221
221 apps/marketing:222 apps/marketing:
222 dependencies:223 dependencies:
...@@ -246,8 +247,8 @@ importers:...@@ -246,8 +247,8 @@ importers:
246 specifier: 4.6.8247 specifier: 4.6.8
247 version: 4.6.8(patch_hash=b8b22ab733de5bea846ad9e88046c10582352fe9ad86f314f368b2a823f0f281)(9fda653cb5598772915b4a39a7aee91d)248 version: 4.6.8(patch_hash=b8b22ab733de5bea846ad9e88046c10582352fe9ad86f314f368b2a823f0f281)(9fda653cb5598772915b4a39a7aee91d)
248 '@effect/atom-react':249 '@effect/atom-react':
249 specifier: 4.0.0-rc.115250 specifier: 4.0.1
250 version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(react@19.3.0)(scheduler@0.27.0)251 version: 4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(react@19.3.0)(scheduler@0.28.0)
251 '@expo-google-fonts/dm-sans':252 '@expo-google-fonts/dm-sans':
252 specifier: ^0.4.2253 specifier: ^0.4.2
253 version: 0.4.2254 version: 0.4.2
...@@ -324,8 +325,8 @@ importers:...@@ -324,8 +325,8 @@ importers:
324 specifier: 8.0.3325 specifier: 8.0.3
325 version: 8.0.3326 version: 8.0.3
326 effect:327 effect:
327 specifier: 4.0.0-rc.115328 specifier: 4.0.1
328 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)329 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
329 expo:330 expo:
330 specifier: 58.0.2331 specifier: 58.0.2
331 version: 58.0.2(56fc8ddb8129740412739f0f0a6ee025)332 version: 58.0.2(56fc8ddb8129740412739f0f0a6ee025)
...@@ -490,8 +491,8 @@ importers:...@@ -490,8 +491,8 @@ importers:
490 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)491 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)
491 devDependencies:492 devDependencies:
492 '@effect/vitest':493 '@effect/vitest':
493 specifier: 4.0.0-rc.115494 specifier: 4.0.1
494 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))495 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
495 '@pierre/trees':496 '@pierre/trees':
496 specifier: 1.0.0-beta.4497 specifier: 1.0.0-beta.4
497 version: 1.0.0-beta.4(react-dom@19.3.0(react@19.3.0))(react@19.3.0)498 version: 1.0.0-beta.4(react-dom@19.3.0(react@19.3.0))(react@19.3.0)
...@@ -520,11 +521,11 @@ importers:...@@ -520,11 +521,11 @@ importers:
520 specifier: 1.0.31521 specifier: 1.0.31
521 version: 1.0.31522 version: 1.0.31
522 '@effect/platform-node':523 '@effect/platform-node':
523 specifier: 4.0.0-rc.115524 specifier: 4.0.1
524 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)525 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
525 '@effect/platform-node-shared':526 '@effect/platform-node-shared':
526 specifier: 4.0.0-rc.115527 specifier: 4.0.1
527 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(utf-8-validate@6.0.6)528 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(utf-8-validate@6.0.6)
528 '@ff-labs/fff-node':529 '@ff-labs/fff-node':
529 specifier: 0.9.4530 specifier: 0.9.4
530 version: 0.9.4(patch_hash=c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a8)531 version: 0.9.4(patch_hash=c4e3cc2420ceb9dc650f9d189e9c24baf7e83f342998bacda5f459a4ce7927a8)
...@@ -535,20 +536,20 @@ importers:...@@ -535,20 +536,20 @@ importers:
535 specifier: ^1.3.15536 specifier: ^1.3.15
536 version: 1.15.13537 version: 1.15.13
537 '@opencode/client':538 '@opencode/client':
538 specifier: 2.0.18539 specifier: 2.0.23
539 version: 2.0.18(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))540 version: 2.0.23(patch_hash=f725d6e6d9af0d56dc6ed71b863518fbfc751af1773cff2311209d2c404cf4cd)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
540 '@opencode/protocol':541 '@opencode/protocol':
541 specifier: 2.0.18542 specifier: 2.0.23
542 version: 2.0.18543 version: 2.0.23(patch_hash=17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685)
543 '@opencode/schema':544 '@opencode/schema':
544 specifier: 2.0.18545 specifier: 2.0.23
545 version: 2.0.18546 version: 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59)
546 diff:547 diff:
547 specifier: 8.0.3548 specifier: 8.0.3
548 version: 8.0.3549 version: 8.0.3
549 effect:550 effect:
550 specifier: 4.0.0-rc.115551 specifier: 4.0.1
551 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)552 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
552 jose:553 jose:
553 specifier: 'catalog:'554 specifier: 'catalog:'
554 version: 6.2.2555 version: 6.2.2
...@@ -572,8 +573,8 @@ importers:...@@ -572,8 +573,8 @@ importers:
572 version: 3.4.0573 version: 3.4.0
573 devDependencies:574 devDependencies:
574 '@effect/vitest':575 '@effect/vitest':
575 specifier: 4.0.0-rc.115576 specifier: 4.0.1
576 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))577 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
577 '@t3tools/contracts':578 '@t3tools/contracts':
578 specifier: workspace:*579 specifier: workspace:*
579 version: link:../../packages/contracts580 version: link:../../packages/contracts
...@@ -605,8 +606,8 @@ importers:...@@ -605,8 +606,8 @@ importers:
605 specifier: workspace:*606 specifier: workspace:*
606 version: link:../../packages/effect-codex-app-server607 version: link:../../packages/effect-codex-app-server
607 vite-plus:608 vite-plus:
608 specifier: 'catalog:'609 specifier: 1.0.0
609 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)610 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)
610611
611 apps/web:612 apps/web:
612 dependencies:613 dependencies:
...@@ -635,8 +636,8 @@ importers:...@@ -635,8 +636,8 @@ importers:
635 specifier: ^3.2.2636 specifier: ^3.2.2
636 version: 3.2.2(react@19.2.6)637 version: 3.2.2(react@19.2.6)
637 '@effect/atom-react':638 '@effect/atom-react':
638 specifier: 4.0.0-rc.115639 specifier: 4.0.1
639 version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(react@19.2.6)(scheduler@0.27.0)640 version: 4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(react@19.2.6)(scheduler@0.28.0)
640 '@formkit/auto-animate':641 '@formkit/auto-animate':
641 specifier: ^0.9.0642 specifier: ^0.9.0
642 version: 0.9.0643 version: 0.9.0
...@@ -698,8 +699,8 @@ importers:...@@ -698,8 +699,8 @@ importers:
698 specifier: ^3.4.16699 specifier: ^3.4.16
699 version: 3.4.16700 version: 3.4.16
700 effect:701 effect:
701 specifier: 4.0.0-rc.115702 specifier: 4.0.1
702 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)703 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
703 hast-util-to-html:704 hast-util-to-html:
704 specifier: ^9.0.5705 specifier: ^9.0.5
705 version: 9.0.5706 version: 9.0.5
...@@ -762,11 +763,11 @@ importers:...@@ -762,11 +763,11 @@ importers:
762 version: 5.0.14(@types/react@19.3.0)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6))763 version: 5.0.14(@types/react@19.3.0)(react@19.2.6)(use-sync-external-store@1.6.0(react@19.2.6))
763 devDependencies:764 devDependencies:
764 '@effect/platform-node':765 '@effect/platform-node':
765 specifier: 4.0.0-rc.115766 specifier: 4.0.1
766 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)767 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
767 '@effect/vitest':768 '@effect/vitest':
768 specifier: 4.0.0-rc.115769 specifier: 4.0.1
769 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))770 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
770 '@rolldown/plugin-babel':771 '@rolldown/plugin-babel':
771 specifier: ^0.2.0772 specifier: ^0.2.0
772 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)773 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)
...@@ -825,8 +826,8 @@ importers:...@@ -825,8 +826,8 @@ importers:
825 specifier: npm:@voidzero-dev/vite-plus-core@1.0.0826 specifier: npm:@voidzero-dev/vite-plus-core@1.0.0
826 version: '@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)'827 version: '@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)'
827 vite-plus:828 vite-plus:
828 specifier: 'catalog:'829 specifier: 1.0.0
829 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)830 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)
830831
831 infra/relay:832 infra/relay:
832 dependencies:833 dependencies:
...@@ -834,8 +835,8 @@ importers:...@@ -834,8 +835,8 @@ importers:
834 specifier: 3.18.1835 specifier: 3.18.1
835 version: 3.18.1(react-dom@19.3.0(react@19.3.0))(react@19.2.6)836 version: 3.18.1(react-dom@19.3.0(react@19.3.0))(react@19.2.6)
836 '@effect/sql-pg':837 '@effect/sql-pg':
837 specifier: 4.0.0-rc.115838 specifier: 4.0.1
838 version: 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))839 version: 4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
839 '@noble/curves':840 '@noble/curves':
840 specifier: 'catalog:'841 specifier: 'catalog:'
841 version: 1.9.1842 version: 1.9.1
...@@ -852,24 +853,24 @@ importers:...@@ -852,24 +853,24 @@ importers:
852 specifier: workspace:*853 specifier: workspace:*
853 version: link:../../packages/shared854 version: link:../../packages/shared
854 alchemy:855 alchemy:
855 specifier: 2.0.0-beta.79856 specifier: 2.0.0-beta.80
856 version: 2.0.0-beta.79(patch_hash=2ad1ff594ebadb1d8653c94b9ac2762703788acdbd8432c22273e6c19da1f7a6)(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6))(@effect/sql-pg@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)))(@types/node@24.12.4)(@types/react@19.3.0)(@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))(bufferutil@4.1.0)(drizzle-kit@1.0.0-rc.5-ab785fc)(drizzle-orm@1.0.0-rc.5-ab785fc(77d4691b21c77897491506c37fa7b5ad))(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9))(pg@8.23.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typescript@7.0.2)(utf-8-validate@6.0.6)(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))857 version: 2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(58de9aada26e3d6e07bee630615d7b5f)
857 drizzle-orm:858 drizzle-orm:
858 specifier: 1.0.0-rc.5-ab785fc859 specifier: 1.0.0-rc.5-ab785fc
859 version: 1.0.0-rc.5-ab785fc(77d4691b21c77897491506c37fa7b5ad)860 version: 1.0.0-rc.5-ab785fc(b25f7c76220d3224392693e60345984f)
860 effect:861 effect:
861 specifier: 4.0.0-rc.115862 specifier: 4.0.1
862 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)863 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
863 devDependencies:864 devDependencies:
864 '@cloudflare/workers-types':865 '@cloudflare/workers-types':
865 specifier: ^4.20260601.1866 specifier: ^4.20260601.1
866 version: 4.20260604.1867 version: 4.20260604.1
867 '@effect/platform-node':868 '@effect/platform-node':
868 specifier: 4.0.0-rc.115869 specifier: 4.0.1
869 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)870 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
870 '@effect/vitest':871 '@effect/vitest':
871 specifier: 4.0.0-rc.115872 specifier: 4.0.1
872 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))873 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
873 '@types/node':874 '@types/node':
874 specifier: 24.12.4875 specifier: 24.12.4
875 version: 24.12.4876 version: 24.12.4
...@@ -883,27 +884,27 @@ importers:...@@ -883,27 +884,27 @@ importers:
883 specifier: npm:@voidzero-dev/vite-plus-core@1.0.0884 specifier: npm:@voidzero-dev/vite-plus-core@1.0.0
884 version: '@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)'885 version: '@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)'
885 vite-plus:886 vite-plus:
886 specifier: 'catalog:'887 specifier: 1.0.0
887 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)888 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)
888889
889 oxlint-plugin-t3code:890 oxlint-plugin-t3code:
890 dependencies:891 dependencies:
891 '@effect/platform-node':892 '@effect/platform-node':
892 specifier: 4.0.0-rc.115893 specifier: 4.0.1
893 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)894 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
894 '@oxlint/plugins':895 '@oxlint/plugins':
895 specifier: ^1.63.0896 specifier: ^1.63.0
896 version: 1.68.0897 version: 1.68.0
897 effect:898 effect:
898 specifier: 4.0.0-rc.115899 specifier: 4.0.1
899 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)900 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
900 devDependencies:901 devDependencies:
901 '@effect/vitest':902 '@effect/vitest':
902 specifier: 4.0.0-rc.115903 specifier: 4.0.1
903 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))904 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
904 vite-plus:905 vite-plus:
905 specifier: 'catalog:'906 specifier: 1.0.0
906 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)907 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)
907908
908 packages/client-runtime:909 packages/client-runtime:
909 dependencies:910 dependencies:
...@@ -914,8 +915,8 @@ importers:...@@ -914,8 +915,8 @@ importers:
914 specifier: workspace:*915 specifier: workspace:*
915 version: link:../shared916 version: link:../shared
916 effect:917 effect:
917 specifier: 4.0.0-rc.115918 specifier: 4.0.1
918 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)919 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
919 mdast-util-directive:920 mdast-util-directive:
920 specifier: ^3.1.0921 specifier: ^3.1.0
921 version: 3.1.0922 version: 3.1.0
...@@ -936,8 +937,8 @@ importers:...@@ -936,8 +937,8 @@ importers:
936 version: 11.0.5937 version: 11.0.5
937 devDependencies:938 devDependencies:
938 '@effect/vitest':939 '@effect/vitest':
939 specifier: 4.0.0-rc.115940 specifier: 4.0.1
940 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))941 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
941 '@types/three':942 '@types/three':
942 specifier: 0.180.0943 specifier: 0.180.0
943 version: 0.180.0944 version: 0.180.0
...@@ -945,65 +946,65 @@ importers:...@@ -945,65 +946,65 @@ importers:
945 specifier: ^2.0.2946 specifier: ^2.0.2
946 version: 2.0.2947 version: 2.0.2
947 vite-plus:948 vite-plus:
948 specifier: 'catalog:'949 specifier: 1.0.0
949 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)950 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)
950951
951 packages/contracts:952 packages/contracts:
952 dependencies:953 dependencies:
953 effect:954 effect:
954 specifier: 4.0.0-rc.115955 specifier: 4.0.1
955 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)956 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
956 devDependencies:957 devDependencies:
957 '@effect/vitest':958 '@effect/vitest':
958 specifier: 4.0.0-rc.115959 specifier: 4.0.1
959 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))960 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
960 vite-plus:961 vite-plus:
961 specifier: 'catalog:'962 specifier: 1.0.0
962 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)963 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)
963964
964 packages/effect-acp:965 packages/effect-acp:
965 dependencies:966 dependencies:
966 effect:967 effect:
967 specifier: 4.0.0-rc.115968 specifier: 4.0.1
968 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)969 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
969 devDependencies:970 devDependencies:
970 '@effect/openapi-generator':971 '@effect/openapi-generator':
971 specifier: 'catalog:'972 specifier: 'catalog:'
972 version: 4.0.0-rc.115(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(encoding@0.1.13)973 version: 4.0.1(@effect/platform-node@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(encoding@0.1.13)
973 '@effect/platform-node':974 '@effect/platform-node':
974 specifier: 4.0.0-rc.115975 specifier: 4.0.1
975 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)976 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
976 '@effect/vitest':977 '@effect/vitest':
977 specifier: 4.0.0-rc.115978 specifier: 4.0.1
978 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))979 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
979 '@types/node':980 '@types/node':
980 specifier: 24.12.4981 specifier: 24.12.4
981 version: 24.12.4982 version: 24.12.4
982 vite-plus:983 vite-plus:
983 specifier: 'catalog:'984 specifier: 1.0.0
984 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)985 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)
985986
986 packages/effect-codex-app-server:987 packages/effect-codex-app-server:
987 dependencies:988 dependencies:
988 effect:989 effect:
989 specifier: 4.0.0-rc.115990 specifier: 4.0.1
990 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)991 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
991 devDependencies:992 devDependencies:
992 '@effect/openapi-generator':993 '@effect/openapi-generator':
993 specifier: 'catalog:'994 specifier: 'catalog:'
994 version: 4.0.0-rc.115(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(encoding@0.1.13)995 version: 4.0.1(@effect/platform-node@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(encoding@0.1.13)
995 '@effect/platform-node':996 '@effect/platform-node':
996 specifier: 4.0.0-rc.115997 specifier: 4.0.1
997 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)998 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
998 '@effect/vitest':999 '@effect/vitest':
999 specifier: 4.0.0-rc.1151000 specifier: 4.0.1
1000 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))1001 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
1001 '@types/node':1002 '@types/node':
1002 specifier: 24.12.41003 specifier: 24.12.4
1003 version: 24.12.41004 version: 24.12.4
1004 vite-plus:1005 vite-plus:
1005 specifier: 'catalog:'1006 specifier: 1.0.0
1006 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)1007 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)
10071008
1008 packages/shared:1009 packages/shared:
1009 dependencies:1010 dependencies:
...@@ -1017,8 +1018,8 @@ importers:...@@ -1017,8 +1018,8 @@ importers:
1017 specifier: workspace:*1018 specifier: workspace:*
1018 version: link:../contracts1019 version: link:../contracts
1019 effect:1020 effect:
1020 specifier: 4.0.0-rc.1151021 specifier: 4.0.1
1021 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)1022 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1022 jose:1023 jose:
1023 specifier: 'catalog:'1024 specifier: 'catalog:'
1024 version: 6.2.21025 version: 6.2.2
...@@ -1027,17 +1028,17 @@ importers:...@@ -1027,17 +1028,17 @@ importers:
1027 version: 2.9.01028 version: 2.9.0
1028 devDependencies:1029 devDependencies:
1029 '@effect/platform-node':1030 '@effect/platform-node':
1030 specifier: 4.0.0-rc.1151031 specifier: 4.0.1
1031 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)1032 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
1032 '@effect/vitest':1033 '@effect/vitest':
1033 specifier: 4.0.0-rc.1151034 specifier: 4.0.1
1034 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))1035 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
1035 '@types/node':1036 '@types/node':
1036 specifier: 24.12.41037 specifier: 24.12.4
1037 version: 24.12.41038 version: 24.12.4
1038 vite-plus:1039 vite-plus:
1039 specifier: 'catalog:'1040 specifier: 1.0.0
1040 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)1041 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)
10411042
1042 packages/ssh:1043 packages/ssh:
1043 dependencies:1044 dependencies:
...@@ -1048,21 +1049,21 @@ importers:...@@ -1048,21 +1049,21 @@ importers:
1048 specifier: workspace:*1049 specifier: workspace:*
1049 version: link:../shared1050 version: link:../shared
1050 effect:1051 effect:
1051 specifier: 4.0.0-rc.1151052 specifier: 4.0.1
1052 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)1053 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1053 devDependencies:1054 devDependencies:
1054 '@effect/platform-node':1055 '@effect/platform-node':
1055 specifier: 4.0.0-rc.1151056 specifier: 4.0.1
1056 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)1057 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
1057 '@effect/vitest':1058 '@effect/vitest':
1058 specifier: 4.0.0-rc.1151059 specifier: 4.0.1
1059 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))1060 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
1060 '@types/node':1061 '@types/node':
1061 specifier: 24.12.41062 specifier: 24.12.4
1062 version: 24.12.41063 version: 24.12.4
1063 vite-plus:1064 vite-plus:
1064 specifier: 'catalog:'1065 specifier: 1.0.0
1065 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)1066 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)
10661067
1067 packages/tailscale:1068 packages/tailscale:
1068 dependencies:1069 dependencies:
...@@ -1070,24 +1071,24 @@ importers:...@@ -1070,24 +1071,24 @@ importers:
1070 specifier: workspace:*1071 specifier: workspace:*
1071 version: link:../shared1072 version: link:../shared
1072 effect:1073 effect:
1073 specifier: 4.0.0-rc.1151074 specifier: 4.0.1
1074 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)1075 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1075 devDependencies:1076 devDependencies:
1076 '@effect/vitest':1077 '@effect/vitest':
1077 specifier: 4.0.0-rc.1151078 specifier: 4.0.1
1078 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))1079 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
1079 '@types/node':1080 '@types/node':
1080 specifier: 24.12.41081 specifier: 24.12.4
1081 version: 24.12.41082 version: 24.12.4
1082 vite-plus:1083 vite-plus:
1083 specifier: 'catalog:'1084 specifier: 1.0.0
1084 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)1085 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)
10851086
1086 scripts:1087 scripts:
1087 dependencies:1088 dependencies:
1088 '@effect/platform-node':1089 '@effect/platform-node':
1089 specifier: 4.0.0-rc.1151090 specifier: 4.0.1
1090 version: 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)1091 version: 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
1091 '@electron/asar':1092 '@electron/asar':
1092 specifier: ^4.3.01093 specifier: ^4.3.0
1093 version: 4.3.01094 version: 4.3.0
...@@ -1101,8 +1102,8 @@ importers:...@@ -1101,8 +1102,8 @@ importers:
1101 specifier: workspace:*1102 specifier: workspace:*
1102 version: link:../packages/tailscale1103 version: link:../packages/tailscale
1103 effect:1104 effect:
1104 specifier: 4.0.0-rc.1151105 specifier: 4.0.1
1105 version: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)1106 version: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1106 pngjs:1107 pngjs:
1107 specifier: 7.0.01108 specifier: 7.0.0
1108 version: 7.0.01109 version: 7.0.0
...@@ -1111,8 +1112,8 @@ importers:...@@ -1111,8 +1112,8 @@ importers:
1111 version: 0.35.4(@types/node@24.12.4)1112 version: 0.35.4(@types/node@24.12.4)
1112 devDependencies:1113 devDependencies:
1113 '@effect/vitest':1114 '@effect/vitest':
1114 specifier: 4.0.0-rc.1151115 specifier: 4.0.1
1115 version: 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))1116 version: 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
1116 '@types/pngjs':1117 '@types/pngjs':
1117 specifier: 6.0.51118 specifier: 6.0.5
1118 version: 6.0.51119 version: 6.0.5
...@@ -1123,8 +1124,8 @@ importers:...@@ -1123,8 +1124,8 @@ importers:
1123 specifier: npm:typescript@~6.0.31124 specifier: npm:typescript@~6.0.3
1124 version: typescript@6.0.31125 version: typescript@6.0.3
1125 vite-plus:1126 vite-plus:
1126 specifier: 'catalog:'1127 specifier: 1.0.0
1127 version: 1.0.0(@types/node@24.12.4)(@vitest/ui@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)1128 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)
11281129
1129packages:1130packages:
11301131
...@@ -1147,13 +1148,13 @@ packages:...@@ -1147,13 +1148,13 @@ packages:
1147 resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==}1148 resolution: {integrity: sha512-XeZW1CcDF2GMbH4wejW6xBRI2QCOgnkVYUnxoeDadB1mf85riL2bMUeDoh+6gJ/r4mjNfzUPW8OjLjvwTP0u1Q==}
1148 engines: {node: '>=18'}1149 engines: {node: '>=18'}
11491150
1150 '@alchemy.run/cloudflare-runtime@2.0.0-beta.79':1151 '@alchemy.run/cloudflare-runtime@2.0.0-beta.80':
1151 resolution: {integrity: sha512-v/kmQ4s9B2PcHo4NSxm76OcmaQsX2TkQoy2IzB4FBu/4kJ6gkEBYKKLz4FK6x4ewOAtwI7kQwZ8OmzAmft3xoQ==}1152 resolution: {integrity: sha512-vrMDVAQ+LlzFGkgfIbi/65iwskdSxxWYhJX03sFL72mvkGxvb8RQSKrbxLGHhMz0QSZh796dOff1z9zOwxsIbA==}
1152 peerDependencies:1153 peerDependencies:
1153 '@distilled.cloud/cloudflare': 1.0.0-rc.121154 '@distilled.cloud/cloudflare': 1.0.0-rc.13
1154 '@effect/platform-bun': '>=4.0.0-rc.115 || >=4.0.0'1155 '@effect/platform-bun': ^4.0.0
1155 '@effect/platform-node': 4.0.0-rc.1151156 '@effect/platform-node': 4.0.1
1156 effect: 4.0.0-rc.1151157 effect: 4.0.1
1157 rolldown: 1.2.51158 rolldown: 1.2.5
1158 vite: ^7.0.0 || ^8.0.01159 vite: ^7.0.0 || ^8.0.0
1159 peerDependenciesMeta:1160 peerDependenciesMeta:
...@@ -1166,16 +1167,16 @@ packages:...@@ -1166,16 +1167,16 @@ packages:
1166 vite:1167 vite:
1167 optional: true1168 optional: true
11681169
1169 '@alchemy.run/floci@2.0.0-beta.79':1170 '@alchemy.run/floci@2.0.0-beta.80':
1170 resolution: {integrity: sha512-Wd7DiDUhEep3APW3pix7gEHG0zZwzmE3y+twv5oiFKX8rBLhKOFCRluZ3xyx1ivIw1VpTFyE2PGLvJWwscX/Vw==}1171 resolution: {integrity: sha512-gtUXFitVY9pSQQYCDtSVyjfd5YOKY3Wleg3WCG5yWno7/l7xBo4kfOMbM63tzWnmka9LewVSITbMfwnC4D/73A==}
1171 peerDependencies:1172 peerDependencies:
1172 effect: 4.0.0-rc.1151173 effect: 4.0.1
11731174
1174 '@alchemy.run/node-utils@2.0.0-beta.79':1175 '@alchemy.run/node-utils@2.0.0-beta.80':
1175 resolution: {integrity: sha512-2Qi3L+GBcNayAaOCo2dBTUTBszTOV2hFgX6rZkl73p//D8XFz/h6bb/Ka4NxBe+bfV7rp9JSZC6ZBBg2d+CJZw==}1176 resolution: {integrity: sha512-uOhVDQZTjwh1AU4mrk0wB5rQaziTwSrVMfqwFP8wALfU//nveu4goOWZimHtqytXiybENh+iEbALH25EFAkc7A==}
11761177
1177 '@alchemy.run/sigil@0.0.0-alpha.11':1178 '@alchemy.run/sigil@0.1.0-alpha.1':
1178 resolution: {integrity: sha512-JzaCBeRu9kY0qWC8JKkrierstImkrK77dl+7l0RvCTR+7uhOJECL2VxmjhJ1blea+mmbYUVob8OXOH5r8Mqfpw==}1179 resolution: {integrity: sha512-RtHELG2w+GluVewRsuKm66idtPzC+4STptMr/61X1Vy5uBkDzcCzjzV8G6jUa4iBv6Il0hHV7UL6wvv//9nD/Q==}
1179 engines: {node: '>=22'}1180 engines: {node: '>=22'}
1180 peerDependencies:1181 peerDependencies:
1181 '@types/react': '>=19.2.0'1182 '@types/react': '>=19.2.0'
...@@ -2026,32 +2027,32 @@ packages:...@@ -2026,32 +2027,32 @@ packages:
2026 workerd:2027 workerd:
2027 optional: true2028 optional: true
20282029
2029 '@cloudflare/workerd-darwin-64@1.20260901.1':2030 '@cloudflare/workerd-darwin-64@1.20260918.1':
2030 resolution: {integrity: sha512-5nJCpnclV6cc5v3aZOewu+djFvNvm9A/owQ+WJ2G1450roeFHfZGsyW7vVjSRWx3v2iykfkviyJfGm9ApeFDGg==}2031 resolution: {integrity: sha512-H5Em6Wd0jjxaloYh2rp+WLBl2eWbkk7nSP1svGt6K1RSv/rNVqmKdpjZPJTBSavOmeYGa88qvtOWwS+33OHTqQ==}
2031 engines: {node: '>=16'}2032 engines: {node: '>=16'}
2032 cpu: [x64]2033 cpu: [x64]
2033 os: [darwin]2034 os: [darwin]
20342035
2035 '@cloudflare/workerd-darwin-arm64@1.20260901.1':2036 '@cloudflare/workerd-darwin-arm64@1.20260918.1':
2036 resolution: {integrity: sha512-nLwfUVoYmFNW1Ntp0BfZ2K1UWIll4zTTYP8Ni7NQnyrNkTnFeU/prrllWtnw7OG8Z/jyaEAAFaDFEBobrNTU3A==}2037 resolution: {integrity: sha512-CR9JRZEQo93fNgBVF4Df2H2/VYO4n7rxSseSwCVv3bJQEb0huADUSCj2FK4ipxar8ToOEB4wawyw0vJo5U/rQQ==}
2037 engines: {node: '>=16'}2038 engines: {node: '>=16'}
2038 cpu: [arm64]2039 cpu: [arm64]
2039 os: [darwin]2040 os: [darwin]
20402041
2041 '@cloudflare/workerd-linux-64@1.20260901.1':2042 '@cloudflare/workerd-linux-64@1.20260918.1':
2042 resolution: {integrity: sha512-wzCO0cMrFLRRs6bG5KXDpLSe70GpzpsxPjxwBzQngQOfyI2cxs5i4Rb5rDB0GG8E19feZEhjGXcHgY9+5Lq8YA==}2043 resolution: {integrity: sha512-UQ2nnY3qpXLzQ80frmWO+8HvtqyWaQILe8QYZwpemdjT+sqwCz4Dz+0/WVkFco0v/04kIIqikVeLTY/7gEhmkw==}
2043 engines: {node: '>=16'}2044 engines: {node: '>=16'}
2044 cpu: [x64]2045 cpu: [x64]
2045 os: [linux]2046 os: [linux]
20462047
2047 '@cloudflare/workerd-linux-arm64@1.20260901.1':2048 '@cloudflare/workerd-linux-arm64@1.20260918.1':
2048 resolution: {integrity: sha512-aBk82+sSphMa6uR6h/CFN/GXmELJ2YOgQKYSsOsCTvbVLvHjclmyoEdLTY5FEImvo1ch1uXpGQgTjI8/suHGEg==}2049 resolution: {integrity: sha512-4rib51MaLNWweUIUxM/Xj558M5QmyZoBSf0ffv+lYah5VTrvwnez3XGxX72pElnBKHROvAPOi5msQ5Ts8JSI0A==}
2049 engines: {node: '>=16'}2050 engines: {node: '>=16'}
2050 cpu: [arm64]2051 cpu: [arm64]
2051 os: [linux]2052 os: [linux]
20522053
2053 '@cloudflare/workerd-windows-64@1.20260901.1':2054 '@cloudflare/workerd-windows-64@1.20260918.1':
2054 resolution: {integrity: sha512-3oJnCV7mWwzqmqz+3E+KYLbw1FylH+8n+p84srWv9MEsY9II1QuKiRKVf3CQTIdTDb6rkr5fCuRtkmLgRpAsNg==}2055 resolution: {integrity: sha512-sATrMx5ShYYgmgUGrcTmvsFSJBFuN95NEkX3xwb1qk8w1A6h5N11sea7yN2IeibwPyPmXKjWNjXOno0hZAM71Q==}
2055 engines: {node: '>=16'}2056 engines: {node: '>=16'}
2056 cpu: [x64]2057 cpu: [x64]
2057 os: [win32]2058 os: [win32]
...@@ -2059,8 +2060,8 @@ packages:...@@ -2059,8 +2060,8 @@ packages:
2059 '@cloudflare/workers-types@4.20260604.1':2060 '@cloudflare/workers-types@4.20260604.1':
2060 resolution: {integrity: sha512-nVTydUwPcz9WfwZ/6xAmqs8uUVeGbDVmyPvSYrYAo4CQTyi0122SoE1Suw8RvqnN60XXHPChAjDqSIjnr/mbmg==}2061 resolution: {integrity: sha512-nVTydUwPcz9WfwZ/6xAmqs8uUVeGbDVmyPvSYrYAo4CQTyi0122SoE1Suw8RvqnN60XXHPChAjDqSIjnr/mbmg==}
20612062
2062 '@cloudflare/workers-types@5.20260907.1':2063 '@cloudflare/workers-types@5.20261004.1':
2063 resolution: {integrity: sha512-HYI7eFb/MOcNzvbUW7ZwHVZL5YFXb4r6yHN3vx8gJCqde7yhn3bhuPKiQPw90UtGWWp7uOI+Que3kf8Svjn5cw==}2064 resolution: {integrity: sha512-K9D4/Y6bSIDNYFzjqzFMNoWK99pLgfgFxqSa76kfW++3VCkTSzJbzsQRffir366G3kmNyjoigC6ekp7DxIkxkw==}
20642065
2065 '@connectrpc/connect-node@1.7.0':2066 '@connectrpc/connect-node@1.7.0':
2066 resolution: {integrity: sha512-6vaPIkG/NyhxlYgytLoR9KYbPhczEboFB2OYWkA9qvUz1K7efXfeGrlRxoLtpa+r8VxyIOw73w5ktNe743nD+A==}2067 resolution: {integrity: sha512-6vaPIkG/NyhxlYgytLoR9KYbPhczEboFB2OYWkA9qvUz1K7efXfeGrlRxoLtpa+r8VxyIOw73w5ktNe743nD+A==}
...@@ -2208,60 +2209,85 @@ packages:...@@ -2208,60 +2209,85 @@ packages:
2208 '@dimforge/rapier3d-compat@0.12.0':2209 '@dimforge/rapier3d-compat@0.12.0':
2209 resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==}2210 resolution: {integrity: sha512-uekIGetywIgopfD97oDL5PfeezkFpNhwlzlaEYNOA0N6ghdsOvh/HYjSMek5Q2O1PYvRSDFcqFVJl4r4ZBwOow==}
22102211
2211 '@distilled.cloud/aws@1.0.0-rc.12':2212 '@distilled.cloud/acme@1.0.0-rc.13':
2212 resolution: {integrity: sha512-L4TTEwMKB1ymXbYUqvYeoy5UWgmJtqQSzry2qWtAvD2ccwVGy0F7cFViEIYQk7boF4ZIP6SfhAls4+y1fVIi/g==}2213 resolution: {integrity: sha512-3rmzH125jQxk0zpCvXGNEybSaqpAolyCX+8LWDDrXf+wIKs67GflkJyQLjOOh0lKARe29hdUZGgqEbbvpp0LNA==}
2214 peerDependencies:
2215 effect: 4.0.1
2216
2217 '@distilled.cloud/aws@1.0.0-rc.13':
2218 resolution: {integrity: sha512-6ZGcp0LkniB0I2l8Gr7vKRQgTZTch0/07iuvuMZv9Nu+rWwNuZG9VHTUdlIoarWgCHFUNN8yvSYBGOjaeN99tQ==}
2219 peerDependencies:
2220 effect: 4.0.1
2221
2222 '@distilled.cloud/axiom@1.0.0-rc.13':
2223 resolution: {integrity: sha512-aRoJtvfXgWi5dtfjuJvDwnArRKvv2MPYHCxYeZcxZbqe62IaQA5yu/khft7TJvxeDyJoSDnVXZu3RyJjNmBA4g==}
2224 peerDependencies:
2225 effect: 4.0.1
2226
2227 '@distilled.cloud/cloudflare@1.0.0-rc.13':
2228 resolution: {integrity: sha512-Py5FoA6azyYExDb91VaeC+9x+ravOBSRhXeUmpcQjCtgqmOdiXgc2YZGMMPI68DF+kMuHRVIrR+2uRZNDOhYjw==}
2229 peerDependencies:
2230 effect: 4.0.1
2231
2232 '@distilled.cloud/core@1.0.0-rc.13':
2233 resolution: {integrity: sha512-RYyrxW+F5zrTuu1UWV/JoycholBCIkXIusYJdDniDwCdmbjdKGl07KlkkeeY774uBawNGf+pt1ESNGeLVnNHsg==}
2213 peerDependencies:2234 peerDependencies:
2214 effect: 4.0.0-rc.1152235 effect: 4.0.1
22152236
2216 '@distilled.cloud/axiom@1.0.0-rc.12':2237 '@distilled.cloud/doppler@1.0.0-rc.13':
2217 resolution: {integrity: sha512-W/Kx0qKXh/RF5bJeLNr73BTLV51AFf7zsP8pG9wv2yGrA8sPj4Xu2z72sBG+TeQZIhNwA8Rh4J8GotNqH/380g==}2238 resolution: {integrity: sha512-GgOEUCc4Bx0C+lYNfZ4OqaA3ULvqDUQTJC8gobSh1L0jfrWclv/kRcSr43v4IXyStld+saUvDfDZgeGzlE74OA==}
2218 peerDependencies:2239 peerDependencies:
2219 effect: 4.0.0-rc.1152240 effect: 4.0.1
22202241
2221 '@distilled.cloud/cloudflare@1.0.0-rc.12':2242 '@distilled.cloud/fly-io@1.0.0-rc.13':
2222 resolution: {integrity: sha512-ddcL4RnAx6L8gRWCnE5T1W35ZlerI7SlaRLidX726iG/K/aA+bkU0ND39y7ljJ2Eyx3zR03TfpNrgXAXc9E3ng==}2243 resolution: {integrity: sha512-Ipp+9nvs+PzqwDPhZq2/BEHNUeWzXKhrvjfT/eBLFHo/QpH0HgdMH8MSQe6/LGszZoormwA6ZrTv2wxaFO7ZiQ==}
2223 peerDependencies:2244 peerDependencies:
2224 effect: 4.0.0-rc.1152245 effect: 4.0.1
22252246
2226 '@distilled.cloud/core@1.0.0-rc.12':2247 '@distilled.cloud/gcp@1.0.0-rc.13':
2227 resolution: {integrity: sha512-YeH/uPohGXp2qIctbqVzBtQV+bUs+K5Zdac8qIid7/t6VlwY964SALme5znRdFu/rQgrloXnaej8iTSK9RIQdA==}2248 resolution: {integrity: sha512-un8jqil9ejt96oN+OfEDUsbrEOpC6Ut4B/73DqKDttvt0Btal1OeBNTTQsftVCpeEzXAvkYKGRIT2AeEu1J5jA==}
2228 peerDependencies:2249 peerDependencies:
2229 effect: 4.0.0-rc.1152250 effect: 4.0.1
22302251
2231 '@distilled.cloud/fly-io@1.0.0-rc.12':2252 '@distilled.cloud/hetzner@1.0.0-rc.13':
2232 resolution: {integrity: sha512-ACgR8Kcx/OP8gAF+PnXYneGGZNUqyiQHrcTB3/lRcv5gQdacXhTAvreV/d0t7jclRo5BBdNxnd5TuuHpr9vDLA==}2253 resolution: {integrity: sha512-FvqofgMypNkeZbnjGjWMZqvqGd9GxcMzdbi/6JrbcPaHMJG+CCBGt/mAa7mLlEovzwVaGCsBnOXJ6rP5pZjB4Q==}
2233 peerDependencies:2254 peerDependencies:
2234 effect: 4.0.0-rc.1152255 effect: 4.0.1
22352256
2236 '@distilled.cloud/hetzner@1.0.0-rc.12':2257 '@distilled.cloud/infisical@1.0.0-rc.13':
2237 resolution: {integrity: sha512-G6QzOXTNply63I90IjOtNofs0nHkEd1we/fgXiOjobLZt4+sKjjNBVTAHYHGMDeidbtxw270oF9JakgT11Pzww==}2258 resolution: {integrity: sha512-Zz8ksA/Y8UUUnWag2UBxB5WYA6wLqOS78ugWJ3cOr9Ot+4bC0NJYWanq35uFInozLXWhun84USU2wOI+mdwQUQ==}
2238 peerDependencies:2259 peerDependencies:
2239 effect: 4.0.0-rc.1152260 effect: 4.0.1
22402261
2241 '@distilled.cloud/neon@1.0.0-rc.12':2262 '@distilled.cloud/neon@1.0.0-rc.13':
2242 resolution: {integrity: sha512-jiypsVQCcKa9qNgG9HULXNgXj1E4FFO96Hk9p2JX6CEHca7ePldJSJEOf7roogQGC7lrnldBDCiZrxQLOapD3Q==}2263 resolution: {integrity: sha512-2JvbBFj1kBfkDVPnWcJZ7TJ1cJwWBtScAY7SNJ2qNBUuAK1Wf2kjJXU0/j16eCJ48BQigPArQFWL51wVu/EUQQ==}
2243 peerDependencies:2264 peerDependencies:
2244 effect: 4.0.0-rc.1152265 effect: 4.0.1
22452266
2246 '@distilled.cloud/planetscale@1.0.0-rc.12':2267 '@distilled.cloud/planetscale@1.0.0-rc.13':
2247 resolution: {integrity: sha512-YCTB7soZtqzzgcCAUtrNHjAIsq92XS8cpjnbn3VU+sCQ0LnfnFGeMGJxQ/7qLHtx7Hv4+Ms8XNOs2Q5P81Skig==}2268 resolution: {integrity: sha512-AM97YGRnDfZdqsxFgQMQ83p7ZlRqxS6/foTTJA5P590UMbbOyrQyFyd33BD0agul8a3ngZde3Oej6v7BN55aWw==}
2248 peerDependencies:2269 peerDependencies:
2249 effect: 4.0.0-rc.1152270 effect: 4.0.1
22502271
2251 '@distilled.cloud/prisma@1.0.0-rc.12':2272 '@distilled.cloud/prisma@1.0.0-rc.13':
2252 resolution: {integrity: sha512-Z1KyUrhxkUt0KdxmNUd29Dtl9NizKv7HFHUuTcA1j6Ar5apUMvlR0f4lKqpliXW8Om3oVS3Wgvm+gDsxul2Ojg==}2273 resolution: {integrity: sha512-+UmHSp9JV8XQl5t5tTdQBY+dWZ9abrEoc7leYEctA0Ar1TrKZEl2EaeQDoumrg4RyGaacRlirEbxaDFI4SOPtQ==}
2253 peerDependencies:2274 peerDependencies:
2254 effect: 4.0.0-rc.1152275 effect: 4.0.1
22552276
2256 '@distilled.cloud/railway@1.0.0-rc.12':2277 '@distilled.cloud/railway@1.0.0-rc.13':
2257 resolution: {integrity: sha512-KOXSpl7r9qTiOYabJ6wUmM418exzv6YE5BVztaqKSGMuNGP/lAqhZm709/p97Zg6vHpxhJLIgmCq00z7hRM3sQ==}2278 resolution: {integrity: sha512-yXalRS3GFLo3hWM0HXptqudi23NVCM4FRD20db2/Ob9FFcNrMJik1fopv+74HOiV+BuxfkCP609KsEK6LVdB/g==}
2258 peerDependencies:2279 peerDependencies:
2259 effect: 4.0.0-rc.1152280 effect: 4.0.1
22602281
2261 '@distilled.cloud/stripe@1.0.0-rc.12':2282 '@distilled.cloud/stripe@1.0.0-rc.13':
2262 resolution: {integrity: sha512-4OuZF362yU66G1jDFDgRFFv8ZNRPZ6lw8Wrd5R/isRNHpGgvggLNlKg1QXWEQaTcRzn3RBXczqQCVwQV9IRZDQ==}2283 resolution: {integrity: sha512-jLTJ1mg4U39lHZb9EGYBJLR91yB3LSG6fVxix+r1BbqaTovWzE+NuJ7fu9fRSeax9jRAqsGLLxe9IxJbOtwQnQ==}
2263 peerDependencies:2284 peerDependencies:
2264 effect: 4.0.0-rc.1152285 effect: 4.0.1
2286
2287 '@distilled.cloud/zerossl@1.0.0-rc.13':
2288 resolution: {integrity: sha512-dnxhg39lZjpTdZbHCVYPoUC9E2r8eSHbqiYDhSq2EurVPJcc9YRXlxZR1bP1nniSp078XV8GA+aUECt/Z56aQg==}
2289 peerDependencies:
2290 effect: 4.0.1
22652291
2266 '@dnd-kit/accessibility@3.1.1':2292 '@dnd-kit/accessibility@3.1.1':
2267 resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==}2293 resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==}
...@@ -2294,52 +2320,52 @@ packages:...@@ -2294,52 +2320,52 @@ packages:
2294 '@drizzle-team/brocli@0.12.0':2320 '@drizzle-team/brocli@0.12.0':
2295 resolution: {integrity: sha512-mlUE+rZ8CatQekLhnaiN91Iemdd+e2gFKooGlnRB3oPTL3VghLfX24dx7HrzMNeC1JrIB/0kpsfyty3f5HNfxQ==}2321 resolution: {integrity: sha512-mlUE+rZ8CatQekLhnaiN91Iemdd+e2gFKooGlnRB3oPTL3VghLfX24dx7HrzMNeC1JrIB/0kpsfyty3f5HNfxQ==}
22962322
2297 '@effect/atom-react@4.0.0-rc.115':2323 '@effect/atom-react@4.0.1':
2298 resolution: {integrity: sha512-CUPeP6JmiGyFa4t8YSBEydXAL3kCOzs/5st0kanjqj/rqnekydrThx/l2u2HNTkhqSrQi9HLokMd8QTEpWsdDQ==}2324 resolution: {integrity: sha512-V/vcbFCVY2AV7PvjhmOP37Cr4NofrtxBBGW6M1ckBIBxmpi3sMwdPTxj2obPNE4Ho3gkeEQzRC9zEIQ4BDNdQg==}
2299 peerDependencies:2325 peerDependencies:
2300 effect: 4.0.0-rc.1152326 effect: 4.0.1
2301 react: '>=19.0.0 <20.0.0'2327 react: '>=19.0.0 <20.0.0'
2302 scheduler: '>=0.25.0 <0.28.0'2328 scheduler: '>=0.25.0 <0.28.0'
23032329
2304 '@effect/openapi-generator@4.0.0-rc.115':2330 '@effect/openapi-generator@4.0.1':
2305 resolution: {integrity: sha512-/AkcQ4GdoTTa7CwkybSnKc0U0FhOCA+TAV6E93Ozz4XshgKCC2F75Zik+3EOlTfbENmvAsYNEIVrPfqupoO+ng==}2331 resolution: {integrity: sha512-UWlXX1cjP68FDQyc+mlwfh34OpCKlnAREFpWk9DG6fzmw/w/+FvIyadZvS1y7G2b8U2e/khO0f3p5ak0DTC9Ng==}
2306 hasBin: true2332 hasBin: true
2307 peerDependencies:2333 peerDependencies:
2308 '@effect/platform-node': 4.0.0-rc.1152334 '@effect/platform-node': 4.0.1
2309 effect: 4.0.0-rc.1152335 effect: 4.0.1
23102336
2311 '@effect/platform-node-shared@4.0.0-rc.115':2337 '@effect/platform-node-shared@4.0.1':
2312 resolution: {integrity: sha512-rcBwhDIfb82akJoTv7Vwh8K5x9vC/XfuePS7JjOr+z+dORXzsmKqI1BUQF27ARCN9fTAbDh7I6YvBlWhLjnqNg==}2338 resolution: {integrity: sha512-VanaejudEhKJ4mpmqnEzdncVUhN6sGSO9ZDND54mRxAlZxj+4dYAWjDTYAy9o4tJo9aALeP2U8cVcOFzEdSeLg==}
2313 engines: {node: '>=18.0.0'}2339 engines: {node: '>=18.0.0'}
2314 peerDependencies:2340 peerDependencies:
2315 effect: 4.0.0-rc.1152341 effect: 4.0.1
23162342
2317 '@effect/platform-node@4.0.0-rc.115':2343 '@effect/platform-node@4.0.1':
2318 resolution: {integrity: sha512-mW03Wjq2FiTL5oi9yOkaKpCyUNBaduKgTk7qMHNELvC21Jq2qOAfdsfH+p+s2zmpB9w2RSa+ApODv4WjO9wQfw==}2344 resolution: {integrity: sha512-FT0Fu5LO0/XP9zBpj0HqrtJNLluK4StNKqf6TSulUsjp8FPBsDVXGJiDuyoN5J2yVMT7tgvhxSwaDcObWVRIaQ==}
2319 engines: {node: '>=18.0.0'}2345 engines: {node: '>=18.0.0'}
2320 peerDependencies:2346 peerDependencies:
2321 effect: 4.0.0-rc.1152347 effect: 4.0.1
2322 redis: '>=5.0.0 <7.0.0'2348 redis: '>=5.0.0 <7.0.0'
23232349
2324 '@effect/sql-d1@4.0.0-rc.115':2350 '@effect/sql-d1@4.0.0':
2325 resolution: {integrity: sha512-o2JkGjN02NBMxwDtJbwcC4teyMiOApqN085fdVMid4FUC6ixj/WyKyPpe51QGOMQQTTl2BkXccA/IwDIywGXlA==}2351 resolution: {integrity: sha512-pmkzncZCGD6CLyvc89keEBU85h+gHVCu/LKQnThd+ruYSUbG0R9jYA+lnk3R8Djp0wQW6SbsbmHQuhopIYyo3Q==}
2326 peerDependencies:2352 peerDependencies:
2327 effect: 4.0.0-rc.1152353 effect: 4.0.1
23282354
2329 '@effect/sql-pg@4.0.0-rc.115':2355 '@effect/sql-pg@4.0.1':
2330 resolution: {integrity: sha512-TLdzqBvGF/HwAKpWTw/5ih7JqVkkakVSb4aD6amzMaavFfFl4vsqqeKjSBijwuzbOMANNN0HqnEt/9fgjTsFEA==}2356 resolution: {integrity: sha512-X5aqOxHNWqVXL+vyTQZLYDip65lm5rrZHuNkWyyr672iup1tjYAs5Dn9tHR5h1t0blpJ57j8Ng5G5AUQ8teIqA==}
2331 peerDependencies:2357 peerDependencies:
2332 effect: 4.0.0-rc.1152358 effect: 4.0.1
23332359
2334 '@effect/sql-sqlite-bun@4.0.0-rc.112':2360 '@effect/sql-sqlite-bun@4.0.0-rc.112':
2335 resolution: {integrity: sha512-EqR8pWZo3VzedRvP6qo5HcfqNmFvSa+sQLWQl3oBMx2KY1FCc8NYjep79wYjNkW0qABnffrPUXCMTOncd1A+5g==}2361 resolution: {integrity: sha512-EqR8pWZo3VzedRvP6qo5HcfqNmFvSa+sQLWQl3oBMx2KY1FCc8NYjep79wYjNkW0qABnffrPUXCMTOncd1A+5g==}
2336 peerDependencies:2362 peerDependencies:
2337 effect: 4.0.0-rc.1152363 effect: 4.0.1
23382364
2339 '@effect/sql-sqlite-do@4.0.0-rc.115':2365 '@effect/sql-sqlite-do@4.0.0':
2340 resolution: {integrity: sha512-7lH9h+w4DW2tI+dus4hEac5mSCy1wgiT+uw/VvjR8YhNDemd3zEFY03NkbD81ipfOpnu2QA1YwgM58ExyPlhug==}2366 resolution: {integrity: sha512-XkRZmQOPblzwjmAJ0RWSOiLlTsKkf1EigZsxUNuIuk4uZ/pnufSqvDpXubCwv8iyRTbOLFMmM+EyOEH5V5XqAw==}
2341 peerDependencies:2367 peerDependencies:
2342 effect: 4.0.0-rc.1152368 effect: 4.0.1
23432369
2344 '@effect/tsgo-darwin-arm64@0.41.0':2370 '@effect/tsgo-darwin-arm64@0.41.0':
2345 resolution: {integrity: sha512-3iEPtcHF72yDjv7T5YpnX+Io1LDLywJb1oGG3Fp/Fth4xmqiT1Vacyz5wnPCfEWGQ6CyrlyCZSSjUxPyJ70+DQ==}2371 resolution: {integrity: sha512-3iEPtcHF72yDjv7T5YpnX+Io1LDLywJb1oGG3Fp/Fth4xmqiT1Vacyz5wnPCfEWGQ6CyrlyCZSSjUxPyJ70+DQ==}
...@@ -2380,10 +2406,10 @@ packages:...@@ -2380,10 +2406,10 @@ packages:
2380 resolution: {integrity: sha512-C/U7lFM0AXsfpqRilDOgwu+llBhAo8bcdIlzgbRWf1LWlU4KZKB2UsUvBPL3qPnm+wmbCvQLeTQc4BjV9oJrcg==}2406 resolution: {integrity: sha512-C/U7lFM0AXsfpqRilDOgwu+llBhAo8bcdIlzgbRWf1LWlU4KZKB2UsUvBPL3qPnm+wmbCvQLeTQc4BjV9oJrcg==}
2381 hasBin: true2407 hasBin: true
23822408
2383 '@effect/vitest@4.0.0-rc.115':2409 '@effect/vitest@4.0.1':
2384 resolution: {integrity: sha512-DJR0hfdr3HNXAkzW8AzfvUz6VmrNFLrKk9tZGDURi33faMyxkc7ZewxELMMZwGpOTGN4mfqYVbX2CXgI+ZJBeQ==}2410 resolution: {integrity: sha512-DbY9kf/018zBxRIX7rJwBnPVPzSarnUpcshm0vfYPFiDkSa7AFrXTh2BlDNUbrdrmqcIOBhVZ7GkEtxf8WiQrg==}
2385 peerDependencies:2411 peerDependencies:
2386 effect: 4.0.0-rc.1152412 effect: 4.0.1
23872413
2388 '@electric-sql/pglite@0.3.15':2414 '@electric-sql/pglite@0.3.15':
2389 resolution: {integrity: sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==}2415 resolution: {integrity: sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ==}
...@@ -3552,6 +3578,15 @@ packages:...@@ -3552,6 +3578,15 @@ packages:
3552 '@neon-rs/load@0.0.4':3578 '@neon-rs/load@0.0.4':
3553 resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==}3579 resolution: {integrity: sha512-kTPhdZyTQxB+2wpiRcFWrDcejc4JI6tkPuS7UZCG4l6Zvc5kU/gGQ/ozvHTh1XR5tS+UlfAfGuPajjzQjCiHCw==}
35543580
3581 '@neon/functions@0.11.0':
3582 resolution: {integrity: sha512-xyIEk9aULR2nBTzyTgxljkM8aS+Ppe9oVw/t5mdqYOlY/mLFppHSZHq8hiWVDWy6Ca8oLd3loTtfVz+cZQQjsA==}
3583 engines: {node: '>=20.19.0'}
3584 peerDependencies:
3585 hono: ^4.7.8
3586 peerDependenciesMeta:
3587 hono:
3588 optional: true
3589
3555 '@noble/curves@1.9.1':3590 '@noble/curves@1.9.1':
3556 resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==}3591 resolution: {integrity: sha512-k11yZxZg+t+gWvBbIswW0yoJlu8cHOC7dhunwOzoWH/mXGBiYyR4YY6hAEK/3EUs4UpB8la1RfdRpeGsFHkWsA==}
3557 engines: {node: ^14.21.3 || >=16}3592 engines: {node: ^14.21.3 || >=16}
...@@ -3571,9 +3606,6 @@ packages:...@@ -3571,9 +3606,6 @@ packages:
3571 '@nodable/entities@2.1.1':3606 '@nodable/entities@2.1.1':
3572 resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==}3607 resolution: {integrity: sha512-Pig3HxDIoMgjdEH8OCf/dkcTmLFjJRjWuq8jSnklu284/TKOPibSRERmOykiwmyXTtv61mP+44f3GMx0tLAyjg==}
35733608
3574 '@nodable/entities@3.0.0':
3575 resolution: {integrity: sha512-8L9xFeTYKhm49xfIypoe2W5wV1m/3Z58kT+7kR9A8OyFxcPduI4VmxaUMQyKYrRjUoLLSXv6EKKID5Tvj9cUVw==}
3576
3577 '@nornagon/put@0.0.8':3609 '@nornagon/put@0.0.8':
3578 resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}3610 resolution: {integrity: sha512-ugvXJjwF5ldtUpa7D95kruNJ41yFQDEKyF5CW4TgKJnh+W/zmlBzXXeKTyqIgwMFrkePN2JqOBqcF0M0oOunow==}
3579 engines: {node: '>=0.3.0'}3611 engines: {node: '>=0.3.0'}
...@@ -3705,10 +3737,10 @@ packages:...@@ -3705,10 +3737,10 @@ packages:
3705 '@opencode-ai/sdk@1.15.13':3737 '@opencode-ai/sdk@1.15.13':
3706 resolution: {integrity: sha512-4TwojIoQ8EG6/mVBuUVYZXiFcwNmiiytEnjnvyuvSJjGwFIlw2YIBFxtSVC3FbwwbwHT63teh1RHiQUUC4U5xw==}3738 resolution: {integrity: sha512-4TwojIoQ8EG6/mVBuUVYZXiFcwNmiiytEnjnvyuvSJjGwFIlw2YIBFxtSVC3FbwwbwHT63teh1RHiQUUC4U5xw==}
37073739
3708 '@opencode/client@2.0.18':3740 '@opencode/client@2.0.23':
3709 resolution: {integrity: sha512-N74FNdXkTTC1Re5T+PNxH6fsVf1tZiV3kESu3UWL/545oAkBRXoiikMmDszuuHZ4AxGwtr9NiQjKrHiMdnLVYQ==}3741 resolution: {integrity: sha512-tHfYu7sKNxFu2dZ7Pu5vZG4T8GHqU71ZCsXHZ/RoI0LLdG7t2zwePHWR9aNbcSP+jDUGyaQlzr5utC9Uduczvg==}
3710 peerDependencies:3742 peerDependencies:
3711 effect: 4.0.0-rc.1153743 effect: 4.0.1
3712 solid-js: '>=1.9.0'3744 solid-js: '>=1.9.0'
3713 peerDependenciesMeta:3745 peerDependenciesMeta:
3714 effect:3746 effect:
...@@ -3716,11 +3748,11 @@ packages:...@@ -3716,11 +3748,11 @@ packages:
3716 solid-js:3748 solid-js:
3717 optional: true3749 optional: true
37183750
3719 '@opencode/protocol@2.0.18':3751 '@opencode/protocol@2.0.23':
3720 resolution: {integrity: sha512-IhzzlCz/hAlFvBLWQ+kDceX0/CkYOrjVyTPwYJYvWwKze5AHzVxxDYxkhCqLJj0hn/wtdNL10nhjVothuHcaBQ==}3752 resolution: {integrity: sha512-acwAvjQgzzBsZ0h2Phvo+P/SurCexqcidPL2AYB6cDDPgOhY7ppeoKJAOQ76zAUcT4WBlcQzLl6Lq3L+IR6OEw==}
37213753
3722 '@opencode/schema@2.0.18':3754 '@opencode/schema@2.0.23':
3723 resolution: {integrity: sha512-f+lp6f+kxhygdeSxjqkiu6vk9t0onH/6OVBghSNyo9ZUUFP9BU/2JKthMgy9kHGyFu2vp0lg01H9umXn76u52A==}3755 resolution: {integrity: sha512-DglA+CCNmCaiAJ8FqAKo2EKIkCOF9/EmMEYowcXhTrQcoJ7eaTx7ytGjPgis6VHQuU4aaAgwZYw96ypS3ojsIw==}
37243756
3725 '@oslojs/encoding@1.1.0':3757 '@oslojs/encoding@1.1.0':
3726 resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}3758 resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
...@@ -4906,10 +4938,6 @@ packages:...@@ -4906,10 +4938,6 @@ packages:
4906 resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==}4938 resolution: {integrity: sha512-ZAFvHXrEk6K180EVhmZVg8GU5pUH5BSFqRs27JW3j1qEFx9YyYwWFx17x/MHcjALYimGAji7qEOlF1++be+G5A==}
4907 engines: {node: '>=18.0.0'}4939 engines: {node: '>=18.0.0'}
49084940
4909 '@smithy/shared-ini-file-loader@4.7.2':
4910 resolution: {integrity: sha512-XsIDj5gVG4YRxGS4n4TiBDAogPWRHXKZyor6JW/sEuaa/7BvKADe9j45jI2dPYCnYbKkLBmbZ4qN9ns0sH+kMQ==}
4911 engines: {node: '>=18.0.0'}
4912
4913 '@smithy/signature-v4@5.4.6':4941 '@smithy/signature-v4@5.4.6':
4914 resolution: {integrity: sha512-Ojg4B6oIDlIr1R86xCDJt1zJWnYa0VINmqdjfe9qxWjdRivHalZ3iSlQgVqYbW0MdpFOC5XfHEWsnbmdnpIILQ==}4942 resolution: {integrity: sha512-Ojg4B6oIDlIr1R86xCDJt1zJWnYa0VINmqdjfe9qxWjdRivHalZ3iSlQgVqYbW0MdpFOC5XfHEWsnbmdnpIILQ==}
4915 engines: {node: '>=18.0.0'}4943 engines: {node: '>=18.0.0'}
...@@ -4918,10 +4946,6 @@ packages:...@@ -4918,10 +4946,6 @@ packages:
4918 resolution: {integrity: sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A==}4946 resolution: {integrity: sha512-CgB6HHWer/vrKps24ulRIbpcpb7K4xAU7SkZ7YHzBPlwHsvsrCJFEXK421s+cJzX+ZrqtA/TuU5w1HzI7k9N8A==}
4919 engines: {node: '>=18.0.0'}4947 engines: {node: '>=18.0.0'}
49204948
4921 '@smithy/util-base64@4.6.2':
4922 resolution: {integrity: sha512-wTQX1hPfElIqY6AzM/s6c4UgpMxCL4MwJ5u6340ksLPq78lur6Y+keheIDk5gMX4G3KFh4MERcDt6xhRq+ie1Q==}
4923 engines: {node: '>=18.0.0'}
4924
4925 '@smithy/util-buffer-from@2.2.0':4949 '@smithy/util-buffer-from@2.2.0':
4926 resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==}4950 resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==}
4927 engines: {node: '>=14.0.0'}4951 engines: {node: '>=14.0.0'}
...@@ -6246,23 +6270,26 @@ packages:...@@ -6246,23 +6270,26 @@ packages:
6246 ajv@8.20.0:6270 ajv@8.20.0:
6247 resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}6271 resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==}
62486272
6249 alchemy@2.0.0-beta.79:6273 alchemy@2.0.0-beta.80:
6250 resolution: {integrity: sha512-pn48ye2fenePmhVFkQHPP1zNlpPN/5HzsWerrgKE8N9ljBUJgwgQeL+3QyeWhxGwxttsaSGc/o5JZPppTTL4UQ==}6274 resolution: {integrity: sha512-2y7mswypPiApxuEdp8NGMfzCGB5+9W6OmQAuePyZ2xBkgoCpEqtKAnASuvKGUZPSYNESENbamXDuI5428ewu9w==}
6251 hasBin: true6275 hasBin: true
6252 peerDependencies:6276 peerDependencies:
6253 '@alchemy.run/frontend-frameworks': 2.0.0-beta.796277 '@alchemy.run/frontend-frameworks': 2.0.0-beta.80
6254 '@aws/durable-execution-sdk-js': ^2.1.06278 '@aws/durable-execution-sdk-js': ^2.1.0
6255 '@effect/platform-bun': '>=4.0.0-rc.115 || >=4.0.0'6279 '@effect/platform-bun': ^4.0.0
6256 '@effect/platform-node': 4.0.0-rc.1156280 '@effect/platform-node': 4.0.1
6257 '@effect/sql-mysql2': '>=4.0.0-rc.115 || >=4.0.0'6281 '@effect/sql-mysql2': ^4.0.0
6258 '@effect/sql-pg': 4.0.0-rc.1156282 '@effect/sql-pg': 4.0.1
6283 '@effect/vitest': 4.0.1
6284 '@prisma/orm-postgres': 8.0.0-rc.11
6259 '@vercel/nft': ^1.10.26285 '@vercel/nft': ^1.10.2
6260 drizzle-kit: 1.0.0-rc.5-ab785fc6286 drizzle-kit: 1.0.0-rc.5-ab785fc
6261 drizzle-orm: 1.0.0-rc.5-ab785fc6287 drizzle-orm: 1.0.0-rc.5-ab785fc
6262 effect: 4.0.0-rc.1156288 effect: 4.0.1
6263 mongodb: ^6.10.06289 mongodb: ^6.10.0
6264 mysql2: ^3.24.26290 mysql2: ^3.24.2
6265 pg: ^8.22.06291 pg: ^8.22.0
6292 prisma: 8.0.0-rc.15
6266 vite: ^8.0.76293 vite: ^8.0.7
6267 ws: ^8.21.06294 ws: ^8.21.0
6268 peerDependenciesMeta:6295 peerDependenciesMeta:
...@@ -6278,6 +6305,10 @@ packages:...@@ -6278,6 +6305,10 @@ packages:
6278 optional: true6305 optional: true
6279 '@effect/sql-pg':6306 '@effect/sql-pg':
6280 optional: true6307 optional: true
6308 '@effect/vitest':
6309 optional: true
6310 '@prisma/orm-postgres':
6311 optional: true
6281 '@vercel/nft':6312 '@vercel/nft':
6282 optional: true6313 optional: true
6283 drizzle-kit:6314 drizzle-kit:
...@@ -6290,6 +6321,8 @@ packages:...@@ -6290,6 +6321,8 @@ packages:
6290 optional: true6321 optional: true
6291 pg:6322 pg:
6292 optional: true6323 optional: true
6324 prisma:
6325 optional: true
6293 vite:6326 vite:
6294 optional: true6327 optional: true
6295 ws:6328 ws:
...@@ -7282,7 +7315,7 @@ packages:...@@ -7282,7 +7315,7 @@ packages:
7282 '@effect/sql-d1': '>=4.0.0-beta.105 || >=4.0.0'7315 '@effect/sql-d1': '>=4.0.0-beta.105 || >=4.0.0'
7283 '@effect/sql-libsql': '>=4.0.0-beta.105 || >=4.0.0'7316 '@effect/sql-libsql': '>=4.0.0-beta.105 || >=4.0.0'
7284 '@effect/sql-mysql2': '>=4.0.0-beta.105 || >=4.0.0'7317 '@effect/sql-mysql2': '>=4.0.0-beta.105 || >=4.0.0'
7285 '@effect/sql-pg': 4.0.0-rc.1157318 '@effect/sql-pg': 4.0.1
7286 '@effect/sql-pglite': '>=4.0.0-beta.105 || >=4.0.0'7319 '@effect/sql-pglite': '>=4.0.0-beta.105 || >=4.0.0'
7287 '@effect/sql-sqlite-bun': '>=4.0.0-beta.105 || >=4.0.0'7320 '@effect/sql-sqlite-bun': '>=4.0.0-beta.105 || >=4.0.0'
7288 '@effect/sql-sqlite-do': '>=4.0.0-beta.105 || >=4.0.0'7321 '@effect/sql-sqlite-do': '>=4.0.0-beta.105 || >=4.0.0'
...@@ -7313,7 +7346,7 @@ packages:...@@ -7313,7 +7346,7 @@ packages:
7313 arktype: '>=2.0.0'7346 arktype: '>=2.0.0'
7314 better-sqlite3: '>=9.3.0'7347 better-sqlite3: '>=9.3.0'
7315 bun-types: '*'7348 bun-types: '*'
7316 effect: 4.0.0-rc.1157349 effect: 4.0.1
7317 expo-sqlite: '>=14.0.0'7350 expo-sqlite: '>=14.0.0'
7318 minipg: '>=0.2.0'7351 minipg: '>=0.2.0'
7319 mssql: ^11.0.17352 mssql: ^11.0.1
...@@ -7440,8 +7473,8 @@ packages:...@@ -7440,8 +7473,8 @@ packages:
7440 ee-first@1.1.1:7473 ee-first@1.1.1:
7441 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}7474 resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
74427475
7443 effect@4.0.0-rc.115:7476 effect@4.0.1:
7444 resolution: {integrity: sha512-ogYulZ5ffeOzrJqQrG0XOkDO5lKn2s9KNHhoxJy/6wKUkF0i12dlVXWA9TgsgQ+zV/JzizyG0+XMPepZEQX6vw==}7477 resolution: {integrity: sha512-b1VlQG9g8fwxE5QnIZuPoOP/0MsqHJSRKxUijjoM80E5q95FXrX5yWtY5XI8G+GJsBQAVSDbLS458z9a++uVvw==}
74457478
7446 ejs@3.1.10:7479 ejs@3.1.10:
7447 resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}7480 resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==}
...@@ -7995,10 +8028,6 @@ packages:...@@ -7995,10 +8028,6 @@ packages:
7995 fast-xml-builder@1.2.0:8028 fast-xml-builder@1.2.0:
7996 resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==}8029 resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==}
79978030
7998 fast-xml-parser@5.11.1:
7999 resolution: {integrity: sha512-TBw6K/fxoQGGjCmZDw9w/ZwP3uDcnTM4YH/g+PFRWr8sbe5idXtxNN6vITh4+1ruCZaho6uBFurElsA7F0zzgw==}
8000 hasBin: true
8001
8002 fast-xml-parser@5.7.3:8031 fast-xml-parser@5.7.3:
8003 resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==}8032 resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==}
8004 hasBin: true8033 hasBin: true
...@@ -8478,9 +8507,6 @@ packages:...@@ -8478,9 +8507,6 @@ packages:
8478 resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}8507 resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
8479 engines: {node: '>=18'}8508 engines: {node: '>=18'}
84808509
8481 is-unsafe@2.0.2:
8482 resolution: {integrity: sha512-HgbIHPBH0KHHCcjLfGsCvhtPTVxjaAZlXjwdz7/GQC40SjSe4sfQsar8J5VFo8JOSbarkpV0OLG95bbaNd9aAQ==}
8483
8484 is-wsl@2.2.0:8510 is-wsl@2.2.0:
8485 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}8511 resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==}
8486 engines: {node: '>=8'}8512 engines: {node: '>=8'}
...@@ -9486,7 +9512,7 @@ packages:...@@ -9486,7 +9512,7 @@ packages:
9486 hasBin: true9512 hasBin: true
9487 peerDependencies:9513 peerDependencies:
9488 svelte: ^5.0.09514 svelte: ^5.0.0
9489 vite-plus: '*'9515 vite-plus: 1.0.0
9490 peerDependenciesMeta:9516 peerDependenciesMeta:
9491 svelte:9517 svelte:
9492 optional: true9518 optional: true
...@@ -9503,7 +9529,7 @@ packages:...@@ -9503,7 +9529,7 @@ packages:
9503 hasBin: true9529 hasBin: true
9504 peerDependencies:9530 peerDependencies:
9505 oxlint-tsgolint: '>=7.0.2001'9531 oxlint-tsgolint: '>=7.0.2001'
9506 vite-plus: '*'9532 vite-plus: 1.0.0
9507 peerDependenciesMeta:9533 peerDependenciesMeta:
9508 oxlint-tsgolint:9534 oxlint-tsgolint:
9509 optional: true9535 optional: true
...@@ -10853,6 +10879,10 @@ packages:...@@ -10853,6 +10879,10 @@ packages:
10853 resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==}10879 resolution: {integrity: sha512-/y4/bH9YNU5hi9NIrpOuvGXFcxrj3CMrV+/AYpowAYTpHn8gX/XPFjNy766FPoYY0miQhdW977JFWKGNhBdwyQ==}
10854 engines: {node: '>=22.19.0'}10880 engines: {node: '>=22.19.0'}
1085510881
10882 undici@8.11.2:
10883 resolution: {integrity: sha512-u4UB2/IrKdU6lFxumHmmo1a3fCQO5tzQllRorfoRS63txhrB7xTpSn1PftwC4qEHkOaqP95fCWW4lJzwErwzhQ==}
10884 engines: {node: '>=22.19.0'}
10885
10856 unenv@2.0.0-rc.24:10886 unenv@2.0.0-rc.24:
10857 resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}10887 resolution: {integrity: sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==}
1085810888
...@@ -11316,8 +11346,8 @@ packages:...@@ -11316,8 +11346,8 @@ packages:
11316 engines: {node: '>=8'}11346 engines: {node: '>=8'}
11317 hasBin: true11347 hasBin: true
1131811348
11319 workerd@1.20260901.1:11349 workerd@1.20260918.1:
11320 resolution: {integrity: sha512-Z5PVprrPRlV70+RzgbFpzoPpjCLGtErhsQ9Ahe96pe7hJGMsmexTU4+rhUPH+2Sguf7vRAxFFsqXpkIleRFSPA==}11350 resolution: {integrity: sha512-NsjfQlBNQ0iEniv/STOy4zbp8s5k60PzL1Ter02Eg44arbDhHtf6UOs03E31XDRmmBFxSIkAZuCyld3RKH1wqA==}
11321 engines: {node: '>=16'}11351 engines: {node: '>=16'}
11322 hasBin: true11352 hasBin: true
1132311353
...@@ -11360,6 +11390,18 @@ packages:...@@ -11360,6 +11390,18 @@ packages:
11360 utf-8-validate:11390 utf-8-validate:
11361 optional: true11391 optional: true
1136211392
11393 ws@8.22.0:
11394 resolution: {integrity: sha512-Ydggc987+RO0AnWtZ/7Wq9FtNvcrL1b/RO0ud9mWjUPgDrsAAwQSF51sm2hm1XofbU/4jkpGEsLFsZZxU+1DOg==}
11395 engines: {node: '>=10.0.0'}
11396 peerDependencies:
11397 bufferutil: ^4.0.1
11398 utf-8-validate: '>=5.0.2'
11399 peerDependenciesMeta:
11400 bufferutil:
11401 optional: true
11402 utf-8-validate:
11403 optional: true
11404
11363 xcode@3.0.1:11405 xcode@3.0.1:
11364 resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}11406 resolution: {integrity: sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==}
11365 engines: {node: '>=10.0.0'}11407 engines: {node: '>=10.0.0'}
...@@ -11372,10 +11414,6 @@ packages:...@@ -11372,10 +11414,6 @@ packages:
11372 resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==}11414 resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==}
11373 engines: {node: '>=16.0.0'}11415 engines: {node: '>=16.0.0'}
1137411416
11375 xml-naming@0.3.0:
11376 resolution: {integrity: sha512-ghig2TBE/H11aOVgmahA3MhimvkBr6JIYknH/Dhdk10nXwdbIqBJsbfMxpvFPG8bAw77gN29aQWvKpmVoPlvPQ==}
11377 engines: {node: '>=16.0.0'}
11378
11379 xml2js@0.4.23:11417 xml2js@0.4.23:
11380 resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}11418 resolution: {integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==}
11381 engines: {node: '>=4.0.0'}11419 engines: {node: '>=4.0.0'}
...@@ -11528,22 +11566,22 @@ snapshots:...@@ -11528,22 +11566,22 @@ snapshots:
11528 dependencies:11566 dependencies:
11529 json-schema: 0.4.011567 json-schema: 0.4.0
1153011568
11531 '@alchemy.run/cloudflare-runtime@2.0.0-beta.79(@distilled.cloud/cloudflare@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(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.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(rolldown@1.2.5)(typescript@7.0.2)':11569 '@alchemy.run/cloudflare-runtime@2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)))(@effect/platform-node@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(rolldown@1.2.5)(typescript@7.0.2)':
11532 dependencies:11570 dependencies:
11533 '@alchemy.run/node-utils': 2.0.0-beta.7911571 '@alchemy.run/node-utils': 2.0.0-beta.80
11534 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1)11572 '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260918.1)
11535 '@distilled.cloud/cloudflare': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))11573 '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
11536 '@puppeteer/browsers': 3.2.2(yauzl@3.4.0)11574 '@puppeteer/browsers': 3.2.2(yauzl@3.4.0)
11537 capnp-es: 0.0.16(typescript@7.0.2)11575 capnp-es: 0.0.16(typescript@7.0.2)
11538 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)11576 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
11539 magic-string: 0.30.2111577 magic-string: 0.30.21
11540 mime: 4.1.011578 mime: 4.1.0
11541 sharp: 0.35.4(@types/node@24.12.4)11579 sharp: 0.35.4(@types/node@24.12.4)
11542 unenv: 2.0.0-rc.2411580 unenv: 2.0.0-rc.24
11543 workerd: 1.20260901.111581 workerd: 1.20260918.1
11544 yauzl: 3.4.011582 yauzl: 3.4.0
11545 optionalDependencies:11583 optionalDependencies:
11546 '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)11584 '@effect/platform-node': 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
11547 rolldown: 1.2.511585 rolldown: 1.2.5
11548 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)'11586 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)'
11549 transitivePeerDependencies:11587 transitivePeerDependencies:
...@@ -11551,16 +11589,16 @@ snapshots:...@@ -11551,16 +11589,16 @@ snapshots:
11551 - proxy-agent11589 - proxy-agent
11552 - typescript11590 - typescript
1155311591
11554 '@alchemy.run/floci@2.0.0-beta.79(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':11592 '@alchemy.run/floci@2.0.0-beta.80(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
11555 dependencies:11593 dependencies:
11556 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)11594 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1155711595
11558 '@alchemy.run/node-utils@2.0.0-beta.79':11596 '@alchemy.run/node-utils@2.0.0-beta.80':
11559 dependencies:11597 dependencies:
11560 chokidar: 5.0.011598 chokidar: 5.0.0
11561 rolldown: 1.2.511599 rolldown: 1.2.5
1156211600
11563 '@alchemy.run/sigil@0.0.0-alpha.11(@types/react@19.3.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))':11601 '@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))':
11564 optionalDependencies:11602 optionalDependencies:
11565 '@types/react': 19.3.011603 '@types/react': 19.3.0
11566 react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)11604 react-devtools-core: 6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)
...@@ -11735,22 +11773,26 @@ snapshots:...@@ -11735,22 +11773,26 @@ snapshots:
11735 '@aws-sdk/util-locate-window': 3.965.511773 '@aws-sdk/util-locate-window': 3.965.5
11736 '@smithy/util-utf8': 2.3.011774 '@smithy/util-utf8': 2.3.0
11737 tslib: 2.8.111775 tslib: 2.8.1
11776 optional: true
1173811777
11739 '@aws-crypto/sha256-js@5.2.0':11778 '@aws-crypto/sha256-js@5.2.0':
11740 dependencies:11779 dependencies:
11741 '@aws-crypto/util': 5.2.011780 '@aws-crypto/util': 5.2.0
11742 '@aws-sdk/types': 3.974.511781 '@aws-sdk/types': 3.974.5
11743 tslib: 2.8.111782 tslib: 2.8.1
11783 optional: true
1174411784
11745 '@aws-crypto/supports-web-crypto@5.2.0':11785 '@aws-crypto/supports-web-crypto@5.2.0':
11746 dependencies:11786 dependencies:
11747 tslib: 2.8.111787 tslib: 2.8.1
11788 optional: true
1174811789
11749 '@aws-crypto/util@5.2.0':11790 '@aws-crypto/util@5.2.0':
11750 dependencies:11791 dependencies:
11751 '@aws-sdk/types': 3.974.511792 '@aws-sdk/types': 3.974.5
11752 '@smithy/util-utf8': 2.3.011793 '@smithy/util-utf8': 2.3.0
11753 tslib: 2.8.111794 tslib: 2.8.1
11795 optional: true
1175411796
11755 '@aws-sdk/client-cognito-identity@3.1062.0':11797 '@aws-sdk/client-cognito-identity@3.1062.0':
11756 dependencies:11798 dependencies:
...@@ -11764,6 +11806,7 @@ snapshots:...@@ -11764,6 +11806,7 @@ snapshots:
11764 '@smithy/node-http-handler': 4.7.711806 '@smithy/node-http-handler': 4.7.7
11765 '@smithy/types': 4.18.011807 '@smithy/types': 4.18.0
11766 tslib: 2.8.111808 tslib: 2.8.1
11809 optional: true
1176711810
11768 '@aws-sdk/core@3.974.17':11811 '@aws-sdk/core@3.974.17':
11769 dependencies:11812 dependencies:
...@@ -11775,6 +11818,7 @@ snapshots:...@@ -11775,6 +11818,7 @@ snapshots:
11775 '@smithy/types': 4.18.011818 '@smithy/types': 4.18.0
11776 bowser: 2.14.111819 bowser: 2.14.1
11777 tslib: 2.8.111820 tslib: 2.8.1
11821 optional: true
1177811822
11779 '@aws-sdk/credential-provider-cognito-identity@3.972.41':11823 '@aws-sdk/credential-provider-cognito-identity@3.972.41':
11780 dependencies:11824 dependencies:
...@@ -11783,6 +11827,7 @@ snapshots:...@@ -11783,6 +11827,7 @@ snapshots:
11783 '@smithy/core': 3.34.111827 '@smithy/core': 3.34.1
11784 '@smithy/types': 4.18.011828 '@smithy/types': 4.18.0
11785 tslib: 2.8.111829 tslib: 2.8.1
11830 optional: true
1178611831
11787 '@aws-sdk/credential-provider-env@3.972.43':11832 '@aws-sdk/credential-provider-env@3.972.43':
11788 dependencies:11833 dependencies:
...@@ -11791,6 +11836,7 @@ snapshots:...@@ -11791,6 +11836,7 @@ snapshots:
11791 '@smithy/core': 3.34.111836 '@smithy/core': 3.34.1
11792 '@smithy/types': 4.18.011837 '@smithy/types': 4.18.0
11793 tslib: 2.8.111838 tslib: 2.8.1
11839 optional: true
1179411840
11795 '@aws-sdk/credential-provider-http@3.972.45':11841 '@aws-sdk/credential-provider-http@3.972.45':
11796 dependencies:11842 dependencies:
...@@ -11801,6 +11847,7 @@ snapshots:...@@ -11801,6 +11847,7 @@ snapshots:
11801 '@smithy/node-http-handler': 4.7.711847 '@smithy/node-http-handler': 4.7.7
11802 '@smithy/types': 4.18.011848 '@smithy/types': 4.18.0
11803 tslib: 2.8.111849 tslib: 2.8.1
11850 optional: true
1180411851
11805 '@aws-sdk/credential-provider-ini@3.972.49':11852 '@aws-sdk/credential-provider-ini@3.972.49':
11806 dependencies:11853 dependencies:
...@@ -11817,6 +11864,7 @@ snapshots:...@@ -11817,6 +11864,7 @@ snapshots:
11817 '@smithy/credential-provider-imds': 4.3.811864 '@smithy/credential-provider-imds': 4.3.8
11818 '@smithy/types': 4.18.011865 '@smithy/types': 4.18.0
11819 tslib: 2.8.111866 tslib: 2.8.1
11867 optional: true
1182011868
11821 '@aws-sdk/credential-provider-login@3.972.48':11869 '@aws-sdk/credential-provider-login@3.972.48':
11822 dependencies:11870 dependencies:
...@@ -11826,6 +11874,7 @@ snapshots:...@@ -11826,6 +11874,7 @@ snapshots:
11826 '@smithy/core': 3.34.111874 '@smithy/core': 3.34.1
11827 '@smithy/types': 4.18.011875 '@smithy/types': 4.18.0
11828 tslib: 2.8.111876 tslib: 2.8.1
11877 optional: true
1182911878
11830 '@aws-sdk/credential-provider-node@3.972.51':11879 '@aws-sdk/credential-provider-node@3.972.51':
11831 dependencies:11880 dependencies:
...@@ -11840,6 +11889,7 @@ snapshots:...@@ -11840,6 +11889,7 @@ snapshots:
11840 '@smithy/credential-provider-imds': 4.3.811889 '@smithy/credential-provider-imds': 4.3.8
11841 '@smithy/types': 4.18.011890 '@smithy/types': 4.18.0
11842 tslib: 2.8.111891 tslib: 2.8.1
11892 optional: true
1184311893
11844 '@aws-sdk/credential-provider-process@3.972.43':11894 '@aws-sdk/credential-provider-process@3.972.43':
11845 dependencies:11895 dependencies:
...@@ -11848,6 +11898,7 @@ snapshots:...@@ -11848,6 +11898,7 @@ snapshots:
11848 '@smithy/core': 3.34.111898 '@smithy/core': 3.34.1
11849 '@smithy/types': 4.18.011899 '@smithy/types': 4.18.0
11850 tslib: 2.8.111900 tslib: 2.8.1
11901 optional: true
1185111902
11852 '@aws-sdk/credential-provider-sso@3.972.48':11903 '@aws-sdk/credential-provider-sso@3.972.48':
11853 dependencies:11904 dependencies:
...@@ -11858,6 +11909,7 @@ snapshots:...@@ -11858,6 +11909,7 @@ snapshots:
11858 '@smithy/core': 3.34.111909 '@smithy/core': 3.34.1
11859 '@smithy/types': 4.18.011910 '@smithy/types': 4.18.0
11860 tslib: 2.8.111911 tslib: 2.8.1
11912 optional: true
1186111913
11862 '@aws-sdk/credential-provider-web-identity@3.972.48':11914 '@aws-sdk/credential-provider-web-identity@3.972.48':
11863 dependencies:11915 dependencies:
...@@ -11867,6 +11919,7 @@ snapshots:...@@ -11867,6 +11919,7 @@ snapshots:
11867 '@smithy/core': 3.34.111919 '@smithy/core': 3.34.1
11868 '@smithy/types': 4.18.011920 '@smithy/types': 4.18.0
11869 tslib: 2.8.111921 tslib: 2.8.1
11922 optional: true
1187011923
11871 '@aws-sdk/credential-providers@3.1062.0':11924 '@aws-sdk/credential-providers@3.1062.0':
11872 dependencies:11925 dependencies:
...@@ -11887,6 +11940,7 @@ snapshots:...@@ -11887,6 +11940,7 @@ snapshots:
11887 '@smithy/credential-provider-imds': 4.3.811940 '@smithy/credential-provider-imds': 4.3.8
11888 '@smithy/types': 4.18.011941 '@smithy/types': 4.18.0
11889 tslib: 2.8.111942 tslib: 2.8.1
11943 optional: true
1189011944
11891 '@aws-sdk/nested-clients@3.997.16':11945 '@aws-sdk/nested-clients@3.997.16':
11892 dependencies:11946 dependencies:
...@@ -11900,6 +11954,7 @@ snapshots:...@@ -11900,6 +11954,7 @@ snapshots:
11900 '@smithy/node-http-handler': 4.7.711954 '@smithy/node-http-handler': 4.7.7
11901 '@smithy/types': 4.18.011955 '@smithy/types': 4.18.0
11902 tslib: 2.8.111956 tslib: 2.8.1
11957 optional: true
1190311958
11904 '@aws-sdk/signature-v4-multi-region@3.996.31':11959 '@aws-sdk/signature-v4-multi-region@3.996.31':
11905 dependencies:11960 dependencies:
...@@ -11907,6 +11962,7 @@ snapshots:...@@ -11907,6 +11962,7 @@ snapshots:
11907 '@smithy/signature-v4': 5.4.611962 '@smithy/signature-v4': 5.4.6
11908 '@smithy/types': 4.18.011963 '@smithy/types': 4.18.0
11909 tslib: 2.8.111964 tslib: 2.8.1
11965 optional: true
1191011966
11911 '@aws-sdk/token-providers@3.1062.0':11967 '@aws-sdk/token-providers@3.1062.0':
11912 dependencies:11968 dependencies:
...@@ -11916,23 +11972,28 @@ snapshots:...@@ -11916,23 +11972,28 @@ snapshots:
11916 '@smithy/core': 3.34.111972 '@smithy/core': 3.34.1
11917 '@smithy/types': 4.18.011973 '@smithy/types': 4.18.0
11918 tslib: 2.8.111974 tslib: 2.8.1
11975 optional: true
1191911976
11920 '@aws-sdk/types@3.974.5':11977 '@aws-sdk/types@3.974.5':
11921 dependencies:11978 dependencies:
11922 '@smithy/types': 4.18.011979 '@smithy/types': 4.18.0
11923 tslib: 2.8.111980 tslib: 2.8.1
11981 optional: true
1192411982
11925 '@aws-sdk/util-locate-window@3.965.5':11983 '@aws-sdk/util-locate-window@3.965.5':
11926 dependencies:11984 dependencies:
11927 tslib: 2.8.111985 tslib: 2.8.1
11986 optional: true
1192811987
11929 '@aws-sdk/xml-builder@3.972.27':11988 '@aws-sdk/xml-builder@3.972.27':
11930 dependencies:11989 dependencies:
11931 '@smithy/types': 4.18.011990 '@smithy/types': 4.18.0
11932 fast-xml-parser: 5.7.311991 fast-xml-parser: 5.7.3
11933 tslib: 2.8.111992 tslib: 2.8.1
11993 optional: true
1193411994
11935 '@aws/lambda-invoke-store@0.2.4': {}11995 '@aws/lambda-invoke-store@0.2.4':
11996 optional: true
1193611997
11937 '@babel/code-frame@7.29.7':11998 '@babel/code-frame@7.29.7':
11938 dependencies:11999 dependencies:
...@@ -12690,30 +12751,30 @@ snapshots:...@@ -12690,30 +12751,30 @@ snapshots:
12690 react: 19.3.012751 react: 19.3.0
12691 react-dom: 19.3.0(react@19.3.0)12752 react-dom: 19.3.0(react@19.3.0)
1269212753
12693 '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260901.1)':12754 '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260918.1)':
12694 dependencies:12755 dependencies:
12695 unenv: 2.0.0-rc.2412756 unenv: 2.0.0-rc.24
12696 optionalDependencies:12757 optionalDependencies:
12697 workerd: 1.20260901.112758 workerd: 1.20260918.1
1269812759
12699 '@cloudflare/workerd-darwin-64@1.20260901.1':12760 '@cloudflare/workerd-darwin-64@1.20260918.1':
12700 optional: true12761 optional: true
1270112762
12702 '@cloudflare/workerd-darwin-arm64@1.20260901.1':12763 '@cloudflare/workerd-darwin-arm64@1.20260918.1':
12703 optional: true12764 optional: true
1270412765
12705 '@cloudflare/workerd-linux-64@1.20260901.1':12766 '@cloudflare/workerd-linux-64@1.20260918.1':
12706 optional: true12767 optional: true
1270712768
12708 '@cloudflare/workerd-linux-arm64@1.20260901.1':12769 '@cloudflare/workerd-linux-arm64@1.20260918.1':
12709 optional: true12770 optional: true
1271012771
12711 '@cloudflare/workerd-windows-64@1.20260901.1':12772 '@cloudflare/workerd-windows-64@1.20260918.1':
12712 optional: true12773 optional: true
1271312774
12714 '@cloudflare/workers-types@4.20260604.1': {}12775 '@cloudflare/workers-types@4.20260604.1': {}
1271512776
12716 '@cloudflare/workers-types@5.20260907.1': {}12777 '@cloudflare/workers-types@5.20261004.1': {}
1271712778
12718 '@connectrpc/connect-node@1.7.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.0))':12779 '@connectrpc/connect-node@1.7.0(@bufbuild/protobuf@1.10.0)(@connectrpc/connect@1.7.0(@bufbuild/protobuf@1.10.0))':
12719 dependencies:12780 dependencies:
...@@ -12822,65 +12883,86 @@ snapshots:...@@ -12822,65 +12883,86 @@ snapshots:
1282212883
12823 '@dimforge/rapier3d-compat@0.12.0': {}12884 '@dimforge/rapier3d-compat@0.12.0': {}
1282412885
12825 '@distilled.cloud/aws@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12886 '@distilled.cloud/acme@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12826 dependencies:12887 dependencies:
12827 '@aws-sdk/types': 3.974.512888 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12828 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12889 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12829 '@smithy/shared-ini-file-loader': 4.7.212890
12891 '@distilled.cloud/aws@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12892 dependencies:
12893 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12830 '@smithy/types': 4.18.012894 '@smithy/types': 4.18.0
12831 '@smithy/util-base64': 4.6.212895 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12832 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)
12833 fast-xml-parser: 5.11.1
1283412896
12835 '@distilled.cloud/axiom@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12897 '@distilled.cloud/axiom@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12836 dependencies:12898 dependencies:
12837 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12899 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12838 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12900 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1283912901
12840 '@distilled.cloud/cloudflare@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12902 '@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12841 dependencies:12903 dependencies:
12842 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12904 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12843 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12905 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1284412906
12845 '@distilled.cloud/core@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12907 '@distilled.cloud/core@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12846 dependencies:12908 dependencies:
12847 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12909 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12848 graphql: 16.11.012910 graphql: 16.11.0
1284912911
12850 '@distilled.cloud/fly-io@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12912 '@distilled.cloud/doppler@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12913 dependencies:
12914 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12915 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12916
12917 '@distilled.cloud/fly-io@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12918 dependencies:
12919 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12920 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12921
12922 '@distilled.cloud/gcp@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12923 dependencies:
12924 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12925 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12926
12927 '@distilled.cloud/hetzner@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12851 dependencies:12928 dependencies:
12852 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12929 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12853 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12930 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1285412931
12855 '@distilled.cloud/hetzner@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12932 '@distilled.cloud/infisical@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12856 dependencies:12933 dependencies:
12857 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12934 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12858 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12935 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1285912936
12860 '@distilled.cloud/neon@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12937 '@distilled.cloud/neon@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12861 dependencies:12938 dependencies:
12862 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12939 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12863 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12940 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1286412941
12865 '@distilled.cloud/planetscale@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12942 '@distilled.cloud/planetscale@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12866 dependencies:12943 dependencies:
12867 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12944 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12868 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12945 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1286912946
12870 '@distilled.cloud/prisma@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12947 '@distilled.cloud/prisma@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12871 dependencies:12948 dependencies:
12872 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12949 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12873 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12950 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1287412951
12875 '@distilled.cloud/railway@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12952 '@distilled.cloud/railway@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12876 dependencies:12953 dependencies:
12877 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12954 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12878 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12955 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1287912956
12880 '@distilled.cloud/stripe@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':12957 '@distilled.cloud/stripe@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12881 dependencies:12958 dependencies:
12882 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))12959 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12883 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)12960 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12961
12962 '@distilled.cloud/zerossl@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12963 dependencies:
12964 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
12965 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1288412966
12885 '@dnd-kit/accessibility@3.1.1(react@19.2.6)':12967 '@dnd-kit/accessibility@3.1.1(react@19.2.6)':
12886 dependencies:12968 dependencies:
...@@ -12916,62 +12998,62 @@ snapshots:...@@ -12916,62 +12998,62 @@ snapshots:
1291612998
12917 '@drizzle-team/brocli@0.12.0': {}12999 '@drizzle-team/brocli@0.12.0': {}
1291813000
12919 '@effect/atom-react@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(react@19.2.6)(scheduler@0.27.0)':13001 '@effect/atom-react@4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(react@19.2.6)(scheduler@0.28.0)':
12920 dependencies:13002 dependencies:
12921 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13003 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12922 react: 19.2.613004 react: 19.2.6
12923 scheduler: 0.27.013005 scheduler: 0.28.0
1292413006
12925 '@effect/atom-react@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(react@19.3.0)(scheduler@0.27.0)':13007 '@effect/atom-react@4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(react@19.3.0)(scheduler@0.28.0)':
12926 dependencies:13008 dependencies:
12927 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13009 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12928 react: 19.3.013010 react: 19.3.0
12929 scheduler: 0.27.013011 scheduler: 0.28.0
1293013012
12931 '@effect/openapi-generator@4.0.0-rc.115(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(encoding@0.1.13)':13013 '@effect/openapi-generator@4.0.1(@effect/platform-node@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6))(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(encoding@0.1.13)':
12932 dependencies:13014 dependencies:
12933 '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)13015 '@effect/platform-node': 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
12934 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13016 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12935 swagger2openapi: 7.0.8(encoding@0.1.13)13017 swagger2openapi: 7.0.8(encoding@0.1.13)
12936 transitivePeerDependencies:13018 transitivePeerDependencies:
12937 - encoding13019 - encoding
1293813020
12939 '@effect/platform-node-shared@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(utf-8-validate@6.0.6)':13021 '@effect/platform-node-shared@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(utf-8-validate@6.0.6)':
12940 dependencies:13022 dependencies:
12941 '@types/ws': 8.18.113023 '@types/ws': 8.18.1
12942 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13024 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12943 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)13025 ws: 8.22.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
12944 transitivePeerDependencies:13026 transitivePeerDependencies:
12945 - bufferutil13027 - bufferutil
12946 - utf-8-validate13028 - utf-8-validate
1294713029
12948 '@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)':13030 '@effect/platform-node@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)':
12949 dependencies:13031 dependencies:
12950 '@effect/platform-node-shared': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(utf-8-validate@6.0.6)13032 '@effect/platform-node-shared': 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(utf-8-validate@6.0.6)
12951 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13033 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12952 redis: 6.2.113034 redis: 6.2.1
12953 undici: 8.10.213035 undici: 8.11.2
12954 transitivePeerDependencies:13036 transitivePeerDependencies:
12955 - bufferutil13037 - bufferutil
12956 - utf-8-validate13038 - utf-8-validate
1295713039
12958 '@effect/sql-d1@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':13040 '@effect/sql-d1@4.0.0(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12959 dependencies:13041 dependencies:
12960 '@cloudflare/workers-types': 5.20260907.113042 '@cloudflare/workers-types': 5.20261004.1
12961 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13043 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1296213044
12963 '@effect/sql-pg@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':13045 '@effect/sql-pg@4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12964 dependencies:13046 dependencies:
12965 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13047 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1296613048
12967 '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':13049 '@effect/sql-sqlite-bun@4.0.0-rc.112(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12968 dependencies:13050 dependencies:
12969 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13051 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
12970 optional: true13052 optional: true
1297113053
12972 '@effect/sql-sqlite-do@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':13054 '@effect/sql-sqlite-do@4.0.0(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
12973 dependencies:13055 dependencies:
12974 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13056 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1297513057
12976 '@effect/tsgo-darwin-arm64@0.41.0':13058 '@effect/tsgo-darwin-arm64@0.41.0':
12977 optional: true13059 optional: true
...@@ -13004,9 +13086,41 @@ snapshots:...@@ -13004,9 +13086,41 @@ snapshots:
13004 '@effect/tsgo-win32-arm64': 0.41.013086 '@effect/tsgo-win32-arm64': 0.41.0
13005 '@effect/tsgo-win32-x64': 0.41.013087 '@effect/tsgo-win32-x64': 0.41.0
1300613088
13007 '@effect/vitest@4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':13089 '@effect/vitest@4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)':
13008 dependencies:13090 dependencies:
13009 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)13091 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
13092 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)
13093 transitivePeerDependencies:
13094 - '@arethetypeswrong/core'
13095 - '@edge-runtime/vm'
13096 - '@opentelemetry/api'
13097 - '@types/node'
13098 - '@vitejs/devtools'
13099 - '@vitest/browser-playwright'
13100 - '@vitest/browser-webdriverio'
13101 - '@vitest/coverage-istanbul'
13102 - '@vitest/coverage-v8'
13103 - '@vitest/ui'
13104 - bufferutil
13105 - esbuild
13106 - happy-dom
13107 - jiti
13108 - jsdom
13109 - less
13110 - msw
13111 - publint
13112 - sass
13113 - sass-embedded
13114 - stylus
13115 - sugarss
13116 - svelte
13117 - terser
13118 - tsx
13119 - typescript
13120 - unplugin-unused
13121 - unrun
13122 - utf-8-validate
13123 - yaml
1301013124
13011 '@electric-sql/pglite@0.3.15':13125 '@electric-sql/pglite@0.3.15':
13012 optional: true13126 optional: true
...@@ -14080,7 +14194,7 @@ snapshots:...@@ -14080,7 +14194,7 @@ snapshots:
14080 '@libsql/isomorphic-ws@0.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)':14194 '@libsql/isomorphic-ws@0.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6)':
14081 dependencies:14195 dependencies:
14082 '@types/ws': 8.18.114196 '@types/ws': 8.18.1
14083 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)14197 ws: 8.22.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
14084 transitivePeerDependencies:14198 transitivePeerDependencies:
14085 - bufferutil14199 - bufferutil
14086 - utf-8-validate14200 - utf-8-validate
...@@ -14243,6 +14357,10 @@ snapshots:...@@ -14243,6 +14357,10 @@ snapshots:
1424314357
14244 '@neon-rs/load@0.0.4': {}14358 '@neon-rs/load@0.0.4': {}
1424514359
14360 '@neon/functions@0.11.0(hono@4.13.7)':
14361 optionalDependencies:
14362 hono: 4.13.7
14363
14246 '@noble/curves@1.9.1':14364 '@noble/curves@1.9.1':
14247 dependencies:14365 dependencies:
14248 '@noble/hashes': 1.8.014366 '@noble/hashes': 1.8.0
...@@ -14253,9 +14371,8 @@ snapshots:...@@ -14253,9 +14371,8 @@ snapshots:
1425314371
14254 '@noble/hashes@2.2.0': {}14372 '@noble/hashes@2.2.0': {}
1425514373
14256 '@nodable/entities@2.1.1': {}14374 '@nodable/entities@2.1.1':
1425714375 optional: true
14258 '@nodable/entities@3.0.0': {}
1425914376
14260 '@nornagon/put@0.0.8': {}14377 '@nornagon/put@0.0.8': {}
1426114378
...@@ -14372,22 +14489,22 @@ snapshots:...@@ -14372,22 +14489,22 @@ snapshots:
14372 dependencies:14489 dependencies:
14373 cross-spawn: 7.0.614490 cross-spawn: 7.0.6
1437414491
14375 '@opencode/client@2.0.18(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))':14492 '@opencode/client@2.0.23(patch_hash=f725d6e6d9af0d56dc6ed71b863518fbfc751af1773cff2311209d2c404cf4cd)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))':
14376 dependencies:14493 dependencies:
14377 '@opencode/protocol': 2.0.1814494 '@opencode/protocol': 2.0.23(patch_hash=17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685)
14378 '@opencode/schema': 2.0.1814495 '@opencode/schema': 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59)
14379 optionalDependencies:14496 optionalDependencies:
14380 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)14497 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1438114498
14382 '@opencode/protocol@2.0.18':14499 '@opencode/protocol@2.0.23(patch_hash=17a82f6c2c98fd0371e786c211a4fbdaaba403577a25733e5e99a0c25a16a685)':
14383 dependencies:14500 dependencies:
14384 '@opencode/schema': 2.0.1814501 '@opencode/schema': 2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59)
14385 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)14502 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1438614503
14387 '@opencode/schema@2.0.18':14504 '@opencode/schema@2.0.23(patch_hash=650f1b8602789407c010861284272dcb6bd6de01ec6a75bf3c0904a0e7596d59)':
14388 dependencies:14505 dependencies:
14389 '@standard-schema/spec': 1.1.014506 '@standard-schema/spec': 1.1.0
14390 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)14507 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
1439114508
14392 '@oslojs/encoding@1.1.0': {}14509 '@oslojs/encoding@1.1.0': {}
1439314510
...@@ -15237,58 +15354,56 @@ snapshots:...@@ -15237,58 +15354,56 @@ snapshots:
15237 dependencies:15354 dependencies:
15238 '@smithy/types': 4.18.015355 '@smithy/types': 4.18.0
15239 tslib: 2.8.115356 tslib: 2.8.1
15357 optional: true
1524015358
15241 '@smithy/credential-provider-imds@4.3.8':15359 '@smithy/credential-provider-imds@4.3.8':
15242 dependencies:15360 dependencies:
15243 '@smithy/core': 3.34.115361 '@smithy/core': 3.34.1
15244 '@smithy/types': 4.18.015362 '@smithy/types': 4.18.0
15245 tslib: 2.8.115363 tslib: 2.8.1
15364 optional: true
1524615365
15247 '@smithy/fetch-http-handler@5.4.6':15366 '@smithy/fetch-http-handler@5.4.6':
15248 dependencies:15367 dependencies:
15249 '@smithy/core': 3.34.115368 '@smithy/core': 3.34.1
15250 '@smithy/types': 4.18.015369 '@smithy/types': 4.18.0
15251 tslib: 2.8.115370 tslib: 2.8.1
15371 optional: true
1525215372
15253 '@smithy/is-array-buffer@2.2.0':15373 '@smithy/is-array-buffer@2.2.0':
15254 dependencies:15374 dependencies:
15255 tslib: 2.8.115375 tslib: 2.8.1
15376 optional: true
1525615377
15257 '@smithy/node-http-handler@4.7.7':15378 '@smithy/node-http-handler@4.7.7':
15258 dependencies:15379 dependencies:
15259 '@smithy/core': 3.34.115380 '@smithy/core': 3.34.1
15260 '@smithy/types': 4.18.015381 '@smithy/types': 4.18.0
15261 tslib: 2.8.115382 tslib: 2.8.1
1526215383 optional: true
15263 '@smithy/shared-ini-file-loader@4.7.2':
15264 dependencies:
15265 '@smithy/core': 3.34.1
15266 tslib: 2.8.1
1526715384
15268 '@smithy/signature-v4@5.4.6':15385 '@smithy/signature-v4@5.4.6':
15269 dependencies:15386 dependencies:
15270 '@smithy/core': 3.34.115387 '@smithy/core': 3.34.1
15271 '@smithy/types': 4.18.015388 '@smithy/types': 4.18.0
15272 tslib: 2.8.115389 tslib: 2.8.1
15390 optional: true
1527315391
15274 '@smithy/types@4.18.0':15392 '@smithy/types@4.18.0':
15275 dependencies:15393 dependencies:
15276 tslib: 2.8.115394 tslib: 2.8.1
1527715395
15278 '@smithy/util-base64@4.6.2':
15279 dependencies:
15280 '@smithy/core': 3.34.1
15281 tslib: 2.8.1
15282
15283 '@smithy/util-buffer-from@2.2.0':15396 '@smithy/util-buffer-from@2.2.0':
15284 dependencies:15397 dependencies:
15285 '@smithy/is-array-buffer': 2.2.015398 '@smithy/is-array-buffer': 2.2.0
15286 tslib: 2.8.115399 tslib: 2.8.1
15400 optional: true
1528715401
15288 '@smithy/util-utf8@2.3.0':15402 '@smithy/util-utf8@2.3.0':
15289 dependencies:15403 dependencies:
15290 '@smithy/util-buffer-from': 2.2.015404 '@smithy/util-buffer-from': 2.2.0
15291 tslib: 2.8.115405 tslib: 2.8.1
15406 optional: true
1529215407
15293 '@stablelib/base64@1.0.1': {}15408 '@stablelib/base64@1.0.1': {}
1529415409
...@@ -16156,7 +16271,7 @@ snapshots:...@@ -16156,7 +16271,7 @@ snapshots:
16156 sirv: 3.0.216271 sirv: 3.0.2
16157 tinyrainbow: 3.1.116272 tinyrainbow: 3.1.1
16158 vitest: 5.0.1(@types/node@24.12.4)(@vitest/browser-preview@5.0.1)(@vitest/ui@5.0.1(vitest@5.0.1))(@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))(jsdom@30.1.0(@noble/hashes@1.8.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))16273 vitest: 5.0.1(@types/node@24.12.4)(@vitest/browser-preview@5.0.1)(@vitest/ui@5.0.1(vitest@5.0.1))(@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))(jsdom@30.1.0(@noble/hashes@1.8.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
16159 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)16274 ws: 8.22.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
16160 transitivePeerDependencies:16275 transitivePeerDependencies:
16161 - bufferutil16276 - bufferutil
16162 - msw16277 - msw
...@@ -16510,55 +16625,59 @@ snapshots:...@@ -16510,55 +16625,59 @@ snapshots:
16510 json-schema-traverse: 1.0.016625 json-schema-traverse: 1.0.0
16511 require-from-string: 2.0.216626 require-from-string: 2.0.2
1651216627
16513 ? alchemy@2.0.0-beta.79(patch_hash=2ad1ff594ebadb1d8653c94b9ac2762703788acdbd8432c22273e6c19da1f7a6)(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6))(@effect/sql-pg@4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)))(@types/node@24.12.4)(@types/react@19.3.0)(@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))(bufferutil@4.1.0)(drizzle-kit@1.0.0-rc.5-ab785fc)(drizzle-orm@1.0.0-rc.5-ab785fc(77d4691b21c77897491506c37fa7b5ad))(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(mongodb@6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9))(pg@8.23.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))(typescript@7.0.2)(utf-8-validate@6.0.6)(ws@8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6))16628 alchemy@2.0.0-beta.80(patch_hash=bea1b6c0c0b23157fd5f439a1d7feff430f28ac1621ba135d8a13eeec60ccacd)(58de9aada26e3d6e07bee630615d7b5f):
16514 : dependencies:16629 dependencies:
16515 '@alchemy.run/cloudflare-runtime': 2.0.0-beta.79(@distilled.cloud/cloudflare@1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)))(@effect/platform-node@4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(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.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(rolldown@1.2.5)(typescript@7.0.2)16630 '@alchemy.run/cloudflare-runtime': 2.0.0-beta.80(@distilled.cloud/cloudflare@1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)))(@effect/platform-node@4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(rolldown@1.2.5)(typescript@7.0.2)
16516 '@alchemy.run/floci': 2.0.0-beta.79(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16631 '@alchemy.run/floci': 2.0.0-beta.80(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16517 '@alchemy.run/node-utils': 2.0.0-beta.7916632 '@alchemy.run/node-utils': 2.0.0-beta.80
16518 '@alchemy.run/sigil': 0.0.0-alpha.11(@types/react@19.3.0)(react-devtools-core@6.1.5(bufferutil@4.1.0)(utf-8-validate@6.0.6))16633 '@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))
16519 '@aws-sdk/credential-providers': 3.1062.016634 '@distilled.cloud/acme': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16520 '@distilled.cloud/aws': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16635 '@distilled.cloud/aws': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16521 '@distilled.cloud/axiom': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16636 '@distilled.cloud/axiom': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16522 '@distilled.cloud/cloudflare': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16637 '@distilled.cloud/cloudflare': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16523 '@distilled.cloud/core': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16638 '@distilled.cloud/core': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16524 '@distilled.cloud/fly-io': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16639 '@distilled.cloud/doppler': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16525 '@distilled.cloud/hetzner': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16640 '@distilled.cloud/fly-io': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16526 '@distilled.cloud/neon': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16641 '@distilled.cloud/gcp': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16527 '@distilled.cloud/planetscale': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16642 '@distilled.cloud/hetzner': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16528 '@distilled.cloud/prisma': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16643 '@distilled.cloud/infisical': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16529 '@distilled.cloud/railway': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16644 '@distilled.cloud/neon': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16530 '@distilled.cloud/stripe': 1.0.0-rc.12(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16645 '@distilled.cloud/planetscale': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16531 '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16646 '@distilled.cloud/prisma': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16532 '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16647 '@distilled.cloud/railway': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16533 '@effect/vitest': 4.0.0-rc.115(patch_hash=172bd95ef73a13d322888984415d5d18d9d2aa8e13fa529eac235efac837e902)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16648 '@distilled.cloud/stripe': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16649 '@distilled.cloud/zerossl': 1.0.0-rc.13(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16650 '@effect/sql-d1': 4.0.0(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16651 '@effect/sql-sqlite-do': 4.0.0(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16534 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)16652 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
16653 '@neon/functions': 0.11.0(hono@4.13.7)
16535 '@octokit/rest': 22.0.116654 '@octokit/rest': 22.0.1
16536 '@octokit/webhooks': 14.2.016655 '@octokit/webhooks': 14.2.0
16537 '@types/aws-lambda': 8.10.16116656 '@types/aws-lambda': 8.10.161
16538 aws4fetch: 1.0.20
16539 capnweb: 0.12.016657 capnweb: 0.12.0
16540 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)16658 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
16541 fflate: 0.8.316659 fflate: 0.8.3
16542 libsodium-wrappers: 0.8.416660 libsodium-wrappers: 0.8.4
16543 pathe: 2.0.316661 pathe: 2.0.3
16544 picomatch: 4.0.716662 picomatch: 4.0.7
16545 rolldown: 1.2.516663 rolldown: 1.2.5
16546 tinyglobby: 0.2.1716664 tinyglobby: 0.2.17
16547 undici: 7.29.1
16548 yaml: 2.9.016665 yaml: 2.9.0
16549 optionalDependencies:16666 optionalDependencies:
16550 '@effect/platform-node': 4.0.0-rc.115(bufferutil@4.1.0)(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))(redis@6.2.1)(utf-8-validate@6.0.6)16667 '@effect/platform-node': 4.0.1(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(redis@6.2.1)(utf-8-validate@6.0.6)
16551 '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))16668 '@effect/sql-pg': 4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
16669 '@effect/vitest': 4.0.1(patch_hash=359f6fb2f7b3ec145bb72208edb9034f02489791aa2491a55cdbd69bd56ee0d2)(@types/node@24.12.4)(@vitest/ui@5.0.1)(bufferutil@4.1.0)(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))(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)
16552 drizzle-kit: 1.0.0-rc.5-ab785fc16670 drizzle-kit: 1.0.0-rc.5-ab785fc
16553 drizzle-orm: 1.0.0-rc.5-ab785fc(77d4691b21c77897491506c37fa7b5ad)16671 drizzle-orm: 1.0.0-rc.5-ab785fc(b25f7c76220d3224392693e60345984f)
16554 mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9)16672 mongodb: 6.21.0(@aws-sdk/credential-providers@3.1062.0)(socks@2.8.9)
16555 pg: 8.23.016673 pg: 8.23.0
16556 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)'16674 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)'
16557 ws: 8.21.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)16675 ws: 8.22.0(bufferutil@4.1.0)(utf-8-validate@6.0.6)
16558 transitivePeerDependencies:16676 transitivePeerDependencies:
16559 - '@types/node'16677 - '@types/node'
16560 - '@types/react'16678 - '@types/react'
16561 - bufferutil16679 - bufferutil
16680 - hono
16562 - proxy-agent16681 - proxy-agent
16563 - react-devtools-core16682 - react-devtools-core
16564 - typescript16683 - typescript
...@@ -16601,7 +16720,8 @@ snapshots:...@@ -16601,7 +16720,8 @@ snapshots:
16601 normalize-path: 3.0.016720 normalize-path: 3.0.0
16602 picomatch: 2.3.216721 picomatch: 2.3.2
1660316722
16604 anynum@1.0.1: {}16723 anynum@1.0.1:
16724 optional: true
1660516725
16606 app-builder-lib@26.15.6(dmg-builder@26.15.6)(electron-builder-squirrel-windows@26.15.6):16726 app-builder-lib@26.15.6(dmg-builder@26.15.6)(electron-builder-squirrel-windows@26.15.6):
16607 dependencies:16727 dependencies:
...@@ -16783,7 +16903,8 @@ snapshots:...@@ -16783,7 +16903,8 @@ snapshots:
1678316903
16784 aws4@1.13.2: {}16904 aws4@1.13.2: {}
1678516905
16786 aws4fetch@1.0.20: {}16906 aws4fetch@1.0.20:
16907 optional: true
1678716908
16788 axobject-query@4.1.0: {}16909 axobject-query@4.1.0: {}
1678916910
...@@ -16942,7 +17063,8 @@ snapshots:...@@ -16942,7 +17063,8 @@ snapshots:
16942 boolean@3.2.0:17063 boolean@3.2.0:
16943 optional: true17064 optional: true
1694417065
16945 bowser@2.14.1: {}17066 bowser@2.14.1:
17067 optional: true
1694617068
16947 bplist-creator@0.1.0:17069 bplist-creator@0.1.0:
16948 dependencies:17070 dependencies:
...@@ -17703,17 +17825,17 @@ snapshots:...@@ -17703,17 +17825,17 @@ snapshots:
17703 get-tsconfig: 4.14.317825 get-tsconfig: 4.14.3
17704 jiti: 2.7.017826 jiti: 2.7.0
1770517827
17706 drizzle-orm@1.0.0-rc.5-ab785fc(77d4691b21c77897491506c37fa7b5ad):17828 drizzle-orm@1.0.0-rc.5-ab785fc(b25f7c76220d3224392693e60345984f):
17707 optionalDependencies:17829 optionalDependencies:
17708 '@cloudflare/workers-types': 4.20260604.117830 '@cloudflare/workers-types': 4.20260604.1
17709 '@effect/sql-d1': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))17831 '@effect/sql-d1': 4.0.0(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
17710 '@effect/sql-pg': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))17832 '@effect/sql-pg': 4.0.1(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
17711 '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))17833 '@effect/sql-sqlite-bun': 4.0.0-rc.112(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
17712 '@effect/sql-sqlite-do': 4.0.0-rc.115(effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec))17834 '@effect/sql-sqlite-do': 4.0.0(effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1))
17713 '@electric-sql/pglite': 0.3.1517835 '@electric-sql/pglite': 0.3.15
17714 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)17836 '@libsql/client': 0.17.3(bufferutil@4.1.0)(utf-8-validate@6.0.6)
17715 bun-types: 1.3.1417837 bun-types: 1.3.14
17716 effect: 4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec)17838 effect: 4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1)
17717 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)17839 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)
17718 pg: 8.23.017840 pg: 8.23.0
17719 valibot: 1.2.0(typescript@7.0.2)17841 valibot: 1.2.0(typescript@7.0.2)
...@@ -17735,7 +17857,7 @@ snapshots:...@@ -17735,7 +17857,7 @@ snapshots:
1773517857
17736 ee-first@1.1.1: {}17858 ee-first@1.1.1: {}
1773717859
17738 effect@4.0.0-rc.115(patch_hash=e7f58877e87996e73e44f697dd39ec71b3a05dcfd00047253c11eb9ee47d84ec): {}17860 effect@4.0.1(patch_hash=612836d78f1412734beaab6e83cd087b1d5d95e0ea99098c00991579afdf1cd1): {}
1773917861
17740 ejs@3.1.10:17862 ejs@3.1.10:
17741 dependencies:17863 dependencies:
...@@ -18450,15 +18572,7 @@ snapshots:...@@ -18450,15 +18572,7 @@ snapshots:
18450 dependencies:18572 dependencies:
18451 path-expression-matcher: 1.6.218573 path-expression-matcher: 1.6.2
18452 xml-naming: 0.1.018574 xml-naming: 0.1.0
1845318575 optional: true
18454 fast-xml-parser@5.11.1:
18455 dependencies:
18456 '@nodable/entities': 3.0.0
18457 fast-xml-builder: 1.2.0
18458 is-unsafe: 2.0.2
18459 path-expression-matcher: 1.6.2
18460 strnum: 2.4.2
18461 xml-naming: 0.3.0
1846218576
18463 fast-xml-parser@5.7.3:18577 fast-xml-parser@5.7.3:
18464 dependencies:18578 dependencies:
...@@ -18466,6 +18580,7 @@ snapshots:...@@ -18466,6 +18580,7 @@ snapshots:
18466 fast-xml-builder: 1.2.018580 fast-xml-builder: 1.2.0
18467 path-expression-matcher: 1.6.218581 path-expression-matcher: 1.6.2
18468 strnum: 2.4.218582 strnum: 2.4.2
18583 optional: true
1846918584
18470 fastdom@1.0.12:18585 fastdom@1.0.12:
18471 dependencies:18586 dependencies:
...@@ -19024,8 +19139,6 @@ snapshots:...@@ -19024,8 +19139,6 @@ snapshots:
1902419139
19025 is-unicode-supported@2.1.0: {}19140 is-unicode-supported@2.1.0: {}
1902619141
19027 is-unsafe@2.0.2: {}
19028
19029 is-wsl@2.2.0:19142 is-wsl@2.2.0:
19030 dependencies:19143 dependencies:
19031 is-docker: 2.2.119144 is-docker: 2.2.1
...@@ -19117,7 +19230,7 @@ snapshots:...@@ -19117,7 +19230,7 @@ snapshots:
19117 parse5: 8.0.119230 parse5: 8.0.1
19118 saxes: 6.0.019231 saxes: 6.0.0
19119 tough-cookie: 6.0.219232 tough-cookie: 6.0.2
19120 undici: 8.10.219233 undici: 8.11.2
19121 w3c-xmlserializer: 5.0.019234 w3c-xmlserializer: 5.0.0
19122 webidl-conversions: 8.0.119235 webidl-conversions: 8.0.1
19123 whatwg-mimetype: 5.0.019236 whatwg-mimetype: 5.0.0
...@@ -20385,6 +20498,31 @@ snapshots:...@@ -20385,6 +20498,31 @@ snapshots:
20385 '@oxc-resolver/binding-win32-arm64-msvc': 11.24.220498 '@oxc-resolver/binding-win32-arm64-msvc': 11.24.2
20386 '@oxc-resolver/binding-win32-x64-msvc': 11.24.220499 '@oxc-resolver/binding-win32-x64-msvc': 11.24.2
2038720500
20501 oxfmt@0.70.0(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)):
20502 dependencies:
20503 tinypool: 2.1.2
20504 optionalDependencies:
20505 '@oxfmt/binding-android-arm-eabi': 0.70.0
20506 '@oxfmt/binding-android-arm64': 0.70.0
20507 '@oxfmt/binding-darwin-arm64': 0.70.0
20508 '@oxfmt/binding-darwin-x64': 0.70.0
20509 '@oxfmt/binding-freebsd-x64': 0.70.0
20510 '@oxfmt/binding-linux-arm-gnueabihf': 0.70.0
20511 '@oxfmt/binding-linux-arm-musleabihf': 0.70.0
20512 '@oxfmt/binding-linux-arm64-gnu': 0.70.0
20513 '@oxfmt/binding-linux-arm64-musl': 0.70.0
20514 '@oxfmt/binding-linux-ppc64-gnu': 0.70.0
20515 '@oxfmt/binding-linux-riscv64-gnu': 0.70.0
20516 '@oxfmt/binding-linux-riscv64-musl': 0.70.0
20517 '@oxfmt/binding-linux-s390x-gnu': 0.70.0
20518 '@oxfmt/binding-linux-x64-gnu': 0.70.0
20519 '@oxfmt/binding-linux-x64-musl': 0.70.0
20520 '@oxfmt/binding-openharmony-arm64': 0.70.0
20521 '@oxfmt/binding-win32-arm64-msvc': 0.70.0
20522 '@oxfmt/binding-win32-ia32-msvc': 0.70.0
20523 '@oxfmt/binding-win32-x64-msvc': 0.70.0
20524 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)
20525
20388 oxfmt@0.70.0(vite-plus@1.0.0(@types/node@24.12.4)(@vitest/ui@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)):20526 oxfmt@0.70.0(vite-plus@1.0.0(@types/node@24.12.4)(@vitest/ui@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)):
20389 dependencies:20527 dependencies:
20390 tinypool: 2.1.220528 tinypool: 2.1.2
...@@ -20419,6 +20557,30 @@ snapshots:...@@ -20419,6 +20557,30 @@ snapshots:
20419 '@oxlint-tsgolint/win32-arm64': 7.0.200320557 '@oxlint-tsgolint/win32-arm64': 7.0.2003
20420 '@oxlint-tsgolint/win32-x64': 7.0.200320558 '@oxlint-tsgolint/win32-x64': 7.0.2003
2042120559
20560 oxlint@1.85.0(oxlint-tsgolint@7.0.2003)(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)):
20561 optionalDependencies:
20562 '@oxlint/binding-android-arm-eabi': 1.85.0
20563 '@oxlint/binding-android-arm64': 1.85.0
20564 '@oxlint/binding-darwin-arm64': 1.85.0
20565 '@oxlint/binding-darwin-x64': 1.85.0
20566 '@oxlint/binding-freebsd-x64': 1.85.0
20567 '@oxlint/binding-linux-arm-gnueabihf': 1.85.0
20568 '@oxlint/binding-linux-arm-musleabihf': 1.85.0
20569 '@oxlint/binding-linux-arm64-gnu': 1.85.0
20570 '@oxlint/binding-linux-arm64-musl': 1.85.0
20571 '@oxlint/binding-linux-ppc64-gnu': 1.85.0
20572 '@oxlint/binding-linux-riscv64-gnu': 1.85.0
20573 '@oxlint/binding-linux-riscv64-musl': 1.85.0
20574 '@oxlint/binding-linux-s390x-gnu': 1.85.0
20575 '@oxlint/binding-linux-x64-gnu': 1.85.0
20576 '@oxlint/binding-linux-x64-musl': 1.85.0
20577 '@oxlint/binding-openharmony-arm64': 1.85.0
20578 '@oxlint/binding-win32-arm64-msvc': 1.85.0
20579 '@oxlint/binding-win32-ia32-msvc': 1.85.0
20580 '@oxlint/binding-win32-x64-msvc': 1.85.0
20581 oxlint-tsgolint: 7.0.2003
20582 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)
20583
20422 oxlint@1.85.0(oxlint-tsgolint@7.0.2003)(vite-plus@1.0.0(@types/node@24.12.4)(@vitest/ui@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)):20584 oxlint@1.85.0(oxlint-tsgolint@7.0.2003)(vite-plus@1.0.0(@types/node@24.12.4)(@vitest/ui@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)):
20423 optionalDependencies:20585 optionalDependencies:
20424 '@oxlint/binding-android-arm-eabi': 1.85.020586 '@oxlint/binding-android-arm-eabi': 1.85.0
...@@ -20506,7 +20668,8 @@ snapshots:...@@ -20506,7 +20668,8 @@ snapshots:
2050620668
20507 path-exists@3.0.0: {}20669 path-exists@3.0.0: {}
2050820670
20509 path-expression-matcher@1.6.2: {}20671 path-expression-matcher@1.6.2:
20672 optional: true
2051020673
20511 path-is-absolute@1.0.1: {}20674 path-is-absolute@1.0.1: {}
2051220675
...@@ -21756,6 +21919,7 @@ snapshots:...@@ -21756,6 +21919,7 @@ snapshots:
21756 strnum@2.4.2:21919 strnum@2.4.2:
21757 dependencies:21920 dependencies:
21758 anynum: 1.0.121921 anynum: 1.0.1
21922 optional: true
2175921923
21760 structured-headers@0.4.1: {}21924 structured-headers@0.4.1: {}
2176121925
...@@ -22016,10 +22180,13 @@ snapshots:...@@ -22016,10 +22180,13 @@ snapshots:
2201622180
22017 undici@6.28.1: {}22181 undici@6.28.1: {}
2201822182
22019 undici@7.29.1: {}22183 undici@7.29.1:
22184 optional: true
2202022185
22021 undici@8.10.2: {}22186 undici@8.10.2: {}
2202222187
22188 undici@8.11.2: {}
22189
22023 unenv@2.0.0-rc.24:22190 unenv@2.0.0-rc.24:
22024 dependencies:22191 dependencies:
22025 pathe: 2.0.322192 pathe: 2.0.3
...@@ -22196,6 +22363,61 @@ snapshots:...@@ -22196,6 +22363,61 @@ snapshots:
22196 '@types/unist': 3.0.322363 '@types/unist': 3.0.3
22197 vfile-message: 4.0.322364 vfile-message: 4.0.3
2219822365
22366 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):
22367 dependencies:
22368 '@oxc-project/types': 0.151.0
22369 '@oxlint/plugins': 1.79.0
22370 '@vitest/browser': 5.0.1(@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))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@5.0.1)
22371 '@vitest/browser-preview': 5.0.1(@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))(bufferutil@4.1.0)(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))(utf-8-validate@6.0.6)(vitest@5.0.1)
22372 '@vitest/mocker': 5.0.1(@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))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
22373 '@vitest/pretty-format': 5.0.1
22374 '@vitest/snapshot': 5.0.1
22375 '@vitest/spy': 5.0.1
22376 '@vitest/utils': 5.0.1
22377 oxfmt: 0.70.0(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))
22378 oxlint: 1.85.0(oxlint-tsgolint@7.0.2003)(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))
22379 oxlint-tsgolint: 7.0.2003
22380 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)'
22381 vitest: 5.0.1(@types/node@24.12.4)(@vitest/browser-preview@5.0.1)(@vitest/ui@5.0.1(vitest@5.0.1))(@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))(jsdom@30.1.0(@noble/hashes@1.8.0))(msw@2.12.11(@types/node@24.12.4)(typescript@7.0.2))
22382 optionalDependencies:
22383 '@voidzero-dev/vite-plus-darwin-arm64': 1.0.0
22384 '@voidzero-dev/vite-plus-darwin-x64': 1.0.0
22385 '@voidzero-dev/vite-plus-linux-arm64-gnu': 1.0.0
22386 '@voidzero-dev/vite-plus-linux-arm64-musl': 1.0.0
22387 '@voidzero-dev/vite-plus-linux-x64-gnu': 1.0.0
22388 '@voidzero-dev/vite-plus-linux-x64-musl': 1.0.0
22389 '@voidzero-dev/vite-plus-win32-arm64-msvc': 1.0.0
22390 '@voidzero-dev/vite-plus-win32-x64-msvc': 1.0.0
22391 transitivePeerDependencies:
22392 - '@arethetypeswrong/core'
22393 - '@edge-runtime/vm'
22394 - '@opentelemetry/api'
22395 - '@types/node'
22396 - '@vitejs/devtools'
22397 - '@vitest/coverage-istanbul'
22398 - '@vitest/coverage-v8'
22399 - '@vitest/ui'
22400 - bufferutil
22401 - esbuild
22402 - happy-dom
22403 - jiti
22404 - jsdom
22405 - less
22406 - msw
22407 - publint
22408 - sass
22409 - sass-embedded
22410 - stylus
22411 - sugarss
22412 - svelte
22413 - terser
22414 - tsx
22415 - typescript
22416 - unplugin-unused
22417 - unrun
22418 - utf-8-validate
22419 - yaml
22420
22199 vite-plus@1.0.0(@types/node@24.12.4)(@vitest/ui@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):22421 vite-plus@1.0.0(@types/node@24.12.4)(@vitest/ui@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):
22200 dependencies:22422 dependencies:
22201 '@oxc-project/types': 0.151.022423 '@oxc-project/types': 0.151.0
...@@ -22465,13 +22687,13 @@ snapshots:...@@ -22465,13 +22687,13 @@ snapshots:
22465 siginfo: 2.0.022687 siginfo: 2.0.0
22466 stackback: 0.0.222688 stackback: 0.0.2
2246722689
22468 workerd@1.20260901.1:22690 workerd@1.20260918.1:
22469 optionalDependencies:22691 optionalDependencies:
22470 '@cloudflare/workerd-darwin-64': 1.20260901.122692 '@cloudflare/workerd-darwin-64': 1.20260918.1
22471 '@cloudflare/workerd-darwin-arm64': 1.20260901.122693 '@cloudflare/workerd-darwin-arm64': 1.20260918.1
22472 '@cloudflare/workerd-linux-64': 1.20260901.122694 '@cloudflare/workerd-linux-64': 1.20260918.1
22473 '@cloudflare/workerd-linux-arm64': 1.20260901.122695 '@cloudflare/workerd-linux-arm64': 1.20260918.1
22474 '@cloudflare/workerd-windows-64': 1.20260901.122696 '@cloudflare/workerd-windows-64': 1.20260918.1
2247522697
22476 wrap-ansi@6.2.0:22698 wrap-ansi@6.2.0:
22477 dependencies:22699 dependencies:
...@@ -22504,6 +22726,11 @@ snapshots:...@@ -22504,6 +22726,11 @@ snapshots:
22504 bufferutil: 4.1.022726 bufferutil: 4.1.0
22505 utf-8-validate: 6.0.622727 utf-8-validate: 6.0.6
2250622728
22729 ws@8.22.0(bufferutil@4.1.0)(utf-8-validate@6.0.6):
22730 optionalDependencies:
22731 bufferutil: 4.1.0
22732 utf-8-validate: 6.0.6
22733
22507 xcode@3.0.1:22734 xcode@3.0.1:
22508 dependencies:22735 dependencies:
22509 simple-plist: 1.3.122736 simple-plist: 1.3.1
...@@ -22511,9 +22738,8 @@ snapshots:...@@ -22511,9 +22738,8 @@ snapshots:
2251122738
22512 xml-name-validator@5.0.0: {}22739 xml-name-validator@5.0.0: {}
2251322740
22514 xml-naming@0.1.0: {}22741 xml-naming@0.1.0:
2251522742 optional: true
22516 xml-naming@0.3.0: {}
2251722743
22518 xml2js@0.4.23:22744 xml2js@0.4.23:
22519 dependencies:22745 dependencies:
pnpm-workspace.yaml+49-38
...@@ -30,13 +30,13 @@ catalog:...@@ -30,13 +30,13 @@ catalog:
30 "@clerk/expo": 4.6.830 "@clerk/expo": 4.6.8
31 "@clerk/react": 6.16.131 "@clerk/react": 6.16.1
32 "@clerk/shared": 4.33.032 "@clerk/shared": 4.33.0
33 "@effect/atom-react": 4.0.0-rc.11533 "@effect/atom-react": 4.0.1
34 "@effect/openapi-generator": 4.0.0-rc.11534 "@effect/openapi-generator": 4.0.1
35 "@effect/platform-node": 4.0.0-rc.11535 "@effect/platform-node": 4.0.1
36 "@effect/platform-node-shared": 4.0.0-rc.11536 "@effect/platform-node-shared": 4.0.1
37 "@effect/sql-pg": 4.0.0-rc.11537 "@effect/sql-pg": 4.0.1
38 "@effect/tsgo": 0.41.038 "@effect/tsgo": 0.41.0
39 "@effect/vitest": 4.0.0-rc.11539 "@effect/vitest": 4.0.1
40 "@legendapp/list": 3.3.540 "@legendapp/list": 3.3.5
41 "@noble/curves": 1.9.141 "@noble/curves": 1.9.1
42 "@noble/hashes": 1.8.042 "@noble/hashes": 1.8.0
...@@ -45,7 +45,7 @@ catalog:...@@ -45,7 +45,7 @@ catalog:
45 "@tailwindcss/oxide": 4.3.345 "@tailwindcss/oxide": 4.3.3
46 "@tailwindcss/vite": 4.3.346 "@tailwindcss/vite": 4.3.3
47 "@types/node": 24.12.447 "@types/node": 24.12.4
48 effect: 4.0.0-rc.11548 effect: 4.0.1
49 jose: 6.2.249 jose: 6.2.2
50 lightningcss: 1.33.050 lightningcss: 1.33.0
51 tailwindcss: 4.3.351 tailwindcss: 4.3.3
...@@ -64,20 +64,20 @@ minimumReleaseAgeExclude:...@@ -64,20 +64,20 @@ minimumReleaseAgeExclude:
64 - "@clerk/expo@4.6.8"64 - "@clerk/expo@4.6.8"
65 - "@clerk/react@6.16.1"65 - "@clerk/react@6.16.1"
66 - "@clerk/shared@4.33.0"66 - "@clerk/shared@4.33.0"
67 - "@distilled.cloud/aws@1.0.0-rc.12"67 - "@distilled.cloud/aws@1.0.0-rc.13"
68 - "@distilled.cloud/axiom@1.0.0-rc.12"68 - "@distilled.cloud/axiom@1.0.0-rc.13"
69 - "@distilled.cloud/cloudflare@1.0.0-rc.12"69 - "@distilled.cloud/cloudflare@1.0.0-rc.13"
70 - "@distilled.cloud/core@1.0.0-rc.12"70 - "@distilled.cloud/core@1.0.0-rc.13"
71 - "@distilled.cloud/neon@1.0.0-rc.12"71 - "@distilled.cloud/neon@1.0.0-rc.13"
72 - "@distilled.cloud/planetscale@1.0.0-rc.12"72 - "@distilled.cloud/planetscale@1.0.0-rc.13"
73 - "@effect/atom-react@4.0.0-rc.115"73 - "@effect/atom-react@4.0.1"
74 - "@effect/openapi-generator@4.0.0-rc.115"74 - "@effect/openapi-generator@4.0.1"
75 - "@effect/platform-node-shared@4.0.0-rc.115"75 - "@effect/platform-node-shared@4.0.1"
76 - "@effect/platform-node@4.0.0-rc.115"76 - "@effect/platform-node@4.0.1"
77 - "@effect/sql-pg@4.0.0-rc.115"77 - "@effect/sql-pg@4.0.1"
78 - "@effect/vitest@4.0.0-rc.115"78 - "@effect/vitest@4.0.1"
79 - alchemy@2.0.0-beta.7979 - alchemy@2.0.0-beta.80
80 - effect@4.0.0-rc.11580 - effect@4.0.1
81 - "@legendapp/list@3.3.5"81 - "@legendapp/list@3.3.5"
82 - "@expo/cli@58.1.1"82 - "@expo/cli@58.1.1"
83 - "@expo/env@2.5.1"83 - "@expo/env@2.5.1"
...@@ -115,14 +115,14 @@ minimumReleaseAgeExclude:...@@ -115,14 +115,14 @@ minimumReleaseAgeExclude:
115 - expo-symbols@58.0.3115 - expo-symbols@58.0.3
116 - electron@44.4.2116 - electron@44.4.2
117 - "@anthropic-ai/claude-agent-sdk@0.3.276"117 - "@anthropic-ai/claude-agent-sdk@0.3.276"
118 - "@alchemy.run/cloudflare-runtime@2.0.0-beta.79"118 - "@alchemy.run/cloudflare-runtime@2.0.0-beta.80"
119 - "@alchemy.run/floci@2.0.0-beta.79"119 - "@alchemy.run/floci@2.0.0-beta.80"
120 - "@alchemy.run/node-utils@2.0.0-beta.79"120 - "@alchemy.run/node-utils@2.0.0-beta.80"
121 - "@distilled.cloud/fly-io@1.0.0-rc.12"121 - "@distilled.cloud/fly-io@1.0.0-rc.13"
122 - "@distilled.cloud/hetzner@1.0.0-rc.12"122 - "@distilled.cloud/hetzner@1.0.0-rc.13"
123 - "@distilled.cloud/prisma@1.0.0-rc.12"123 - "@distilled.cloud/prisma@1.0.0-rc.13"
124 - "@distilled.cloud/railway@1.0.0-rc.12"124 - "@distilled.cloud/railway@1.0.0-rc.13"
125 - "@distilled.cloud/stripe@1.0.0-rc.12"125 - "@distilled.cloud/stripe@1.0.0-rc.13"
126 - "@shadcn/lint@0.1.5"126 - "@shadcn/lint@0.1.5"
127 - cn@0.3.2127 - cn@0.3.2
128 - uniwind@1.12.1128 - uniwind@1.12.1
...@@ -152,6 +152,14 @@ minimumReleaseAgeExclude:...@@ -152,6 +152,14 @@ minimumReleaseAgeExclude:
152 - expo-application@58.0.3152 - expo-application@58.0.3
153 - expo-eas-client@58.0.2153 - expo-eas-client@58.0.2
154 - expo-image-loader@58.0.3154 - expo-image-loader@58.0.3
155 - "@distilled.cloud/acme@1.0.0-rc.13"
156 - "@distilled.cloud/doppler@1.0.0-rc.13"
157 - "@distilled.cloud/gcp@1.0.0-rc.13"
158 - "@distilled.cloud/infisical@1.0.0-rc.13"
159 - "@distilled.cloud/zerossl@1.0.0-rc.13"
160 - "@opencode/client@2.0.23"
161 - "@opencode/protocol@2.0.23"
162 - "@opencode/schema@2.0.23"
155163
156overrides:164overrides:
157 # Keep jsdom's optional peer consistent so Vite+ has one test-runner instance.165 # Keep jsdom's optional peer consistent so Vite+ has one test-runner instance.
...@@ -217,46 +225,49 @@ overrides:...@@ -217,46 +225,49 @@ overrides:
217 # dependency, and their schemas fail to decode under a second Effect copy.225 # dependency, and their schemas fail to decode under a second Effect copy.
218 # The `effect` override above already collapses them; these name the edge so it226 # The `effect` override above already collapses them; these name the edge so it
219 # stays pinned on its own. OpenCode2Client.live.test.ts re-proves it on bumps.227 # stays pinned on its own. OpenCode2Client.live.test.ts re-proves it on bumps.
228 # All three still target Effect rc.112 APIs (effect/unstable/*, Encoding,
229 # Schema.isStartsWith) that 4.0 removed; their patches port those call sites
230 # until OpenCode moves to stable Effect.
220 "@opencode/protocol>effect": "catalog:"231 "@opencode/protocol>effect": "catalog:"
221 "@opencode/schema>effect": "catalog:"232 "@opencode/schema>effect": "catalog:"
222 node-abi: 4.33.0233 node-abi: 4.33.0
223 lightningcss: "catalog:"234 lightningcss: "catalog:"
224 tailwindcss: "catalog:"235 tailwindcss: "catalog:"
225 vite: "catalog:"236 vite: "catalog:"
237 vite-plus: "catalog:"
226 yaml: "catalog:"238 yaml: "catalog:"
227239
228packageExtensions:240packageExtensions:
229 "@clerk/expo@*":241 "@clerk/expo@*":
230 dependencies:242 dependencies:
231 "@expo/config-plugins": 58.0.4243 "@expo/config-plugins": 58.0.4
244 # Our patch makes @effect/vitest import vite-plus/test. A catalog: spec here
245 # resolves through the vite-plus override above.
232 "@effect/vitest@*":246 "@effect/vitest@*":
233 dependencies:247 dependencies:
234 vite-plus: "catalog:"248 vite-plus: "catalog:"
235 peerDependenciesMeta:
236 vitest:
237 optional: true
238 vite-plus@*:
239 dependencies:
240 vite: "catalog:"
241249
242patchedDependencies:250patchedDependencies:
243 alchemy@2.0.0-beta.79: patches/alchemy@2.0.0-beta.79.patch251 alchemy@2.0.0-beta.80: patches/alchemy@2.0.0-beta.80.patch
244 expo-glass-effect@58.0.3: patches/expo-glass-effect@58.0.3.patch252 expo-glass-effect@58.0.3: patches/expo-glass-effect@58.0.3.patch
245 expo-blur@58.0.3: patches/expo-blur@58.0.3.patch253 expo-blur@58.0.3: patches/expo-blur@58.0.3.patch
246 expo-audio@58.0.4: patches/expo-audio@58.0.4.patch254 expo-audio@58.0.4: patches/expo-audio@58.0.4.patch
247 "@clerk/expo@4.6.8": patches/@clerk__expo@4.6.8.patch255 "@clerk/expo@4.6.8": patches/@clerk__expo@4.6.8.patch
248 "@effect/vitest@4.0.0-rc.115": patches/@effect__vitest@4.0.0-rc.115.patch256 "@effect/vitest@4.0.1": patches/@effect__vitest@4.0.1.patch
249 "@expo/metro-config@58.0.6": patches/@expo__metro-config@58.0.6.patch257 "@expo/metro-config@58.0.6": patches/@expo__metro-config@58.0.6.patch
250 expo-sharing@58.0.13: patches/expo-sharing@58.0.13.patch258 expo-sharing@58.0.13: patches/expo-sharing@58.0.13.patch
251 expo-widgets@58.0.11: patches/expo-widgets@58.0.11.patch259 expo-widgets@58.0.11: patches/expo-widgets@58.0.11.patch
252 "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch260 "@ff-labs/fff-node@0.9.4": patches/@ff-labs__fff-node@0.9.4.patch
253 "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch261 "@legendapp/list@3.3.5": patches/@legendapp__list@3.3.5.patch
262 "@opencode/client@2.0.23": patches/@opencode__client@2.0.23.patch
263 "@opencode/protocol@2.0.23": patches/@opencode__protocol@2.0.23.patch
264 "@opencode/schema@2.0.23": patches/@opencode__schema@2.0.23.patch
254 "@pierre/diffs@1.3.0-beta.10": patches/@pierre%2Fdiffs@1.3.0-beta.10.patch265 "@pierre/diffs@1.3.0-beta.10": patches/@pierre%2Fdiffs@1.3.0-beta.10.patch
255 "@react-native-ai/apple@0.12.0": patches/@react-native-ai__apple@0.12.0.patch266 "@react-native-ai/apple@0.12.0": patches/@react-native-ai__apple@0.12.0.patch
256 "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch267 "@react-native-menu/menu@2.0.0": patches/@react-native-menu__menu@2.0.0.patch
257 "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch268 "@react-navigation/native-stack@7.17.6": patches/@react-navigation%2Fnative-stack@7.17.6.patch
258 dbus-next@0.10.2: patches/dbus-next@0.10.2.patch269 dbus-next@0.10.2: patches/dbus-next@0.10.2.patch
259 effect@4.0.0-rc.115: patches/effect@4.0.0-rc.115.patch270 effect@4.0.1: patches/effect@4.0.1.patch
260 node-pty@1.2.0-beta.15: patches/node-pty@1.2.0-beta.15.patch271 node-pty@1.2.0-beta.15: patches/node-pty@1.2.0-beta.15.patch
261 # Link http(s) URLs with a port or a single-label host. md4c otherwise requires a dotted host and stops at ':'.272 # Link http(s) URLs with a port or a single-label host. md4c otherwise requires a dotted host and stops at ':'.
262 react-native-nitro-markdown@0.5.8: patches/react-native-nitro-markdown@0.5.8.patch273 react-native-nitro-markdown@0.5.8: patches/react-native-nitro-markdown@0.5.8.patch
scripts/apply-web-brand-assets.ts+1-1
...@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";...@@ -6,7 +6,7 @@ import * as Effect from "effect/Effect";
6import * as FileSystem from "effect/FileSystem";6import * as FileSystem from "effect/FileSystem";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import { Argument, Command, Flag } from "effect/unstable/cli";9import { Argument, Command, Flag } from "effect/cli";
10import {10import {
11 resolveWebAssetBrandForChannel,11 resolveWebAssetBrandForChannel,
12 resolveWebIconOverrides,12 resolveWebIconOverrides,
scripts/build-cli-archive.ts+2-2
...@@ -25,8 +25,8 @@ import * as Option from "effect/Option";...@@ -25,8 +25,8 @@ import * as Option from "effect/Option";
25import * as Path from "effect/Path";25import * as Path from "effect/Path";
26import * as PlatformError from "effect/PlatformError";26import * as PlatformError from "effect/PlatformError";
27import * as Schema from "effect/Schema";27import * as Schema from "effect/Schema";
28import { Command, Flag } from "effect/unstable/cli";28import { Command, Flag } from "effect/cli";
29import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";29import { ChildProcess, ChildProcessSpawner } from "effect/process";
3030
31import { HostProcessArchitecture, HostProcessPlatform } from "@t3tools/shared/hostProcess";31import { HostProcessArchitecture, HostProcessPlatform } from "@t3tools/shared/hostProcess";
32import { fromYaml } from "@t3tools/shared/schemaYaml";32import { fromYaml } from "@t3tools/shared/schemaYaml";
scripts/build-desktop-artifact.test.ts+1-1
...@@ -12,7 +12,7 @@ import * as Option from "effect/Option";...@@ -12,7 +12,7 @@ import * as Option from "effect/Option";
12import * as Path from "effect/Path";12import * as Path from "effect/Path";
13import * as Sink from "effect/Sink";13import * as Sink from "effect/Sink";
14import * as Stream from "effect/Stream";14import * as Stream from "effect/Stream";
15import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";15import { ChildProcess, ChildProcessSpawner } from "effect/process";
1616
17import {17import {
18 BundleNotSelfContainedError,18 BundleNotSelfContainedError,
scripts/build-desktop-artifact.ts+2-2
...@@ -50,8 +50,8 @@ import type { PlatformError } from "effect/PlatformError";...@@ -50,8 +50,8 @@ import type { PlatformError } from "effect/PlatformError";
50import * as Path from "effect/Path";50import * as Path from "effect/Path";
51import * as Schema from "effect/Schema";51import * as Schema from "effect/Schema";
52import * as Stream from "effect/Stream";52import * as Stream from "effect/Stream";
53import { Command, Flag } from "effect/unstable/cli";53import { Command, Flag } from "effect/cli";
54import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";54import { ChildProcess, ChildProcessSpawner } from "effect/process";
5555
56const LINUX_ICON_SIZES = [16, 22, 24, 32, 48, 64, 128, 256, 512] as const;56const LINUX_ICON_SIZES = [16, 22, 24, 32, 48, 64, 128, 256, 512] as const;
57const DESKTOP_APP_ID = "com.t3tools.t3code";57const DESKTOP_APP_ID = "com.t3tools.t3code";
scripts/build-npm-platform-packages.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -6,7 +6,7 @@ import * as FileSystem from "effect/FileSystem";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import * as Schema from "effect/Schema";7import * as Schema from "effect/Schema";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcess, ChildProcessSpawner } from "effect/process";
1010
11import {11import {
12 buildNpmPlatformPackages,12 buildNpmPlatformPackages,
scripts/build-npm-platform-packages.ts+2-2
...@@ -28,8 +28,8 @@ import * as Layer from "effect/Layer";...@@ -28,8 +28,8 @@ import * as Layer from "effect/Layer";
28import * as Logger from "effect/Logger";28import * as Logger from "effect/Logger";
29import * as Path from "effect/Path";29import * as Path from "effect/Path";
30import * as Schema from "effect/Schema";30import * as Schema from "effect/Schema";
31import { Command, Flag } from "effect/unstable/cli";31import { Command, Flag } from "effect/cli";
32import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";32import { ChildProcess, ChildProcessSpawner } from "effect/process";
3333
34import {34import {
35 CLI_ARCHIVE_PLATFORM_KEYS,35 CLI_ARCHIVE_PLATFORM_KEYS,
scripts/dev-runner.test.ts+1-1
...@@ -17,7 +17,7 @@ import * as Path from "effect/Path";...@@ -17,7 +17,7 @@ import * as Path from "effect/Path";
17import * as PlatformError from "effect/PlatformError";17import * as PlatformError from "effect/PlatformError";
18import * as Sink from "effect/Sink";18import * as Sink from "effect/Sink";
19import * as Stream from "effect/Stream";19import * as Stream from "effect/Stream";
20import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";20import { ChildProcess, ChildProcessSpawner } from "effect/process";
2121
22import {22import {
23 checkPortAvailabilityOnHosts,23 checkPortAvailabilityOnHosts,
scripts/dev-runner.ts+2-2
...@@ -16,8 +16,8 @@ import * as Logger from "effect/Logger";...@@ -16,8 +16,8 @@ import * as Logger from "effect/Logger";
16import * as Option from "effect/Option";16import * as Option from "effect/Option";
17import * as Path from "effect/Path";17import * as Path from "effect/Path";
18import * as Schema from "effect/Schema";18import * as Schema from "effect/Schema";
19import { Argument, Command, Flag } from "effect/unstable/cli";19import { Argument, Command, Flag } from "effect/cli";
20import { ChildProcess } from "effect/unstable/process";20import { ChildProcess } from "effect/process";
2121
22import { type DevShareError, shareDevServer, unshareDevServer } from "./lib/dev-share.ts";22import { type DevShareError, shareDevServer, unshareDevServer } from "./lib/dev-share.ts";
23import { loadRepoEnv } from "./lib/public-config.ts";23import { loadRepoEnv } from "./lib/public-config.ts";
scripts/export-brand-icons.ts+2-2
...@@ -10,8 +10,8 @@ import * as Option from "effect/Option";...@@ -10,8 +10,8 @@ import * as Option from "effect/Option";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import * as Stream from "effect/Stream";12import * as Stream from "effect/Stream";
13import { Command, Flag } from "effect/unstable/cli";13import { Command, Flag } from "effect/cli";
14import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";14import { ChildProcess, ChildProcessSpawner } from "effect/process";
1515
16import { BRAND_ASSET_PATHS, DEVELOPMENT_PUBLIC_ICON_OVERRIDES } from "./lib/brand-assets.ts";16import { BRAND_ASSET_PATHS, DEVELOPMENT_PUBLIC_ICON_OVERRIDES } from "./lib/brand-assets.ts";
17import { encodePngIco, readPngDimensions, WINDOWS_ICON_SIZES } from "./lib/icon-export.ts";17import { encodePngIco, readPngDimensions, WINDOWS_ICON_SIZES } from "./lib/icon-export.ts";
scripts/lib/dev-share.test.ts+1-1
...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";...@@ -3,7 +3,7 @@ import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";3import * as Layer from "effect/Layer";
4import * as Sink from "effect/Sink";4import * as Sink from "effect/Sink";
5import * as Stream from "effect/Stream";5import * as Stream from "effect/Stream";
6import { ChildProcessSpawner } from "effect/unstable/process";6import { ChildProcessSpawner } from "effect/process";
77
8import {8import {
9 type DevShareError,9 type DevShareError,
scripts/lib/dev-share.ts+1-1
...@@ -23,7 +23,7 @@ import {...@@ -23,7 +23,7 @@ import {
23} from "@t3tools/tailscale";23} from "@t3tools/tailscale";
24import * as Effect from "effect/Effect";24import * as Effect from "effect/Effect";
25import * as Schema from "effect/Schema";25import * as Schema from "effect/Schema";
26import type { ChildProcessSpawner } from "effect/unstable/process";26import type { ChildProcessSpawner } from "effect/process";
2727
28/**28/**
29 * Human-readable gloss for each diagnostic. Deliberately our own words rather29 * Human-readable gloss for each diagnostic. Deliberately our own words rather
scripts/merge-update-manifests.test.ts+1-1
...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";...@@ -3,7 +3,7 @@ import { assert, describe, it } from "@effect/vitest";
3import * as Effect from "effect/Effect";3import * as Effect from "effect/Effect";
4import * as FileSystem from "effect/FileSystem";4import * as FileSystem from "effect/FileSystem";
5import * as Path from "effect/Path";5import * as Path from "effect/Path";
6import { Command, CliError } from "effect/unstable/cli";6import { Command, CliError } from "effect/cli";
77
8import {8import {
9 mergePlatformUpdateManifests,9 mergePlatformUpdateManifests,
scripts/merge-update-manifests.ts+1-1
...@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -7,7 +7,7 @@ import * as FileSystem from "effect/FileSystem";
7import * as Option from "effect/Option";7import * as Option from "effect/Option";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as Schema from "effect/Schema";9import * as Schema from "effect/Schema";
10import { Argument, Command, Flag } from "effect/unstable/cli";10import { Argument, Command, Flag } from "effect/cli";
1111
12import {12import {
13 mergeUpdateManifests,13 mergeUpdateManifests,
scripts/mobile-native-client.ts+2-2
...@@ -13,8 +13,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -13,8 +13,8 @@ import * as FileSystem from "effect/FileSystem";
13import * as Path from "effect/Path";13import * as Path from "effect/Path";
14import * as Schema from "effect/Schema";14import * as Schema from "effect/Schema";
15import * as Stream from "effect/Stream";15import * as Stream from "effect/Stream";
16import { Argument, Command } from "effect/unstable/cli";16import { Argument, Command } from "effect/cli";
17import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";17import { ChildProcess, ChildProcessSpawner } from "effect/process";
1818
19export type NativePlatform = "ios" | "android";19export type NativePlatform = "ios" | "android";
20const NativeClientRecord = Schema.Struct({ fingerprint: Schema.String, binary: Schema.String });20const NativeClientRecord = Schema.Struct({ fingerprint: Schema.String, binary: Schema.String });
scripts/mobile-native-static-check.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Path from "effect/Path";...@@ -8,7 +8,7 @@ import * as Path from "effect/Path";
8import * as PlatformError from "effect/PlatformError";8import * as PlatformError from "effect/PlatformError";
9import * as Sink from "effect/Sink";9import * as Sink from "effect/Sink";
10import * as Stream from "effect/Stream";10import * as Stream from "effect/Stream";
11import { ChildProcessSpawner } from "effect/unstable/process";11import { ChildProcessSpawner } from "effect/process";
1212
13import { collectSources, runCommand } from "./mobile-native-static-check.ts";13import { collectSources, runCommand } from "./mobile-native-static-check.ts";
1414
scripts/mobile-native-static-check.ts+2-2
...@@ -9,8 +9,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -9,8 +9,8 @@ import * as FileSystem from "effect/FileSystem";
9import * as Logger from "effect/Logger";9import * as Logger from "effect/Logger";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { Command } from "effect/unstable/cli";12import { Command } from "effect/cli";
13import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";13import { ChildProcess, ChildProcessSpawner } from "effect/process";
1414
15interface NativeStaticTool {15interface NativeStaticTool {
16 readonly command: string;16 readonly command: string;
scripts/mock-update-server.test.ts+1-1
...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";...@@ -4,7 +4,7 @@ import * as Effect from "effect/Effect";
4import * as FileSystem from "effect/FileSystem";4import * as FileSystem from "effect/FileSystem";
5import * as Layer from "effect/Layer";5import * as Layer from "effect/Layer";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import { HttpClient, HttpRouter } from "effect/unstable/http";7import { HttpClient, HttpRouter } from "effect/http";
88
9import { makeMockUpdateRouteLayer } from "./mock-update-server.ts";9import { makeMockUpdateRouteLayer } from "./mock-update-server.ts";
10import { symlinksSupported } from "@t3tools/shared/testing/symlinks";10import { symlinksSupported } from "@t3tools/shared/testing/symlinks";
scripts/mock-update-server.ts+1-1
...@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";...@@ -7,7 +7,7 @@ import * as Effect from "effect/Effect";
7import * as FileSystem from "effect/FileSystem";7import * as FileSystem from "effect/FileSystem";
8import * as Layer from "effect/Layer";8import * as Layer from "effect/Layer";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/unstable/http";10import { HttpRouter, HttpServerRequest, HttpServerResponse } from "effect/http";
1111
12interface MockUpdateServerConfig {12interface MockUpdateServerConfig {
13 readonly port: number;13 readonly port: number;
scripts/notify-discord-release.test.ts+3-3
...@@ -11,9 +11,9 @@ import * as Logger from "effect/Logger";...@@ -11,9 +11,9 @@ import * as Logger from "effect/Logger";
11import * as Path from "effect/Path";11import * as Path from "effect/Path";
12import * as Schema from "effect/Schema";12import * as Schema from "effect/Schema";
13import * as TestClock from "effect/testing/TestClock";13import * as TestClock from "effect/testing/TestClock";
14import { Command } from "effect/unstable/cli";14import { Command } from "effect/cli";
15import { HttpClient, HttpClientError, HttpClientResponse, UrlParams } from "effect/unstable/http";15import { HttpClient, HttpClientError, HttpClientResponse, UrlParams } from "effect/http";
16import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";16import { ChildProcess, ChildProcessSpawner } from "effect/process";
1717
18import {18import {
19 buildDiscordReleaseAnnouncement,19 buildDiscordReleaseAnnouncement,
scripts/notify-discord-release.ts+2-2
...@@ -12,14 +12,14 @@ import * as Option from "effect/Option";...@@ -12,14 +12,14 @@ import * as Option from "effect/Option";
12import * as Redacted from "effect/Redacted";12import * as Redacted from "effect/Redacted";
13import * as Schedule from "effect/Schedule";13import * as Schedule from "effect/Schedule";
14import * as Schema from "effect/Schema";14import * as Schema from "effect/Schema";
15import { Argument, Command, Flag } from "effect/unstable/cli";15import { Argument, Command, Flag } from "effect/cli";
16import {16import {
17 FetchHttpClient,17 FetchHttpClient,
18 HttpClient,18 HttpClient,
19 HttpClientError,19 HttpClientError,
20 HttpClientRequest,20 HttpClientRequest,
21 HttpClientResponse,21 HttpClientResponse,
22} from "effect/unstable/http";22} from "effect/http";
2323
24export type DiscordReleaseTarget = "prerelease" | "latest";24export type DiscordReleaseTarget = "prerelease" | "latest";
2525
scripts/resolve-nightly-release.ts+1-1
...@@ -9,7 +9,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -9,7 +9,7 @@ import * as FileSystem from "effect/FileSystem";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { Command, Flag } from "effect/unstable/cli";12import { Command, Flag } from "effect/cli";
1313
14export interface NightlyReleaseMetadata {14export interface NightlyReleaseMetadata {
15 readonly baseVersion: string;15 readonly baseVersion: string;
scripts/resolve-previous-release-tag.test.ts+1-1
...@@ -5,7 +5,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -5,7 +5,7 @@ import * as FileSystem from "effect/FileSystem";
5import * as PlatformError from "effect/PlatformError";5import * as PlatformError from "effect/PlatformError";
6import * as Sink from "effect/Sink";6import * as Sink from "effect/Sink";
7import * as Stream from "effect/Stream";7import * as Stream from "effect/Stream";
8import { ChildProcessSpawner } from "effect/unstable/process";8import { ChildProcessSpawner } from "effect/process";
99
10import {10import {
11 listGitTags,11 listGitTags,
scripts/resolve-previous-release-tag.ts+2-2
...@@ -8,8 +8,8 @@ import * as FileSystem from "effect/FileSystem";...@@ -8,8 +8,8 @@ import * as FileSystem from "effect/FileSystem";
8import * as Schema from "effect/Schema";8import * as Schema from "effect/Schema";
9import * as Stream from "effect/Stream";9import * as Stream from "effect/Stream";
10import * as String from "effect/String";10import * as String from "effect/String";
11import { Command, Flag } from "effect/unstable/cli";11import { Command, Flag } from "effect/cli";
12import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";12import { ChildProcess, ChildProcessSpawner } from "effect/process";
1313
14const ReleaseChannel = Schema.Literals(["stable", "nightly", "preview"]);14const ReleaseChannel = Schema.Literals(["stable", "nightly", "preview"]);
15type ReleaseChannel = typeof ReleaseChannel.Type;15type ReleaseChannel = typeof ReleaseChannel.Type;
scripts/smoke-cli-archive.ts+3-3
...@@ -18,13 +18,13 @@ import * as Path from "effect/Path";...@@ -18,13 +18,13 @@ import * as Path from "effect/Path";
18import * as Schedule from "effect/Schedule";18import * as Schedule from "effect/Schedule";
19import * as Schema from "effect/Schema";19import * as Schema from "effect/Schema";
20import * as Stream from "effect/Stream";20import * as Stream from "effect/Stream";
21import { Command, Flag } from "effect/unstable/cli";21import { Command, Flag } from "effect/cli";
22import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";22import { ChildProcess, ChildProcessSpawner } from "effect/process";
2323
24import * as NetService from "@t3tools/shared/Net";24import * as NetService from "@t3tools/shared/Net";
25import { HostProcessPlatform } from "@t3tools/shared/hostProcess";25import { HostProcessPlatform } from "@t3tools/shared/hostProcess";
26import { windowsSystemTar } from "./build-cli-archive.ts";26import { windowsSystemTar } from "./build-cli-archive.ts";
27import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/unstable/http";27import { FetchHttpClient, HttpClient, HttpClientRequest } from "effect/http";
2828
29export class CliArchiveSmokeError extends Schema.TaggedError<CliArchiveSmokeError>()(29export class CliArchiveSmokeError extends Schema.TaggedError<CliArchiveSmokeError>()(
30 "CliArchiveSmokeError",30 "CliArchiveSmokeError",
scripts/sync-reference-repos.test.ts+1-1
...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";...@@ -6,7 +6,7 @@ import * as Layer from "effect/Layer";
6import * as Path from "effect/Path";6import * as Path from "effect/Path";
7import * as Sink from "effect/Sink";7import * as Sink from "effect/Sink";
8import * as Stream from "effect/Stream";8import * as Stream from "effect/Stream";
9import { ChildProcessSpawner } from "effect/unstable/process";9import { ChildProcessSpawner } from "effect/process";
1010
11import { referenceRepos } from "./lib/reference-repos.ts";11import { referenceRepos } from "./lib/reference-repos.ts";
12import {12import {
scripts/sync-reference-repos.ts+2-2
...@@ -9,8 +9,8 @@ import * as Option from "effect/Option";...@@ -9,8 +9,8 @@ import * as Option from "effect/Option";
9import * as Path from "effect/Path";9import * as Path from "effect/Path";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import * as Stream from "effect/Stream";11import * as Stream from "effect/Stream";
12import { Command, Flag } from "effect/unstable/cli";12import { Command, Flag } from "effect/cli";
13import { ChildProcess, ChildProcessSpawner } from "effect/unstable/process";13import { ChildProcess, ChildProcessSpawner } from "effect/process";
14import { fromYaml } from "@t3tools/shared/schemaYaml";14import { fromYaml } from "@t3tools/shared/schemaYaml";
1515
16import { referenceRepos, type ReferenceRepo } from "./lib/reference-repos.ts";16import { referenceRepos, type ReferenceRepo } from "./lib/reference-repos.ts";
scripts/update-release-package-versions.test.ts+1-1
...@@ -8,7 +8,7 @@ import * as Layer from "effect/Layer";...@@ -8,7 +8,7 @@ import * as Layer from "effect/Layer";
8import * as Path from "effect/Path";8import * as Path from "effect/Path";
9import * as PlatformError from "effect/PlatformError";9import * as PlatformError from "effect/PlatformError";
10import * as Schema from "effect/Schema";10import * as Schema from "effect/Schema";
11import { Command, CliError } from "effect/unstable/cli";11import { Command, CliError } from "effect/cli";
12import * as TestConsole from "effect/testing/TestConsole";12import * as TestConsole from "effect/testing/TestConsole";
13import { fromJsonStringPretty } from "@t3tools/shared/schemaJson";13import { fromJsonStringPretty } from "@t3tools/shared/schemaJson";
1414
scripts/update-release-package-versions.ts+1-1
...@@ -9,7 +9,7 @@ import * as FileSystem from "effect/FileSystem";...@@ -9,7 +9,7 @@ import * as FileSystem from "effect/FileSystem";
9import * as Option from "effect/Option";9import * as Option from "effect/Option";
10import * as Path from "effect/Path";10import * as Path from "effect/Path";
11import * as Schema from "effect/Schema";11import * as Schema from "effect/Schema";
12import { Argument, Command, Flag } from "effect/unstable/cli";12import { Argument, Command, Flag } from "effect/cli";
13import { fromJsonStringPretty } from "@t3tools/shared/schemaJson";13import { fromJsonStringPretty } from "@t3tools/shared/schemaJson";
1414
15export class ReleasePackageManifestError extends Schema.TaggedError<ReleasePackageManifestError>()(15export class ReleasePackageManifestError extends Schema.TaggedError<ReleasePackageManifestError>()(