🔧 chore(sync): scope agents block to existing langs
This commit is contained in:
parent
b0ca842c72
commit
9481510154
|
|
@ -165,17 +165,92 @@ EOF
|
|||
fi
|
||||
|
||||
AGENTS_MD="$ROOT/AGENTS.md"
|
||||
if [ ! -f "$AGENTS_MD" ]; then
|
||||
cat >"$AGENTS_MD" <<'EOF'
|
||||
# Agent Instructions
|
||||
|
||||
请以 `.agents/` 下的规则为准:
|
||||
|
||||
- 入口:`.agents/index.md`
|
||||
- 语言规则:`.agents/tsl/index.md`、`.agents/cpp/index.md`、`.agents/python/index.md`、`.agents/markdown/index.md`
|
||||
EOF
|
||||
echo "Created AGENTS.md"
|
||||
AGENTS_BLOCK_START="<!-- playbook:agents:start -->"
|
||||
AGENTS_BLOCK_END="<!-- playbook:agents:end -->"
|
||||
AGENTS_BLOCK_TMP="$(mktemp 2>/dev/null || echo "$ROOT/.agents_block.$timestamp")"
|
||||
agents_langs=""
|
||||
if [ -d "$AGENTS_ROOT" ]; then
|
||||
for dir in "$AGENTS_ROOT"/*; do
|
||||
[ -d "$dir" ] || continue
|
||||
name="$(basename "$dir")"
|
||||
case "$name" in
|
||||
""|.*|*.bak.*) continue ;;
|
||||
esac
|
||||
if [ -f "$dir/index.md" ]; then
|
||||
agents_langs="${agents_langs:+$agents_langs }$name"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
if [ -z "$agents_langs" ]; then
|
||||
agents_langs="$AGENTS_NS"
|
||||
fi
|
||||
|
||||
langs_line=""
|
||||
for name in $agents_langs; do
|
||||
entry="`.agents/$name/index.md`"
|
||||
if [ -z "$langs_line" ]; then
|
||||
langs_line="$entry"
|
||||
else
|
||||
langs_line="$langs_line、$entry"
|
||||
fi
|
||||
done
|
||||
|
||||
{
|
||||
printf "%s\n" "$AGENTS_BLOCK_START"
|
||||
printf "%s\n\n" "请以 `.agents/` 下的规则为准:"
|
||||
printf "%s\n" "- 入口:`.agents/index.md`"
|
||||
if [ -n "$langs_line" ]; then
|
||||
printf "%s\n" "- 语言规则:$langs_line"
|
||||
else
|
||||
printf "%s\n" "- 语言规则:"
|
||||
fi
|
||||
printf "%s\n" "$AGENTS_BLOCK_END"
|
||||
} >"$AGENTS_BLOCK_TMP"
|
||||
|
||||
if [ ! -f "$AGENTS_MD" ]; then
|
||||
{
|
||||
printf "%s\n\n" "# Agent Instructions"
|
||||
cat "$AGENTS_BLOCK_TMP"
|
||||
} >"$AGENTS_MD"
|
||||
echo "Created AGENTS.md"
|
||||
else
|
||||
if grep -Fq "$AGENTS_BLOCK_START" "$AGENTS_MD"; then
|
||||
tmp="$(mktemp 2>/dev/null || echo "$ROOT/.agents_md.$timestamp")"
|
||||
awk -v start="$AGENTS_BLOCK_START" -v end="$AGENTS_BLOCK_END" -v block_file="$AGENTS_BLOCK_TMP" '
|
||||
BEGIN {
|
||||
while ((getline line < block_file) > 0) { block[++n] = line }
|
||||
close(block_file)
|
||||
inblock=0
|
||||
replaced=0
|
||||
}
|
||||
{
|
||||
if (!replaced && $0 == start) {
|
||||
for (i=1; i<=n; i++) print block[i]
|
||||
inblock=1
|
||||
replaced=1
|
||||
next
|
||||
}
|
||||
if (inblock) {
|
||||
if ($0 == end) { inblock=0 }
|
||||
next
|
||||
}
|
||||
print
|
||||
}
|
||||
' "$AGENTS_MD" >"$tmp"
|
||||
mv "$tmp" "$AGENTS_MD"
|
||||
echo "Updated AGENTS.md (playbook block)."
|
||||
else
|
||||
if grep -Fq ".agents/index.md" "$AGENTS_MD"; then
|
||||
echo "Skip: AGENTS.md already references .agents/index.md"
|
||||
else
|
||||
printf "\n" >>"$AGENTS_MD"
|
||||
cat "$AGENTS_BLOCK_TMP" >>"$AGENTS_MD"
|
||||
printf "\n" >>"$AGENTS_MD"
|
||||
echo "Appended playbook block to AGENTS.md"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
rm -f "$AGENTS_BLOCK_TMP"
|
||||
|
||||
echo "Synced agents ruleset to $AGENTS_DST."
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue