diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..0c4ea82 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "aec"] + path = aec + url = https://github.com/samtiz/aec.git diff --git a/aec b/aec index 66c447b..f00bb1f 160000 --- a/aec +++ b/aec @@ -1 +1 @@ -Subproject commit 66c447ba544dfe8e3bb4091fda2961a11066910b +Subproject commit f00bb1fb948053c752b916adfee19f90644a0b2f diff --git a/package-lock.json b/package-lock.json index 5ae800a..944e413 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,16 @@ { "name": "pickle-glass", - "version": "0.2.1", + "version": "0.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "pickle-glass", - "version": "0.2.1", + "version": "0.2.2", "hasInstallScript": true, "license": "GPL-3.0", "dependencies": { - "@anthropic-ai/sdk": "^0.56.0", - "@google/genai": "^1.8.0", "@google/generative-ai": "^0.24.1", "axios": "^1.10.0", @@ -54,7 +52,6 @@ "electron-liquid-glass": "^1.0.1" } }, - "node_modules/@anthropic-ai/sdk": { "version": "0.56.0", "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.56.0.tgz", @@ -64,7 +61,6 @@ "anthropic-ai-sdk": "bin/cli" } }, - "node_modules/@develar/schema-utils": { "version": "2.6.5", "resolved": "https://registry.npmjs.org/@develar/schema-utils/-/schema-utils-2.6.5.tgz", @@ -889,11 +885,9 @@ } }, "node_modules/@emnapi/runtime": { - "version": "1.4.4", "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.4.tgz", "integrity": "sha512-hHyapA4A3gPaDCNfiqyZUStTMqIkKRshqPIuDOXv1hcBnD4U3l8cP0T1HMCfGRxQ6V64TGCcoswChANyOAwbQg==", - "license": "MIT", "optional": true, "dependencies": { @@ -901,11 +895,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", - "cpu": [ "ppc64" ], @@ -920,11 +912,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", - "cpu": [ "arm" ], @@ -939,11 +929,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", - "cpu": [ "arm64" ], @@ -958,11 +946,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", - "cpu": [ "x64" ], @@ -977,11 +963,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", - "cpu": [ "arm64" ], @@ -996,11 +980,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", - "cpu": [ "x64" ], @@ -1015,11 +997,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", - "cpu": [ "arm64" ], @@ -1034,11 +1014,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", - "cpu": [ "x64" ], @@ -1053,11 +1031,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", - "cpu": [ "arm" ], @@ -1072,11 +1048,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", - "cpu": [ "arm64" ], @@ -1091,11 +1065,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", - "cpu": [ "ia32" ], @@ -1110,11 +1082,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", - "cpu": [ "loong64" ], @@ -1129,11 +1099,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", - "cpu": [ "mips64el" ], @@ -1148,11 +1116,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", - "cpu": [ "ppc64" ], @@ -1167,11 +1133,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", - "cpu": [ "riscv64" ], @@ -1186,11 +1150,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", - "cpu": [ "s390x" ], @@ -1205,11 +1167,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", - "cpu": [ "x64" ], @@ -1224,11 +1184,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", - "cpu": [ "arm64" ], @@ -1243,11 +1201,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", - "cpu": [ "x64" ], @@ -1262,11 +1218,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", - "cpu": [ "arm64" ], @@ -1281,11 +1235,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", - "cpu": [ "x64" ], @@ -1299,7 +1251,6 @@ "node": ">=18" } }, - "node_modules/@esbuild/openharmony-arm64": { "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", @@ -1321,7 +1272,6 @@ "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", - "cpu": [ "x64" ], @@ -1336,11 +1286,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", - "cpu": [ "arm64" ], @@ -1355,11 +1303,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", - "cpu": [ "ia32" ], @@ -1374,11 +1320,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", - "cpu": [ "x64" ], @@ -3255,11 +3199,9 @@ } }, "node_modules/agent-base": { - "version": "7.1.4", "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "license": "MIT", "engines": { "node": ">= 14" @@ -6055,11 +5997,9 @@ "optional": true }, "node_modules/esbuild": { - "version": "0.25.6", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", - "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6070,7 +6010,6 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.6", "@esbuild/android-arm": "0.25.6", "@esbuild/android-arm64": "0.25.6", @@ -6097,7 +6036,6 @@ "@esbuild/win32-arm64": "0.25.6", "@esbuild/win32-ia32": "0.25.6", "@esbuild/win32-x64": "0.25.6" - } }, "node_modules/escalade": { diff --git a/src/features/listen/listenService.js b/src/features/listen/listenService.js index 10aa459..4218745 100644 --- a/src/features/listen/listenService.js +++ b/src/features/listen/listenService.js @@ -117,8 +117,27 @@ class ListenService { throw new Error('Failed to initialize database session'); } - // Initialize STT sessions - await this.sttService.initializeSttSessions(language); + /* ---------- STT Initialization Retry Logic ---------- */ + const MAX_RETRY = 10; + const RETRY_DELAY_MS = 300; // 0.3 seconds + + let sttReady = false; + for (let attempt = 1; attempt <= MAX_RETRY; attempt++) { + try { + await this.sttService.initializeSttSessions(language); + sttReady = true; + break; // Exit on success + } catch (err) { + console.warn( + `[ListenService] STT init attempt ${attempt} failed: ${err.message}` + ); + if (attempt < MAX_RETRY) { + await new Promise(r => setTimeout(r, RETRY_DELAY_MS)); + } + } + } + if (!sttReady) throw new Error('STT init failed after retries'); + /* ------------------------------------------- */ console.log('✅ Listen service initialized successfully.');