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 @@...@@ -18,7 +18,7 @@
18 },18 },
19 "devDependencies": {19 "devDependencies": {
20 "@t3tools/contracts": "workspace:*",20 "@t3tools/contracts": "workspace:*",
21 "@types/node": "^22.10.2",21 "@types/node": "^24.10.13",
22 "electronmon": "^2.0.2",22 "electronmon": "^2.0.2",
23 "tsdown": "^0.20.3",23 "tsdown": "^0.20.3",
24 "typescript": "^5.7.3",24 "typescript": "^5.7.3",
apps/server/package.json+1-1
...@@ -32,7 +32,7 @@...@@ -32,7 +32,7 @@
32 "@t3tools/contracts": "workspace:*",32 "@t3tools/contracts": "workspace:*",
33 "@t3tools/web": "workspace:*",33 "@t3tools/web": "workspace:*",
34 "@types/bun": "^1.3.9",34 "@types/bun": "^1.3.9",
35 "@types/node": "^22.10.2",35 "@types/node": "^24.10.13",
36 "@types/ws": "^8.5.13",36 "@types/ws": "^8.5.13",
37 "tsdown": "^0.20.3",37 "tsdown": "^0.20.3",
38 "typescript": "^5.7.3",38 "typescript": "^5.7.3",
apps/server/src/git/Layers/GitCore.ts+58-59
...@@ -126,10 +126,7 @@ function parseRemoteRefWithRemoteNames(...@@ -126,10 +126,7 @@ function parseRemoteRefWithRemoteNames(
126 return null;126 return null;
127}127}
128128
129function parseTrackingBranchByUpstreamRef(129function parseTrackingBranchByUpstreamRef(stdout: string, upstreamRef: string): string | null {
130 stdout: string,
131 upstreamRef: string,
132): string | null {
133 for (const line of stdout.split("\n")) {130 for (const line of stdout.split("\n")) {
134 const trimmedLine = line.trim();131 const trimmedLine = line.trim();
135 if (trimmedLine.length === 0) {132 if (trimmedLine.length === 0) {
...@@ -389,9 +386,12 @@ const makeGitCore = Effect.gen(function* () {...@@ -389,9 +386,12 @@ const makeGitCore = Effect.gen(function* () {
389 });386 });
390387
391 const resolveDefaultBranchName = (cwd: string): Effect.Effect<string | null, GitCommandError> =>388 const resolveDefaultBranchName = (cwd: string): Effect.Effect<string | null, GitCommandError> =>
392 executeGit("GitCore.resolveDefaultBranchName", cwd, ["symbolic-ref", "refs/remotes/origin/HEAD"], {389 executeGit(
393 allowNonZeroExit: true,390 "GitCore.resolveDefaultBranchName",
394 }).pipe(391 cwd,
392 ["symbolic-ref", "refs/remotes/origin/HEAD"],
393 { allowNonZeroExit: true },
394 ).pipe(
395 Effect.map((result) => {395 Effect.map((result) => {
396 if (result.code !== 0) {396 if (result.code !== 0) {
397 return null;397 return null;
...@@ -888,33 +888,34 @@ const makeGitCore = Effect.gen(function* () {...@@ -888,33 +888,34 @@ const makeGitCore = Effect.gen(function* () {
888888
889 const [defaultRef, worktreeList, remoteBranchResult, remoteNamesResult, branchLastCommit] =889 const [defaultRef, worktreeList, remoteBranchResult, remoteNamesResult, branchLastCommit] =
890 yield* Effect.all(890 yield* Effect.all(
891 [891 [
892 executeGit(892 executeGit(
893 "GitCore.listBranches.defaultRef",893 "GitCore.listBranches.defaultRef",
894 input.cwd,894 input.cwd,
895 ["symbolic-ref", "refs/remotes/origin/HEAD"],895 ["symbolic-ref", "refs/remotes/origin/HEAD"],
896 {896 {
897 timeoutMs: 5_000,897 timeoutMs: 5_000,
898 allowNonZeroExit: true,898 allowNonZeroExit: true,
899 },899 },
900 ),900 ),
901 executeGit(901 executeGit(
902 "GitCore.listBranches.worktreeList",902 "GitCore.listBranches.worktreeList",
903 input.cwd,903 input.cwd,
904 ["worktree", "list", "--porcelain"],904 ["worktree", "list", "--porcelain"],
905 {905 {
906 timeoutMs: 5_000,906 timeoutMs: 5_000,
907 allowNonZeroExit: true,907 allowNonZeroExit: true,
908 },908 },
909 ),909 ),
910 remoteBranchResultEffect,910 remoteBranchResultEffect,
911 remoteNamesResultEffect,911 remoteNamesResultEffect,
912 branchRecencyPromise,912 branchRecencyPromise,
913 ],913 ],
914 { concurrency: "unbounded" },914 { concurrency: "unbounded" },
915 );915 );
916916
917 const remoteNames = remoteNamesResult.code === 0 ? parseRemoteNames(remoteNamesResult.stdout) : [];917 const remoteNames =
918 remoteNamesResult.code === 0 ? parseRemoteNames(remoteNamesResult.stdout) : [];
918 if (remoteBranchResult.code !== 0 && remoteBranchResult.stderr.trim().length > 0) {919 if (remoteBranchResult.code !== 0 && remoteBranchResult.stderr.trim().length > 0) {
919 yield* Effect.logWarning(920 yield* Effect.logWarning(
920 `GitCore.listBranches: remote branch lookup returned code ${remoteBranchResult.code} for ${input.cwd}: ${remoteBranchResult.stderr.trim()}. Falling back to an empty remote branch list.`,921 `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* () {...@@ -1112,24 +1113,23 @@ const makeGitCore = Effect.gen(function* () {
1112 { concurrency: "unbounded" },1113 { concurrency: "unbounded" },
1113 );1114 );
11141115
1115 const localTrackingBranch =1116 const localTrackingBranch = remoteExists
1116 remoteExists1117 ? yield* executeGit(
1117 ? yield* executeGit(1118 "GitCore.checkoutBranch.localTrackingBranch",
1118 "GitCore.checkoutBranch.localTrackingBranch",1119 input.cwd,
1119 input.cwd,1120 ["for-each-ref", "--format=%(refname:short)\t%(upstream:short)", "refs/heads"],
1120 ["for-each-ref", "--format=%(refname:short)\t%(upstream:short)", "refs/heads"],1121 {
1121 {1122 timeoutMs: 5_000,
1122 timeoutMs: 5_000,1123 allowNonZeroExit: true,
1123 allowNonZeroExit: true,1124 },
1124 },1125 ).pipe(
1125 ).pipe(1126 Effect.map((result) =>
1126 Effect.map((result) =>1127 result.code === 0
1127 result.code === 01128 ? parseTrackingBranchByUpstreamRef(result.stdout, input.branch)
1128 ? parseTrackingBranchByUpstreamRef(result.stdout, input.branch)1129 : null,
1129 : null,1130 ),
1130 ),1131 )
1131 )1132 : null;
1132 : null;
11331133
1134 const localTrackedBranchCandidate = deriveLocalBranchNameFromRemoteRef(input.branch);1134 const localTrackedBranchCandidate = deriveLocalBranchNameFromRemoteRef(input.branch);
1135 const localTrackedBranchTargetExists =1135 const localTrackedBranchTargetExists =
...@@ -1145,16 +1145,15 @@ const makeGitCore = Effect.gen(function* () {...@@ -1145,16 +1145,15 @@ const makeGitCore = Effect.gen(function* () {
1145 ).pipe(Effect.map((result) => result.code === 0))1145 ).pipe(Effect.map((result) => result.code === 0))
1146 : false;1146 : false;
11471147
1148 const checkoutArgs =1148 const checkoutArgs = localInputExists
1149 localInputExists1149 ? ["checkout", input.branch]
1150 ? ["checkout", input.branch]1150 : remoteExists && !localTrackingBranch && localTrackedBranchTargetExists
1151 : remoteExists && !localTrackingBranch && localTrackedBranchTargetExists
1152 ? ["checkout", input.branch]1151 ? ["checkout", input.branch]
1153 : remoteExists && !localTrackingBranch1152 : remoteExists && !localTrackingBranch
1154 ? ["checkout", "--track", input.branch]1153 ? ["checkout", "--track", input.branch]
1155 : remoteExists && localTrackingBranch1154 : remoteExists && localTrackingBranch
1156 ? ["checkout", localTrackingBranch]1155 ? ["checkout", localTrackingBranch]
1157 : ["checkout", input.branch];1156 : ["checkout", input.branch];
11581157
1159 yield* executeGit("GitCore.checkoutBranch.checkout", input.cwd, checkoutArgs, {1158 yield* executeGit("GitCore.checkoutBranch.checkout", input.cwd, checkoutArgs, {
1160 timeoutMs: 10_000,1159 timeoutMs: 10_000,
apps/server/src/git/Services/GitCore.ts+4-2
...@@ -7,7 +7,7 @@...@@ -7,7 +7,7 @@
7 * @module GitCore7 * @module GitCore
8 */8 */
9import { ServiceMap } from "effect";9import { ServiceMap } from "effect";
10import type { Effect } from "effect";10import type { Effect, Scope } from "effect";
11import type {11import type {
12 GitCheckoutInput,12 GitCheckoutInput,
13 GitCreateBranchInput,13 GitCreateBranchInput,
...@@ -149,7 +149,9 @@ export interface GitCoreShape {...@@ -149,7 +149,9 @@ export interface GitCoreShape {
149 /**149 /**
150 * Checkout an existing branch and refresh its upstream metadata in background.150 * Checkout an existing branch and refresh its upstream metadata in background.
151 */151 */
152 readonly checkoutBranch: (input: GitCheckoutInput) => Effect.Effect<void, GitCommandError>;152 readonly checkoutBranch: (
153 input: GitCheckoutInput,
154 ) => Effect.Effect<void, GitCommandError, Scope.Scope>;
153155
154 /**156 /**
155 * Initialize a repository in the provided directory.157 * 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* () {...@@ -415,8 +415,7 @@ const make = Effect.gen(function* () {
415 : event.threadId !== undefined415 : event.threadId !== undefined
416 ? ProviderThreadId.makeUnsafe(event.threadId)416 ? ProviderThreadId.makeUnsafe(event.threadId)
417 : null;417 : null;
418 const providerThreadId =418 const providerThreadId = providerThreadIdFromEvent ?? sessionProviderThreadId ?? null;
419 providerThreadIdFromEvent ?? sessionProviderThreadId ?? null;
420 const status =419 const status =
421 event.type === "turn.started"420 event.type === "turn.started"
422 ? "running"421 ? "running"
apps/server/src/provider/Layers/CodexAdapter.ts+4-6
...@@ -489,12 +489,10 @@ const makeCodexAdapter = (options?: CodexAdapterLiveOptions) =>...@@ -489,12 +489,10 @@ const makeCodexAdapter = (options?: CodexAdapterLiveOptions) =>
489 attachment,489 attachment,
490 });490 });
491 if (!attachmentPath) {491 if (!attachmentPath) {
492 return yield* Effect.fail(492 return yield* toRequestError(
493 toRequestError(493 input.sessionId,
494 input.sessionId,494 "turn/start",
495 "turn/start",495 new Error(`Invalid attachment id '${attachment.id}'.`),
496 new Error(`Invalid attachment id '${attachment.id}'.`),
497 ),
498 );496 );
499 }497 }
500 const bytes = yield* fileSystem.readFile(attachmentPath).pipe(498 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<...@@ -685,7 +685,7 @@ export const createServer = Effect.fn(function* (): Effect.fn.Return<
685685
686 case WS_METHODS.gitCheckout: {686 case WS_METHODS.gitCheckout: {
687 const body = stripRequestTag(request.body);687 const body = stripRequestTag(request.body);
688 return yield* git.checkoutBranch(body);688 return yield* Effect.scoped(git.checkoutBranch(body));
689 }689 }
690690
691 case WS_METHODS.gitInit: {691 case WS_METHODS.gitInit: {
bun.lock+32-19
...@@ -6,6 +6,7 @@...@@ -6,6 +6,7 @@
6 "name": "@t3tools/monorepo",6 "name": "@t3tools/monorepo",
7 "devDependencies": {7 "devDependencies": {
8 "@effect/platform-node": "catalog:",8 "@effect/platform-node": "catalog:",
9 "@types/node": "^24.10.13",
9 "effect": "catalog:",10 "effect": "catalog:",
10 "oxfmt": "^0.35.0",11 "oxfmt": "^0.35.0",
11 "oxlint": "^1.50.0",12 "oxlint": "^1.50.0",
...@@ -22,7 +23,7 @@...@@ -22,7 +23,7 @@
22 },23 },
23 "devDependencies": {24 "devDependencies": {
24 "@t3tools/contracts": "workspace:*",25 "@t3tools/contracts": "workspace:*",
25 "@types/node": "^22.10.2",26 "@types/node": "^24.10.13",
26 "electronmon": "^2.0.2",27 "electronmon": "^2.0.2",
27 "tsdown": "^0.20.3",28 "tsdown": "^0.20.3",
28 "typescript": "^5.7.3",29 "typescript": "^5.7.3",
...@@ -51,7 +52,7 @@...@@ -51,7 +52,7 @@
51 "@t3tools/contracts": "workspace:*",52 "@t3tools/contracts": "workspace:*",
52 "@t3tools/web": "workspace:*",53 "@t3tools/web": "workspace:*",
53 "@types/bun": "^1.3.9",54 "@types/bun": "^1.3.9",
54 "@types/node": "^22.10.2",55 "@types/node": "^24.10.13",
55 "@types/ws": "^8.5.13",56 "@types/ws": "^8.5.13",
56 "tsdown": "^0.20.3",57 "tsdown": "^0.20.3",
57 "typescript": "^5.7.3",58 "typescript": "^5.7.3",
...@@ -112,10 +113,10 @@...@@ -112,10 +113,10 @@
112 },113 },
113 "catalog": {114 "catalog": {
114 "@effect/language-service": "0.75.1",115 "@effect/language-service": "0.75.1",
115 "@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@f591738",116 "@effect/platform-node": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/platform-node@8881a9b",
116 "@effect/sql-sqlite-bun": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@f591738",117 "@effect/sql-sqlite-bun": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/sql-sqlite-bun@8881a9b",
117 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@f591738",118 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@8881a9b",
118 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@f591738",119 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@8881a9b",
119 },120 },
120 "packages": {121 "packages": {
121 "@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=="],122 "@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 @@...@@ -168,13 +169,13 @@
168169
169 "@effect/language-service": ["@effect/language-service@0.75.1", "", { "bin": { "effect-language-service": "cli.js" } }, "sha512-g9xD2tAQgRFpYC2YgpZq02VeSL5fBbFJ0B/g1o+14NuNmwtaYJc7SjiLWAA9eyhJHosNrn6h1Ye+Kx6j5mN0AA=="],170 "@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
179 "@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=="],180 "@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 @@...@@ -636,7 +637,7 @@
636637
637 "@types/ms": ["@types/ms@2.1.0", "", {}, "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA=="],638 "@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
641 "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],642 "@types/react": ["@types/react@19.2.14", "", { "dependencies": { "csstype": "^3.2.2" } }, "sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w=="],
642643
...@@ -810,7 +811,7 @@...@@ -810,7 +811,7 @@
810811
811 "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=="],812 "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
815 "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=="],816 "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 @@...@@ -1408,7 +1409,7 @@
14081409
1409 "undici": ["undici@7.22.0", "", {}, "sha512-RqslV2Us5BrllB+JeiZnK4peryVTndy9Dnqq62S3yYRRTj0tFQCwEniUy2167skdGOy3vqRzEvl1Dm4sV2ReDg=="],1410 "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
1413 "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=="],1414 "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 @@...@@ -1534,20 +1535,26 @@
15341535
1535 "@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=="],1536 "@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
1537 "@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=="],1548 "@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
1539 "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],1550 "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
15401551
1541 "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=="],1552 "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
1545 "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=="],1554 "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
1547 "clone-response/mimic-response": ["mimic-response@1.0.1", "", {}, "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ=="],1556 "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
1551 "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],1558 "mdast-util-find-and-replace/escape-string-regexp": ["escape-string-regexp@5.0.0", "", {}, "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="],
15521559
1553 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],1560 "micromatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="],
...@@ -1592,9 +1599,15 @@...@@ -1592,9 +1599,15 @@
15921599
1593 "@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=="],1600 "@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
1599 "rolldown-plugin-dts/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@8.0.0-rc.1", "", {}, "sha512-vi/pfmbrOtQmqgfboaBhaCU50G7mcySVu69VU8z+lYoPPB6WzI9VgV7WQfL908M4oeSH5fDkmoupIqoE0SdApw=="],1612 "rolldown-plugin-dts/@babel/types/@babel/helper-string-parser": ["@babel/helper-string-parser@8.0.0-rc.1", "", {}, "sha512-vi/pfmbrOtQmqgfboaBhaCU50G7mcySVu69VU8z+lYoPPB6WzI9VgV7WQfL908M4oeSH5fDkmoupIqoE0SdApw=="],
1600 }1613 }
package.json+5-4
...@@ -7,10 +7,10 @@...@@ -7,10 +7,10 @@
7 "packages/*"7 "packages/*"
8 ],8 ],
9 "catalog": {9 "catalog": {
10 "effect": "https://pkg.pr.new/Effect-TS/effect-smol/effect@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@f591738",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@f591738",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@f591738",13 "@effect/vitest": "https://pkg.pr.new/Effect-TS/effect-smol/@effect/vitest@8881a9b",
14 "@effect/language-service": "0.75.1"14 "@effect/language-service": "0.75.1"
15 }15 }
16 },16 },
...@@ -41,6 +41,7 @@...@@ -41,6 +41,7 @@
41 },41 },
42 "devDependencies": {42 "devDependencies": {
43 "@effect/platform-node": "catalog:",43 "@effect/platform-node": "catalog:",
44 "@types/node": "^24.10.13",
44 "effect": "catalog:",45 "effect": "catalog:",
45 "oxfmt": "^0.35.0",46 "oxfmt": "^0.35.0",
46 "oxlint": "^1.50.0",47 "oxlint": "^1.50.0",