
    (<i>                     X   d Z ddlZddlmZ ddlmZ ddlmZmZ ej                  j                  d e ee      j                         j                  j                  j                              Zddedefd	Z e ee      d
z        fdededeeef   fdZ	 ddedededeeef   fdZy)uG   스킬 실행 모듈 - SKILL.md를 로드하고 claude -p CLI로 실행    N)Path)Optional)call_claudeestimate_tokensWORKSPACE_ROOTkey_namereturnc                    t         j                  j                  |       }|r|S g }t        j                         }|j                  |dz         |j                  |dz         t        j                         }|j                  |dz         |j                  |dz         |D ]  }	 |j                  d      }|j                         D ]  }|j                         }|j                  d      sd|vr)|j                  d      \  }}	}
|j                         }|j                  d      r|t        d      d j                         }|| k(  s|
j                         }|s|c c S   t!        d	|  d
      # t        t        t        f$ r Y w xY w)u   [deprecated] load_auth() 사용 권장. 하위호환용.

    환경변수 → .env.keys → .env 순서로 API 키를 찾아 반환.

    Raises:
        EnvironmentError: 키를 찾을 수 없는 경우
    z	.env.keysz.envutf-8encoding#=zexport Nz	API key 'z?' not found in environment variables, .env.keys, or .env files.)osenvirongetr   cwdappendhome	read_text
splitlinesstrip
startswith	partitionlenFileNotFoundErrorPermissionErrorOSErrorEnvironmentError)r   valuesearch_pathsr   r   env_filecontentlinefile_key_
file_valuekey_strippedvals                T/home/jay/workspace/.worktrees/task-2057-dev2/scripts/autoresearch/skill_executor.pyload_env_keyr+      s    JJNN8$E  "L ((*Ck)*f% 99;D{*+v&  	(('(:G**, #zz|??3'3d?*...*='!Z'~~/**95#/I0@#A#G#G#IL8+$**,C"
#& Yxj0ss
tt "?G< 		s%   $B"E2E2E2 E22F	F	skills
skill_name
skills_dirc                    t        |      | z  dz  }|j                         st        d|       |j                  d      }d}|}|j	                  d      r|j                  d      }d	}t        |d
d d
      D ]  \  }}	|	j                         dk(  s|} n |d	k7  rHdj                  |d
|       j                         }dj                  ||d
z   d       j                  d      }||fS )u  SKILL.md를 로드하여 (frontmatter, body) 반환.

    Args:
        skill_name: 스킬 이름 (디렉토리명)
        skills_dir: 스킬 디렉토리 경로

    Returns:
        (frontmatter, body) 튜플.
        frontmatter는 YAML 프론트매터 문자열 (--- 구분자 제외),
        body는 마크다운 본문.

    Raises:
        FileNotFoundError: SKILL.md 파일이 없는 경우
    zSKILL.mdzSKILL.md not found: r   r    z---T)keepends   N)start
)
r   existsr   r   r   r   	enumeraterstripjoinlstrip)
r-   r.   
skill_pathr#   frontmatterbodylines	end_indexir$   s
             r*   
load_skillrA   >   s    j!J.;J"6zl CDD""G"4G KD% ""D"1	 qr!4 	GAt{{}%		
 ?''%)"45<<>K775Q1299$?D    
skill_body
test_inputmodelc                     	 t        |||       }t        || xs dz         }t        |      }||||dS # t        $ r}dt        |      dd|dcY d}~S d}~ww xY w)u  claude -p CLI를 통해 스킬을 실행.

    Args:
        skill_body: SKILL.md 마크다운 본문 (system prompt)
        test_input: 사용자 입력 텍스트
        model: 사용할 모델

    Returns:
        {"output": str, "input_tokens": int, "output_tokens": int, "model": str}
        에러 시: {"output": "", "error": str, "input_tokens": 0, "output_tokens": 0, "model": str}
    )promptrE   systemr0   )outputinput_tokensoutput_tokensrE   r   )rI   errorrJ   rK   rE   N)r   r   	Exceptionstr)rC   rD   rE   rI   rJ   rK   es          r*   execute_skillrP   k   sx     
JeJO&zZ5E2'FG'/(*	
 	
  
V
 	

s   14 	AAAA)ANTHROPIC_API_KEY)zclaude-sonnet-4-6)__doc__r   pathlibr   typingr   autoresearch.claude_runnerr   r   r   r   rN   __file__resolveparent_WORKSPACE_ROOTr+   tuplerA   dictobjectrP    rB   r*   <module>r^      s    M 	   C**..c$x.00299@@GGH
-u3 -u -u` 36d?6Kh6V2W *3 *C *\abegjbj\k *` %!
!
!
 !
 
#v+	!
rB   