authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-06-04 22:47:56-07:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-06-05 05:47:56+00:00
log9da430c828f6e32a30cd0998485b39670f2ee5ac
treee4aa09aee8b4c85fe635a0a43ef5b17b67a0a5a6
parenta084fbbc0a97fa4e414806a69fd7ab49984ef8ff
signature Signed by PGP key B5690EEEBB952194

Refactor recoverable Effect fallbacks to orElseSucceed (#2968)


42 files changed, 182 insertions(+), 318 deletions(-)

apps/desktop/src/app/DesktopAppIdentity.ts+1-1
......@@ -52,7 +52,7 @@ const make = Effect.gen(function* () {
5252 Effect.map((parsed) =>
5353 Option.fromNullishOr(parsed.t3codeCommitHash).pipe(Option.flatMap(normalizeCommitHash)),
5454 ),
55 Effect.catch(() => Effect.succeed(Option.none<string>())),
55 Effect.orElseSucceed(() => Option.none<string>()),
5656 ),
5757 });
5858 });
apps/desktop/src/backend/tailscaleEndpointProvider.ts+2-2
......@@ -116,11 +116,11 @@ export const resolveTailscaleAdvertisedEndpoints = Effect.fn("resolveTailscaleAd
116116 input.statusJson === undefined
117117 ? yield* readTailscaleStatus.pipe(
118118 Effect.map((status) => status.magicDnsName),
119 Effect.catch(() => Effect.succeed(null)),
119 Effect.orElseSucceed(() => null),
120120 )
121121 : input.statusJson
122122 ? yield* parseTailscaleMagicDnsName(input.statusJson).pipe(
123 Effect.catch(() => Effect.succeed(null)),
123 Effect.orElseSucceed(() => null),
124124 )
125125 : null;
126126 const magicDnsEndpoint = yield* resolveTailscaleMagicDnsAdvertisedEndpoint({
apps/desktop/src/settings/DesktopAppSettings.ts+1-1
......@@ -209,7 +209,7 @@ function readSettings(
209209 onSome: (raw) =>
210210 decodeDesktopSettingsJson(raw).pipe(
211211 Effect.map((parsed) => normalizeDesktopSettingsDocument(parsed, appVersion)),
212 Effect.catch(() => Effect.succeed(defaultSettings)),
212 Effect.orElseSucceed(() => defaultSettings),
213213 ),
214214 }),
215215 ),
apps/desktop/src/settings/DesktopClientSettings.ts+1-1
......@@ -63,7 +63,7 @@ const readClientSettings = (
6363 onSome: (raw) =>
6464 decodeClientSettingsJson(raw).pipe(
6565 Effect.map((settings) => Option.some(settings)),
66 Effect.catch(() => Effect.succeed(Option.none<ClientSettings>())),
66 Effect.orElseSucceed(() => Option.none<ClientSettings>()),
6767 ),
6868 }),
6969 ),
apps/desktop/src/settings/DesktopSavedEnvironments.ts+1-1
......@@ -185,7 +185,7 @@ function readRegistryDocument(
185185 onSome: (raw) =>
186186 decodeSavedEnvironmentRegistryDocumentJson(raw).pipe(
187187 Effect.map(normalizeSavedEnvironmentRegistryDocument),
188 Effect.catch(() => Effect.succeed({ version: 1, records: [] })),
188 Effect.orElseSucceed(() => ({ version: 1, records: [] })),
189189 ),
190190 }),
191191 ),
apps/desktop/src/shell/DesktopShellEnvironment.ts+1-1
......@@ -196,7 +196,7 @@ const runCommandOutput = Effect.fn("desktop.shellEnvironment.runCommandOutput")(
196196 .pipe(
197197 Effect.timeoutOption(input.timeout),
198198 Effect.map(Option.getOrElse(() => "")),
199 Effect.catch(() => Effect.succeed("")),
199 Effect.orElseSucceed(() => ""),
200200 );
201201});
202202
apps/desktop/src/updates/DesktopUpdates.ts+1-1
......@@ -120,7 +120,7 @@ function parseAppUpdateYml(raw: string): Effect.Effect<Option.Option<AppUpdateYm
120120
121121 return decodeAppUpdateYmlConfig(entries).pipe(
122122 Effect.map((config) => (config.provider ? Option.some(config) : Option.none())),
123 Effect.catch(() => Effect.succeed(Option.none<AppUpdateYmlConfig>())),
123 Effect.orElseSucceed(() => Option.none<AppUpdateYmlConfig>()),
124124 );
125125}
126126
apps/server/package.json+1-1
......@@ -38,7 +38,7 @@
3838 "@t3tools/shared": "workspace:*",
3939 "@t3tools/tailscale": "workspace:*",
4040 "@t3tools/web": "workspace:*",
41 "@types/bun": "catalog:",
41 "@types/bun": "1.3.14",
4242 "@types/node": "catalog:",
4343 "effect-acp": "workspace:*",
4444 "effect-codex-app-server": "workspace:*",
apps/server/src/checkpointing/Layers/CheckpointStore.ts+1-1
......@@ -35,7 +35,7 @@ const makeCheckpointStore = Effect.gen(function* () {
3535 const isGitRepository: CheckpointStoreShape["isGitRepository"] = (cwd) =>
3636 vcsRegistry.resolve({ cwd, requestedKind: "git" }).pipe(
3737 Effect.map(() => true),
38 Effect.catch(() => Effect.succeed(false)),
38 Effect.orElseSucceed(() => false),
3939 );
4040
4141 const captureCheckpoint: CheckpointStoreShape["captureCheckpoint"] = Effect.fn(
apps/server/src/cloud/ManagedEndpointRuntime.ts+1-3
......@@ -152,9 +152,7 @@ export const makeCloudManagedEndpointRuntime = Effect.gen(function* () {
152152 const nextConfigKey = runtimeConfigKey(config);
153153 const active = yield* Ref.get(activeRef);
154154 if (active?.configKey === nextConfigKey) {
155 const isRunning = yield* active.child.isRunning.pipe(
156 Effect.catch(() => Effect.succeed(false)),
157 );
155 const isRunning = yield* active.child.isRunning.pipe(Effect.orElseSucceed(() => false));
158156 if (isRunning) {
159157 return {
160158 status: "running",
apps/server/src/git/GitManager.ts+7-7
......@@ -702,7 +702,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
702702
703703 const tempDir = process.env.TMPDIR ?? process.env.TEMP ?? process.env.TMP ?? "/tmp";
704704 const canonicalizeExistingPath = (value: string) =>
705 fileSystem.realPath(value).pipe(Effect.catch(() => Effect.succeed(value)));
705 fileSystem.realPath(value).pipe(Effect.orElseSucceed(() => value));
706706 const normalizeStatusCacheKey = canonicalizeExistingPath;
707707 const nonRepositoryStatusDetails = {
708708 isRepo: false,
......@@ -766,7 +766,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
766766 if (details.isDefaultBranch && latest.state !== "open") return null;
767767 return toStatusPr(latest);
768768 }),
769 Effect.catch(() => Effect.succeed(null)),
769 Effect.orElseSucceed(() => null),
770770 )
771771 : null;
772772
......@@ -788,7 +788,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
788788 );
789789
790790 const readConfigValueNullable = (cwd: string, key: string) =>
791 gitCore.readConfigValue(cwd, key).pipe(Effect.catch(() => Effect.succeed(null)));
791 gitCore.readConfigValue(cwd, key).pipe(Effect.orElseSucceed(() => null));
792792
793793 const resolveHostingProvider = Effect.fn("resolveHostingProvider")(function* (
794794 cwd: string,
......@@ -972,7 +972,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
972972 ) {
973973 const terms = yield* sourceControlProvider(cwd).pipe(
974974 Effect.map((provider) => getChangeRequestTerminologyForKind(provider.kind)),
975 Effect.catch(() => Effect.succeed(getChangeRequestTerminologyForKind("unknown"))),
975 Effect.orElseSucceed(() => getChangeRequestTerminologyForKind("unknown")),
976976 );
977977 const summary = summarizeGitActionResult(result, terms);
978978 let latestOpenPr: PullRequestInfo | null = null;
......@@ -1016,7 +1016,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
10161016 upstreamRef: finalBranchContext.upstreamRef,
10171017 }).pipe(
10181018 Effect.flatMap((headContext) => findOpenPr(cwd, headContext)),
1019 Effect.catch(() => Effect.succeed(null)),
1019 Effect.orElseSucceed(() => null),
10201020 );
10211021 }
10221022
......@@ -1080,7 +1080,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
10801080
10811081 const defaultFromProvider = yield* sourceControlProvider(cwd).pipe(
10821082 Effect.flatMap((provider) => provider.getDefaultBranch({ cwd })),
1083 Effect.catch(() => Effect.succeed(null)),
1083 Effect.orElseSucceed(() => null),
10841084 );
10851085 if (defaultFromProvider) {
10861086 return defaultFromProvider;
......@@ -1686,7 +1686,7 @@ export const makeGitManager = Effect.fn("makeGitManager")(function* () {
16861686 const changeRequestTerms = wantsPr
16871687 ? yield* sourceControlProvider(input.cwd).pipe(
16881688 Effect.map((provider) => getChangeRequestTerminologyForKind(provider.kind)),
1689 Effect.catch(() => Effect.succeed(getChangeRequestTerminologyForKind("unknown"))),
1689 Effect.orElseSucceed(() => getChangeRequestTerminologyForKind("unknown")),
16901690 )
16911691 : null;
16921692
apps/server/src/http.ts+8-18
......@@ -156,8 +156,8 @@ export const otlpTracesProxyRouteLayer = HttpRouter.add(
156156 otlpTracesUrl,
157157 }),
158158 ),
159 Effect.catch(() =>
160 Effect.succeed(HttpServerResponse.text("Trace export failed.", { status: 502 })),
159 Effect.orElseSucceed(() =>
160 HttpServerResponse.text("Trace export failed.", { status: 502 }),
161161 ),
162162 );
163163 }).pipe(
......@@ -205,9 +205,7 @@ export const attachmentsRouteLayer = HttpRouter.add(
205205 }
206206
207207 const fileSystem = yield* FileSystem.FileSystem;
208 const fileInfo = yield* fileSystem
209 .stat(filePath)
210 .pipe(Effect.catch(() => Effect.succeed(null)));
208 const fileInfo = yield* fileSystem.stat(filePath).pipe(Effect.orElseSucceed(() => null));
211209 if (!fileInfo || fileInfo.type !== "File") {
212210 return HttpServerResponse.text("Not Found", { status: 404 });
213211 }
......@@ -218,9 +216,7 @@ export const attachmentsRouteLayer = HttpRouter.add(
218216 "Cache-Control": "public, max-age=31536000, immutable",
219217 },
220218 }).pipe(
221 Effect.catch(() =>
222 Effect.succeed(HttpServerResponse.text("Internal Server Error", { status: 500 })),
223 ),
219 Effect.orElseSucceed(() => HttpServerResponse.text("Internal Server Error", { status: 500 })),
224220 );
225221 }).pipe(
226222 Effect.catchTags({
......@@ -265,9 +261,7 @@ export const projectFaviconRouteLayer = HttpRouter.add(
265261 "Cache-Control": PROJECT_FAVICON_CACHE_CONTROL,
266262 },
267263 }).pipe(
268 Effect.catch(() =>
269 Effect.succeed(HttpServerResponse.text("Internal Server Error", { status: 500 })),
270 ),
264 Effect.orElseSucceed(() => HttpServerResponse.text("Internal Server Error", { status: 500 })),
271265 );
272266 }).pipe(
273267 Effect.catchTags({
......@@ -337,14 +331,12 @@ export const staticAndDevRouteLayer = HttpRouter.add(
337331 }
338332 }
339333
340 const fileInfo = yield* fileSystem
341 .stat(filePath)
342 .pipe(Effect.catch(() => Effect.succeed(null)));
334 const fileInfo = yield* fileSystem.stat(filePath).pipe(Effect.orElseSucceed(() => null));
343335 if (!fileInfo || fileInfo.type !== "File") {
344336 const indexPath = path.resolve(staticRoot, "index.html");
345337 const indexData = yield* fileSystem
346338 .readFile(indexPath)
347 .pipe(Effect.catch(() => Effect.succeed(null)));
339 .pipe(Effect.orElseSucceed(() => null));
348340 if (!indexData) {
349341 return HttpServerResponse.text("Not Found", { status: 404 });
350342 }
......@@ -355,9 +347,7 @@ export const staticAndDevRouteLayer = HttpRouter.add(
355347 }
356348
357349 const contentType = Mime.getType(filePath) ?? "application/octet-stream";
358 const data = yield* fileSystem
359 .readFile(filePath)
360 .pipe(Effect.catch(() => Effect.succeed(null)));
350 const data = yield* fileSystem.readFile(filePath).pipe(Effect.orElseSucceed(() => null));
361351 if (!data) {
362352 return HttpServerResponse.text("Internal Server Error", { status: 500 });
363353 }
apps/server/src/orchestration/Layers/ProjectionPipeline.ts+2-4
......@@ -335,7 +335,7 @@ const runAttachmentSideEffects = Effect.fn("runAttachmentSideEffects")(function*
335335 const attachmentsRootDir = serverConfig.attachmentsDir;
336336 const readAttachmentRootEntries = fileSystem
337337 .readDirectory(attachmentsRootDir, { recursive: false })
338 .pipe(Effect.catch(() => Effect.succeed([] as Array<string>)));
338 .pipe(Effect.orElseSucceed(() => [] as Array<string>));
339339
340340 const removeDeletedThreadAttachmentEntry = Effect.fn("removeDeletedThreadAttachmentEntry")(
341341 function* (threadSegment: string, entry: string) {
......@@ -397,9 +397,7 @@ const runAttachmentSideEffects = Effect.fn("runAttachmentSideEffects")(function*
397397 }
398398
399399 const absolutePath = path.join(attachmentsRootDir, relativePath);
400 const fileInfo = yield* fileSystem
401 .stat(absolutePath)
402 .pipe(Effect.catch(() => Effect.succeed(null)));
400 const fileInfo = yield* fileSystem.stat(absolutePath).pipe(Effect.orElseSucceed(() => null));
403401 if (!fileInfo || fileInfo.type !== "File") {
404402 return;
405403 }
apps/server/src/project/Layers/ProjectFaviconResolver.ts+2-4
......@@ -80,9 +80,7 @@ export const makeProjectFaviconResolver = Effect.gen(function* () {
8080 if (!isPathWithinProject(projectCwd, candidate)) {
8181 continue;
8282 }
83 const stats = yield* fileSystem
84 .stat(candidate)
85 .pipe(Effect.catch(() => Effect.succeed(null)));
83 const stats = yield* fileSystem.stat(candidate).pipe(Effect.orElseSucceed(() => null));
8684 if (stats?.type === "File") {
8785 return candidate;
8886 }
......@@ -105,7 +103,7 @@ export const makeProjectFaviconResolver = Effect.gen(function* () {
105103 const sourcePath = path.join(cwd, sourceFile);
106104 const source = yield* fileSystem
107105 .readFileString(sourcePath)
108 .pipe(Effect.catch(() => Effect.succeed(null)));
106 .pipe(Effect.orElseSucceed(() => null));
109107 if (!source) {
110108 continue;
111109 }
apps/server/src/provider/providerMaintenance.ts+3-3
......@@ -347,7 +347,7 @@ export const resolveProviderMaintenanceCapabilitiesEffect = Effect.fn(
347347 const fileSystem = yield* FileSystem.FileSystem;
348348 const realCommandPath = yield* fileSystem
349349 .realPath(resolvedCommandPath)
350 .pipe(Effect.catch(() => Effect.succeed(resolvedCommandPath)));
350 .pipe(Effect.orElseSucceed(() => resolvedCommandPath));
351351 return resolver.resolve({
352352 ...options,
353353 realCommandPath,
......@@ -406,7 +406,7 @@ const fetchNpmLatestVersion = Effect.fn("fetchNpmLatestVersion")(function* (pack
406406 ).pipe(HttpClientRequest.setHeader("accept", "application/json"));
407407 const response = yield* client.execute(request).pipe(
408408 Effect.timeoutOption(LATEST_VERSION_TIMEOUT_MS),
409 Effect.catch(() => Effect.succeed(Option.none())),
409 Effect.orElseSucceed(() => Option.none()),
410410 );
411411 if (Option.isNone(response)) {
412412 return null;
......@@ -417,7 +417,7 @@ const fetchNpmLatestVersion = Effect.fn("fetchNpmLatestVersion")(function* (pack
417417 }
418418 const payload = yield* httpResponse.json.pipe(
419419 Effect.flatMap(Schema.decodeUnknownEffect(NpmLatestVersionResponse)),
420 Effect.catch(() => Effect.succeed(null)),
420 Effect.orElseSucceed(() => null),
421421 );
422422 return payload ? nonEmptyString(payload.version) : null;
423423});
apps/server/src/review/ReviewService.ts+1-3
......@@ -35,9 +35,7 @@ export const make = Effect.fn("makeReviewService")(function* () {
3535 const git = yield* GitVcsDriver.GitVcsDriver;
3636
3737 const canonicalizePath = (value: string) =>
38 fileSystem
39 .realPath(path.resolve(value))
40 .pipe(Effect.catch(() => Effect.succeed(path.resolve(value))));
38 fileSystem.realPath(path.resolve(value)).pipe(Effect.orElseSucceed(() => path.resolve(value)));
4139
4240 const isWithinRoot = (candidate: string, root: string) => {
4341 const relative = path.relative(root, candidate);
apps/server/src/sourceControl/BitbucketApi.ts+6-6
......@@ -359,7 +359,7 @@ function responseError(
359359 response: HttpClientResponse.HttpClientResponse,
360360): Effect.Effect<never, BitbucketApiError> {
361361 return response.text.pipe(
362 Effect.catch(() => Effect.succeed("")),
362 Effect.orElseSucceed(() => ""),
363363 Effect.flatMap((body) =>
364364 Effect.fail(
365365 new BitbucketApiError({
......@@ -524,7 +524,7 @@ export const make = Effect.fn("makeBitbucketApi")(function* () {
524524 );
525525
526526 const readConfigValueNullable = (cwd: string, key: string) =>
527 git.readConfigValue(cwd, key).pipe(Effect.catch(() => Effect.succeed(null)));
527 git.readConfigValue(cwd, key).pipe(Effect.orElseSucceed(() => null));
528528
529529 const resolveCheckoutRemote = Effect.fn("BitbucketApi.resolveCheckoutRemote")(function* (input: {
530530 readonly cwd: string;
......@@ -544,7 +544,7 @@ export const make = Effect.fn("makeBitbucketApi")(function* () {
544544 if (!input.isCrossRepository) {
545545 const remoteName = yield* git
546546 .resolvePrimaryRemoteName(input.cwd)
547 .pipe(Effect.catch(() => Effect.succeed(null)));
547 .pipe(Effect.orElseSucceed(() => null));
548548 if (remoteName) return remoteName;
549549 }
550550
......@@ -575,7 +575,7 @@ export const make = Effect.fn("makeBitbucketApi")(function* () {
575575 host: Option.some("bitbucket.org"),
576576 detail: Option.none<string>(),
577577 })),
578 Effect.catch(() => Effect.succeed(authFromConfig(config))),
578 Effect.orElseSucceed(() => authFromConfig(config)),
579579 ),
580580 listPullRequests: (input) =>
581581 resolveRepository(input).pipe(
......@@ -685,8 +685,8 @@ export const make = Effect.fn("makeBitbucketApi")(function* () {
685685 {
686686 repository: getRepositoryFromLocator(locator),
687687 branchingModel: getBranchingModelFromLocator(locator).pipe(
688 Effect.catch(() =>
689 Effect.succeed<typeof RawBitbucketBranchingModelSchema.Type | null>(null),
688 Effect.orElseSucceed(
689 (): typeof RawBitbucketBranchingModelSchema.Type | null => null,
690690 ),
691691 ),
692692 },
apps/server/src/sourceControl/SourceControlProviderDiscovery.ts+1-1
......@@ -299,7 +299,7 @@ export const refineUnknownRemoteProvider = Effect.fn("refineUnknownRemoteProvide
299299 auth,
300300 }),
301301 ),
302 Effect.catch(() => Effect.succeed(null)),
302 Effect.orElseSucceed(() => null),
303303 ),
304304 );
305305 const provider = providers.find((candidate) => candidate !== null);
apps/server/src/sourceControl/SourceControlRepositoryService.ts+2-4
......@@ -277,12 +277,10 @@ export const make = Effect.fn("makeSourceControlRepositoryService")(function* ()
277277 })
278278 .pipe(
279279 Effect.map(() => true),
280 Effect.catch(() => Effect.succeed(false)),
280 Effect.orElseSucceed(() => false),
281281 );
282282 if (!hasCommits) {
283 const details = yield* git
284 .statusDetails(input.cwd)
285 .pipe(Effect.catch(() => Effect.succeed(null)));
283 const details = yield* git.statusDetails(input.cwd).pipe(Effect.orElseSucceed(() => null));
286284 return {
287285 repository: toRepositoryInfo(providerKind, urls),
288286 remoteName,
apps/server/src/telemetry/Layers/AnalyticsService.test.ts+1-1
......@@ -62,7 +62,7 @@ it.layer(NodeServices.layer)("AnalyticsService test", (it) => {
6262
6363 const payload = yield* request.json.pipe(
6464 Effect.map((body) => body as RecordedBatchRequest["body"]),
65 Effect.catch(() => Effect.succeed(null)),
65 Effect.orElseSucceed(() => null),
6666 );
6767
6868 capturedRequests.push({ path: request.url, body: payload });
apps/server/src/terminal/Layers/BunPTY.ts+2
......@@ -1,3 +1,5 @@
1/// <reference types="bun" />
2
13import * as Effect from "effect/Effect";
24import * as Layer from "effect/Layer";
35import { PtyAdapter } from "../Services/PTY.ts";
apps/server/src/terminal/Layers/Manager.ts+1-1
......@@ -1289,7 +1289,7 @@ export const makeTerminalManagerWithOptions = Effect.fn("makeTerminalManagerWith
12891289 const threadPrefix = `${toSafeThreadId(threadId)}_`;
12901290 const entries = yield* fileSystem
12911291 .readDirectory(logsDir, { recursive: false })
1292 .pipe(Effect.catch(() => Effect.succeed([] as Array<string>)));
1292 .pipe(Effect.orElseSucceed(() => [] as Array<string>));
12931293 yield* Effect.forEach(
12941294 entries.filter(
12951295 (name) =>
apps/server/src/textGeneration/CodexTextGeneration.ts+1-3
......@@ -140,9 +140,7 @@ export const makeCodexTextGeneration = Effect.fn("makeCodexTextGeneration")(func
140140 if (!resolvedPath || !path.isAbsolute(resolvedPath)) {
141141 continue;
142142 }
143 const fileInfo = yield* fileSystem
144 .stat(resolvedPath)
145 .pipe(Effect.catch(() => Effect.succeed(null)));
143 const fileInfo = yield* fileSystem.stat(resolvedPath).pipe(Effect.orElseSucceed(() => null));
146144 if (!fileInfo || fileInfo.type !== "File") {
147145 continue;
148146 }
apps/server/src/vcs/GitVcsDriver.ts+1-1
......@@ -403,7 +403,7 @@ export const makeVcsDriverShape = Effect.fn("makeGitVcsDriverShape")(function* (
403403 "GitVcsDriver.detectRepository.commonDir",
404404 cwd,
405405 ["rev-parse", "--git-common-dir"],
406 ).pipe(Effect.catch(() => Effect.succeed(null)));
406 ).pipe(Effect.orElseSucceed(() => null));
407407
408408 return {
409409 kind: "git" as const,
apps/server/src/vcs/GitVcsDriverCore.ts+29-37
......@@ -885,7 +885,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
885885
886886 const remoteNames = yield* runGitStdout("GitVcsDriver.listRemoteNames", cwd, ["remote"]).pipe(
887887 Effect.map(parseRemoteNames),
888 Effect.catch(() => Effect.succeed<ReadonlyArray<string>>([])),
888 Effect.orElseSucceed((): ReadonlyArray<string> => []),
889889 );
890890 return (
891891 parseUpstreamRefWithRemoteNames(upstreamRef, remoteNames) ??
......@@ -996,7 +996,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
996996 cwd: string,
997997 branchName: string,
998998 ) {
999 const remoteNames = yield* listRemoteNames(cwd).pipe(Effect.catch(() => Effect.succeed([])));
999 const remoteNames = yield* listRemoteNames(cwd).pipe(Effect.orElseSucceed(() => []));
10001000 const parsedRemoteRef = parseRemoteRefWithRemoteNames(branchName, remoteNames);
10011001 return parsedRemoteRef?.branchName ?? branchName;
10021002 });
......@@ -1042,7 +1042,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
10421042 return pushDefaultRemote;
10431043 }
10441044
1045 return yield* resolvePrimaryRemoteName(cwd).pipe(Effect.catch(() => Effect.succeed(null)));
1045 return yield* resolvePrimaryRemoteName(cwd).pipe(Effect.orElseSucceed(() => null));
10461046 });
10471047
10481048 const ensureRemote: GitVcsDriver.GitVcsDriverShape["ensureRemote"] = Effect.fn("ensureRemote")(
......@@ -1090,7 +1090,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
10901090 ).pipe(Effect.map((stdout) => stdout.trim()));
10911091
10921092 const primaryRemoteName = yield* resolvePrimaryRemoteName(cwd).pipe(
1093 Effect.catch(() => Effect.succeed(null)),
1093 Effect.orElseSucceed(() => null),
10941094 );
10951095 const defaultBranch =
10961096 primaryRemoteName === null ? null : yield* resolveDefaultBranchName(cwd, primaryRemoteName);
......@@ -1231,7 +1231,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
12311231 allowNonZeroExit: true,
12321232 },
12331233 ),
1234 originRemoteExists(cwd).pipe(Effect.catch(() => Effect.succeed(false))),
1234 originRemoteExists(cwd).pipe(Effect.orElseSucceed(() => false)),
12351235 ],
12361236 { concurrency: "unbounded" },
12371237 );
......@@ -1276,9 +1276,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
12761276
12771277 const fallbackAheadCount =
12781278 !upstreamRef && refName
1279 ? yield* computeAheadCountAgainstBase(cwd, refName).pipe(
1280 Effect.catch(() => Effect.succeed(0)),
1281 )
1279 ? yield* computeAheadCountAgainstBase(cwd, refName).pipe(Effect.orElseSucceed(() => 0))
12821280 : null;
12831281
12841282 if (fallbackAheadCount !== null) {
......@@ -1294,9 +1292,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
12941292 aheadOfDefaultCount =
12951293 fallbackAheadCount !== null
12961294 ? fallbackAheadCount
1297 : yield* computeAheadCountAgainstBase(cwd, refName).pipe(
1298 Effect.catch(() => Effect.succeed(0)),
1299 );
1295 : yield* computeAheadCountAgainstBase(cwd, refName).pipe(Effect.orElseSucceed(() => 0));
13001296 }
13011297
13021298 const stagedEntries = parseNumstatEntries(stagedNumstatStdout);
......@@ -1494,11 +1490,11 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
14941490 }
14951491
14961492 const comparableBaseBranch = yield* resolveBaseBranchForNoUpstream(cwd, branch).pipe(
1497 Effect.catch(() => Effect.succeed(null)),
1493 Effect.orElseSucceed(() => null),
14981494 );
14991495 if (comparableBaseBranch) {
15001496 const publishRemoteName = yield* resolvePushRemoteName(cwd, branch).pipe(
1501 Effect.catch(() => Effect.succeed(null)),
1497 Effect.orElseSucceed(() => null),
15021498 );
15031499 if (!publishRemoteName) {
15041500 return {
......@@ -1508,7 +1504,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
15081504 }
15091505
15101506 const hasRemoteBranch = yield* remoteBranchExists(cwd, publishRemoteName, branch).pipe(
1511 Effect.catch(() => Effect.succeed(false)),
1507 Effect.orElseSucceed(() => false),
15121508 );
15131509 if (hasRemoteBranch) {
15141510 return {
......@@ -1545,7 +1541,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
15451541 }
15461542
15471543 const currentUpstream = yield* resolveCurrentUpstream(cwd).pipe(
1548 Effect.catch(() => Effect.succeed(null)),
1544 Effect.orElseSucceed(() => null),
15491545 );
15501546 if (currentUpstream) {
15511547 yield* runGit("GitVcsDriver.pushCurrentBranch.pushUpstream", cwd, [
......@@ -1716,7 +1712,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
17161712 input.baseRef ??
17171713 (branch
17181714 ? yield* resolveBaseBranchForNoUpstream(input.cwd, branch).pipe(
1719 Effect.catch(() => Effect.succeed(null)),
1715 Effect.orElseSucceed(() => null),
17201716 )
17211717 : null);
17221718
......@@ -1729,18 +1725,16 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
17291725 appendTruncationMarker: true,
17301726 },
17311727 ).pipe(
1732 Effect.catch(() =>
1733 Effect.succeed({
1734 exitCode: 0,
1735 stdout: "",
1736 stderr: "",
1737 stdoutTruncated: false,
1738 stderrTruncated: false,
1739 }),
1740 ),
1728 Effect.orElseSucceed(() => ({
1729 exitCode: 0,
1730 stdout: "",
1731 stderr: "",
1732 stdoutTruncated: false,
1733 stderrTruncated: false,
1734 })),
17411735 );
17421736 const dirtyUntracked = yield* readUntrackedReviewDiffs(input.cwd).pipe(
1743 Effect.catch(() => Effect.succeed({ diff: "", truncated: false })),
1737 Effect.orElseSucceed(() => ({ diff: "", truncated: false })),
17441738 );
17451739 const dirtyDiff = [dirtyTrackedResult.stdout.trimEnd(), dirtyUntracked.diff.trimEnd()]
17461740 .filter((diff) => diff.length > 0)
......@@ -1757,15 +1751,13 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
17571751 appendTruncationMarker: true,
17581752 },
17591753 ).pipe(
1760 Effect.catch(() =>
1761 Effect.succeed({
1762 exitCode: 0,
1763 stdout: "",
1764 stderr: "",
1765 stdoutTruncated: false,
1766 stderrTruncated: false,
1767 }),
1768 ),
1754 Effect.orElseSucceed(() => ({
1755 exitCode: 0,
1756 stdout: "",
1757 stderr: "",
1758 stdoutTruncated: false,
1759 stderrTruncated: false,
1760 })),
17691761 )
17701762 : null;
17711763 const baseDiff = baseResult?.stdout ?? "";
......@@ -1827,7 +1819,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
18271819 const listRefs: GitVcsDriver.GitVcsDriverShape["listRefs"] = Effect.fn("listRefs")(
18281820 function* (input) {
18291821 const branchRecencyPromise = readBranchRecency(input.cwd).pipe(
1830 Effect.catch(() => Effect.succeed(new Map<string, number>())),
1822 Effect.orElseSucceed(() => new Map<string, number>()),
18311823 );
18321824 const localBranchResult = yield* executeGit(
18331825 "GitVcsDriver.listRefs.branchNoColor",
......@@ -1970,7 +1962,7 @@ export const makeGitVcsDriverCore = Effect.fn("makeGitVcsDriverCore")(function*
19701962 const candidatePath = line.slice("worktree ".length);
19711963 const exists = yield* fileSystem.stat(candidatePath).pipe(
19721964 Effect.map(() => true),
1973 Effect.catch(() => Effect.succeed(false)),
1965 Effect.orElseSucceed(() => false),
19741966 );
19751967 currentPath = exists ? candidatePath : null;
19761968 } else if (line.startsWith("branch refs/heads/") && currentPath) {
apps/server/src/workspace/Layers/WorkspaceEntries.ts+6-6
......@@ -188,7 +188,7 @@ export const makeWorkspaceEntries = Effect.gen(function* () {
188188 const isInsideVcsWorkTree = (cwd: string): Effect.Effect<boolean> =>
189189 vcsRegistry.detect({ cwd }).pipe(
190190 Effect.map((handle) => handle !== null),
191 Effect.catch(() => Effect.succeed(false)),
191 Effect.orElseSucceed(() => false),
192192 );
193193
194194 const filterVcsIgnoredPaths = (
......@@ -200,23 +200,23 @@ export const makeWorkspaceEntries = Effect.gen(function* () {
200200 handle
201201 ? handle.driver.filterIgnoredPaths(cwd, relativePaths).pipe(
202202 Effect.map((paths) => [...paths]),
203 Effect.catch(() => Effect.succeed(relativePaths)),
203 Effect.orElseSucceed(() => relativePaths),
204204 )
205205 : Effect.succeed(relativePaths),
206206 ),
207 Effect.catch(() => Effect.succeed(relativePaths)),
207 Effect.orElseSucceed(() => relativePaths),
208208 );
209209
210210 const buildWorkspaceIndexFromVcs = Effect.fn("WorkspaceEntries.buildWorkspaceIndexFromVcs")(
211211 function* (cwd: string) {
212 const vcs = yield* vcsRegistry.detect({ cwd }).pipe(Effect.catch(() => Effect.succeed(null)));
212 const vcs = yield* vcsRegistry.detect({ cwd }).pipe(Effect.orElseSucceed(() => null));
213213 if (!vcs) {
214214 return null;
215215 }
216216
217217 const listedFiles = yield* vcs.driver
218218 .listWorkspaceFiles(cwd)
219 .pipe(Effect.catch(() => Effect.succeed(null)));
219 .pipe(Effect.orElseSucceed(() => null));
220220
221221 if (!listedFiles) {
222222 return null;
......@@ -431,7 +431,7 @@ export const makeWorkspaceEntries = Effect.gen(function* () {
431431 const invalidate: WorkspaceEntriesShape["invalidate"] = Effect.fn("WorkspaceEntries.invalidate")(
432432 function* (cwd) {
433433 const normalizedCwd = yield* normalizeWorkspaceRoot(cwd).pipe(
434 Effect.catch(() => Effect.succeed(cwd)),
434 Effect.orElseSucceed(() => cwd),
435435 );
436436 yield* Cache.invalidate(workspaceIndexCache, cwd);
437437 if (normalizedCwd !== cwd) {
apps/server/src/workspace/Layers/WorkspaceFileSystem.test.ts+1-1
......@@ -132,7 +132,7 @@ it.layer(TestLayer)("WorkspaceFileSystemLive", (it) => {
132132 const escapedPath = path.resolve(cwd, "..", "escape.md");
133133 const escapedStat = yield* fileSystem
134134 .stat(escapedPath)
135 .pipe(Effect.catch(() => Effect.succeed(null)));
135 .pipe(Effect.orElseSucceed(() => null));
136136 expect(escapedStat).toBeNull();
137137 }),
138138 );
apps/server/src/workspace/Layers/WorkspacePaths.ts+2-2
......@@ -37,7 +37,7 @@ export const makeWorkspacePaths = Effect.gen(function* () {
3737 const normalizedWorkspaceRoot = path.resolve(expandHomePath(workspaceRoot.trim(), path));
3838 let workspaceStat = yield* fileSystem
3939 .stat(normalizedWorkspaceRoot)
40 .pipe(Effect.catch(() => Effect.succeed(null)));
40 .pipe(Effect.orElseSucceed(() => null));
4141 if (!workspaceStat && options?.createIfMissing) {
4242 yield* fileSystem.makeDirectory(normalizedWorkspaceRoot, { recursive: true }).pipe(
4343 Effect.mapError(
......@@ -50,7 +50,7 @@ export const makeWorkspacePaths = Effect.gen(function* () {
5050 );
5151 workspaceStat = yield* fileSystem
5252 .stat(normalizedWorkspaceRoot)
53 .pipe(Effect.catch(() => Effect.succeed(null)));
53 .pipe(Effect.orElseSucceed(() => null));
5454 }
5555 if (!workspaceStat) {
5656 return yield* new WorkspaceRootNotExistsError({
apps/server/src/ws.ts+5-5
......@@ -436,7 +436,7 @@ const makeWsRpcLayer = (currentSession: AuthenticatedSession) =>
436436 repositoryIdentity,
437437 },
438438 } satisfies OrchestrationEvent;
439 }).pipe(Effect.catch(() => Effect.succeed(event)));
439 }).pipe(Effect.orElseSucceed(() => event));
440440 default:
441441 return Effect.succeed(event);
442442 }
......@@ -459,7 +459,7 @@ const makeWsRpcLayer = (currentSession: AuthenticatedSession) =>
459459 project: nextProject,
460460 })),
461461 ),
462 Effect.catch(() => Effect.succeed(Option.none())),
462 Effect.orElseSucceed(() => Option.none()),
463463 );
464464 case "project.deleted":
465465 return Effect.succeed(
......@@ -487,7 +487,7 @@ const makeWsRpcLayer = (currentSession: AuthenticatedSession) =>
487487 thread: nextThread,
488488 })),
489489 ),
490 Effect.catch(() => Effect.succeed(Option.none())),
490 Effect.orElseSucceed(() => Option.none()),
491491 );
492492 default:
493493 if (event.aggregateKind !== "thread") {
......@@ -503,7 +503,7 @@ const makeWsRpcLayer = (currentSession: AuthenticatedSession) =>
503503 thread: nextThread,
504504 })),
505505 ),
506 Effect.catch(() => Effect.succeed(Option.none())),
506 Effect.orElseSucceed(() => Option.none()),
507507 );
508508 }
509509 };
......@@ -777,7 +777,7 @@ const makeWsRpcLayer = (currentSession: AuthenticatedSession) =>
777777 thread.session !== null && thread.session.status !== "stopped",
778778 }),
779779 ),
780 Effect.catch(() => Effect.succeed(false)),
780 Effect.orElseSucceed(() => false),
781781 )
782782 : false;
783783 const result = yield* dispatchNormalizedCommand(normalizedCommand);
apps/server/tsconfig.json+1-1
......@@ -1,7 +1,7 @@
11{
22 "extends": "../../tsconfig.base.json",
33 "compilerOptions": {
4 "types": ["node", "bun"],
4 "types": ["node"],
55 "lib": ["ESNext", "esnext.disposable"]
66 },
77 "include": ["src", "vite.config.ts", "scripts", "integration", "../../scripts/lib"]
infra/relay/scripts/deploy.ts+1-1
......@@ -95,7 +95,7 @@ const loadDeployConfigProvider = Effect.fn("relay.deploy.loadConfigProvider")(fu
9595 }
9696
9797 return yield* ConfigProvider.fromDotEnv({ path: path.join(root, ".env") }).pipe(
98 Effect.catch(() => Effect.succeed(ConfigProvider.fromEnv())),
98 Effect.orElseSucceed(() => ConfigProvider.fromEnv()),
9999 );
100100});
101101
infra/relay/src/auth/RelayTokens.ts+1-1
......@@ -161,7 +161,7 @@ const make = Effect.gen(function* () {
161161 }
162162 return claims;
163163 }),
164 Effect.catch(() => Effect.succeed(null)),
164 Effect.orElseSucceed(() => null),
165165 ),
166166 );
167167
infra/relay/src/environments/ManagedEndpointProvider.ts+1-1
......@@ -242,7 +242,7 @@ const make = Effect.gen(function* () {
242242 .updateRecord(preferredDnsRecordId, dnsRecord)
243243 .pipe(
244244 Effect.as(true),
245 Effect.catch(() => Effect.succeed(false)),
245 Effect.orElseSucceed(() => false),
246246 );
247247 if (checkpointedRecordUpdated) {
248248 return preferredDnsRecordId;
oxlint-plugin-t3code/package.json-1
......@@ -13,7 +13,6 @@
1313 },
1414 "devDependencies": {
1515 "@effect/vitest": "catalog:",
16 "@types/bun": "catalog:",
1716 "vite-plus": "catalog:"
1817 }
1918}
oxlint-plugin-t3code/tsconfig.json+1-1
......@@ -2,7 +2,7 @@
22 "extends": "../tsconfig.base.json",
33 "compilerOptions": {
44 "composite": true,
5 "types": ["bun", "node"],
5 "types": ["node"],
66 "lib": ["ESNext", "esnext.disposable"]
77 },
88 "include": ["**/*.ts"]
package.json+1
......@@ -17,6 +17,7 @@
1717 "build:marketing": "vp run --filter @t3tools/marketing build",
1818 "build:desktop": "vp run --filter @t3tools/desktop --filter t3 build",
1919 "typecheck": "vp run -r --concurrency-limit 2 typecheck",
20 "tc": "vp run -r --concurrency-limit 2 typecheck",
2021 "lint": "vp lint --report-unused-disable-directives",
2122 "lint:mobile": "node scripts/mobile-native-static-check.ts",
2223 "test": "vp run -r test",
packages/tailscale/src/tailscale.ts+1-1
......@@ -297,7 +297,7 @@ export const probeTailscaleHttpsEndpoint = (input: {
297297 onNone: () => false,
298298 onSome: (httpResponse) => httpResponse.status >= 200 && httpResponse.status < 300,
299299 });
300 }).pipe(Effect.catch(() => Effect.succeed(false)));
300 }).pipe(Effect.orElseSucceed(() => false));
301301
302302export const resolveTailscaleHttpsBaseUrl = (
303303 input: {
pnpm-lock.yaml+69-169
......@@ -10,8 +10,8 @@ catalogs:
1010 specifier: 4.0.0-beta.78
1111 version: 4.0.0-beta.78
1212 '@effect/tsgo':
13 specifier: 0.11.4
14 version: 0.11.4
13 specifier: 0.13.2
14 version: 0.13.2
1515 '@noble/curves':
1616 specifier: 1.9.1
1717 version: 1.9.1
......@@ -21,12 +21,9 @@ catalogs:
2121 '@pierre/diffs':
2222 specifier: 1.1.20
2323 version: 1.1.20
24 '@types/bun':
25 specifier: ^1.3.11
26 version: 1.3.14
2724 '@typescript/native-preview':
28 specifier: 7.0.0-dev.20260527.2
29 version: 7.0.0-dev.20260527.2
25 specifier: 7.0.0-dev.20260604.1
26 version: 7.0.0-dev.20260604.1
3027 jose:
3128 specifier: 6.2.2
3229 version: 6.2.2
......@@ -87,7 +84,7 @@ importers:
8784 version: 7.28.6(@babel/core@7.29.7)
8885 '@effect/tsgo':
8986 specifier: 'catalog:'
90 version: 0.11.4
87 version: 0.13.2
9188 '@oxlint/plugins':
9289 specifier: ^1.63.0
9390 version: 1.68.0
......@@ -96,7 +93,7 @@ importers:
9693 version: 24.12.4
9794 '@typescript/native-preview':
9895 specifier: 'catalog:'
99 version: 7.0.0-dev.20260527.2
96 version: 7.0.0-dev.20260604.1
10097 vite-plus:
10198 specifier: 'catalog:'
10299 version: 0.1.24(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
......@@ -417,7 +414,7 @@ importers:
417414 specifier: workspace:*
418415 version: link:../web
419416 '@types/bun':
420 specifier: 'catalog:'
417 specifier: 1.3.14
421418 version: 1.3.14
422419 '@types/node':
423420 specifier: 24.12.4
......@@ -644,9 +641,6 @@ importers:
644641 '@effect/vitest':
645642 specifier: 4.0.0-beta.78
646643 version: 4.0.0-beta.78(patch_hash=42b87cc47e70d74e62496e7a8261b3fd298ecad4464d209348ab04b96f853a5f)(effect@4.0.0-beta.78(patch_hash=883249d8efbb462e928e21fefef96027b66aec50751178cafdce45f08eee3754))
647 '@types/bun':
648 specifier: 'catalog:'
649 version: 1.3.14
650644 vite-plus:
651645 specifier: 'catalog:'
652646 version: 0.1.24(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
......@@ -807,9 +801,6 @@ importers:
807801
808802 scripts:
809803 dependencies:
810 '@anthropic-ai/claude-agent-sdk':
811 specifier: ^0.2.77
812 version: 0.2.141(zod@4.4.3)
813804 '@effect/platform-node':
814805 specifier: 4.0.0-beta.78
815806 version: 4.0.0-beta.78(bufferutil@4.1.0)(effect@4.0.0-beta.78(patch_hash=883249d8efbb462e928e21fefef96027b66aec50751178cafdce45f08eee3754))(ioredis@5.11.0)(utf-8-validate@6.0.6)
......@@ -829,9 +820,6 @@ importers:
829820 '@effect/vitest':
830821 specifier: 4.0.0-beta.78
831822 version: 4.0.0-beta.78(patch_hash=42b87cc47e70d74e62496e7a8261b3fd298ecad4464d209348ab04b96f853a5f)(effect@4.0.0-beta.78(patch_hash=883249d8efbb462e928e21fefef96027b66aec50751178cafdce45f08eee3754))
832 '@types/bun':
833 specifier: 'catalog:'
834 version: 1.3.14
835823 vite-plus:
836824 specifier: 'catalog:'
837825 version: 0.1.24(@types/node@24.12.4)(bufferutil@4.1.0)(esbuild@0.27.7)(jiti@2.7.0)(terser@5.48.0)(typescript@6.0.3)(unrun@0.2.39)(utf-8-validate@6.0.6)(yaml@2.9.0)
......@@ -851,92 +839,46 @@ packages:
851839 '@alchemy.run/node-utils@0.0.4':
852840 resolution: {integrity: sha512-TiIhPXCTCi3tk0zmdYJJ14CNSesSfsJxXdIOP0HTSItQ1mZWLocrF7qCuEWKyW/IEFzp6kaiOf19aIA/mbCp1g==}
853841
854 '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.2.141':
855 resolution: {integrity: sha512-9HZ0ot6+FwOfQ1aeMqQLH4IJGMm/DcP08SysDxscVjBm6l2JjqleHohxi3zid0DurfGweqT+4x9GScJffwg55g==}
856 cpu: [arm64]
857 os: [darwin]
858
859842 '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.159':
860843 resolution: {integrity: sha512-3nnH4yUNJVSyaU5DBlGw2yxc4zlnVvAnc9UOe+La47QVG7/dN+rWAgn4zCbqKk9bWFLDQ1Ek0r56EZE1Qo4UKQ==}
861844 cpu: [arm64]
862845 os: [darwin]
863846
864 '@anthropic-ai/claude-agent-sdk-darwin-x64@0.2.141':
865 resolution: {integrity: sha512-4iAdarJaQ+2R58s6QJswZCzUdz2WQmL5lYG7Y+FLzWbRSROFfcH0QYpmOqSaPXd2KRQhIJwEacqecDZd/Q1XKQ==}
866 cpu: [x64]
867 os: [darwin]
868
869847 '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.159':
870848 resolution: {integrity: sha512-iv+NRjz+t4Q1R2+kLdDbccSo3b0wedVJ9jMT3noznOVojZHzgkxVpTvt36/XkXV0rqIDQ5H18bBYIZZzOXu7mg==}
871849 cpu: [x64]
872850 os: [darwin]
873851
874 '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.2.141':
875 resolution: {integrity: sha512-6H1AJ/AVaWNnV22kubUPkOTRzZFH0+qP9k7WlhriHMN9gtgZcVAsITMddDeGjQsQJMCAdhXFd6sgi7TM1LdeOQ==}
876 cpu: [arm64]
877 os: [linux]
878
879852 '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.159':
880853 resolution: {integrity: sha512-WvwiQBWt3tdu5EwqjpDZszI6p2uetYsw4Cxc6ptO/SmLIYXcDienP8nmirZdsZrS+Gzk6imgY0IY5mmNaRhelQ==}
881854 cpu: [arm64]
882855 os: [linux]
883856
884 '@anthropic-ai/claude-agent-sdk-linux-arm64@0.2.141':
885 resolution: {integrity: sha512-Jdf0ZEwJzOP8sE6rPqdJN+SxMb0/L8sxJg4twCv/7S+Qzk0hJtls+wxSi+0Tjh6EEMaNxJqEGc7S3fx99Wi99Q==}
886 cpu: [arm64]
887 os: [linux]
888
889857 '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.159':
890858 resolution: {integrity: sha512-FlsS5M4GCpzsQVaNDFF8dRgFGR3QwyAHZFl/xM/2Y2BqVBH+NH17RpKQSJxr1qr41QnsNkinMnu2iSKoc33hKg==}
891859 cpu: [arm64]
892860 os: [linux]
893861
894 '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.2.141':
895 resolution: {integrity: sha512-fTI1YuM4cxOa4nSgsyMAdB5ELizkWp+w5Ispo4JnnYtcczMAL4D9GBNjWPW0sUzKvjsJOUVim68SmWLWhUOpXQ==}
896 cpu: [x64]
897 os: [linux]
898
899862 '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.159':
900863 resolution: {integrity: sha512-kFH6RC2YJbPc8XWRNy/wL4YU7LzdJjSwAdH488sVzIif3q+TrvVrV5y/IW0+MLmta+CKIqtFYpGaucsJYvj7Eg==}
901864 cpu: [x64]
902865 os: [linux]
903866
904 '@anthropic-ai/claude-agent-sdk-linux-x64@0.2.141':
905 resolution: {integrity: sha512-DVjp72f3HmrRYpbneWZZWIqkUht5kTZXS7wXGFiwzLz6eNYEgjjh+GcsnhIi8UOwZUtNiKUrjZnoP38ovFqV8A==}
906 cpu: [x64]
907 os: [linux]
908
909867 '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.159':
910868 resolution: {integrity: sha512-uNPEC/iRzVb4bEdzs0KAz1zV7i1PVGEZZnJTQyi1OtgVa81sAoH/H0CbbzDiTsquKdaESf+1DSSEkUlfZmMUEw==}
911869 cpu: [x64]
912870 os: [linux]
913871
914 '@anthropic-ai/claude-agent-sdk-win32-arm64@0.2.141':
915 resolution: {integrity: sha512-Wm10J6kfbufbPGFELokiJ/7Y5Oqug4Uag3HXFsV8g7TWCpaItx/oqVaJoiGptuAtXQB7xGLQVTuk082wER+Y5w==}
916 cpu: [arm64]
917 os: [win32]
918
919872 '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.159':
920873 resolution: {integrity: sha512-WN1QEZGgWXz9GMl61QU6j9E+LEF5plki87bL2xsGwuCPzK+OeVPQU55pabuP8P+vFBFHUo3Y9OlTVyZHnUzmAQ==}
921874 cpu: [arm64]
922875 os: [win32]
923876
924 '@anthropic-ai/claude-agent-sdk-win32-x64@0.2.141':
925 resolution: {integrity: sha512-IXuP29YJuWbR5Q6xOHrjFVGG54V2s1FC61UVNwEN5fpxL09MwPnbwtQL6fqgzt/U1MP7vWAwpXZriYAklkH/mg==}
926 cpu: [x64]
927 os: [win32]
928
929877 '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.159':
930878 resolution: {integrity: sha512-Ty4seccD+dTDX5hhj89IUELZd/LkxO5O43Uiz5Mo8ZJktoX38SK4XMZlBS935QdqTFLRvPL0hvK4Lt4dTOqzPw==}
931879 cpu: [x64]
932880 os: [win32]
933881
934 '@anthropic-ai/claude-agent-sdk@0.2.141':
935 resolution: {integrity: sha512-AIBacMWGcZIUcXlUoObqjwJ6pmJI3BayAqPAFXuvSq3DHJXdiuZVs7l/zTB5l3nRhRv5cqSrI2XbiDeHgZWizw==}
936 engines: {node: '>=18.0.0'}
937 peerDependencies:
938 zod: ^4.0.0
939
940882 '@anthropic-ai/claude-agent-sdk@0.3.159':
941883 resolution: {integrity: sha512-Xh1oVMIK6N3KsiNIhqNH8ZK90zjRmAEL9d1Md8ZlGdHJE+HhdMYdBadujc3KEkV0uufsEUvYp+A3fDenfypGSA==}
942884 engines: {node: '>=18.0.0'}
......@@ -1776,43 +1718,43 @@ packages:
17761718 peerDependencies:
17771719 effect: 4.0.0-beta.78
17781720
1779 '@effect/tsgo-darwin-arm64@0.11.4':
1780 resolution: {integrity: sha512-rslT4W8tWY8pdd48kDpY7Q+yo0xkrmcEySG1+sJfb06w7TwbywjHsGlC0BmcUaQt0qmLY+BApbWWDfZw7fgwjw==}
1721 '@effect/tsgo-darwin-arm64@0.13.2':
1722 resolution: {integrity: sha512-AlYlxU2sD3urNCmNCQWtatPJS/+m2r3CvgZdDTs9KEz2YcyQc2GV1g2RWFkoMwmgzYBx69DBLu1oscqJO2qAog==}
17811723 cpu: [arm64]
17821724 os: [darwin]
17831725
1784 '@effect/tsgo-darwin-x64@0.11.4':
1785 resolution: {integrity: sha512-p3v3j+zp7L7yx5ctjvA1W85I4WjOpbOcga8kUu5MFEKfYfsApxUHXwsunCVbUKwrpXqcTc0sw9AjnCNs6i6GRw==}
1726 '@effect/tsgo-darwin-x64@0.13.2':
1727 resolution: {integrity: sha512-oGWIUsWuzCGBRaxB3R4ZjzmqaWb20OtLpBc8HKf3mGstyiCpGUtb7arqncpSq04nN9yb+mM5yBpGKZ9EJAYuEA==}
17861728 cpu: [x64]
17871729 os: [darwin]
17881730
1789 '@effect/tsgo-linux-arm64@0.11.4':
1790 resolution: {integrity: sha512-dz5ZIQUnRzN9mpVcELYCmVERpmstes5rVHbKUb7DOWCbrbupT3tV1LCzOaNX9sIsoBKmpvdGvAWEPLHgymSgTQ==}
1731 '@effect/tsgo-linux-arm64@0.13.2':
1732 resolution: {integrity: sha512-v9PIgdLR6jREQk42EIm/mtFBwmB4Xzuq70l1Uf/7MnV/eivrZP+Wjfex/UuzMRbjM5eLRP3FFMj2HZvjkFQv6Q==}
17911733 cpu: [arm64]
17921734 os: [linux]
17931735
1794 '@effect/tsgo-linux-arm@0.11.4':
1795 resolution: {integrity: sha512-uXsw+IbO+ltn/fbhOWWqXK8ZW3Qa5EZD+wnGbF3gIGWINthbF+/7X+CgRzvcgLBWeBfV6F83hAmOaEZ4hQmd+w==}
1736 '@effect/tsgo-linux-arm@0.13.2':
1737 resolution: {integrity: sha512-y5aTN7MrwnsStcSJ4Z8J93Nszeh9yf8kbaHk+03bRm9n0TrhVea/bJZoi9cprLJSy01Umt+xC3jFyvOSMrWB8g==}
17961738 cpu: [arm]
17971739 os: [linux]
17981740
1799 '@effect/tsgo-linux-x64@0.11.4':
1800 resolution: {integrity: sha512-P3m7Y4FJtziL13Muffyb99AnQeTRvo0/knfYRqoHKNwYUaNM59RO3qFi5y57Hasgd8rKat0xTPmUkK6koZPPFQ==}
1741 '@effect/tsgo-linux-x64@0.13.2':
1742 resolution: {integrity: sha512-MzrApKfCL0DnFGvoyJUKtW39PGDykJZkkB/tOZSuTSurcYAzkmUIOUwuTASeNqDjj4/DixT7Ha4CMVeCQgg6hg==}
18011743 cpu: [x64]
18021744 os: [linux]
18031745
1804 '@effect/tsgo-win32-arm64@0.11.4':
1805 resolution: {integrity: sha512-FKLm9Y+luZSdLpfkbdw8VXa8xy0zR+Asg078qemqHHGwRQLDVGjvIk7tj1HxBM6VQN+TwsofDd225ht83kMk8w==}
1746 '@effect/tsgo-win32-arm64@0.13.2':
1747 resolution: {integrity: sha512-WwYLSrgCa4iiSIZe5KkG2P1q+JmIloDI6tbqHqpvumrz3uU8fg33e5A7wQ68sRgr4ofqrTYPQhJ6b+Eyeadazg==}
18061748 cpu: [arm64]
18071749 os: [win32]
18081750
1809 '@effect/tsgo-win32-x64@0.11.4':
1810 resolution: {integrity: sha512-oc4Y8TbLlv0b1deAILAEep1N6pnSS1d4pk7gJJM4NDXrTKWDyEulO6tXwRQ6vWkO2lhLTUVWHDFfzmMJj3HxPQ==}
1751 '@effect/tsgo-win32-x64@0.13.2':
1752 resolution: {integrity: sha512-M4Cf98tlCzCWig61QNoPxhE0LyMJtlVIQY2hed0Y1uYpwv0W1BMyOACLcj6ll+vuLWmXvVlOfXC+BuDOqPo9fg==}
18111753 cpu: [x64]
18121754 os: [win32]
18131755
1814 '@effect/tsgo@0.11.4':
1815 resolution: {integrity: sha512-wliq5Dis2gLoIUKoCRT3Iv5kpO+fKrUBJPPxIsHADeirk9HMQevKvYaBpGS3Khw1tNLmoQWsSX559owJAdHgBA==}
1756 '@effect/tsgo@0.13.2':
1757 resolution: {integrity: sha512-zPQMHBdCN1k7Jbxjxq0HVAbzsZd+LAoRPzBEZ3F4y/uxNK0K/XGvFXUUw/CUAsD6rhUtC2VahZY1tp0owb5lgg==}
18161758 hasBin: true
18171759
18181760 '@effect/vitest@4.0.0-beta.78':
......@@ -4505,50 +4447,50 @@ packages:
45054447 '@types/yauzl@2.10.3':
45064448 resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==}
45074449
4508 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260527.2':
4509 resolution: {integrity: sha512-3LqSu4DlxkEfeC/Z/29QMCJn5jjkDtXI7LYuxfmjdmAatS6umDKqm8J17fnP/7fyrZUMBTIYRwSDpChGV3G1ew==}
4450 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260604.1':
4451 resolution: {integrity: sha512-zs616um9UuaODLsNlCu5Aw95rFcTV4u3hVt090r6k0lVvTxfaJOv8HKA6BpIotcEYlZlMQowrMSYCCdedo7iyA==}
45104452 engines: {node: '>=16.20.0'}
45114453 cpu: [arm64]
45124454 os: [darwin]
45134455
4514 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260527.2':
4515 resolution: {integrity: sha512-H4+sxE9qaBbLF83wMdWE0FsgfK0Pom+/O+/oxqyGzhVkDJlNt3vfpgQZMit48/Gm44AacGfBggJ9Dhbi3aeSFw==}
4456 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260604.1':
4457 resolution: {integrity: sha512-pOdNAf2pwc9JBjo8gUsvLs5uqg7d0AhYXfE8/3zvPKBlIZG+mTcvEWW1hPawlWxXzf/vxnP4dgYwUHAMDghhKA==}
45164458 engines: {node: '>=16.20.0'}
45174459 cpu: [x64]
45184460 os: [darwin]
45194461
4520 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260527.2':
4521 resolution: {integrity: sha512-BGUDMjC2Z3TTdZRkGGwhBLelkP5UYgO2rbep8aF4dS3fu7T5lFPPrnfS6EgqJgie+cF5Fsev7xEq8wWyBDM+lg==}
4462 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260604.1':
4463 resolution: {integrity: sha512-GjIrt6YHP3bbOWBCCE08SlBSDf84Lnjn3Td822/lOX9nm6ODlA/HI7rtGh7KzS/fxehep2Vy4dXU4Il12X1s5A==}
45224464 engines: {node: '>=16.20.0'}
45234465 cpu: [arm64]
45244466 os: [linux]
45254467
4526 '@typescript/native-preview-linux-arm@7.0.0-dev.20260527.2':
4527 resolution: {integrity: sha512-6I9Cv9ozwfS9zB9vRQDPIYseLX3artEO9jl3yVgLj4ishwlSF4cWAbIsjl5IztPaEgHv8coej/6tX1D0uaBzXg==}
4468 '@typescript/native-preview-linux-arm@7.0.0-dev.20260604.1':
4469 resolution: {integrity: sha512-IKaZL3i5HKmKqwb2IZEXW1j68fVg1HsvAaXkbrkOIG/J5Eyksu5tEnTzucrIY1oPdzgHT+y2HpDIYp2sGeHFvw==}
45284470 engines: {node: '>=16.20.0'}
45294471 cpu: [arm]
45304472 os: [linux]
45314473
4532 '@typescript/native-preview-linux-x64@7.0.0-dev.20260527.2':
4533 resolution: {integrity: sha512-vpazOu+ozlxBo8U57YJMzsOPuxAV8H7fu36KJ8ea8At/D8pdGmOAy5TuB+9OBQV9JDe0OXJMy2kmbhOpmkTAmA==}
4474 '@typescript/native-preview-linux-x64@7.0.0-dev.20260604.1':
4475 resolution: {integrity: sha512-twQ7XDjsmaHIevN1MjeRYIVLUPL0fBm8A0jg1FhGYPckhTxEBiHIpJf9E//eFidAdrEHjeTSBP1jJw3GNAensg==}
45344476 engines: {node: '>=16.20.0'}
45354477 cpu: [x64]
45364478 os: [linux]
45374479
4538 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260527.2':
4539 resolution: {integrity: sha512-DBFnFE3V6AITkPO1K1VxXf3yEZKjU2FwtXlNwRqhzDu0rrL2SsJHOSrBDX+OacTxQFzZMxFcpiuhV8jHZALPEg==}
4480 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260604.1':
4481 resolution: {integrity: sha512-QBRxaVT3SFiNfOhwYb/56ddpHWPMFdfiJ4zkFJIjaAXeZ/ssWNHM9lH7yR++GrE9VTsUZ4eVSZfOmQbzRERhgw==}
45404482 engines: {node: '>=16.20.0'}
45414483 cpu: [arm64]
45424484 os: [win32]
45434485
4544 '@typescript/native-preview-win32-x64@7.0.0-dev.20260527.2':
4545 resolution: {integrity: sha512-1tBlErMvQgcMqqYwsx4tytupcjCJcOUXD3vBn1Wb/kAvus1FzWQAFE0fcKBvLfcqLQfTiiEwKKEtbLjGmakqqg==}
4486 '@typescript/native-preview-win32-x64@7.0.0-dev.20260604.1':
4487 resolution: {integrity: sha512-hR7YHoRpm88Q86gK6/IMayWUA+ROdHGzOPKK8EBp1xD/Cg2Bh5AXbut8HcyUDx/bcGQvnuht/XsW47bT3to9mg==}
45464488 engines: {node: '>=16.20.0'}
45474489 cpu: [x64]
45484490 os: [win32]
45494491
4550 '@typescript/native-preview@7.0.0-dev.20260527.2':
4551 resolution: {integrity: sha512-piqkDwikVeizCFqA1lcwI5F4wOAtBdxuliWe77ApBNRyBPPvfCJB+u/HYi9/8t5nd0sWvFs6/qt/AzJ1CCoykQ==}
4492 '@typescript/native-preview@7.0.0-dev.20260604.1':
4493 resolution: {integrity: sha512-A3/9yZTt2V5NlDURcVJ4mN2YjfeQTXCRyLuENKrNdGhO+y59mC/2UDr7UvpB3Li+83TRAuhDN8SBoM+7gkHdzQ==}
45524494 engines: {node: '>=16.20.0'}
45534495 hasBin: true
45544496
......@@ -9698,72 +9640,30 @@ snapshots:
96989640
96999641 '@alchemy.run/node-utils@0.0.4': {}
97009642
9701 '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.2.141':
9702 optional: true
9703
97049643 '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.159':
97059644 optional: true
97069645
9707 '@anthropic-ai/claude-agent-sdk-darwin-x64@0.2.141':
9708 optional: true
9709
97109646 '@anthropic-ai/claude-agent-sdk-darwin-x64@0.3.159':
97119647 optional: true
97129648
9713 '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.2.141':
9714 optional: true
9715
97169649 '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.3.159':
97179650 optional: true
97189651
9719 '@anthropic-ai/claude-agent-sdk-linux-arm64@0.2.141':
9720 optional: true
9721
97229652 '@anthropic-ai/claude-agent-sdk-linux-arm64@0.3.159':
97239653 optional: true
97249654
9725 '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.2.141':
9726 optional: true
9727
97289655 '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.3.159':
97299656 optional: true
97309657
9731 '@anthropic-ai/claude-agent-sdk-linux-x64@0.2.141':
9732 optional: true
9733
97349658 '@anthropic-ai/claude-agent-sdk-linux-x64@0.3.159':
97359659 optional: true
97369660
9737 '@anthropic-ai/claude-agent-sdk-win32-arm64@0.2.141':
9738 optional: true
9739
97409661 '@anthropic-ai/claude-agent-sdk-win32-arm64@0.3.159':
97419662 optional: true
97429663
9743 '@anthropic-ai/claude-agent-sdk-win32-x64@0.2.141':
9744 optional: true
9745
97469664 '@anthropic-ai/claude-agent-sdk-win32-x64@0.3.159':
97479665 optional: true
97489666
9749 '@anthropic-ai/claude-agent-sdk@0.2.141(zod@4.4.3)':
9750 dependencies:
9751 '@anthropic-ai/sdk': 0.93.0(zod@4.4.3)
9752 '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3)
9753 zod: 4.4.3
9754 optionalDependencies:
9755 '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.2.141
9756 '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.2.141
9757 '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.2.141
9758 '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.2.141
9759 '@anthropic-ai/claude-agent-sdk-linux-x64': 0.2.141
9760 '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.2.141
9761 '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.2.141
9762 '@anthropic-ai/claude-agent-sdk-win32-x64': 0.2.141
9763 transitivePeerDependencies:
9764 - '@cfworker/json-schema'
9765 - supports-color
9766
97679667 '@anthropic-ai/claude-agent-sdk@0.3.159(@anthropic-ai/sdk@0.93.0(zod@4.4.3))(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(zod@4.4.3)':
97689668 dependencies:
97699669 '@anthropic-ai/sdk': 0.93.0(zod@4.4.3)
......@@ -10931,36 +10831,36 @@ snapshots:
1093110831 dependencies:
1093210832 effect: 4.0.0-beta.78(patch_hash=883249d8efbb462e928e21fefef96027b66aec50751178cafdce45f08eee3754)
1093310833
10934 '@effect/tsgo-darwin-arm64@0.11.4':
10834 '@effect/tsgo-darwin-arm64@0.13.2':
1093510835 optional: true
1093610836
10937 '@effect/tsgo-darwin-x64@0.11.4':
10837 '@effect/tsgo-darwin-x64@0.13.2':
1093810838 optional: true
1093910839
10940 '@effect/tsgo-linux-arm64@0.11.4':
10840 '@effect/tsgo-linux-arm64@0.13.2':
1094110841 optional: true
1094210842
10943 '@effect/tsgo-linux-arm@0.11.4':
10843 '@effect/tsgo-linux-arm@0.13.2':
1094410844 optional: true
1094510845
10946 '@effect/tsgo-linux-x64@0.11.4':
10846 '@effect/tsgo-linux-x64@0.13.2':
1094710847 optional: true
1094810848
10949 '@effect/tsgo-win32-arm64@0.11.4':
10849 '@effect/tsgo-win32-arm64@0.13.2':
1095010850 optional: true
1095110851
10952 '@effect/tsgo-win32-x64@0.11.4':
10852 '@effect/tsgo-win32-x64@0.13.2':
1095310853 optional: true
1095410854
10955 '@effect/tsgo@0.11.4':
10855 '@effect/tsgo@0.13.2':
1095610856 optionalDependencies:
10957 '@effect/tsgo-darwin-arm64': 0.11.4
10958 '@effect/tsgo-darwin-x64': 0.11.4
10959 '@effect/tsgo-linux-arm': 0.11.4
10960 '@effect/tsgo-linux-arm64': 0.11.4
10961 '@effect/tsgo-linux-x64': 0.11.4
10962 '@effect/tsgo-win32-arm64': 0.11.4
10963 '@effect/tsgo-win32-x64': 0.11.4
10857 '@effect/tsgo-darwin-arm64': 0.13.2
10858 '@effect/tsgo-darwin-x64': 0.13.2
10859 '@effect/tsgo-linux-arm': 0.13.2
10860 '@effect/tsgo-linux-arm64': 0.13.2
10861 '@effect/tsgo-linux-x64': 0.13.2
10862 '@effect/tsgo-win32-arm64': 0.13.2
10863 '@effect/tsgo-win32-x64': 0.13.2
1096410864
1096510865 '@effect/vitest@4.0.0-beta.78(patch_hash=42b87cc47e70d74e62496e7a8261b3fd298ecad4464d209348ab04b96f853a5f)(effect@4.0.0-beta.78(patch_hash=883249d8efbb462e928e21fefef96027b66aec50751178cafdce45f08eee3754))':
1096610866 dependencies:
......@@ -13581,36 +13481,36 @@ snapshots:
1358113481 '@types/node': 24.12.4
1358213482 optional: true
1358313483
13584 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260527.2':
13484 '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260604.1':
1358513485 optional: true
1358613486
13587 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260527.2':
13487 '@typescript/native-preview-darwin-x64@7.0.0-dev.20260604.1':
1358813488 optional: true
1358913489
13590 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260527.2':
13490 '@typescript/native-preview-linux-arm64@7.0.0-dev.20260604.1':
1359113491 optional: true
1359213492
13593 '@typescript/native-preview-linux-arm@7.0.0-dev.20260527.2':
13493 '@typescript/native-preview-linux-arm@7.0.0-dev.20260604.1':
1359413494 optional: true
1359513495
13596 '@typescript/native-preview-linux-x64@7.0.0-dev.20260527.2':
13496 '@typescript/native-preview-linux-x64@7.0.0-dev.20260604.1':
1359713497 optional: true
1359813498
13599 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260527.2':
13499 '@typescript/native-preview-win32-arm64@7.0.0-dev.20260604.1':
1360013500 optional: true
1360113501
13602 '@typescript/native-preview-win32-x64@7.0.0-dev.20260527.2':
13502 '@typescript/native-preview-win32-x64@7.0.0-dev.20260604.1':
1360313503 optional: true
1360413504
13605 '@typescript/native-preview@7.0.0-dev.20260527.2':
13505 '@typescript/native-preview@7.0.0-dev.20260604.1':
1360613506 optionalDependencies:
13607 '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260527.2
13608 '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260527.2
13609 '@typescript/native-preview-linux-arm': 7.0.0-dev.20260527.2
13610 '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260527.2
13611 '@typescript/native-preview-linux-x64': 7.0.0-dev.20260527.2
13612 '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260527.2
13613 '@typescript/native-preview-win32-x64': 7.0.0-dev.20260527.2
13507 '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260604.1
13508 '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260604.1
13509 '@typescript/native-preview-linux-arm': 7.0.0-dev.20260604.1
13510 '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260604.1
13511 '@typescript/native-preview-linux-x64': 7.0.0-dev.20260604.1
13512 '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260604.1
13513 '@typescript/native-preview-win32-x64': 7.0.0-dev.20260604.1
1361413514
1361513515 '@ungap/structured-clone@1.3.1': {}
1361613516
pnpm-workspace.yaml+2-4
......@@ -25,16 +25,14 @@ catalog:
2525 "@effect/sql-pg": 4.0.0-beta.78
2626 "@effect/sql-sqlite-bun": 4.0.0-beta.78
2727 "@effect/vitest": 4.0.0-beta.78
28 "@effect/tsgo": 0.11.4
28 "@effect/tsgo": 0.13.2
2929 "@noble/curves": 1.9.1
3030 "@noble/hashes": 1.8.0
3131 "@pierre/diffs": 1.1.20
3232 "@vitest/runner": 4.1.8
33 "@types/bun": ^1.3.11
3433 "@types/node": 24.12.4
35 "@typescript/native-preview": 7.0.0-dev.20260527.2
34 "@typescript/native-preview": 7.0.0-dev.20260604.1
3635 jose: 6.2.2
37 tsdown: ^0.20.3
3836 typescript: ~6.0.3
3937 vitest: npm:@voidzero-dev/vite-plus-test@0.1.24
4038 vite: npm:@voidzero-dev/vite-plus-core@0.1.24
scripts/build-desktop-artifact.ts+11-15
......@@ -178,13 +178,11 @@ const resolveGitCommitHash = Effect.fn("resolveGitCommitHash")(function* (repoRo
178178 cwd: repoRoot,
179179 }),
180180 ).pipe(
181 Effect.catch(() =>
182 Effect.succeed({
183 stdout: "",
184 stderr: "",
185 exitCode: 1,
186 }),
187 ),
181 Effect.orElseSucceed(() => ({
182 stdout: "",
183 stderr: "",
184 exitCode: 1,
185 })),
188186 );
189187
190188 if (result.exitCode !== 0) {
......@@ -220,13 +218,11 @@ const resolvePythonForNodeGyp = Effect.fn("resolvePythonForNodeGyp")(function* (
220218 const probe = yield* spawnAndCollectOutput(
221219 ChildProcess.make("python", ["-c", "import sys;print(sys.executable)"]),
222220 ).pipe(
223 Effect.catch(() =>
224 Effect.succeed({
225 stdout: "",
226 stderr: "",
227 exitCode: 1,
228 }),
229 ),
221 Effect.orElseSucceed(() => ({
222 stdout: "",
223 stderr: "",
224 exitCode: 1,
225 })),
230226 );
231227
232228 if (probe.exitCode !== 0) {
......@@ -1008,7 +1004,7 @@ const buildDesktopArtifact = Effect.fn("buildDesktopArtifact")(function* (
10081004 const copiedArtifacts: string[] = [];
10091005 for (const entry of stageEntries) {
10101006 const from = path.join(stageDistDir, entry);
1011 const stat = yield* fs.stat(from).pipe(Effect.catch(() => Effect.succeed(null)));
1007 const stat = yield* fs.stat(from).pipe(Effect.orElseSucceed(() => null));
10121008 if (!stat || stat.type !== "File") continue;
10131009
10141010 const to = path.join(options.outputDir, entry);
scripts/mobile-native-static-check.ts+1-1
......@@ -73,7 +73,7 @@ const commandExists = Effect.fn("commandExists")(function* (command: string) {
7373 return yield* spawner.spawn(lookupCommand).pipe(
7474 Effect.flatMap((child) => child.exitCode),
7575 Effect.map((exitCode) => exitCode === 0),
76 Effect.catch(() => Effect.succeed(false)),
76 Effect.orElseSucceed(() => false),
7777 );
7878});
7979
scripts/package.json-2
......@@ -7,7 +7,6 @@
77 "test": "vp test run"
88 },
99 "dependencies": {
10 "@anthropic-ai/claude-agent-sdk": "^0.2.77",
1110 "@effect/platform-node": "catalog:",
1211 "@t3tools/contracts": "workspace:*",
1312 "@t3tools/shared": "workspace:*",
......@@ -16,7 +15,6 @@
1615 },
1716 "devDependencies": {
1817 "@effect/vitest": "catalog:",
19 "@types/bun": "catalog:",
2018 "vite-plus": "catalog:"
2119 }
2220}