#!/usr/bin/env python3
"""Pre-accept Claude Code's per-folder trust dialog for a session's cwd, in the config dir the
session will actually use. Neither bypassPermissions nor --dangerously-skip-permissions skips
that dialog — only writing projects.<cwd>.hasTrustDialogAccepted=true does (what Conductor does).
Our shim gives each cswap account its own config dir, so trust must be seeded per-account.

Usage: pretrust.py <account_num> <cwd>"""
import json, os, sys
from pathlib import Path
try:
    from claude_swap.switcher import ClaudeAccountSwitcher
    import claude_swap.session as S
except Exception:
    for b in Path.home().glob(".local/share/uv/tools/claude-swap/lib/*/site-packages"):
        sys.path.insert(0, str(b))
    from claude_swap.switcher import ClaudeAccountSwitcher
    import claude_swap.session as S

def main():
    acct, cwd = sys.argv[1], os.path.realpath(sys.argv[2])
    sw = ClaudeAccountSwitcher()
    num, email, org = sw.resolve_account(acct)
    cur = sw._get_current_account()
    # cswap-run fast-paths the active default account onto ~/.claude; others get a profile dir.
    cfgdir = Path.home() / ".claude" if (cur == (email, org)) else S.session_dir_for(sw.backup_dir, num, email)
    cfgdir.mkdir(parents=True, exist_ok=True)
    f = cfgdir / ".claude.json"
    try: d = json.loads(f.read_text())
    except Exception: d = {}
    proj = d.setdefault("projects", {}).setdefault(cwd, {})
    if proj.get("hasTrustDialogAccepted") is True:
        return
    proj["hasTrustDialogAccepted"] = True
    tmp = f.with_suffix(".json.omnitmp")
    tmp.write_text(json.dumps(d)); os.replace(tmp, f)

if __name__ == "__main__":
    try: main()
    except Exception as e:
        sys.stderr.write(f"pretrust error: {e}\n")
