{
  "directed": false,
  "multigraph": false,
  "graph": {},
  "nodes": [
    {
      "id": "monthly_bdp_dsv_login_block_heavy_resources",
      "label": "_block_heavy_resources()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "_block_heavy_resources()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L59"
    },
    {
      "id": "monthly_bdp_dsv_login_dismiss_tutorial",
      "label": "_dismiss_tutorial()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "_dismiss_tutorial()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L272"
    },
    {
      "id": "monthly_bdp_dsv_login_log",
      "label": "log()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "log()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L29"
    },
    {
      "id": "monthly_bdp_dsv_login_login_bdp",
      "label": "login_bdp()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "login_bdp()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L69"
    },
    {
      "id": "monthly_bdp_dsv_login_login_dsv",
      "label": "login_dsv()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "login_dsv()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L197"
    },
    {
      "id": "monthly_bdp_dsv_login_logout_bdp",
      "label": "logout_bdp()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "logout_bdp()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L142"
    },
    {
      "id": "monthly_bdp_dsv_login_logout_dsv",
      "label": "logout_dsv()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "logout_dsv()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L284"
    },
    {
      "id": "monthly_bdp_dsv_login_main",
      "label": "main()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "main()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L323"
    },
    {
      "id": "monthly_bdp_dsv_login_parse_env",
      "label": "parse_env()",
      "_callable": true,
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "parse_env()",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L42"
    },
    {
      "id": "sapgui800_patch_check_extract_table",
      "label": "extract_table()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "extract_table()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L117"
    },
    {
      "id": "sapgui800_patch_check_find_launchpad_frame",
      "label": "find_launchpad_frame()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "find_launchpad_frame()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L108"
    },
    {
      "id": "sapgui800_patch_check_log",
      "label": "log()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "log()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L33"
    },
    {
      "id": "sapgui800_patch_check_main",
      "label": "main()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "main()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L191"
    },
    {
      "id": "sapgui800_patch_check_page_like_wait",
      "label": "page_like_wait()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "page_like_wait()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L185"
    },
    {
      "id": "sapgui800_patch_check_parse_env",
      "label": "parse_env()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "parse_env()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L46"
    },
    {
      "id": "sapgui800_patch_check_sso_login",
      "label": "sso_login()",
      "_callable": true,
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "sso_login()",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L62"
    },
    {
      "id": "agent_test_github_login_attempt_login",
      "label": "attempt_login()",
      "_callable": true,
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "code",
      "norm_label": "attempt_login()",
      "source_file": "agent_test_github_login.py",
      "source_location": "L54"
    },
    {
      "id": "agent_test_github_login_get_credentials",
      "label": "get_credentials()",
      "_callable": true,
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "code",
      "norm_label": "get_credentials()",
      "source_file": "agent_test_github_login.py",
      "source_location": "L47"
    },
    {
      "id": "agent_test_github_login_load_env",
      "label": "load_env()",
      "_callable": true,
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "code",
      "norm_label": "load_env()",
      "source_file": "agent_test_github_login.py",
      "source_location": "L28"
    },
    {
      "id": "agent_test_github_login_main",
      "label": "main()",
      "_callable": true,
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "code",
      "norm_label": "main()",
      "source_file": "agent_test_github_login.py",
      "source_location": "L150"
    },
    {
      "id": "feishu_media_capture_full_page",
      "label": "capture_full_page()",
      "_callable": true,
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "code",
      "norm_label": "capture_full_page()",
      "source_file": "feishu_media.py",
      "source_location": "L66"
    },
    {
      "id": "feishu_media_cdp_full_page",
      "label": "_cdp_full_page()",
      "_callable": true,
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "code",
      "norm_label": "_cdp_full_page()",
      "source_file": "feishu_media.py",
      "source_location": "L39"
    },
    {
      "id": "feishu_media_media_tag",
      "label": "media_tag()",
      "_callable": true,
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "code",
      "norm_label": "media_tag()",
      "source_file": "feishu_media.py",
      "source_location": "L109"
    },
    {
      "id": "feishu_media_note_error",
      "label": "_note_error()",
      "_callable": true,
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "code",
      "norm_label": "_note_error()",
      "source_file": "feishu_media.py",
      "source_location": "L29"
    },
    {
      "id": "ibp_activate_planning_areas_close_dialog",
      "label": "close_dialog()",
      "_callable": true,
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "code",
      "norm_label": "close_dialog()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L416"
    },
    {
      "id": "ibp_activate_planning_areas_go_home",
      "label": "go_home()",
      "_callable": true,
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "code",
      "norm_label": "go_home()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L174"
    },
    {
      "id": "ibp_activate_planning_areas_log",
      "label": "log()",
      "_callable": true,
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "code",
      "norm_label": "log()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L41"
    },
    {
      "id": "ibp_activate_planning_areas_login",
      "label": "login()",
      "_callable": true,
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "code",
      "norm_label": "login()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L130"
    },
    {
      "id": "ibp_activate_planning_areas_main",
      "label": "main()",
      "_callable": true,
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "code",
      "norm_label": "main()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L434"
    },
    {
      "id": "ibp_activate_planning_areas_parse_env",
      "label": "parse_env()",
      "_callable": true,
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "code",
      "norm_label": "parse_env()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L114"
    },
    {
      "id": "ibp_activate_planning_areas_classify_result",
      "label": "classify_result()",
      "_callable": true,
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "code",
      "norm_label": "classify_result()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L379"
    },
    {
      "id": "ibp_activate_planning_areas_is_terminal",
      "label": "is_terminal()",
      "_callable": true,
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "code",
      "norm_label": "is_terminal()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L344"
    },
    {
      "id": "ibp_activate_planning_areas_wait_for_activation_result",
      "label": "wait_for_activation_result()",
      "_callable": true,
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "code",
      "norm_label": "wait_for_activation_result()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L306"
    },
    {
      "id": "ibp_activate_planning_areas_extract_js_strings",
      "label": "_extract_js_strings()",
      "_callable": true,
      "_origin": "ast",
      "community": 6,
      "community_name": "IBP JS String Extraction",
      "file_type": "code",
      "norm_label": "_extract_js_strings()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L52"
    },
    {
      "id": "ibp_activate_planning_areas_selfcheck",
      "label": "selfcheck()",
      "_callable": true,
      "_origin": "ast",
      "community": 6,
      "community_name": "IBP JS String Extraction",
      "file_type": "code",
      "norm_label": "selfcheck()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L76"
    },
    {
      "id": "ibp_activate_planning_areas_click_activate",
      "label": "click_activate()",
      "_callable": true,
      "_origin": "ast",
      "community": 7,
      "community_name": "IBP Activate Click",
      "file_type": "code",
      "norm_label": "click_activate()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L289"
    },
    {
      "id": "ibp_activate_planning_areas_get_pa_tiles",
      "label": "get_pa_tiles()",
      "_callable": true,
      "_origin": "ast",
      "community": 8,
      "community_name": "IBP Planning Area Tiles",
      "file_type": "code",
      "norm_label": "get_pa_tiles()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L203"
    },
    {
      "id": "ibp_activate_planning_areas_open_tile",
      "label": "open_tile()",
      "_callable": true,
      "_origin": "ast",
      "community": 9,
      "community_name": "IBP Tile Opening",
      "file_type": "code",
      "norm_label": "open_tile()",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L241"
    },
    {
      "id": "monthly_bdp_dsv_login",
      "label": "monthly_bdp_dsv_login.py",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "code",
      "norm_label": "monthly_bdp_dsv_login.py",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L1"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_143",
      "label": "Log out of BDP via user profile dropdown -> Logout. The SPA shell renders\u2026",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "log out of bdp via user profile dropdown -> logout. the spa shell renders...",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L143"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_2",
      "label": "Log into BDP and DSV websites monthly on the 10th, then log out. This script\u2026",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "log into bdp and dsv websites monthly on the 10th, then log out. this script...",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L2"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_273",
      "label": "Dismiss the 'Welcome to myDSV - Get started with a tutorial' dialog if present.",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "dismiss the 'welcome to mydsv - get started with a tutorial' dialog if present.",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L273"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_285",
      "label": "Log out of DSV via profile menu -> Log out.",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "log out of dsv via profile menu -> log out.",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L285"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_30",
      "label": "Progress trace -> log file ONLY. Stdout is reserved for the finish\u2026",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "progress trace -> log file only. stdout is reserved for the finish...",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L30"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_43",
      "label": "Parse .env file and return dict of key->value.",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "parse .env file and return dict of key->value.",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L43"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_60",
      "label": "Abort image/media/font requests \u2014 cuts request count on the lossy international\u2026",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "abort image/media/font requests \u2014 cuts request count on the lossy international...",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L60"
    },
    {
      "id": "monthly_bdp_dsv_login_rationale_70",
      "label": "Log into www.bdpsmart.com. Server in Philadelphia (F5 LB): high RTT +\u2026",
      "_origin": "ast",
      "community": 0,
      "community_name": "BDP/DSV Login Automation",
      "file_type": "rationale",
      "norm_label": "log into www.bdpsmart.com. server in philadelphia (f5 lb): high rtt +...",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L70"
    },
    {
      "id": "sapgui800_patch_check",
      "label": "sapgui800_patch_check.py",
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "code",
      "norm_label": "sapgui800_patch_check.py",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L1"
    },
    {
      "id": "sapgui800_patch_check_rationale_118",
      "label": "Wait for the download table, parse rows, return list of patch dicts.",
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "rationale",
      "norm_label": "wait for the download table, parse rows, return list of patch dicts.",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L118"
    },
    {
      "id": "sapgui800_patch_check_rationale_186",
      "label": "Frame object has no wait_for_timeout in some API versions; fall back to sync\u2026",
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "rationale",
      "norm_label": "frame object has no wait_for_timeout in some api versions; fall back to sync...",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L186"
    },
    {
      "id": "sapgui800_patch_check_rationale_2",
      "label": "Monthly SAP GUI 800 Patch Check. Logs into SAP for Me (Software Center) and\u2026",
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "rationale",
      "norm_label": "monthly sap gui 800 patch check. logs into sap for me (software center) and...",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L2"
    },
    {
      "id": "sapgui800_patch_check_rationale_34",
      "label": "Progress trace -> log file ONLY. Stdout is reserved for the finish\u2026",
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "rationale",
      "norm_label": "progress trace -> log file only. stdout is reserved for the finish...",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L34"
    },
    {
      "id": "sapgui800_patch_check_rationale_63",
      "label": "Two-step SAP Universal ID login on accounts.sap.com.",
      "_origin": "ast",
      "community": 1,
      "community_name": "SAP GUI Patch Check",
      "file_type": "rationale",
      "norm_label": "two-step sap universal id login on accounts.sap.com.",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L63"
    },
    {
      "id": "agent_test_github_login",
      "label": "agent_test_github_login.py",
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "code",
      "norm_label": "agent_test_github_login.py",
      "source_file": "agent_test_github_login.py",
      "source_location": "L1"
    },
    {
      "id": "path",
      "label": "Path",
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "code",
      "norm_label": "path",
      "source_file": "",
      "source_location": ""
    },
    {
      "id": "agent_test_github_login_rationale_2",
      "label": "GitHub login test using Playwright (sync API). - Reads GITHUB_* credentials\u2026",
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "rationale",
      "norm_label": "github login test using playwright (sync api). - reads github_* credentials...",
      "source_file": "agent_test_github_login.py",
      "source_location": "L2"
    },
    {
      "id": "agent_test_github_login_rationale_29",
      "label": "Parse KEY=VALUE lines into a dict. Values are never logged here.",
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "rationale",
      "norm_label": "parse key=value lines into a dict. values are never logged here.",
      "source_file": "agent_test_github_login.py",
      "source_location": "L29"
    },
    {
      "id": "agent_test_github_login_rationale_48",
      "label": "Return (username, password) or (None, None) if the keys are absent.",
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "rationale",
      "norm_label": "return (username, password) or (none, none) if the keys are absent.",
      "source_file": "agent_test_github_login.py",
      "source_location": "L48"
    },
    {
      "id": "agent_test_github_login_rationale_55",
      "label": "Drive the browser through GitHub login and report the outcome.",
      "_origin": "ast",
      "community": 2,
      "community_name": "GitHub Login Test",
      "file_type": "rationale",
      "norm_label": "drive the browser through github login and report the outcome.",
      "source_file": "agent_test_github_login.py",
      "source_location": "L55"
    },
    {
      "id": "feishu_media",
      "label": "feishu_media.py",
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "code",
      "norm_label": "feishu_media.py",
      "source_file": "feishu_media.py",
      "source_location": "L1"
    },
    {
      "id": "feishu_media_rationale_110",
      "label": "Return the MEDIA: delivery line for a screenshot path ('' if None).",
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "rationale",
      "norm_label": "return the media: delivery line for a screenshot path ('' if none).",
      "source_file": "feishu_media.py",
      "source_location": "L110"
    },
    {
      "id": "feishu_media_rationale_2",
      "label": "Shared helpers for cron login scripts: capture full-page screenshots and emit\u2026",
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "rationale",
      "norm_label": "shared helpers for cron login scripts: capture full-page screenshots and emit...",
      "source_file": "feishu_media.py",
      "source_location": "L2"
    },
    {
      "id": "feishu_media_rationale_40",
      "label": "CDP Page.captureScreenshot \u2014 bypasses Playwright's font-load wait. Playwright's\u2026",
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "rationale",
      "norm_label": "cdp page.capturescreenshot \u2014 bypasses playwright's font-load wait. playwright's...",
      "source_file": "feishu_media.py",
      "source_location": "L40"
    },
    {
      "id": "feishu_media_rationale_67",
      "label": "Full-page screenshot -> ~/.hermes/logs/shots/<label>_<ts>.png Strategy:\u2026",
      "_origin": "ast",
      "community": 3,
      "community_name": "Feishu Media Capture",
      "file_type": "rationale",
      "norm_label": "full-page screenshot -> ~/.hermes/logs/shots/<label>_<ts>.png strategy:...",
      "source_file": "feishu_media.py",
      "source_location": "L67"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_175",
      "label": "Return to the FLP Home page via the SAP logo.",
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "rationale",
      "norm_label": "return to the flp home page via the sap logo.",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L175"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_42",
      "label": "Append a timestamped progress line to the log file (not stdout).",
      "_origin": "ast",
      "community": 4,
      "community_name": "IBP Activation Login",
      "file_type": "rationale",
      "norm_label": "append a timestamped progress line to the log file (not stdout).",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L42"
    },
    {
      "id": "ibp_activate_planning_areas",
      "label": "ibp_activate_planning_areas.py",
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "code",
      "norm_label": "ibp_activate_planning_areas.py",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L1"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_2",
      "label": "SAP IBP - Monthly: activate all planning areas under 'My Planning Areas'. Full\u2026",
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "rationale",
      "norm_label": "sap ibp - monthly: activate all planning areas under 'my planning areas'. full...",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L2"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_307",
      "label": "Poll the activation dialog + page status until a terminal state. Returns\u2026",
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "rationale",
      "norm_label": "poll the activation dialog + page status until a terminal state. returns...",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L307"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_380",
      "label": "Dialog Status field is authoritative; counters add detail.",
      "_origin": "ast",
      "community": 5,
      "community_name": "IBP Activation Logic",
      "file_type": "rationale",
      "norm_label": "dialog status field is authoritative; counters add detail.",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L380"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_53",
      "label": "Extract the actual string values passed to page.evaluate(...) via AST. Reading\u2026",
      "_origin": "ast",
      "community": 6,
      "community_name": "IBP JS String Extraction",
      "file_type": "rationale",
      "norm_label": "extract the actual string values passed to page.evaluate(...) via ast. reading...",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L53"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_77",
      "label": "Validate every embedded JS string with node before launching the browser.\u2026",
      "_origin": "ast",
      "community": 6,
      "community_name": "IBP JS String Extraction",
      "file_type": "rationale",
      "norm_label": "validate every embedded js string with node before launching the browser....",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L77"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_290",
      "label": "Click the Activate toolbar split button, then confirm in the popup.",
      "_origin": "ast",
      "community": 7,
      "community_name": "IBP Activate Click",
      "file_type": "rationale",
      "norm_label": "click the activate toolbar split button, then confirm in the popup.",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L290"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_204",
      "label": "Return list of {id, name, idx, text} for tiles in the 'my planning areas'\u2026",
      "_origin": "ast",
      "community": 8,
      "community_name": "IBP Planning Area Tiles",
      "file_type": "rationale",
      "norm_label": "return list of {id, name, idx, text} for tiles in the 'my planning areas'...",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L204"
    },
    {
      "id": "ibp_activate_planning_areas_rationale_242",
      "label": "Open a planning-area tile; retry once if the app is slow to render. The Fiori\u2026",
      "_origin": "ast",
      "community": 9,
      "community_name": "IBP Tile Opening",
      "file_type": "rationale",
      "norm_label": "open a planning-area tile; retry once if the app is slow to render. the fiori...",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L242"
    }
  ],
  "links": [
    {
      "source": "agent_test_github_login_main",
      "target": "agent_test_github_login_load_env",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "agent_test_github_login.py",
      "source_location": "L151",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_main",
      "target": "agent_test_github_login_get_credentials",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "agent_test_github_login.py",
      "source_location": "L152",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_main",
      "target": "agent_test_github_login_attempt_login",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "agent_test_github_login.py",
      "source_location": "L160",
      "weight": 1.0
    },
    {
      "source": "feishu_media_capture_full_page",
      "target": "feishu_media_note_error",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "feishu_media.py",
      "source_location": "L84",
      "weight": 1.0
    },
    {
      "source": "feishu_media_capture_full_page",
      "target": "feishu_media_cdp_full_page",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "feishu_media.py",
      "source_location": "L86",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_click_activate",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L294",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_get_pa_tiles",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L229",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_go_home",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L193",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_login",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L135",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L435",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_parse_env",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L436",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_login",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L448",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "feishu_media_capture_full_page",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L453",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "feishu_media_media_tag",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L456",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_get_pa_tiles",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L463",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_open_tile",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L486",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_go_home",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L488",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_click_activate",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L491",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_close_dialog",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L493",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_main",
      "target": "ibp_activate_planning_areas_wait_for_activation_result",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L497",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_open_tile",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L267",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_parse_env",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L125",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_selfcheck",
      "target": "ibp_activate_planning_areas_extract_js_strings",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L85",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_wait_for_activation_result",
      "target": "ibp_activate_planning_areas_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L336",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_wait_for_activation_result",
      "target": "ibp_activate_planning_areas_is_terminal",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L337",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_wait_for_activation_result",
      "target": "ibp_activate_planning_areas_classify_result",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L339",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_dismiss_tutorial",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L279",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_login_bdp",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L83",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_login_dsv",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L203",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_logout_bdp",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L149",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_logout_bdp",
      "target": "feishu_media_capture_full_page",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L165",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_logout_dsv",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L286",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_logout_dsv",
      "target": "monthly_bdp_dsv_login_dismiss_tutorial",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L292",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L324",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "monthly_bdp_dsv_login_parse_env",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L325",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "monthly_bdp_dsv_login_login_bdp",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L346",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "monthly_bdp_dsv_login_logout_bdp",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L348",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "feishu_media_capture_full_page",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L361",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "monthly_bdp_dsv_login_login_dsv",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L366",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "monthly_bdp_dsv_login_logout_dsv",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L371",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_main",
      "target": "feishu_media_media_tag",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L413",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_parse_env",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L54",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_extract_table",
      "target": "sapgui800_patch_check_page_like_wait",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L127",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "sapgui800_patch_check_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L192",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "sapgui800_patch_check_parse_env",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L193",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "sapgui800_patch_check_sso_login",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L208",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "sapgui800_patch_check_find_launchpad_frame",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L214",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "sapgui800_patch_check_extract_table",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L219",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "feishu_media_capture_full_page",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L245",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_main",
      "target": "feishu_media_media_tag",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L247",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_parse_env",
      "target": "sapgui800_patch_check_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L57",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_sso_login",
      "target": "sapgui800_patch_check_log",
      "relation": "calls",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "call",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L68",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "feishu_media",
      "relation": "imports",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "import",
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L26",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "feishu_media",
      "relation": "imports",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "import",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L22",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "feishu_media",
      "relation": "imports",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "import",
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L22",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_load_env",
      "target": "path",
      "relation": "references",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "context": "parameter_type",
      "source_file": "agent_test_github_login.py",
      "source_location": "L28",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login",
      "target": "agent_test_github_login_main",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L150",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login",
      "target": "agent_test_github_login_load_env",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L28",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login",
      "target": "agent_test_github_login_get_credentials",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L47",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login",
      "target": "agent_test_github_login_attempt_login",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L54",
      "weight": 1.0
    },
    {
      "source": "feishu_media",
      "target": "feishu_media_media_tag",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L109",
      "weight": 1.0
    },
    {
      "source": "feishu_media",
      "target": "feishu_media_note_error",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L29",
      "weight": 1.0
    },
    {
      "source": "feishu_media",
      "target": "feishu_media_cdp_full_page",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L39",
      "weight": 1.0
    },
    {
      "source": "feishu_media",
      "target": "feishu_media_capture_full_page",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L66",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_parse_env",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L114",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_login",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L130",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_go_home",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L174",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_get_pa_tiles",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L203",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_open_tile",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L241",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_click_activate",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L289",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_wait_for_activation_result",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L306",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_is_terminal",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L344",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_classify_result",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L379",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_log",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L41",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_close_dialog",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L416",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_main",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L434",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_extract_js_strings",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L52",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas",
      "target": "ibp_activate_planning_areas_selfcheck",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L76",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_logout_bdp",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L142",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_login_dsv",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L197",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_dismiss_tutorial",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L272",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_logout_dsv",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L284",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L29",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_main",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L323",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_parse_env",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L42",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_block_heavy_resources",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L59",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login",
      "target": "monthly_bdp_dsv_login_login_bdp",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L69",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_find_launchpad_frame",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L108",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_extract_table",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L117",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_page_like_wait",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L185",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_main",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L191",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_log",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L33",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_parse_env",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L46",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check",
      "target": "sapgui800_patch_check_sso_login",
      "relation": "contains",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L62",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_rationale_2",
      "target": "agent_test_github_login",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L2",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_rationale_29",
      "target": "agent_test_github_login_load_env",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L29",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_rationale_48",
      "target": "agent_test_github_login_get_credentials",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L48",
      "weight": 1.0
    },
    {
      "source": "agent_test_github_login_rationale_55",
      "target": "agent_test_github_login_attempt_login",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "agent_test_github_login.py",
      "source_location": "L55",
      "weight": 1.0
    },
    {
      "source": "feishu_media_rationale_110",
      "target": "feishu_media_media_tag",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L110",
      "weight": 1.0
    },
    {
      "source": "feishu_media_rationale_2",
      "target": "feishu_media",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L2",
      "weight": 1.0
    },
    {
      "source": "feishu_media_rationale_40",
      "target": "feishu_media_cdp_full_page",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L40",
      "weight": 1.0
    },
    {
      "source": "feishu_media_rationale_67",
      "target": "feishu_media_capture_full_page",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "feishu_media.py",
      "source_location": "L67",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_175",
      "target": "ibp_activate_planning_areas_go_home",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L175",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_2",
      "target": "ibp_activate_planning_areas",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L2",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_204",
      "target": "ibp_activate_planning_areas_get_pa_tiles",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L204",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_242",
      "target": "ibp_activate_planning_areas_open_tile",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L242",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_290",
      "target": "ibp_activate_planning_areas_click_activate",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L290",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_307",
      "target": "ibp_activate_planning_areas_wait_for_activation_result",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L307",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_380",
      "target": "ibp_activate_planning_areas_classify_result",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L380",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_42",
      "target": "ibp_activate_planning_areas_log",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L42",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_53",
      "target": "ibp_activate_planning_areas_extract_js_strings",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L53",
      "weight": 1.0
    },
    {
      "source": "ibp_activate_planning_areas_rationale_77",
      "target": "ibp_activate_planning_areas_selfcheck",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "ibp_activate_planning_areas.py",
      "source_location": "L77",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_143",
      "target": "monthly_bdp_dsv_login_logout_bdp",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L143",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_2",
      "target": "monthly_bdp_dsv_login",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L2",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_273",
      "target": "monthly_bdp_dsv_login_dismiss_tutorial",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L273",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_285",
      "target": "monthly_bdp_dsv_login_logout_dsv",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L285",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_30",
      "target": "monthly_bdp_dsv_login_log",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L30",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_43",
      "target": "monthly_bdp_dsv_login_parse_env",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L43",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_60",
      "target": "monthly_bdp_dsv_login_block_heavy_resources",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L60",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_rationale_70",
      "target": "monthly_bdp_dsv_login_login_bdp",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L70",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_rationale_118",
      "target": "sapgui800_patch_check_extract_table",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L118",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_rationale_186",
      "target": "sapgui800_patch_check_page_like_wait",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L186",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_rationale_2",
      "target": "sapgui800_patch_check",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L2",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_rationale_34",
      "target": "sapgui800_patch_check_log",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L34",
      "weight": 1.0
    },
    {
      "source": "sapgui800_patch_check_rationale_63",
      "target": "sapgui800_patch_check_sso_login",
      "relation": "rationale_for",
      "_origin": "ast",
      "confidence": "EXTRACTED",
      "confidence_score": 1.0,
      "source_file": "sapgui800_patch_check.py",
      "source_location": "L63",
      "weight": 1.0
    },
    {
      "source": "monthly_bdp_dsv_login_login_bdp",
      "target": "monthly_bdp_dsv_login_block_heavy_resources",
      "relation": "indirect_call",
      "_origin": "ast",
      "confidence": "INFERRED",
      "confidence_score": 0.85,
      "context": "argument",
      "source_file": "monthly_bdp_dsv_login.py",
      "source_location": "L88",
      "weight": 1.0
    }
  ],
  "hyperedges": []
}