diff --git a/AGENTS.md b/AGENTS.md index b342beef..947074ea 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -11,8 +11,9 @@ feature 分支(自动记录 R0 与任务卡);任务中途不重复运行 precheck。 - **验收、请求审核、合入前**各运行一次 `make task-sync`;完成声明附 precheck、task-sync、 测试三段输出。 -- 合入后运行 `make task-finish` 回收 worktree 与分支;放弃未合入工作用 - `make task-finish ABANDON="--abandon <原因>"` 并记录原因。 +- 合入后**在 worktree 内**运行 `make task-finish` 回收 worktree 与分支(脚本会把 + 当前目录当 worktree 回收——在主检出运行会误删主检出,已加防护);放弃未合入 + 工作用 `make task-finish ABANDON="--abandon <原因>"` 并记录原因。 ## 提交与 PR diff --git a/Makefile b/Makefile index da54fac9..cbd8e6b2 100644 --- a/Makefile +++ b/Makefile @@ -10,10 +10,10 @@ BIN := bin/agent-system EMBED_DIR := $(BACKEND)/web/dist PLUGINS := plugins # 版本溯源(release-operations:运行制品须可对上固定组合)。无 tag 时 --always 给短 SHA。 -COMBO := core=$(shell git -C $(CORE) rev-parse --short HEAD 2>/dev/null)+backend=$(shell git -C $(BACKEND) rev-parse --short HEAD 2>/dev/null)+frontend=$(shell git -C $(FRONTEND) rev-parse --short HEAD 2>/dev/null)+ui=$(shell git -C $(UI) rev-parse --short HEAD 2>/dev/null)+documents=$(shell git -C modules/documents rev-parse --short HEAD 2>/dev/null) +COMBO := core=$(shell git -C $(CORE) rev-parse --short HEAD 2>/dev/null)+backend=$(shell git -C $(BACKEND) rev-parse --short HEAD 2>/dev/null)+frontend=$(shell git -C $(FRONTEND) rev-parse --short HEAD 2>/dev/null)+ui=$(shell git -C $(UI) rev-parse --short HEAD 2>/dev/null)+agentcmd=$(shell git -C deps/agent-command rev-parse --short HEAD 2>/dev/null)+documents=$(shell git -C modules/documents rev-parse --short HEAD 2>/dev/null) VERSION := $(shell git describe --tags --always --dirty 2>/dev/null)+$(COMBO) -.PHONY: help sync status build frontend test test-backend test-frontend test-ui test-core dev pin clean setup precheck task-start task-sync task-finish version +.PHONY: help sync status build frontend test test-backend test-frontend test-ui test-core test-agentcmd dev pin clean setup precheck task-start task-sync task-finish version version: @echo "agent-system $(VERSION)" @@ -82,7 +82,10 @@ test-frontend: contracts test-ui: contracts cd $(UI) && npm ci --no-fund --no-audit && npx tsc --noEmit && npx vitest run -test: test-core test-backend test-frontend test-ui +test-agentcmd: + cd deps/agent-command && go vet ./... && go test -count=1 ./... + +test: test-core test-backend test-frontend test-ui test-agentcmd # 运行演示(mock 模式):单二进制 + 示例插件 + 嵌入式存储,浏览器 http://127.0.0.1:8787 demo: build diff --git a/deps/agent-command b/deps/agent-command index 50f99d98..cc1ad774 160000 --- a/deps/agent-command +++ b/deps/agent-command @@ -1 +1 @@ -Subproject commit 50f99d989c0338c6f454f71ae1cc19a634913ed4 +Subproject commit cc1ad7749816afe129f81bcf0732d0ca7c789d10 diff --git a/modules/core b/modules/core index 4ee19795..a2050d84 160000 --- a/modules/core +++ b/modules/core @@ -1 +1 @@ -Subproject commit 4ee1979535cedce8ea0e6bc9044cbc09f8b5fb13 +Subproject commit a2050d848f645da565cbfb681e579b9902e9236d diff --git a/modules/documents b/modules/documents index 023daeff..210b492e 160000 --- a/modules/documents +++ b/modules/documents @@ -1 +1 @@ -Subproject commit 023daeffaa48aa50175a6242a9b592bac603f349 +Subproject commit 210b492e021d7da8b3cabbfdcdd0f5eb823e505b diff --git a/modules/frontend b/modules/frontend index ab387387..b020ab5d 160000 --- a/modules/frontend +++ b/modules/frontend @@ -1 +1 @@ -Subproject commit ab38738747d558592ce4570d33325e645e9d3165 +Subproject commit b020ab5dabe94b7e36002707fdef7d24f31feb72 diff --git a/modules/ui b/modules/ui index 77c4bacc..755de596 160000 --- a/modules/ui +++ b/modules/ui @@ -1 +1 @@ -Subproject commit 77c4baccce7bb57e872393c88b8e838b6079c692 +Subproject commit 755de596f731e3b3c6234410719757c9e4aa6446 diff --git a/scripts/task.sh b/scripts/task.sh index ada32dda..2e7a302b 100755 --- a/scripts/task.sh +++ b/scripts/task.sh @@ -118,6 +118,9 @@ cmd_finish() { head=$(git rev-parse HEAD) common=$(git rev-parse --git-common-dir); common=$(cd "$common" && pwd) mainrepo=$(dirname "$common") + # 防护(T0 事故教训):finish 必须在任务 worktree 内运行——本脚本把 $PWD 当 + # worktree 回收(rm -rf);从主检出运行会误删主检出。mainrepo==PWD 即主检出。 + [ "$(cd "$mainrepo" && pwd)" = "$PWD" ] && die "task-finish 须在任务 worktree 内运行(cd 到 worktree 再执行),防止误删主检出" git fetch -q origin "${TARGET_BRANCH}" 2>/dev/null || true if [ "$abandon" = "--abandon" ]; then local reason="${2:-}"; [ -n "$reason" ] || die "--abandon 需要原因:task.sh finish --abandon "