콘텐츠로 이동

v0.6.0

릴리스최신

v0.6.0은 Agent checkpoint와 Orchestrator state·durable execution의 PostgreSQL 저장 경로를 trusted scope 기반 persistence v2로 전환합니다. AES-256-GCM 암호화, 환경별 keyring, PgBouncer transaction pooling, RLS, 짧은 lease/fencing과 tombstone cascade delete가 한 계약으로 묶입니다.

  • llamon_checkpoint_v2llamon_runtime_v2 고정 schema, direct PostgreSQL migration과 runtime schema-version fail-closed gate
  • LangGraph 공식 EncryptedSerializer primitive를 쓰되 checkpoint·metadata·primitive blob·pending write를 모두 BYTEA 암호문으로 저장하는 SDK saver
  • tenant·principal·agent·conversation trusted scope, HKDF 파생 key와 record AAD, mixed-key read·re-encryption primitive
  • event loop·DSN·role·pool profile별 공유 asyncpg pool. transaction profile은 statement cache 0, 기본 min_size=0·max_size=5
  • Orchestrator long transaction을 short lease/fencing → connection 반환 → heartbeat → revision CAS로 교체
  • tombstone 우선 checkpoint/KV/session/workflow/execution/artifact cascade delete와 삭제 ID 재생성 차단
  • 별도 opt-in AgentWorkMemoryConfigAgent.with_work_memory(). 정상·가드레일 통과 응답만 bounded checkpoint memory로 commit
  • 평가 전 runtime에 연결되지 않는 LongTermMemoryPort와 disabled no-op
  • browser-facing memory config API에서 raw PostgreSQL DSN 제거
  • CLI의 모든 memory-capable scaffold를 MEMORY_BACKEND 기반 코드로 통일. in-memory로 시작해도 .env 변경과 생성된 scripts/migrate_memory.py만으로 PostgreSQL로 전환하며, owner-only 로컬 keyring과 Postgres Compose migration/keyring init을 함께 생성
  • Orchestrator scaffold에 ORCHESTRATOR_STATE_BACKEND env override와 정렬된 secure persistence env를 추가해 Python/TOML 수정 없이 backend 전환
  • 방향별 input/output guardrail 설정과 opt-in mode="stream" verified streaming. 승인 segment sequence, 원자적 DataPart, 부분 차단 replacement snapshot과 task 조회 복구 계약
  • AgenticProgram의 opt-in public_emissions: controller 선언 progress/answer만 output guardrail 뒤에 공개하고 child raw chunk는 internal로 유지

memory-disabled, 명시적 backend="in_memory", Orchestrator state_backend="in_memory", Agent WorkMemory default-off 경로는 기존 graph·LLM·state·wire를 유지합니다. 명시적 PostgreSQL은 keyring과 v2 schema가 없으면 in-memory로 폴백하지 않습니다. backend를 생략한 기존 dependency-ImportError 한정 fallback은 유지합니다.

guardrail은 mode를 지정하지 않으면 기존 strict 경로와 동일하고, 직렬화에도 새 키가 나타나지 않습니다. 단 정책 track 합성이 바뀌어 기존 설정에서도 다음 세 가지가 달라집니다.

  • block-only input 정책은 endpoint가 돌려준 modified_content로 요청을 재작성하지 않고 원본을 보존합니다. 입력 재작성이 필요하면 pii_action·regex_action으로 mask를 명시하세요.
  • mask 판정과 자유 형식 재작성이 함께 나오면 안전한 합성 순서가 없어 차단합니다. 이전에는 앞선 regex mask가 endpoint track을 평가하지 않고 통과시켰습니다.
  • mask 판정은 뒤 track의 차단을 가리지 않도록 남은 track을 모두 평가하고, 차단이 확정되면 남은 track을 평가하지 않습니다.
  • 내장 PIIFilter·contains_pii·prompt_action="mask"의 주민등록번호 패턴이 13자리 숫자 전체가 아니라 유효 날짜(YYMMDD) + 성별·국적 코드(내국인 1-4, 외국인등록번호 5-8) 구조를 요구합니다. 13자리 계좌번호 과마스킹이 사라지고, 날짜가 성립하지 않는 가짜 번호는 더 이상 마스킹되지 않습니다. sensitive_infokr_rrn 검출기와 판정이 일치합니다.

mode="stream" 전환 시 소비자 계약도 바뀝니다. text는 str, DataPart와 progress emission은 RuntimeOutput으로 섞여 전달되므로 청크를 문자열로 가정한 코드는 타입 분기가 필요합니다.

  • 기존 plaintext PostgreSQL 데이터는 v2에서 읽지 않습니다.
  • 명시적 PostgreSQL backend에는 keyring이 필수입니다.
  • memory 관리 API는 raw DSN을 반환하지 않습니다.
  • persistence v2 암호화 schema는 구버전 SDK가 읽을 수 없습니다.
  • secure agent ID는 scope와 파생 키의 일부입니다. runtime 이름 변경 API 대신 승인된 offline re-encryption/reset 절차를 사용해야 합니다.

운영 절차와 환경 변수는 메모리 영속화와 암호화를 참고하세요.