{
 "about": "zero 논리회로 원본. circuit/extract.py 가 설치된 파일에서 자동으로 만든다. 손으로 고치지 않는다. nodes 의 inner 는 그 파일이 실제로 실행하는 LangGraph 흐름이고, edges 의 'a/b' 는 a 안의 b 칸이다.",
 "version": "a84b0ab76431",
 "nodes": [
  {
   "id": "session_start",
   "label": "세션 시작",
   "kind": "fixed"
  },
  {
   "id": "prompt",
   "label": "광현님 발화",
   "kind": "fixed"
  },
  {
   "id": "claude",
   "label": "Claude 판단",
   "kind": "claude",
   "detail": "고정 · 불가항력"
  },
  {
   "id": "tool",
   "label": "도구 사용",
   "kind": "fixed"
  },
  {
   "id": "answer",
   "label": "답변",
   "kind": "fixed"
  },
  {
   "id": "run",
   "label": "실행",
   "kind": "fixed",
   "detail": "Claude Code 기본 도구"
  },
  {
   "id": "reply",
   "label": "Claude 답변 출력",
   "kind": "fixed"
  },
  {
   "id": "session_end",
   "label": "세션 끝",
   "kind": "fixed"
  },
  {
   "id": "boot",
   "label": "미니PC 부팅",
   "kind": "fixed"
  },
  {
   "id": "unit",
   "label": "systemd zero-boot.service",
   "kind": "hook",
   "detail": "/home/khkim/zero/.venv/bin/python /home/khkim/zero/boot.py",
   "source": "/home/khkim/.config/systemd/user/zero-boot.service"
  },
  {
   "id": "boot_py",
   "label": "boot.py",
   "kind": "hook",
   "source": "boot.py",
   "inner": {
    "start": "n0",
    "nodes": [
     {
      "id": "n0",
      "label": "시작"
     },
     {
      "id": "n1",
      "label": "services 폴더 읽기"
     },
     {
      "id": "n2",
      "label": "tmux 세션 만들기",
      "meta": {
       "이어짐": "창:claude"
      }
     },
     {
      "id": "n3",
      "label": "다음 창 확인"
     },
     {
      "id": "n4",
      "label": "창 띄우기",
      "meta": {
       "이어짐": "창:*"
      }
     },
     {
      "id": "n5",
      "label": "Funnel 확인"
     },
     {
      "id": "n6",
      "label": "Funnel 켜기",
      "meta": {
       "이어짐": "funnel"
      }
     },
     {
      "id": "n7",
      "label": "끝"
     }
    ],
    "edges": [
     {
      "from": "n5",
      "to": "n6",
      "label": "꺼짐"
     },
     {
      "from": "n5",
      "to": "n7",
      "label": "켜짐"
     },
     {
      "from": "n0",
      "to": "n1"
     },
     {
      "from": "n1",
      "to": "n2",
      "label": "없음"
     },
     {
      "from": "n1",
      "to": "n3",
      "label": "있음"
     },
     {
      "from": "n2",
      "to": "n3"
     },
     {
      "from": "n3",
      "to": "n5",
      "label": "다 봄"
     },
     {
      "from": "n3",
      "to": "n3",
      "label": "떠 있음"
     },
     {
      "from": "n3",
      "to": "n4",
      "label": "안 떠 있음"
     },
     {
      "from": "n4",
      "to": "n3"
     },
     {
      "from": "n6",
      "to": "n7"
     }
    ]
   }
  },
  {
   "id": "win_claude",
   "label": "tmux 창 zero:claude",
   "kind": "hook",
   "detail": "/home/khkim/zero/start.sh --continue",
   "source": "start.sh"
  },
  {
   "id": "win_circuit",
   "label": "tmux 창 zero:circuit",
   "kind": "hook",
   "detail": "/home/khkim/zero/.venv/bin/python /home/khkim/zero/services/circuit.py",
   "source": "services/circuit.py",
   "inner": {
    "start": "n0",
    "nodes": [
     {
      "id": "n0",
      "label": "시작"
     },
     {
      "id": "n1",
      "label": "회로 추출"
     },
     {
      "id": "n2",
      "label": "회로 원본 저장"
     },
     {
      "id": "n3",
      "label": "그림 만들기"
     },
     {
      "id": "n4",
      "label": "열린 화면에 알림"
     },
     {
      "id": "n5",
      "label": "끝"
     }
    ],
    "edges": [
     {
      "from": "n0",
      "to": "n5",
      "label": "관련 없음"
     },
     {
      "from": "n0",
      "to": "n3",
      "label": "그림 코드 바뀜"
     },
     {
      "from": "n0",
      "to": "n1",
      "label": "설치 파일 바뀜"
     },
     {
      "from": "n3",
      "to": "n5",
      "label": "그대로"
     },
     {
      "from": "n3",
      "to": "n4",
      "label": "바뀜"
     },
     {
      "from": "n1",
      "to": "n5",
      "label": "그대로"
     },
     {
      "from": "n1",
      "to": "n2",
      "label": "바뀜"
     },
     {
      "from": "n4",
      "to": "n5"
     },
     {
      "from": "n2",
      "to": "n5"
     }
    ]
   }
  },
  {
   "id": "funnel",
   "label": "Tailscale Funnel",
   "kind": "hook",
   "detail": ":8765 → 밖에서 접속"
  }
 ],
 "edges": [
  {
   "from": "session_start",
   "to": "prompt"
  },
  {
   "from": "prompt",
   "to": "claude"
  },
  {
   "from": "claude",
   "to": "tool",
   "label": "도구 사용"
  },
  {
   "from": "claude",
   "to": "answer",
   "label": "답변"
  },
  {
   "from": "tool",
   "to": "run"
  },
  {
   "from": "run",
   "to": "claude"
  },
  {
   "from": "answer",
   "to": "reply"
  },
  {
   "from": "reply",
   "to": "prompt",
   "label": "다음 발화"
  },
  {
   "from": "reply",
   "to": "session_end",
   "label": "종료"
  },
  {
   "from": "boot",
   "to": "unit"
  },
  {
   "from": "unit",
   "to": "boot_py/n0"
  },
  {
   "from": "win_claude",
   "to": "session_start"
  },
  {
   "from": "boot_py/n2",
   "to": "win_claude",
   "label": "띄움"
  },
  {
   "from": "boot_py/n4",
   "to": "win_claude",
   "label": "띄움"
  },
  {
   "from": "boot_py/n4",
   "to": "win_circuit/n0",
   "label": "띄움"
  },
  {
   "from": "boot_py/n6",
   "to": "funnel",
   "label": "띄움"
  }
 ],
 "tools": [
  {
   "name": "circuit",
   "kind": "장치",
   "usage": "논리회로 장치: zero 의 파일이 바뀌는 순간 회로 원본(circuit.json)을 다시 뽑고, 원본이 바뀌면 그림을 다시 그려 열린 화면에 알린다.",
   "source": "services/circuit.py"
  }
 ],
 "problems": [],
 "outside": [],
 "sources": [
  "/home/khkim/.config/systemd/user/zero-boot.service",
  "boot.py",
  "services/circuit.py"
 ]
}