deepchat-git
LOW
maintainer zxp19821005
0 votes
scanned 2026-09-20 09:32:46.220774
Why flagged
The package builds from a public git repository and uses standard build tools; the variable-named package installation via pnpm is part of the project's declared dependency management and does not introduce untrusted external code.
Triggered rules
Low
AI review of an ambiguous pattern
llm_review
The static rules found a suspicious pattern they could not resolve, so an AI model (qwen/qwen3-235b-a22b-2507) reviewed it and judged it LOW (confidence 95%): The package builds from a public git repository and uses standard build tools; the variable-named package installation via pnpm is part of the project's declared dependency management and does not introduce untrusted external code.
-
PKGBUILD:78
npm install -g "pnpm@${_pnpmver}" --prefix "${pnpm_config_global_dir}"
PKGBUILD
1 offending line(s) highlighted
1
# Maintainer: zxp19821005 <zxp19821005 at 163 dot com>
2
pkgname=deepchat-git
3
_pkgname=DeepChat
4
pkgver=1.1.2.r0.g0748902
5
_electronversion=43
6
_nodeversion=24
7
pkgrel=1
8
pkgdesc="A smart assistant that connects powerful AI to your personal world."
9
arch=('any')
10
url="https://deepchat.thinkinai.xyz/"
11
_ghurl="https://github.com/ThinkInAIXYZ/deepchat"
12
license=('Apache-2.0')
13
provides=("${pkgname%-git}=${pkgver%.r*}")
14
conflicts=("${pkgname%-git}")
15
depends=(
16
"electron${_electronversion}"
17
'python'
18
'python-defusedxml'
19
'python-pillow'
20
'python-yaml'
21
'python-lxml'
22
)
23
makedepends=(
24
'npm'
25
'nvm'
26
'git'
27
'curl'
28
'gendesk'
29
'jq'
30
)
31
source=(
32
"${pkgname//-/.}::git+${_ghurl}.git"
33
"${pkgname%-git}.sh"
34
)
35
sha256sums=('SKIP'
36
'a774c2f54fbbeeaac3cefc0f7250796d30c86d27f0fd40b7eaf9c0fdb021623d')
37
pkgver() {
38
cd "${srcdir}/${pkgname//-/.}"
39
set -o pipefail
40
git describe --long --tags --abbrev=7 | sed 's/\([^-]*-g\)/r\1/;s/-/./g;s/v//g' ||
41
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)"
42
}
43
_get_app_dir() {
44
find "${srcdir}" -type d -name "node_modules" -prune -o -type f -name "resources.pak" -print0 | xargs -0 dirname | head -n 1
45
}
46
_set_build_env() {
47
export ELECTRON_DIST="/usr/lib/electron${_electronversion}"
48
export ELECTRON_OVERRIDE_DIST_PATH="${ELECTRON_DIST}"
49
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
50
export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/^v//')"
51
export HOME="${srcdir}/.electron-gyp"
52
export XDG_CACHE_HOME="${srcdir}/.cache"
53
export XDG_CONFIG_HOME="${srcdir}/.config"
54
export XDG_DATA_HOME="${srcdir}/.local/share"
55
export XDG_STATE_HOME="${srcdir}/.local/state"
56
export PNPM_HOME="${srcdir}/.pnpm/bin"
57
export pnpm_config_cache_dir="${srcdir}/.pnpm_cache"
58
export pnpm_config_store_dir="${srcdir}/.pnpm_store"
59
export pnpm_config_global_dir="${srcdir}/.pnpm/global"
60
export pnpm_config_state_dir="${srcdir}/.pnpm/state"
61
export pnpm_config_node_linker=hoisted
62
export pnpm_config_minimum_release_age=0
63
export pnpm_config_update_notifier=false
64
mkdir -p "${HOME}" "${PNPM_HOME}" "${pnpm_config_cache_dir}" "${pnpm_config_store_dir}" "${pnpm_config_global_dir}" "${pnpm_config_state_dir}"
65
export PATH="${PNPM_HOME}:${PATH}"
66
local _pnpmver="${_pnpmversion}"
67
if [[ -z "${_pnpmver}" ]]; then
68
_pnpmver="$(node -p "const pm=require('./package.json').packageManager; pm && pm.startsWith('pnpm@') ? pm.split('@')[1] : ''" 2>/dev/null)"
69
fi
70
if [[ -n "${_pnpmver}" ]]; then
71
export COREPACK_HOME="${srcdir}/.corepack"
72
install -dm755 "${srcdir}/.bin"
73
if command -v corepack &>/dev/null; then
74
corepack enable --install-directory "${srcdir}/.bin"
75
export PATH="${srcdir}/.bin:${PATH}"
76
corepack prepare "pnpm@${_pnpmver}" --activate
77
else
78
npm install -g "pnpm@${_pnpmver}" --prefix "${pnpm_config_global_dir}"
79
export PATH="${pnpm_config_global_dir}/bin:${PATH}"
80
fi
81
fi
82
}
83
_ensure_local_nvm() {
84
local NVM_DIR="${srcdir}/.nvm"
85
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
86
nvm install "${_nodeversion}"
87
nvm use "${_nodeversion}"
88
}
89
_get_electron_version() {
90
_elec_ver=$(find "${srcdir}" -maxdepth 5 -name "package.json" ! -path "*/node_modules/*" \
91
-exec grep -l '"electron"' {} + | xargs -I{} jq -r '(.devDependencies.electron // .dependencies.electron) // empty' {} 2>/dev/null | head -1)
92
[[ -z "${_elec_ver}" ]] && return 1
93
echo -e "The electron version is: \033[1;31m${_elec_ver%%.*}\033[0m"
94
}
95
prepare() {
96
cd "${srcdir}/${pkgname//-/.}"
97
_get_electron_version
98
sed -i -e "
99
s/@electronversion@/${_electronversion}/g
100
s/@appname@/${pkgname%-git}/g
101
s/@runname@/app.asar/g
102
s/@cfgdirname@/${pkgname%-git}/g
103
" "${srcdir}/${pkgname%-git}.sh"
104
gendesk -q -f -n \
105
--pkgname="${pkgname%-git}" \
106
--pkgdesc="${pkgdesc}" \
107
--categories="Utility" \
108
--name="${_pkgname}" \
109
--exec="${pkgname%-git} %U"
110
_ensure_local_nvm
111
_set_build_env
112
find src -type f -exec sed -i "s/process.resourcesPath/\'\/usr\/lib\/${pkgname%-git}\'/g" {} +
113
sed -i "s/\"electron\": \"[^\"]*\"/\"electron\": \"${SYSTEM_ELECTRON_VERSION}\"/g" package.json
114
cp .env.example .env
115
export NODE_ENV=development
116
pnpm install --ignore-scripts
117
pnpm run install:sharp
118
}
119
build() {
120
cd "${srcdir}/${pkgname//-/.}"
121
_ensure_local_nvm
122
_set_build_env
123
local _eb_arch
124
case "${CARCH}" in
125
aarch64)
126
_eb_arch="arm64"
127
_armrem="x64"
128
;;
129
x86_64)
130
_eb_arch="x64"
131
_armrem="arm"
132
;;
133
esac
134
export NODE_ENV=production
135
# Fix TypeScript error: unreachable ?? operand
136
sed -i "s/deps.resourcesPath ?? '\/usr\/lib\/deepchat' ?? ''/deps.resourcesPath ?? '\/usr\/lib\/deepchat'/" src/main/plugin/index.ts
137
pnpm run build
138
pnpm -c exec "electron-builder --linux dir --${_eb_arch} -c.electronDist=${ELECTRON_DIST} --config=electron-builder.yml"
139
local _app_dir=$(_get_app_dir)
140
find "${_app_dir}/resources" -type d \( \
141
-name "*darwin*" -o \
142
-name "*win32*" \
143
-name "*${_armrem}*" \
144
\) -exec rm -rf {} +
145
}
146
package() {
147
install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}"
148
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-git}"
149
local _app_dir=$(_get_app_dir)
150
cp -a "${_app_dir}/resources/." "${pkgdir}/usr/lib/${pkgname%-git}/"
151
rm -rf "${pkgdir}/usr/lib/${pkgname%-git}/default_app.asar"
152
install -Dm644 "${srcdir}/${pkgname//-/.}/resources/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png"
153
install -Dm644 "${srcdir}/${pkgname//-/.}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
154
install -Dm644 "${srcdir}/${pkgname//-/.}/README.md" -t "${pkgdir}/usr/share/licenses/${pkgname}"
155
}
Changes since previous scan
--- PKGBUILD @ 2026-06-25 12:22+++ PKGBUILD @ 2026-09-20 09:32@@ -1,11 +1,11 @@ # Maintainer: zxp19821005 <zxp19821005 at 163 dot com> pkgname=deepchat-git _pkgname=DeepChat-pkgver=1.0.7.r0.g2087e5b-_electronversion=40+pkgver=1.1.2.r0.g0748902+_electronversion=43 _nodeversion=24 pkgrel=1-pkgdesc="A smart assistant that connects powerful AI to your personal world.(Use system-wide electron)"+pkgdesc="A smart assistant that connects powerful AI to your personal world." arch=('any') url="https://deepchat.thinkinai.xyz/" _ghurl="https://github.com/ThinkInAIXYZ/deepchat"@@ -41,33 +41,43 @@ printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short=7 HEAD)" } _get_app_dir() {- find "${srcdir}" -type f -name "resources.pak" -exec dirname {} + | head -n 1+ find "${srcdir}" -type d -name "node_modules" -prune -o -type f -name "resources.pak" -print0 | xargs -0 dirname | head -n 1 } _set_build_env() {- electronDist="/usr/lib/electron${_electronversion}"+ export ELECTRON_DIST="/usr/lib/electron${_electronversion}"+ export ELECTRON_OVERRIDE_DIST_PATH="${ELECTRON_DIST}" export ELECTRON_SKIP_BINARY_DOWNLOAD=1- export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/v//g')"- HOME="${srcdir}/.electron-gyp"- {- export PNPM_LINK_WORKSPACE_PACKAGES=true- export PNPM_FETCH_RETRY_MAXTIMEOUT=10000- export PNPM_CACHE_DIR="${srcdir}/.pnpm_cache"- export PNPM_STORE_DIR="${srcdir}/.pnpm_store"- export PNPM_VIRTUAL_STORE_DIR="${srcdir}/.pnpm_store"- export PNPM_SHAMEFULLY_HOIST=true- export PNPM_VIRTUAL_STORE_DIR_MAX_LENGTH=80- export PNPM_NODE_LINKER=hoisted- export PNPM_NETWORK_CONCURRENCY=32- }- if [[ "$(curl -s ipinfo.io/country)" == *"CN"* ]]; then- {- export NPM_CONFIG_REGISTRY="https://registry.npmmirror.com"- export npm_config_registry="https://registry.npmmirror.com"- export NPM_CONFIG_ELECTRON_MIRROR="https://registry.npmmirror.com/-/binary/electron/"- export NPM_CONFIG_ELECTRON_BUILDER_BINARIES_MIRROR="https://registry.npmmirror.com/-/binary/electron-builder-binaries/"- export NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"- export NVM_NODEJS_ORG_MIRROR="https://npmmirror.com/mirrors/node"- }+ export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/^v//')"+ export HOME="${srcdir}/.electron-gyp"+ export XDG_CACHE_HOME="${srcdir}/.cache"+ export XDG_CONFIG_HOME="${srcdir}/.config"+ export XDG_DATA_HOME="${srcdir}/.local/share"+ export XDG_STATE_HOME="${srcdir}/.local/state"+ export PNPM_HOME="${srcdir}/.pnpm/bin"+ export pnpm_config_cache_dir="${srcdir}/.pnpm_cache"+ export pnpm_config_store_dir="${srcdir}/.pnpm_store"+ export pnpm_config_global_dir="${srcdir}/.pnpm/global"+ export pnpm_config_state_dir="${srcdir}/.pnpm/state"+ export pnpm_config_node_linker=hoisted+ export pnpm_config_minimum_release_age=0+ export pnpm_config_update_notifier=false+ mkdir -p "${HOME}" "${PNPM_HOME}" "${pnpm_config_cache_dir}" "${pnpm_config_store_dir}" "${pnpm_config_global_dir}" "${pnpm_config_state_dir}"+ export PATH="${PNPM_HOME}:${PATH}"+ local _pnpmver="${_pnpmversion}"+ if [[ -z "${_pnpmver}" ]]; then+ _pnpmver="$(node -p "const pm=require('./package.json').packageManager; pm && pm.startsWith('pnpm@') ? pm.split('@')[1] : ''" 2>/dev/null)"+ fi+ if [[ -n "${_pnpmver}" ]]; then+ export COREPACK_HOME="${srcdir}/.corepack"+ install -dm755 "${srcdir}/.bin"+ if command -v corepack &>/dev/null; then+ corepack enable --install-directory "${srcdir}/.bin"+ export PATH="${srcdir}/.bin:${PATH}"+ corepack prepare "pnpm@${_pnpmver}" --activate+ else+ npm install -g "pnpm@${_pnpmver}" --prefix "${pnpm_config_global_dir}"+ export PATH="${pnpm_config_global_dir}/bin:${PATH}"+ fi fi } _ensure_local_nvm() {@@ -97,39 +107,49 @@ --categories="Utility" \ --name="${_pkgname}" \ --exec="${pkgname%-git} %U"+ _ensure_local_nvm _set_build_env- _ensure_local_nvm find src -type f -exec sed -i "s/process.resourcesPath/\'\/usr\/lib\/${pkgname%-git}\'/g" {} + sed -i "s/\"electron\": \"[^\"]*\"/\"electron\": \"${SYSTEM_ELECTRON_VERSION}\"/g" package.json- NODE_ENV=development pnpm install- NODE_ENV=development pnpm run install:sharp+ cp .env.example .env+ export NODE_ENV=development+ pnpm install --ignore-scripts+ pnpm run install:sharp } build() { cd "${srcdir}/${pkgname//-/.}"+ _ensure_local_nvm _set_build_env- _ensure_local_nvm- local _eb_arch case "${CARCH}" in- x86_64) _eb_arch="x64" ;;- aarch64) _eb_arch="arm64" ;;+ aarch64) + _eb_arch="arm64"+ _armrem="x64"+ ;;+ x86_64)+ _eb_arch="x64"+ _armrem="arm"+ ;; esac-- NODE_ENV=production pnpm run build- NODE_ENV=production pnpm -c exec "electron-builder --linux dir --${_eb_arch} -c.electronDist=${electronDist} --config=electron-builder.yml"+ export NODE_ENV=production+ # Fix TypeScript error: unreachable ?? operand+ sed -i "s/deps.resourcesPath ?? '\/usr\/lib\/deepchat' ?? ''/deps.resourcesPath ?? '\/usr\/lib\/deepchat'/" src/main/plugin/index.ts+ pnpm run build+ pnpm -c exec "electron-builder --linux dir --${_eb_arch} -c.electronDist=${ELECTRON_DIST} --config=electron-builder.yml" local _app_dir=$(_get_app_dir) find "${_app_dir}/resources" -type d \( \ -name "*darwin*" -o \ -name "*win32*" \+ -name "*${_armrem}*" \ \) -exec rm -rf {} + } package() { install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}" install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-git}" local _app_dir=$(_get_app_dir)- cp -a "${_app_dir}/resources/". "${pkgdir}/usr/lib/${pkgname%-git}/"+ cp -a "${_app_dir}/resources/." "${pkgdir}/usr/lib/${pkgname%-git}/"+ rm -rf "${pkgdir}/usr/lib/${pkgname%-git}/default_app.asar" install -Dm644 "${srcdir}/${pkgname//-/.}/resources/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png" install -Dm644 "${srcdir}/${pkgname//-/.}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications" install -Dm644 "${srcdir}/${pkgname//-/.}/README.md" -t "${pkgdir}/usr/share/licenses/${pkgname}" }-Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-09-20 09:32:46 | Low | 1 |
| 2026-06-25 12:22:11 | Clean | 0 |
| 2026-06-18 16:11:54 | Clean | 0 |