Skip to content

feat: enhance policy editor#19

Merged
sehwan505 merged 6 commits intomainfrom
feat/enhance-policy-editor
Nov 16, 2025
Merged

feat: enhance policy editor#19
sehwan505 merged 6 commits intomainfrom
feat/enhance-policy-editor

Conversation

@baeyc0510
Copy link
Contributor

📋 Summary

정책 에디터 기능 개선 및 환경변수 관리 통합

🎯 Changes

1. Environment Variable Management (envutil package)

  • 새로운 internal/envutil 패키지 생성하여 .env 파일 관련 작업 중앙화
  • 여러 파일에 중복되어 있던 env 관련 함수 제거 및 통합
  • API 키 및 정책 경로를 .env 파일에서 일관되게 조회
  • 제공 함수: GetAPIKey(), GetPolicyPath(), LoadKeyFromEnvFile(), SaveKeyToEnvFile()

2. Policy Editor Improvements

  • 정책 저장 시 정책 파일 경로 자동 저장
  • 정책 경로 변경 시 기존 파일 자동 이동
  • 규칙 변경 감지 및 convert 실행 여부 확인
  • Linter 설정 파일 자동 생성을 위한 convert API 엔드포인트 통합
  • 규칙 변경 추적을 위한 originalRules 상태 관리

3. Convert Command Enhancement

  • .envPOLICY_PATH를 기본 입력 경로로 사용
  • 출력 디렉토리 기본값을 입력 파일과 동일한 위치로 설정
  • 하드코딩된 경로 제거

4. Init Command Enhancement

  • sym init 실행 시 .sym/.env 파일에 기본 POLICY_PATH 자동 설정
  • 기존 API 키 보존하면서 POLICY_PATH 추가

5. MCP Server Enhancement

  • 하드코딩된 경로 대신 .env에서 정책 경로 로드
  • ANTHROPIC_API_KEYOPENAI_API_KEY 모두 .env에서 조회 지원

📁 Files Changed

New Files

  • internal/envutil/env.go - 환경변수 관리 유틸리티

Modified Files

  • internal/cmd/api_key.go - envutil 사용, 중복 함수 제거
  • internal/cmd/convert.go - .env 경로 기본값 사용
  • internal/cmd/init.go - .env 초기화 추가
  • internal/engine/llm/engine.go - envutil 사용
  • internal/llm/client.go - envutil 사용
  • internal/mcp/server.go - envutil 사용, 정책 경로 .env 조회
  • internal/server/server.go - envutil 사용, convert API 추가
  • internal/server/static/policy-editor.js - 자동 convert 기능 추가

✅ Testing

  • go vet ./... - 통과
  • go test -short - 대부분 통과 (1개 Linux 전용 테스트 제외)
  • make build - 빌드 성공

🔄 Breaking Changes

없음. 기존 동작은 유지하면서 개선사항만 추가됨.

📝 Migration Guide

기존 사용자의 경우:

  1. .sym/.env 파일이 없다면 sym init 재실행 권장
  2. 기존 환경변수 설정은 그대로 동작
  3. .env 파일 우선순위: 시스템 환경변수 → .sym/.env

baeyc0510 and others added 6 commits November 15, 2025 20:26
- Remove policy change history feature
  * Delete internal/policy/history.go
  * Remove /api/policy/history endpoint from server
  * Remove history UI components (button, modal, event handlers)
  * Remove 'policy history' CLI command

- Set default language for new rules from global settings
  * New rules now inherit languages from policy.defaults.languages
  * Improves consistency across policy rules

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove auto-save-checkbox references (element was deleted from HTML)
  * Remove event listener
  * Remove from saveSettings() and loadSettings()

- Remove defaults-autofix references (element was deleted from HTML)
  * Remove from renderAll()
  * Remove from saveSettings()
  * Remove from applyPermissions()

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
- Remove auto-save timer and startAutoSave() function
- Remove autoSave from appState.settings
- Remove autoSave from localStorage loading/saving
- Clean up all autoSave references

This prevents the 30-second auto-save timer from triggering
and attempting to save incomplete/invalid policy data.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
…ements

Major Changes:

1. **Environment Variable Management (envutil package)**
   - Created internal/envutil package to centralize .env operations
   - Removed duplicate env-related functions across multiple files
   - Unified API key and policy path retrieval from .env files
   - Functions: GetAPIKey(), GetPolicyPath(), LoadKeyFromEnvFile(), SaveKeyToEnvFile()

2. **Policy Editor Improvements**
   - Add automatic policy path save on editor save
   - Implement file migration when policy path changes
   - Add convert prompt when rules are modified
   - Integrate convert API endpoint for linter config generation
   - Store original rules to detect changes

3. **Convert Command Enhancement**
   - Use POLICY_PATH from .env as default input
   - Output to same directory as input policy by default
   - Remove hardcoded paths

4. **Init Command Enhancement**
   - Create .sym/.env with default POLICY_PATH during init
   - Preserve existing API keys when adding POLICY_PATH

5. **MCP Server Enhancement**
   - Load policy path from .env instead of hardcoded path
   - Support both ANTHROPIC_API_KEY and OPENAI_API_KEY from .env

Files Modified:
- internal/envutil/env.go (new)
- internal/cmd/api_key.go
- internal/cmd/convert.go
- internal/cmd/init.go
- internal/engine/llm/engine.go
- internal/llm/client.go
- internal/mcp/server.go
- internal/server/server.go
- internal/server/static/policy-editor.js

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
Fix errcheck linter error by explicitly handling the file.Close() error
in deferred function. This resolves CI lint test failure.
Changes:
- Add originalRBAC to appState for tracking RBAC changes
- Implement createStableJSON helper for consistent object comparison
- Extend change detection to include both rules and RBAC
- Update conversion prompt to show what changed (rules/RBAC)
- Add .mcp.json to .gitignore

This enables the policy editor to detect RBAC changes and prompt
for linter config generation when either rules or RBAC are modified.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@sehwan505 sehwan505 merged commit 2b7e0e4 into main Nov 16, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants