authorgravatar for julius0216@outlook.comJulius Marminge <julius0216@outlook.com> 2026-03-02 15:58:54-08:00
committergravatar for jmarminge@gmail.comJulius Marminge <jmarminge@gmail.com> 2026-03-02 16:03:11-08:00
log06fc364ee1d091cf9ee63591004bbc04606cb1ec
treeecb56dd0ccc47304326c02434568bfcb9bfa2d1a
parent094859bbc7fab802b53ea291f4b395d9d28f0426

Scope git checkout effects and bump Effect/Node dependencies

- run `gitCheckout` via `Effect.scoped` to satisfy new `Scope` requirement - update `GitCore.checkoutBranch` service signature to include `Scope.Scope` - upgrade Effect catalog refs and `@types/node` to latest pinned versions

9 files changed, 107 insertions(+), 95 deletions(-)

apps/desktop/package.json+1-1
......@@ -18,7 +18,7 @@
1818 },
1919 "devDependencies": {
2020 "@t3tools/contracts": "workspace:*",
21 "@types/node": "^22.10.2",
21 "@types/node": "^24.10.13",
2222 "electronmon": "^2.0.2",
2323 "tsdown": "^0.20.3",
2424 "typescript": "^5.7.3",
apps/server/package.json+1-1
......@@ -32,7 +32,7 @@
3232 "@t3tools/contracts": "workspace:*",
3333 "@t3tools/web": "workspace:*",
3434 "@types/bun": "^1.3.9",
35 "@types/node": "^22.10.2",
35 "@types/node": "^24.10.13",
3636 "@types/ws": "^8.5.13",
3737 "tsdown": "^0.20.3",
3838 "typescript": "^5.7.3",
apps/server/src/git/Layers/GitCore.ts+58-59
......@@ -126,10 +126,7 @@ function parseRemoteRefWithRemoteNames(
126126 return null;
127127}
128128
129function parseTrackingBranchByUpstreamRef(
130 stdout: string,
131 upstreamRef: string,
132): string | null {
129function parseTrackingBranchByUpstreamRef(stdout: string, upstreamRef: string): string | null {
133130 for (const line of stdout.split("\n")) {
134131 const trimmedLine = line.trim();
135132 if (trimmedLine.length === 0) {
......@@ -389,9 +386,12 @@ const makeGitCore = Effect.gen(function* () {
389386 });
390387
391388 const resolveDefaultBranchName = (cwd: string): Effect.Effect<string | null, GitCommandError> =>
392 executeGit("GitCore.resolveDefaultBranchName", cwd, ["symbolic-ref", "refs/remotes/origin/HEAD"], {
393 allowNonZeroExit: true,
394 }).pipe(
389 executeGit(
390 "GitCore.resolveDefaultBranchName",
391 cwd,
392 ["symbolic-ref", "refs/remotes/origin/HEAD"],
393 { allowNonZeroExit: true },
394 ).pipe(
395395 Effect.map((result) => {
396396 if (result.code !== 0) {
397397 return null;
......@@ -888,33 +888,34 @@ const makeGitCore = Effect.gen(function* () {
888888
889889 const [defaultRef, worktreeList, remoteBranchResult, remoteNamesResult, branchLastCommit] =
890890 yield* Effect.all(
891 [
892 executeGit(
893 "GitCore.listBranches.defaultRef",
894 input.cwd,
895 ["symbolic-ref", "refs/remotes/origin/HEAD"],
896 {
897 timeoutMs: 5_000,
898 allowNonZeroExit: true,
899 },
900 ),
901 executeGit(
902 "GitCore.listBranches.worktreeList",
903 input.cwd,
904 ["worktree", "list", "--porcelain"],
905 {
906 timeoutMs: 5_000,
907 allowNonZeroExit: true,
908 },
909 ),
910 remoteBranchResultEffect,
911 remoteNamesResultEffect,
912 branchRecencyPromise,
913 ],
914 { concurrency: "unbounded" },
915 );
891 [
892 executeGit(
893 "GitCore.listBranches.defaultRef",
894 input.cwd,
895 ["symbolic-ref", "refs/remotes/origin/HEAD"],
896 {
897 timeoutMs: 5_000,
898 allowNonZeroExit: true,
899 },
900 ),
901 executeGit(
902 "GitCore.listBranches.worktreeList",
903 input.cwd,
904 ["worktree", "list", "--porcelain"],
905 {
906 timeoutMs: 5_000,
907 allowNonZeroExit: true,
908 },
909 ),
910 remoteBranchResultEffect,
911 remoteNamesResultEffect,
912 branchRecencyPromise,
913 ],
914 { concurrency: "unbounded" },
915 );
916916
917 const remoteNames = remoteNamesResult.code === 0 ? parseRemoteNames(remoteNamesResult.stdout) : [];
917 const remoteNames =
918 remoteNamesResult.code === 0 ? parseRemoteNames(remoteNamesResult.stdout) : [];
918919 if (remoteBranchResult.code !== 0 && remoteBranchResult.stderr.trim().length > 0) {
919920 yield* Effect.logWarning(
920921 `GitCore.listBranches: remote branch lookup returned code ${remoteBranchResult.code} for ${input.cwd}: ${remoteBranchResult.stderr.trim()}. Falling back to an empty remote branch list.`,
......@@ -1112,24 +1113,23 @@ const makeGitCore = Effect.gen(function* () {
11121113 { concurrency: "unbounded" },
11131114 );
11141115
1115 const localTrackingBranch =
1116 remoteExists
1117 ? yield* executeGit(
1118 "GitCore.checkoutBranch.localTrackingBranch",
1119 input.cwd,
1120 ["for-each-ref", "--format=%(refname:short)\t%(upstream:short)", "refs/heads"],
1121 {
1122 timeoutMs: 5_000,
1123 allowNonZeroExit: true,
1124 },
1125 ).pipe(
1126 Effect.map((result) =>
1127 result.code === 0
1128 ? parseTrackingBranchByUpstreamRef(result.stdout, input.branch)
1129 : null,
1130 ),
1131 )
1132 : null;
1116 const localTrackingBranch = remoteExists
1117 ? yield* executeGit(
1118 "GitCore.checkoutBranch.localTrackingBranch",
1119 input.cwd,
1120 ["for-each-ref", "--format=%(refname:short)\t%(upstream:short)", "refs/heads"],
1121 {
1122 timeoutMs: 5_000,
1123 allowNonZeroExit: true,
1124 },
1125 ).pipe(
1126 Effect.map((result) =>
1127 result.code === 0
1128 ? parseTrackingBranchByUpstreamRef(result.stdout, input.branch)
1129 : null,
1130 ),
1131 )
1132 : null;
11331133
11341134 const localTrackedBranchCandidate = deriveLocalBranchNameFromRemoteRef(input.branch);
11351135 const localTrackedBranchTargetExists =
......@@ -1145,16 +1145,15 @@ const makeGitCore = Effect.gen(function* () {
11451145 ).pipe(Effect.map((result) => result.code === 0))
11461146 : false;
11471147
1148 const checkoutArgs =
1149 localInputExists
1150 ? ["checkout", input.branch]
1151 : remoteExists && !localTrackingBranch && localTrackedBranchTargetExists
1148 const checkoutArgs = localInputExists
1149 ? ["checkout", input.branch]
1150 : remoteExists && !localTrackingBranch && localTrackedBranchTargetExists
11521151 ? ["checkout", input.branch]
11531152 : remoteExists && !localTrackingBranch
1154 ? ["checkout", "--track", input.branch]
1155 : remoteExists && localTrackingBranch
1156 ? ["checkout", localTrackingBranch]
1157 : ["checkout", input.branch];
1153 ? ["checkout", "--track", input.branch]
1154 : remoteExists && localTrackingBranch
1155 ? ["checkout", localTrackingBranch]
1156 : ["checkout", input.branch];
11581157
11591158 yield* executeGit("GitCore.checkoutBranch.checkout", input.cwd, checkoutArgs, {
11601159 timeoutMs: 10_000,
apps/server/src/git/Services/GitCore.ts+4-2
......@@ -7,7 +7,7 @@
77 * @module GitCore
88 */
99import { ServiceMap } from "effect";
10import type { Effect } from "effect";
10import type { Effect, Scope } from "effect";
1111import type {
1212 GitCheckoutInput,
1313 GitCreateBranchInput,
......@@ -149,7 +149,9 @@ export interface GitCoreShape {
149149 /**
150150 * Checkout an existing branch and refresh its upstream metadata in background.
151151 */
152 readonly checkoutBranch: (input: GitCheckoutInput) => Effect.Effect<void, GitCommandError>;
152 readonly checkoutBranch: (
153 input: GitCheckoutInput,
154 ) => Effect.Effect<void, GitCommandError, Scope.Scope>;
153155
154156 /**
155157 * Initialize a repository in the provided directory.
apps/server/src/orchestration/Layers/ProviderRuntimeIngestion.ts+1-2
......@@ -415,8 +415,7 @@ const make = Effect.gen(function* () {
415415 : event.threadId !== undefined
416416 ? ProviderThreadId.makeUnsafe(event.threadId)
417417 : null;
418 const providerThreadId =
419 providerThreadIdFromEvent ?? sessionProviderThreadId ?? null;
418 const providerThreadId = providerThreadIdFromEvent ?? sessionProviderThreadId ?? null;
420419 const status =
421420 event.type === "turn.started"
422421 ? "running"
apps/server/src/provider/Layers/CodexAdapter.ts+4-6
......@@ -489,12 +489,10 @@ const makeCodexAdapter = (options?: CodexAdapterLiveOptions) =>
489489 attachment,
490490 });
491491 if (!attachmentPath) {
492 return yield* Effect.fail(
493 toRequestError(
494 input.sessionId,
495 "turn/start",
496 new Error(`Invalid attachment id '${attachment.id}'.`),
497 ),
492 return yield* toRequestError(
493 input.sessionId,
494 "turn/start",
495 new Error(`Invalid attachment id '${attachment.id}'.`),
498496 );
499497 }
500498 const bytes = yield* fileSystem.readFile(attachmentPath).pipe(
apps/server/src/wsServer.ts+1-1
......@@ -685,7 +685,7 @@ export const createServer = Effect.fn(function* (): Effect.fn.Return<
685685
686686 case WS_METHODS.gitCheckout: {
687687 const body = stripRequestTag(request.body);
688 return yield* git.checkoutBranch(body);
688 return yield* Effect.scoped(git.checkoutBranch(body));
689689 }
690690
691691 case WS_METHODS.gitInit: {
bun.lock+32-19
......@@ -6,6 +6,7 @@
66 "name": "@t3tools/monorepo",
77 "devDependencies": {
88 "@effect/platform-node": "catalog:",
9 "@types/node": "^24.10.13",
910 "effect": "catalog:",
1011 "oxfmt": "^0.35.0",
1112 "oxlint": "^1.50.0",
......@@ -22,7 +23,7 @@
2223 },
2324 "devDependencies": {
2425 "@t3tools/contracts": "workspace:*",
25 "@types/node": "^22.10.2",
26 "@types/node": "^24.10.13",
2627 "electronmon": "^2.0.2",
2728 "tsdown": "^0.20.3",
2829 "typescript": "^5.7.3",
......@@ -51,7 +52,7 @@
5152 "@t3tools/contracts": "workspace:*",
5253 "@t3tools/web": "workspace:*",
5354 "@types/bun": "^1.3.9",
54 "@types/node": "^22.10.2",
55 "@types/node": "^24.10.13",
5556 "@types/ws": "^8.5.13",
5657 "tsdown": "^0.20.3",
5758 "typescript": "^5.7.3",
......@@ -112,10 +113,10 @@
112113 },
113114 "catalog": {
114115 "@effect/language-service": "0.75.1",
115 "@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@f591738",
116 "@effect/sql-sqlite-bun": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@f591738",
117 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@f591738",
118 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@f591738",
116 "@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@8881a9b",
117 "@effect/sql-sqlite-bun": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@8881a9b",
118 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@8881a9b",
119 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@8881a9b",
119120 },
120121 "packages": {
121122 "@babel/code-frame": ["@babel/code-frame@7.29.0", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", "picocolors": "^1.1.1" } }, "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw=="],
......@@ -168,13 +169,13 @@
168169
169170 "@effect/language-service": ["@effect/language-service@0.75.1", "", { "bin": { "effect-language-service": "cli.js" } }, "sha512-g9xD2tAQgRFpYC2YgpZq02VeSL5fBbFJ0B/g1o+14NuNmwtaYJc7SjiLWAA9eyhJHosNrn6h1Ye+Kx6j5mN0AA=="],
170171
171 "@effect/platform-node": ["@effect/platform-node@https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@f591738", { "dependencies": { "@effect/platform-node-shared": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node-shared@f59173885df0eb490dc2e6619ae89467feac0413", "mime": "^4.1.0", "undici": "^7.20.0" }, "peerDependencies": { "effect": "^4.0.0-beta.19", "ioredis": "^5.7.0" } }],
172 "@effect/platform-node": ["@effect/platform-node@https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@8881a9b", { "dependencies": { "@effect/platform-node-shared": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node-shared@8881a9b606d84a6f5eb6615279138322984f5368", "mime": "^4.1.0", "undici": "^7.20.0" }, "peerDependencies": { "effect": "^4.0.0-beta.25", "ioredis": "^5.7.0" } }],
172173
173 "@effect/platform-node-shared": ["@effect/platform-node-shared@https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node-shared@f59173885df0eb490dc2e6619ae89467feac0413", { "dependencies": { "@types/ws": "^8.18.1", "ws": "^8.19.0" }, "peerDependencies": { "effect": "^4.0.0-beta.19" } }],
174 "@effect/platform-node-shared": ["@effect/platform-node-shared@https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node-shared@8881a9b606d84a6f5eb6615279138322984f5368", { "dependencies": { "@types/ws": "^8.18.1", "ws": "^8.19.0" }, "peerDependencies": { "effect": "^4.0.0-beta.25" } }],
174175
175 "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@f591738", { "peerDependencies": { "effect": "^4.0.0-beta.19" } }],
176 "@effect/sql-sqlite-bun": ["@effect/sql-sqlite-bun@https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@8881a9b", { "peerDependencies": { "effect": "^4.0.0-beta.25" } }],
176177
177 "@effect/vitest": ["@effect/vitest@https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@f591738", { "peerDependencies": { "effect": "^4.0.0-beta.19", "vitest": "^3.0.0" } }],
178 "@effect/vitest": ["@effect/vitest@https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@8881a9b", { "peerDependencies": { "effect": "^4.0.0-beta.25", "vitest": "^3.0.0 || ^4.0.0" } }],
178179
179180 "@electron/get": ["@electron/get@2.0.3", "", { "dependencies": { "debug": "^4.1.1", "env-paths": "^2.2.0", "fs-extra": "^8.1.0", "got": "^11.8.5", "progress": "^2.0.3", "semver": "^6.2.0", "sumchecker": "^3.0.1" }, "optionalDependencies": { "global-agent": "^3.0.0" } }, "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ=="],
180181
......@@ -636,7 +637,7 @@
636637
637638 "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],
638639
639 "@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="],
640 "@types/node": ["@types/node@24.10.13", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg=="],
640641
641642 "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],
642643
......@@ -810,7 +811,7 @@
810811
811812 "dunder-proto": ["dunder-proto@1.0.1", "", { "dependencies": { "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", "gopd": "^1.2.0" } }, "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A=="],
812813
813 "effect": ["effect@https://pkg.pr.new/Effect-TS/effect-smol/effect@f591738", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.5.3", "find-my-way-ts": "^0.1.6", "ini": "^6.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^1.11.8", "multipasta": "^0.2.7", "toml": "^3.0.0", "uuid": "^13.0.0", "yaml": "^2.8.2" } }],
814 "effect": ["effect@https://pkg.pr.new/Effect-TS/effect-smol/effect@8881a9b", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.5.3", "find-my-way-ts": "^0.1.6", "ini": "^6.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^1.11.8", "multipasta": "^0.2.7", "toml": "^3.0.0", "uuid": "^13.0.0", "yaml": "^2.8.2" } }],
814815
815816 "electron": ["electron@40.6.0", "", { "dependencies": { "@electron/get": "^2.0.0", "@types/node": "^24.9.0", "extract-zip": "^2.0.1" }, "bin": { "electron": "cli.js" } }, "sha512-ett8W+yOFGDuM0vhJMamYSkrbV3LoaffzJd9GfjI96zRAxyrNqUSKqBpf/WGbQCweDxX2pkUCUfrv4wwKpsFZA=="],
816817
......@@ -1408,7 +1409,7 @@
14081409
14091410 "undici": ["undici@7.22.0", "", {}, "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg=="],
14101411
1411 "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
1412 "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
14121413
14131414 "unified": ["unified@11.0.5", "", { "dependencies": { "@types/unist": "^3.0.0", "bail": "^2.0.0", "devlop": "^1.0.0", "extend": "^3.0.0", "is-plain-obj": "^4.0.0", "trough": "^2.0.0", "vfile": "^6.0.0" } }, "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA=="],
14141415
......@@ -1534,20 +1535,26 @@
15341535
15351536 "@types/babel__template/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="],
15361537
1538 "@types/cacheable-request/@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="],
1539
1540 "@types/keyv/@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="],
1541
1542 "@types/responselike/@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="],
1543
1544 "@types/ws/@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="],
1545
1546 "@types/yauzl/@types/node": ["@types/node@22.19.11", "", { "dependencies": { "undici-types": "~6.21.0" } }, "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w=="],
1547
15371548 "@vitejs/plugin-react/vite": ["vite@7.3.1", "", { "dependencies": { "esbuild": "^0.27.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA=="],
15381549
15391550 "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
15401551
15411552 "babel-dead-code-elimination/@babel/parser": ["@babel/parser@7.29.0", "", { "dependencies": { "@babel/types": "^7.29.0" }, "bin": "./bin/babel-parser.js" }, "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww=="],
15421553
1543 "bun-types/@types/node": ["@types/node@24.10.13", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg=="],
1544
15451554 "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="],
15461555
15471556 "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="],
15481557
1549 "electron/@types/node": ["@types/node@24.10.13", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-oH72nZRfDv9lADUBSo104Aq7gPHpQZc4BTx38r9xf9pg5LfP6EzSyH2n7qFmmxRQXh7YlUXODcYsg6PuTDSxGg=="],
1550
15511558 "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
15521559
15531560 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
......@@ -1592,9 +1599,15 @@
15921599
15931600 "@tailwindcss/node/lightningcss/lightningcss-win32-x64-msvc": ["lightningcss-win32-x64-msvc@1.30.2", "", { "os": "win32", "cpu": "x64" }, "sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw=="],
15941601
1595 "bun-types/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
1602 "@types/cacheable-request/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
1603
1604 "@types/keyv/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
1605
1606 "@types/responselike/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
1607
1608 "@types/ws/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
15961609
1597 "electron/@types/node/undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
1610 "@types/yauzl/@types/node/undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
15981611
15991612 "rolldown-plugin-dts/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@8.0.0-rc.1", "", {}, "sha512-vi/pfmbrOtQmqgfboaBhaCU50G7mcySVu69VU8z+lYoPPB6WzI9VgV7WQfL908M4oeSH5fDkmoupIqoE0SdApw=="],
16001613 }
package.json+5-4
......@@ -7,10 +7,10 @@
77 "packages/*"
88 ],
99 "catalog": {
10 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@f591738",
11 "@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@f591738",
12 "@effect/sql-sqlite-bun": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@f591738",
13 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@f591738",
10 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@8881a9b",
11 "@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@8881a9b",
12 "@effect/sql-sqlite-bun": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@8881a9b",
13 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@8881a9b",
1414 "@effect/language-service": "0.75.1"
1515 }
1616 },
......@@ -41,6 +41,7 @@
4141 },
4242 "devDependencies": {
4343 "@effect/platform-node": "catalog:",
44 "@types/node": "^24.10.13",
4445 "effect": "catalog:",
4546 "oxfmt": "^0.35.0",
4647 "oxlint": "^1.50.0",