feat(tasks): add inherited context and resilient LLM execution

Add read-only task context inheritance, ordered task-level LLM failover, live Worker controls, cascading task cleanup, FIFO task concurrency, cancellation diagnostics, UI updates, tests, build script, and changelog.
This commit is contained in:
pphua committed 2026-08-20 18:34:24 +08:00
1 parent 7090b034f8
commit 9793b522d9
82 files changed
+11094 -1712

No files matched your search

Executable
+65
View File
@@ -0,0 +1,65 @@
#!/usr/bin/env bash
# ARTEX 单二进制构建脚本:静态导出前端并嵌入 Go 二进制。
#
# 可选环境变量:
# ARTEX_TARGET_OS=linux 目标系统,默认当前系统
# ARTEX_TARGET_ARCH=amd64 目标架构,默认当前架构
# ARTEX_BUILD_VERSION=v0.3.0 构建版本,默认取 git describe
# ARTEX_OUTPUT=/path/to/artex 输出路径
# ARTEX_SKIP_NPM_CI=1 跳过 npm ci,复用现有依赖
# ARTEX_GOSUMDB=sum.golang.org Go checksum database
set -euo pipefail
cd "$(cd "$(dirname "$0")" && pwd)"
info() { printf '\033[36m[*]\033[0m %s\n' "$*"; }
ok() { printf '\033[32m[+]\033[0m %s\n' "$*"; }
die() { printf '\033[31m[x]\033[0m %s\n' "$*" >&2; exit 1; }
command -v go >/dev/null 2>&1 || die "未检测到 Go(项目需要 Go 1.26 或更高版本)"
command -v npm >/dev/null 2>&1 || die "未检测到 npm(前端静态构建需要 Node.js/npm)"
command -v rsync >/dev/null 2>&1 || die "未检测到 rsync"
ARTEX_GOSUMDB="${ARTEX_GOSUMDB:-sum.golang.org}"
ARTEX_TARGET_OS="${ARTEX_TARGET_OS:-$(GOSUMDB="$ARTEX_GOSUMDB" go env GOOS)}"
ARTEX_TARGET_ARCH="${ARTEX_TARGET_ARCH:-$(GOSUMDB="$ARTEX_GOSUMDB" go env GOARCH)}"
if [ -z "${ARTEX_BUILD_VERSION:-}" ]; then
if command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
ARTEX_BUILD_VERSION="$(git describe --tags --always --dirty)"
else
ARTEX_BUILD_VERSION="dev"
fi
fi
ARTEX_BINARY_NAME="artex"
[ "$ARTEX_TARGET_OS" = "windows" ] && ARTEX_BINARY_NAME="artex.exe"
ARTEX_OUTPUT="${ARTEX_OUTPUT:-dist/artex-${ARTEX_TARGET_OS}-${ARTEX_TARGET_ARCH}/${ARTEX_BINARY_NAME}}"
info "构建前端静态资源"
if [ "${ARTEX_SKIP_NPM_CI:-0}" != "1" ]; then
(cd web && npm ci)
fi
(cd web && npm run build:static)
info "同步前端资源到 server/webui/dist"
mkdir -p server/webui/dist
rsync -a --delete web/out/ server/webui/dist/
info "编译 ${ARTEX_TARGET_OS}/${ARTEX_TARGET_ARCH},版本 ${ARTEX_BUILD_VERSION}"
mkdir -p "$(dirname "$ARTEX_OUTPUT")"
GOSUMDB="$ARTEX_GOSUMDB" \
CGO_ENABLED=0 \
GOOS="$ARTEX_TARGET_OS" \
GOARCH="$ARTEX_TARGET_ARCH" \
go build \
-tags embedui \
-trimpath \
-ldflags "-s -w -X main.version=${ARTEX_BUILD_VERSION}" \
-o "$ARTEX_OUTPUT" \
./cmd/artex
ok "编译完成:$ARTEX_OUTPUT"
if command -v file >/dev/null 2>&1; then
file "$ARTEX_OUTPUT"
fi