fix: install plugins via direct Gitea tarball URLs (core deps from npmjs)
Some checks failed
build-and-publish / build-test (push) Failing after 20s
build-and-publish / publish (push) Has been skipped

This commit is contained in:
2026-08-26 23:06:25 +07:00
parent 81159a22e8
commit f686c1413c
5 changed files with 95 additions and 63 deletions

View File

@@ -1,13 +1,25 @@
#!/usr/bin/env bash
# dsh-plugin-install.sh — install shared @deepseek-ai/* plugins from the Gitea
# npm registry into a DSH profile and wire them into cordis.patch.yml.
# Transitive @deepseek-ai/* core deps resolve from npmjs, not scoped to Gitea.
set -euo pipefail
PROFILE="${1:-web}"
DSH_HOME="${DSH_HOME:-$HOME/.dsh}"
TOKEN="${GITEA_NPM_TOKEN:-}"
REGISTRY="https://git.byte-mate.ru/api/packages/Coder/npm/"
BASE_URL="https://git.byte-mate.ru/api/packages/Coder/npm"
declare -a SPECS=()
add_plugin() {
local pkg="$1" version="$2"
local esc="${pkg//\//%2F}"
local basename="${pkg##*/}"
SPECS+=("$pkg@$BASE_URL/$esc/-/$version/$basename-$version.tgz")
}
add_plugin "@deepseek-ai/dsh-tool-lab" "0.1.0-rc.7" tool-lab
add_plugin "@deepseek-ai/dsh-web-search-searxng" "0.1.0-rc.7" web-search-searxng
add_plugin "@deepseek-ai/dsh-telegram-remote" "0.1.0" telegram-remote
PROFILE_DIR="$DSH_HOME/profiles/$PROFILE"
if [ ! -d "$PROFILE_DIR" ]; then
@@ -18,30 +30,15 @@ echo "Profile dir: $PROFILE_DIR"
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# 1. Ensure .npmrc scoped registry + token.
NPMRC="$PROFILE_DIR/.npmrc"
touch "$NPMRC"
SCOPE_LINE="@deepseek-ai:registry=$REGISTRY"
if ! grep -qF "$SCOPE_LINE" "$NPMRC"; then
echo "$SCOPE_LINE" >> "$NPMRC"
fi
if [ -n "$TOKEN" ]; then
sed -i.bak "/^\/\/.*:_authToken=/d" "$NPMRC" && rm -f "$NPMRC.bak"
printf '//%s/:_authToken=%s\n' "$(printf '%s' "$REGISTRY" | sed 's#^https://##; s#/$##')" "$TOKEN" >> "$NPMRC"
fi
echo "Wrote $NPMRC"
# 1. Remove stale versions.
pnpm --dir "$PROFILE_DIR" remove \
@deepseek-ai/dsh-tool-lab @deepseek-ai/dsh-web-search-searxng @deepseek-ai/dsh-telegram-remote >/dev/null 2>&1 || true
echo "Removed stale versions (if any)"
# 2. Remove stale link: dependencies.
pnpm --dir "$PROFILE_DIR" remove @deepseek-ai/dsh-web-search-searxng dsh-telegram-remote >/dev/null 2>&1 || true
echo "Removed stale link dependencies (if any)"
# 2. Add plugins as direct tarball URLs from the Gitea npm registry.
pnpm --dir "$PROFILE_DIR" add "${SPECS[@]}"
# 3. Install the shared plugins from the Gitea registry.
pnpm --dir "$PROFILE_DIR" add \
"@deepseek-ai/dsh-tool-lab@0.1.0-rc.7" \
"@deepseek-ai/dsh-web-search-searxng@0.1.0-rc.7" \
"@deepseek-ai/dsh-telegram-remote@0.1.0"
# 4. Idempotently append insert blocks to cordis.patch.yml.
# 3. Idempotently append insert blocks to cordis.patch.yml.
PATCH_FILE="$PROFILE_DIR/cordis.patch.yml"
node "$SCRIPT_DIR/patch-cordis.mjs" --file "$PATCH_FILE" --name "@deepseek-ai/dsh-tool-lab" --id tool-lab
node "$SCRIPT_DIR/patch-cordis.mjs" --file "$PATCH_FILE" --name "@deepseek-ai/dsh-web-search-searxng" --id web-search-searxng