deepchat-git
LOW
maintainer zxp19821005
0 votes
scanned 2026-11-04 00:25:23.536954
Why flagged
The package builds from a public Git repository and uses standard build tools; the variable-named package install refers to pnpm, a legitimate package manager fetching dependencies from npm, which is expected behavior for Node.js projects.
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 install refers to pnpm, a legitimate package manager fetching dependencies from npm, which is expected behavior for Node.js projects.
-
PKGBUILD:84
npm install -g "pnpm@${_pnpmver}" --prefix "${HOME}/.pnpm" \
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.3.r1.gbfa6d76
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
'nodejs'
23
)
24
makedepends=(
25
'npm'
26
'nvm'
27
'git'
28
'gendesk'
29
'jq'
30
)
31
source=(
32
"${pkgname//-/.}::git+${_ghurl}.git"
33
"${pkgname%-git}.sh"
34
)
35
sha256sums=('SKIP'
36
'cebedc3391cbab6d43f37fbf3a87ddaad16597cb5ea487a4d55b1f478d810082')
37
pkgver() {
38
cd "$(_get_project_dir)"
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_project_dir() {
44
local d
45
while IFS= read -r d; do
46
find "$d" -name "package.json" ! -path "*/node_modules/*" 2>/dev/null | grep -q . && { echo "$d"; return; }
47
done < <(find "${srcdir}" -maxdepth 1 -mindepth 1 -type d ! -name '.*')
48
}
49
_get_app_dir() {
50
find "${srcdir}" -type f -name "resources.pak" -print 2>/dev/null | while read f; do [ -d "${f%/*}/resources" ] && echo "${f%/*}" && break; done
51
}
52
_set_build_env() {
53
export ELECTRON_DIST="/usr/lib/electron${_electronversion}"
54
export ELECTRON_OVERRIDE_DIST_PATH="${ELECTRON_DIST}"
55
export ELECTRON_SKIP_BINARY_DOWNLOAD=1
56
export ELECTRON_BUILDER_OFFLINE=true
57
export SYSTEM_ELECTRON_VERSION="$(electron${_electronversion} -v | sed 's/^v//')"
58
export HOME="${srcdir}/.home"
59
export XDG_CACHE_HOME="${HOME}/.cache"
60
export XDG_CONFIG_HOME="${HOME}/.config"
61
export XDG_DATA_HOME="${HOME}/.local/share"
62
export XDG_STATE_HOME="${HOME}/.local/state"
63
export PNPM_HOME="${HOME}/.pnpm/bin"
64
export pnpm_config_cache_dir="${HOME}/.pnpm_cache"
65
export pnpm_config_store_dir="${HOME}/.pnpm_store"
66
export pnpm_config_global_dir="${HOME}/.pnpm/global"
67
export pnpm_config_state_dir="${HOME}/.pnpm/state"
68
export pnpm_config_node_linker=hoisted
69
export pnpm_config_minimum_release_age=0
70
export pnpm_config_update_notifier=false
71
export COREPACK_NPM_REGISTRY="${COREPACK_NPM_REGISTRY:-${NPM_CONFIG_REGISTRY:-https://registry.npmjs.org}}"
72
export COREPACK_HOME="${HOME}/.corepack"
73
mkdir -p "${HOME}" "${PNPM_HOME}" "${pnpm_config_cache_dir}" "${pnpm_config_store_dir}" "${pnpm_config_global_dir}" "${pnpm_config_state_dir}" "${COREPACK_HOME}"
74
export PATH="${PNPM_HOME}:${PATH}"
75
local _pnpmver=""
76
local _pkgjson="$(_get_project_dir)/package.json"
77
if [ -f "${_pkgjson}" ]; then
78
_pnpmver="$(grep -o '"packageManager"[^,]*' "${_pkgjson}" 2>/dev/null | grep -oE 'pnpm@[^"+]+' | head -n1 | sed 's/^pnpm@//')"
79
if [ -z "${_pnpmver}" ]; then
80
_pnpmver="$(grep -oE '"pnpm"[[:space:]]*:[[:space:]]*"[^"]+"' "${_pkgjson}" 2>/dev/null | grep -oE '[0-9][0-9.]*' | head -n1)"
81
fi
82
fi
83
if [ -n "${_pnpmver}" ]; then
84
npm install -g "pnpm@${_pnpmver}" --prefix "${HOME}/.pnpm" \
85
--registry "${COREPACK_NPM_REGISTRY}"
86
fi
87
}
88
_ensure_local_nvm() {
89
local NVM_DIR="${srcdir}/.nvm"
90
source /usr/share/nvm/init-nvm.sh || [[ $? != 1 ]]
91
nvm install "${_nodeversion}"
92
nvm use "${_nodeversion}"
93
}
94
_get_electron_version() {
95
_elec_ver=$(find "$(_get_project_dir)" -name "package.json" ! -path "*/node_modules/*" -print \
96
| xargs -I{} jq -r '(.devDependencies.electron // .dependencies.electron) // empty' {} 2>/dev/null \
97
| grep -oE '[0-9]+' | head -1)
98
[[ -z "${_elec_ver}" ]] && return 1
99
(( _elec_ver == _electronversion )) && c=32 || c=31
100
echo -e "Electron version: \033[1;${c}m${_elec_ver}$([[ $c -eq 31 ]] && echo " (expected ${_electronversion})")\033[0m"
101
}
102
prepare() {
103
cd "$(_get_project_dir)"
104
_get_electron_version
105
sed -i -e "
106
s/@electronversion@/${_electronversion}/g
107
s/@appname@/${pkgname%-git}/g
108
s/@runname@/app.asar/g
109
" "${srcdir}/${pkgname%-git}.sh"
110
gendesk -q -f -n \
111
--pkgname="${pkgname%-git}" \
112
--pkgdesc="${pkgdesc}" \
113
--categories="Utility" \
114
--name="${_pkgname}" \
115
--exec="${pkgname%-git} %U"
116
_ensure_local_nvm
117
_set_build_env
118
find src -type f -exec sed -i "s/process.resourcesPath/\'\/usr\/lib\/${pkgname%-git}\'/g" {} +
119
jq --arg ver "${SYSTEM_ELECTRON_VERSION}" '.devDependencies.electron = $ver' package.json > package.json.tmp && mv package.json.tmp package.json
120
cp .env.example .env
121
export NODE_ENV=development
122
pnpm install --ignore-scripts
123
pnpm run install:sharp
124
}
125
build() {
126
cd "$(_get_project_dir)"
127
_ensure_local_nvm
128
_set_build_env
129
local _eb_arch
130
case "${CARCH}" in
131
aarch64)
132
_eb_arch="arm64"
133
_armrem="x64"
134
;;
135
x86_64)
136
_eb_arch="x64"
137
_armrem="arm"
138
;;
139
esac
140
export NODE_ENV=production
141
sed -i "s/deps.resourcesPath ?? '\/usr\/lib\/deepchat' ?? ''/deps.resourcesPath ?? '\/usr\/lib\/deepchat'/" src/main/plugin/index.ts
142
pnpm run build
143
pnpm -c exec "electron-builder --linux dir --${_eb_arch} -c.electronDist=${ELECTRON_DIST} --config=electron-builder.yml"
144
local _app_dir="$(_get_app_dir)"
145
find "${_app_dir}/resources" -depth \( \
146
-name "*darwin*" -o \
147
-name "*win32*" \
148
-name "*${_armrem}*" \
149
\) -exec rm -rf {} +
150
}
151
package() {
152
install -Dm755 "${srcdir}/${pkgname%-git}.sh" "${pkgdir}/usr/bin/${pkgname%-git}"
153
install -Dm755 -d "${pkgdir}/usr/lib/${pkgname%-git}"
154
local _app_dir="$(_get_app_dir)"
155
rm -rf "${_app_dir}/resources/default_app.asar"
156
cp -a "${_app_dir}/resources/." "${pkgdir}/usr/lib/${pkgname%-git}/"
157
local _src="$(_get_project_dir)"
158
install -Dm644 "${_src}/resources/icon.png" "${pkgdir}/usr/share/pixmaps/${pkgname%-git}.png"
159
install -Dm644 "${_src}/${pkgname%-git}.desktop" -t "${pkgdir}/usr/share/applications"
160
}
161
Scan history
| Scanned at (UTC) | Severity | Rules |
|---|---|---|
| 2026-11-04 00:25:23 | Low | 1 |
| 2026-11-03 00:01:00 | Low | 1 |
| 2026-11-02 00:26:00 | Low | 1 |
| 2026-11-01 00:21:48 | Low | 1 |
| 2026-10-31 00:07:41 | Low | 1 |
| 2026-10-30 00:29:30 | Low | 1 |
| 2026-10-29 00:13:55 | Low | 1 |
| 2026-10-28 00:06:54 | Low | 1 |
| 2026-10-27 00:23:28 | Low | 1 |
| 2026-10-26 00:12:40 | Low | 1 |
| 2026-10-25 00:20:48 | Low | 1 |
| 2026-10-24 00:14:55 | Low | 1 |
| 2026-10-23 00:02:19 | Low | 1 |
| 2026-10-22 00:13:10 | Low | 1 |
| 2026-10-21 00:12:50 | Low | 1 |
| 2026-10-20 00:10:31 | Low | 1 |
| 2026-10-19 00:03:55 | Low | 1 |
| 2026-10-18 00:06:55 | Low | 1 |
| 2026-10-17 00:21:55 | Low | 1 |
| 2026-10-16 00:12:47 | Low | 1 |