sync: agent-ops from agentic-framework v1.1.55
This commit is contained in:
parent
c27b22b290
commit
c13bb40b68
5 changed files with 25 additions and 58 deletions
|
|
@ -1 +1 @@
|
|||
1.1.54
|
||||
1.1.55
|
||||
|
|
|
|||
|
|
@ -81,6 +81,7 @@ def as_object:
|
|||
.permissions = ((.permissions // {}) | as_object)
|
||||
| .permissions.deny = (
|
||||
(.permissions.deny | as_array)
|
||||
| map(select(. != "Read(./agent-ops/roadmap/archive/**)"))
|
||||
| append_unique("Read(./agent-task/archive/**)")
|
||||
)
|
||||
'
|
||||
|
|
@ -88,7 +89,7 @@ def as_object:
|
|||
agent_ops_merge_json_with_jq \
|
||||
"$file" \
|
||||
"$filter" \
|
||||
"Note: .claude/settings.json exists; add Read(./agent-task/archive/**) manually."
|
||||
"Note: .claude/settings.json exists; add Read(./agent-task/archive/**) and remove Read(./agent-ops/roadmap/archive/**) manually."
|
||||
}
|
||||
|
||||
agent_ops_claude_settings_complete() {
|
||||
|
|
@ -98,7 +99,9 @@ def as_array:
|
|||
if type == "array" then . elif . == null then [] else [.] end;
|
||||
|
||||
(.permissions.deny | as_array)
|
||||
| index("Read(./agent-task/archive/**)")
|
||||
as $deny
|
||||
| (($deny | index("Read(./agent-task/archive/**)")) != null)
|
||||
and (($deny | index("Read(./agent-ops/roadmap/archive/**)")) == null)
|
||||
'
|
||||
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
|
|
@ -121,8 +124,10 @@ def as_object:
|
|||
.permission = ((.permission // {}) | as_object)
|
||||
| .permission.read = ((.permission.read // {}) | as_object)
|
||||
| .permission.read["agent-task/archive/**"] = "deny"
|
||||
| del(.permission.read["agent-ops/roadmap/archive/**"])
|
||||
| .permission.glob = ((.permission.glob // {}) | as_object)
|
||||
| .permission.glob["agent-task/archive/**"] = "deny"
|
||||
| del(.permission.glob["agent-ops/roadmap/archive/**"])
|
||||
| .watcher = ((.watcher // {}) | as_object)
|
||||
| .watcher.ignore = (
|
||||
(.watcher.ignore | as_array)
|
||||
|
|
@ -134,7 +139,7 @@ def as_object:
|
|||
agent_ops_merge_json_with_jq \
|
||||
"$file" \
|
||||
"$filter" \
|
||||
"Note: opencode.json exists; add agent-task/archive/** read/glob deny and agent-task/archive/** plus agent-ops/roadmap/archive/** watcher ignore manually."
|
||||
"Note: opencode.json exists; add agent-task/archive/** read/glob deny, remove agent-ops/roadmap/archive/** read/glob hard deny, and add agent-task/archive/** plus agent-ops/roadmap/archive/** watcher ignore manually."
|
||||
}
|
||||
|
||||
agent_ops_opencode_config_complete() {
|
||||
|
|
@ -145,7 +150,9 @@ def as_array:
|
|||
|
||||
(.permission.read["agent-task/archive/**"] == "deny")
|
||||
and (.permission.glob["agent-task/archive/**"] == "deny")
|
||||
and ((.watcher.ignore | as_array) | index("agent-task/archive/**") and index("agent-ops/roadmap/archive/**"))
|
||||
and (.permission.read["agent-ops/roadmap/archive/**"] != "deny")
|
||||
and (.permission.glob["agent-ops/roadmap/archive/**"] != "deny")
|
||||
and ((.watcher.ignore | as_array) as $ignore | (($ignore | index("agent-task/archive/**")) != null) and (($ignore | index("agent-ops/roadmap/archive/**")) != null))
|
||||
'
|
||||
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
|
|
@ -155,46 +162,6 @@ and ((.watcher.ignore | as_array) | index("agent-task/archive/**") and index("ag
|
|||
fi
|
||||
}
|
||||
|
||||
agent_ops_warn_existing_roadmap_hard_deny() {
|
||||
local target_dir="$1"
|
||||
local found="0"
|
||||
local file
|
||||
|
||||
file="$target_dir/.claude/settings.json"
|
||||
if [[ -f "$file" ]]; then
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
if jq -e '
|
||||
def as_array:
|
||||
if type == "array" then . elif . == null then [] else [.] end;
|
||||
(.permissions.deny | as_array)
|
||||
| index("Read(./agent-ops/roadmap/archive/**)")
|
||||
' "$file" >/dev/null 2>&1; then
|
||||
found="1"
|
||||
fi
|
||||
elif grep -q "Read(./agent-ops/roadmap/archive/**)" "$file"; then
|
||||
found="1"
|
||||
fi
|
||||
fi
|
||||
|
||||
file="$target_dir/opencode.json"
|
||||
if [[ -f "$file" ]]; then
|
||||
if command -v jq >/dev/null 2>&1; then
|
||||
if jq -e '
|
||||
(.permission.read["agent-ops/roadmap/archive/**"] == "deny")
|
||||
or (.permission.glob["agent-ops/roadmap/archive/**"] == "deny")
|
||||
' "$file" >/dev/null 2>&1; then
|
||||
found="1"
|
||||
fi
|
||||
elif grep -Eq '"agent-ops/roadmap/archive/\*\*"[[:space:]]*:[[:space:]]*"deny"' "$file"; then
|
||||
found="1"
|
||||
fi
|
||||
fi
|
||||
|
||||
if [[ "$found" == "1" ]]; then
|
||||
echo " Warning: 기존 roadmap archive hard deny는 사용자 설정으로 보고 보존했습니다. 링크 기반 archive 읽기가 필요하면 수동 확인하세요."
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_agent_ops_ai_ignore_config() {
|
||||
local target_dir="$1"
|
||||
local ignore_file
|
||||
|
|
@ -248,5 +215,5 @@ EOF
|
|||
agent_ops_merge_opencode_config "$target_dir/opencode.json"
|
||||
fi
|
||||
|
||||
agent_ops_warn_existing_roadmap_hard_deny "$target_dir"
|
||||
echo " AI permission 표준 적용: roadmap archive hard deny 제거"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
name: init-agent-ops
|
||||
version: 1.1.3
|
||||
version: 1.1.4
|
||||
description: 프로젝트 상태를 판별하고 agent-ops 기본 스캐폴드를 생성하기 위한 초기 규칙
|
||||
---
|
||||
|
||||
|
|
@ -72,7 +72,7 @@ description: 프로젝트 상태를 판별하고 agent-ops 기본 스캐폴드
|
|||
| `agent-ops/rules/private/` | 폴더만 생성 (내용은 개인이 작성) |
|
||||
| `.gitignore`에 `agent-ops/rules/private/` 추가 | git 추적 제외 |
|
||||
| `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore` | 사용자 항목은 보존하고 Agent-Ops 관리 block에 `agent-task/archive/**`, `agent-ops/roadmap/archive/**` 추가 |
|
||||
| `.claude/settings.json`, `opencode.json` | 파일이 없으면 `agent-task/archive/**` 읽기/검색 제외 설정만 생성한다. `agent-ops/roadmap/archive/**`는 필요 시 링크로 읽을 수 있어야 하므로 hard read deny로 추가하지 않는다 |
|
||||
| `.claude/settings.json`, `opencode.json` | `agent-task/archive/**` 읽기/검색 제외 설정을 생성 또는 병합한다. `agent-ops/roadmap/archive/**`는 필요 시 링크로 읽을 수 있어야 하므로 hard read/glob deny에서 제거한다 |
|
||||
|
||||
에이전트별 파일명:
|
||||
|
||||
|
|
@ -180,8 +180,8 @@ common/rules.md와 내용이 중복되지 않도록 한다.
|
|||
- `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에는 사용자 항목을 건드리지 않고 Agent-Ops 관리 block만 추가하거나 교체한다
|
||||
- Agent-Ops 관리 block에는 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`를 넣는다
|
||||
- `.claude/settings.json`, `opencode.json`이 없으면 `agent-task/archive/**` 읽기/검색 제외 설정을 생성하고, 있으면 가능한 경우 기존 설정을 보존하며 필요한 제외 설정만 병합한다
|
||||
- `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않도록 AI ignore와 로드맵 규칙으로 제한하되, `.claude/settings.json`이나 `opencode.json`의 hard read deny에는 추가하지 않는다
|
||||
- 기존 `.claude/settings.json`이나 `opencode.json`에 `agent-ops/roadmap/archive/**` hard read/glob deny가 있으면 사용자 설정으로 보고 자동 삭제하지 않고 경고만 남긴다
|
||||
- `agent-ops/roadmap/archive/**`는 일반 작업에서 읽지 않도록 AI ignore와 로드맵 규칙으로 제한하되, `.claude/settings.json`이나 `opencode.json`의 hard read/glob deny에는 두지 않는다
|
||||
- 기존 `.claude/settings.json`이나 `opencode.json`에 `agent-ops/roadmap/archive/**` hard read/glob deny가 있으면 init-agent-ops 표준에 맞게 제거한다
|
||||
- 대상 루트에 `.agent-ops-source`가 있으면 AI ignore / permission 파일은 보강하지 않는다
|
||||
- `agent-task/archive/**`와 `agent-ops/roadmap/archive/**` 제외는 `.gitignore`에 추가하지 않는다
|
||||
|
||||
|
|
@ -239,8 +239,8 @@ common/rules.md와 내용이 중복되지 않도록 한다.
|
|||
- [ ] `.gitignore`에 `agent-ops/rules/private/` 항목이 추가되어 있는가
|
||||
- [ ] `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`가 포함되어 있는가
|
||||
- [ ] `.claude/settings.json`, `opencode.json`에 `agent-task/archive/**` 제외 설정이 있거나, 병합 불가 시 수동 병합 안내를 출력했는가
|
||||
- [ ] `.claude/settings.json`, `opencode.json`에 `agent-ops/roadmap/archive/**` hard read deny를 새로 추가하지 않았는가
|
||||
- [ ] 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 자동 삭제하지 않고 사용자 확인 대상으로 보고했는가
|
||||
- [ ] `.claude/settings.json`, `opencode.json`에 `agent-ops/roadmap/archive/**` hard read/glob deny가 남아 있지 않은가
|
||||
- [ ] 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가
|
||||
- [ ] `.gitignore`에 `agent-task/archive/**` 또는 `agent-ops/roadmap/archive/**`를 추가하지 않았는가
|
||||
- 검증 실패 시: 누락된 파일/항목을 사용자에게 알리고 해당 부분만 보완한다
|
||||
|
||||
|
|
|
|||
|
|
@ -31,8 +31,8 @@ agent-ops/bin/sync.sh --pull <target>
|
|||
- [ ] 현재 프로젝트 버전이 framework 버전과 일치하는가
|
||||
- [ ] `agent-ops/bin/entry-files.sh`의 모든 진입 파일이 갱신됐고, 내용이 framework의 `agent-ops/rules/common/rules.md`와 일치하는가
|
||||
- [ ] `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`가 포함되어 있는가
|
||||
- [ ] `.claude/settings.json`, `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-ops/roadmap/archive/**` hard read deny를 새로 추가하지 않았는가
|
||||
- [ ] 현재 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 자동 삭제하지 않고 사용자 확인 대상으로 보고했는가
|
||||
- [ ] `.claude/settings.json`, `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-ops/roadmap/archive/**` hard read/glob deny가 남아 있지 않은가
|
||||
- [ ] 현재 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가
|
||||
- [ ] agentic-framework의 AI ignore / permission 파일은 수정되거나 stage되지 않았는가
|
||||
|
||||
## 금지 사항
|
||||
|
|
|
|||
|
|
@ -74,8 +74,8 @@ agent-ops/roadmap/archive/**
|
|||
|
||||
- 관리 block 밖의 기존 ignore 항목은 사용자 소유로 보고 삭제, 정렬, 중복 제거하지 않는다.
|
||||
- `.claude/settings.json`과 `opencode.json`은 기존 사용자 설정을 보존하고 `agent-task/archive/**` hard read/glob deny만 보강한다.
|
||||
- `agent-ops/roadmap/archive/**`는 필요한 경우 링크로 읽을 수 있어야 하므로 `.claude/settings.json`이나 `opencode.json`의 hard read deny로 새로 추가하지 않는다.
|
||||
- 대상 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard read/glob deny가 있으면 사용자 설정으로 보고 자동 삭제하지 않고 경고만 남긴다.
|
||||
- `agent-ops/roadmap/archive/**`는 필요한 경우 링크로 읽을 수 있어야 하므로 `.claude/settings.json`이나 `opencode.json`의 hard read/glob deny로 두지 않는다.
|
||||
- 대상 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard read/glob deny가 있으면 init-agent-ops 표준에 맞게 제거한다.
|
||||
- `opencode.json`의 watcher ignore에는 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`를 둘 수 있다.
|
||||
|
||||
```bash
|
||||
|
|
@ -91,8 +91,8 @@ agent-ops/bin/sync.sh [target]
|
|||
- [ ] 대상 repo의 `agent-ops/rules/common/rules.md`가 현재 agentic-framework의 `agent-ops/rules/common/rules.md`와 일치하는가
|
||||
- [ ] agentic-framework에서 대상 프로젝트로 push한 경우, `agent-ops/bin/entry-files.sh`의 모든 진입 파일 내용이 현재 agentic-framework의 `agent-ops/rules/common/rules.md`와 일치하는가
|
||||
- [ ] framework에서 대상 프로젝트로 push한 경우, `.geminiignore`, `.aiexclude`, `.cursorignore`, `.clineignore`에 Agent-Ops 관리 block이 있고 그 안에 `agent-task/archive/**`와 `agent-ops/roadmap/archive/**`가 포함되어 있는가
|
||||
- [ ] framework에서 대상 프로젝트로 push한 경우, `.claude/settings.json`과 `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-ops/roadmap/archive/**` hard read deny를 새로 추가하지 않았는가
|
||||
- [ ] 대상 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 자동 삭제하지 않고 사용자 확인 대상으로 보고했는가
|
||||
- [ ] framework에서 대상 프로젝트로 push한 경우, `.claude/settings.json`과 `opencode.json`에 `agent-task/archive/**` hard deny가 있고 `agent-ops/roadmap/archive/**` hard read/glob deny가 남아 있지 않은가
|
||||
- [ ] 대상 프로젝트에 기존 `agent-ops/roadmap/archive/**` hard deny가 있으면 init-agent-ops 표준에 맞게 제거했는가
|
||||
- [ ] 일반 프로젝트에서 agentic-framework로 push한 경우, AI ignore / permission 파일이 agentic-framework에 유입되지 않았는가
|
||||
- [ ] 대상 repo에 commit/push 된 path가 방향별 허용 범위로 제한되었는가
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue