From c8fe5c4a72db98ba7fc1ee9366a26bd87af09a66 Mon Sep 17 00:00:00 2001 From: Lilith Date: Mon, 5 Jan 2026 13:43:55 -0800 Subject: [PATCH] =?UTF-8?q?chore(shared):=20=F0=9F=94=A7=20Hello!=20I'm=20?= =?UTF-8?q?a=20mock=20assistant=20responding=20to=20your=20message.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../__pycache__/config.cpython-312.pyc | Bin 4542 -> 4544 bytes .../claude_fallback.cpython-312.pyc | Bin 5238 -> 6246 bytes .../recovery/claude_fallback.py | 47 ++++++++++++------ 3 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/auto_commit_service/__pycache__/config.cpython-312.pyc b/src/auto_commit_service/__pycache__/config.cpython-312.pyc index 056b34be534fd24a26ab8a62f213d7417b631483..b527070e18e17fd260f4fffad734f4fabfde9c92 100644 GIT binary patch delta 42 xcmdm|d_bA^G%qg~0}wpZkI6i_k#`{{J6mpIaY<^?=FOZAY>X0{zwn=81OOQP4YU9N delta 40 vcmX@0yib|;G%qg~0}!0hi^)8`k#`{{D@$%-X5QwloDOV^Vw=D5pJD_6_yr8A diff --git a/src/auto_commit_service/recovery/__pycache__/claude_fallback.cpython-312.pyc b/src/auto_commit_service/recovery/__pycache__/claude_fallback.cpython-312.pyc index e35969e5ae586127edad17ac6e4439548d71e428..c16adb849f6f85b73c1d290e3515dd55ce9512eb 100644 GIT binary patch delta 1577 zcmZuwZ){Ul6uw-}<27{>$uN&RJ!tEoo zwX+1!u#9Aqmxu}Q!GsSilMlErohI^cIAC8kXVRs?#KgqFw?-BPG|_Y490B#@-QWA& zbIv{Y+bR5r`T(7#}M=Yd?zZXODZmf@)I5n5Z&o6GAe~wxcuO!U#`|o7S>;Lcb!O#836j z*7evo^|tjQww6bFV_IY&s>PD}Q)xoj0{aucK4H5gwgC;mNPa!_j{RdSR_@4gi%Lsg zZqa{s^jjVmW#rrSWZAF3;ru46gX4+aa@dJ)u5EAWl+lcgJKfxjZzu5E<+!tqyS=8p z2_~}=?p(vo+Da%7U|2C*LG^cBl;3e<%F7H~W1!q_3ftJbl?<5guCD=pPo(^wWTxC* zA2zeia}0*b9Ls}Y&dgJ8V}T#Skl3nNft-Z#sE0u)j4(QfEJ&X%37A!^GAgTb`oofd zt4~;6@a(TYD5)s>A3f46dOu&&!cRhNsGLNq@F9!PXY4ul6P`ySSbLU1pS0rhJZ5m8 zLw`?@YgN;i=1EA4%D;mg1pNpz!h*9?$DGS%>92({?aeUcl?D(c5@W^LccUoBSs!j56GQloFsv#$dd^9%=s7wN;2TjPTFJ zs-UqL$%vvtJX?l;G1dV%{0RRMpAuI7!+02dz#c%u_zF9WgZA`=y)jME4#yOu;WXt? zVsJ37DTkxU!%7cH3>r2PJCaDowFF7&wU+9vmQao!i;%b|BH4X6iPlt#x%h2{IVfS~heBS>l0H6MAi= z9AMu=o>DJBme8W4oqH26Zju&OGEP^#YV4svp750Zdn7{NP|!(Uq7gSz*hHa@LOq2l z3JnxO6pR# zw4j8RBxhdoFG&7HDX`@BEc0xo_&Z{K;;7@a^l7vxBFQ=4I@2ZpjHb?OJL&mFu7PcKslQmt28)DPV*u zHkh5_<809lJ3Lu-BgykC!ZcO0ecV23pZD&_xvzPry*cak#_Q4R`{&DF%bUCA&0RlP z9e)%})b-EgTX5DBc+X~hs(oF@HguyJcQkT0YBmAC>B1dN+)a18A11d#3^?6t#FRG~ zxXrSsp1sx9x?xX{ovGr%JQL(WHB-+5590VHxWb^lV2VW4#Gy#UsB*ysP1Xy=DKI2P zcEj%a1(&bdDC0U>09y6}8z0h08=cakOrS@Ah_vcIy0UU5c3zf>2!1(NPMemODJ8Fi F!{1J(f4u+z delta 886 zcmZ9KT}TvB6vywKJG-;a?vCRJt*)69QSRVJn}}w*8=Ed|83x%)>9Q=l>$;|{-Weme zm9;Mrl4zL+g$Sg2a4`s52%?t?%`bY%ml%5P*;0ZYg3hS*;DK}IchC9XGiUCd@9tkN zVZ(0c5m=FME%8vy3Zu9%J6T?CkMU6+oJnyA^|4XmK6~9h&dB28>$ePkoF61-2yWGC z*edOl*=^w$u+ao*0yk~?(Tt|w0 zT-WEWYYE1HJsrjdS~zi__m z@)du(uiLMi;xsunBD3@?2zARySXE)wq0+-s+&8g!rXX7|TRqqGvf-5{=h+lnrcAn3{8~~r)0%Ca9o4*FY)7{^ zP;c?bCT>F)B;!Oa+=DFWTqqPxMnWO#g0#*JCgbtMaGV str | None: - """Try to extract a commit hash from Claude's output.""" - # Look for patterns like "commit abc1234" or "[abc1234]" - patterns = [ - r"commit\s+([a-f0-9]{7,40})", - r"\[([a-f0-9]{7,40})\]", - r"([a-f0-9]{7,40})\s+HEAD", - ] +async def _get_latest_commit_hash(repo: "Repository") -> str | None: + """Get the latest commit hash from the repository. - for pattern in patterns: - match = re.search(pattern, output, re.IGNORECASE) - if match: - return match.group(1) + Args: + repo: Repository to query + + Returns: + Latest commit hash or None if failed + """ + try: + proc = await asyncio.create_subprocess_exec( + "git", + "log", + "-1", + "--format=%H", + stdout=asyncio.subprocess.PIPE, + stderr=asyncio.subprocess.PIPE, + cwd=str(repo.path), + ) + + stdout_bytes, _ = await asyncio.wait_for( + proc.communicate(), + timeout=5, + ) + + if proc.returncode == 0 and stdout_bytes: + commit_hash = stdout_bytes.decode().strip() + logger.debug(f"Got commit hash {commit_hash} from {repo.name}") + return commit_hash + + except Exception as e: + logger.warning(f"Failed to get commit hash from {repo.name}: {e}") return None