refactor(ai-analyzer): fix resource leaks, OOM risk, and strict structured outputs

This commit is contained in:
MythEclipse
2026-05-25 22:14:05 +07:00
parent c32b5274e9
commit cc2ee84c3b
6 changed files with 359 additions and 292 deletions
+196
View File
@@ -74,6 +74,9 @@ importers:
pg:
specifier: ^8.21.0
version: 8.21.0
piscina:
specifier: ^5.1.4
version: 5.1.4
play-dl:
specifier: ^1.9.7
version: 1.9.7
@@ -1130,6 +1133,119 @@ packages:
'@minhducsun2002/leb128@1.0.0':
resolution: {integrity: sha512-eFrYUPDVHeuwWHluTG1kwNQUEUcFjVKYwPkU8z9DR1JH3AW7JtJsG9cRVGmwz809kKtGfwGJj58juCZxEvnI/g==}
'@napi-rs/nice-android-arm-eabi@1.1.1':
resolution: {integrity: sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==}
engines: {node: '>= 10'}
cpu: [arm]
os: [android]
'@napi-rs/nice-android-arm64@1.1.1':
resolution: {integrity: sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [android]
'@napi-rs/nice-darwin-arm64@1.1.1':
resolution: {integrity: sha512-s/E7w45NaLqTGuOjC2p96pct4jRfo61xb9bU1unM/MJ/RFkKlJyJDx7OJI/O0ll/hrfpqKopuAFDV8yo0hfT7A==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
'@napi-rs/nice-darwin-x64@1.1.1':
resolution: {integrity: sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
'@napi-rs/nice-freebsd-x64@1.1.1':
resolution: {integrity: sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [freebsd]
'@napi-rs/nice-linux-arm-gnueabihf@1.1.1':
resolution: {integrity: sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==}
engines: {node: '>= 10'}
cpu: [arm]
os: [linux]
'@napi-rs/nice-linux-arm64-gnu@1.1.1':
resolution: {integrity: sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [glibc]
'@napi-rs/nice-linux-arm64-musl@1.1.1':
resolution: {integrity: sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
libc: [musl]
'@napi-rs/nice-linux-ppc64-gnu@1.1.1':
resolution: {integrity: sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==}
engines: {node: '>= 10'}
cpu: [ppc64]
os: [linux]
libc: [glibc]
'@napi-rs/nice-linux-riscv64-gnu@1.1.1':
resolution: {integrity: sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==}
engines: {node: '>= 10'}
cpu: [riscv64]
os: [linux]
libc: [glibc]
'@napi-rs/nice-linux-s390x-gnu@1.1.1':
resolution: {integrity: sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==}
engines: {node: '>= 10'}
cpu: [s390x]
os: [linux]
libc: [glibc]
'@napi-rs/nice-linux-x64-gnu@1.1.1':
resolution: {integrity: sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [glibc]
'@napi-rs/nice-linux-x64-musl@1.1.1':
resolution: {integrity: sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
libc: [musl]
'@napi-rs/nice-openharmony-arm64@1.1.1':
resolution: {integrity: sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [openharmony]
'@napi-rs/nice-win32-arm64-msvc@1.1.1':
resolution: {integrity: sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
'@napi-rs/nice-win32-ia32-msvc@1.1.1':
resolution: {integrity: sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==}
engines: {node: '>= 10'}
cpu: [ia32]
os: [win32]
'@napi-rs/nice-win32-x64-msvc@1.1.1':
resolution: {integrity: sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
'@napi-rs/nice@1.1.1':
resolution: {integrity: sha512-xJIPs+bYuc9ASBl+cvGsKbGrJmS6fAKaSZCnT0lhahT5rhA2VVy9/EcIgd2JhtEuFOJNx7UHNn/qiTPTY4nrQw==}
engines: {node: '>= 10'}
'@napi-rs/wasm-runtime@1.1.4':
resolution: {integrity: sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==}
peerDependencies:
@@ -3713,6 +3829,10 @@ packages:
resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
engines: {node: '>=12'}
piscina@5.1.4:
resolution: {integrity: sha512-7uU4ZnKeQq22t9AsmHGD2w4OYQGonwFnTypDypaWi7Qr2EvQIFVtG8J5D/3bE7W123Wdc9+v4CZDu5hJXVCtBg==}
engines: {node: '>=20.x'}
pkg-pr-new@0.0.62:
resolution: {integrity: sha512-K2jtf1PLCJJFDimQIpasPXDdnRTZSYPy36Ldz+QhMpLz2YN1Wi0ZQkomVt5Wi3NdBZcYuYGXekyFWfJ6fAHYjg==}
hasBin: true
@@ -5346,6 +5466,78 @@ snapshots:
'@minhducsun2002/leb128@1.0.0': {}
'@napi-rs/nice-android-arm-eabi@1.1.1':
optional: true
'@napi-rs/nice-android-arm64@1.1.1':
optional: true
'@napi-rs/nice-darwin-arm64@1.1.1':
optional: true
'@napi-rs/nice-darwin-x64@1.1.1':
optional: true
'@napi-rs/nice-freebsd-x64@1.1.1':
optional: true
'@napi-rs/nice-linux-arm-gnueabihf@1.1.1':
optional: true
'@napi-rs/nice-linux-arm64-gnu@1.1.1':
optional: true
'@napi-rs/nice-linux-arm64-musl@1.1.1':
optional: true
'@napi-rs/nice-linux-ppc64-gnu@1.1.1':
optional: true
'@napi-rs/nice-linux-riscv64-gnu@1.1.1':
optional: true
'@napi-rs/nice-linux-s390x-gnu@1.1.1':
optional: true
'@napi-rs/nice-linux-x64-gnu@1.1.1':
optional: true
'@napi-rs/nice-linux-x64-musl@1.1.1':
optional: true
'@napi-rs/nice-openharmony-arm64@1.1.1':
optional: true
'@napi-rs/nice-win32-arm64-msvc@1.1.1':
optional: true
'@napi-rs/nice-win32-ia32-msvc@1.1.1':
optional: true
'@napi-rs/nice-win32-x64-msvc@1.1.1':
optional: true
'@napi-rs/nice@1.1.1':
optionalDependencies:
'@napi-rs/nice-android-arm-eabi': 1.1.1
'@napi-rs/nice-android-arm64': 1.1.1
'@napi-rs/nice-darwin-arm64': 1.1.1
'@napi-rs/nice-darwin-x64': 1.1.1
'@napi-rs/nice-freebsd-x64': 1.1.1
'@napi-rs/nice-linux-arm-gnueabihf': 1.1.1
'@napi-rs/nice-linux-arm64-gnu': 1.1.1
'@napi-rs/nice-linux-arm64-musl': 1.1.1
'@napi-rs/nice-linux-ppc64-gnu': 1.1.1
'@napi-rs/nice-linux-riscv64-gnu': 1.1.1
'@napi-rs/nice-linux-s390x-gnu': 1.1.1
'@napi-rs/nice-linux-x64-gnu': 1.1.1
'@napi-rs/nice-linux-x64-musl': 1.1.1
'@napi-rs/nice-openharmony-arm64': 1.1.1
'@napi-rs/nice-win32-arm64-msvc': 1.1.1
'@napi-rs/nice-win32-ia32-msvc': 1.1.1
'@napi-rs/nice-win32-x64-msvc': 1.1.1
optional: true
'@napi-rs/wasm-runtime@1.1.4(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
dependencies:
'@emnapi/core': 1.10.0
@@ -7851,6 +8043,10 @@ snapshots:
picomatch@4.0.4: {}
piscina@5.1.4:
optionalDependencies:
'@napi-rs/nice': 1.1.1
pkg-pr-new@0.0.62:
dependencies:
'@actions/core': 1.11.1