🔧 chore(sync): scope agents block to existing langs
This commit is contained in:
parent
b0ca842c72
commit
9481510154
|
|
@ -165,17 +165,92 @@ EOF
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AGENTS_MD="$ROOT/AGENTS.md"
|
AGENTS_MD="$ROOT/AGENTS.md"
|
||||||
if [ ! -f "$AGENTS_MD" ]; then
|
AGENTS_BLOCK_START="<!-- playbook:agents:start -->"
|
||||||
cat >"$AGENTS_MD" <<'EOF'
|
AGENTS_BLOCK_END="<!-- playbook:agents:end -->"
|
||||||
# Agent Instructions
|
AGENTS_BLOCK_TMP="$(mktemp 2>/dev/null || echo "$ROOT/.agents_block.$timestamp")"
|
||||||
|
agents_langs=""
|
||||||
请以 `.agents/` 下的规则为准:
|
if [ -d "$AGENTS_ROOT" ]; then
|
||||||
|
for dir in "$AGENTS_ROOT"/*; do
|
||||||
- 入口:`.agents/index.md`
|
[ -d "$dir" ] || continue
|
||||||
- 语言规则:`.agents/tsl/index.md`、`.agents/cpp/index.md`、`.agents/python/index.md`、`.agents/markdown/index.md`
|
name="$(basename "$dir")"
|
||||||
EOF
|
case "$name" in
|
||||||
echo "Created AGENTS.md"
|
""|.*|*.bak.*) continue ;;
|
||||||
|
esac
|
||||||
|
if [ -f "$dir/index.md" ]; then
|
||||||
|
agents_langs="${agents_langs:+$agents_langs }$name"
|
||||||
fi
|
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."
|
echo "Synced agents ruleset to $AGENTS_DST."
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue