{
  "path": "/AIWK_COMMON/routes/aiwk_route_rules.json",
  "version": "v041",
  "address_format": "group.room.client_id#endpoint/folder_route/win/port",
  "wss_scope": "WSS는 기존 group.room.client_id까지만 중계한다. endpoint와 folder_route는 클라이언트 내부 AIWK route engine이 처리한다.",
  "terms": {
    "group": "기존 WSS/인증/토큰의 통신 그룹. 이미 쓰고 있으므로 유지한다. 예: home",
    "room": "방/프로젝트룸. 예: prj_shop, IG_CRM",
    "client_id": "접속자. 예: A1, A2, HOST1",
    "endpoint": "cmd, in, out, log, state, event",
    "folder_route": "/로 이어지는 폴더식 논리 경로. 실제 file path가 아니다.",
    "folder": "기능/업무를 묶는 논리 폴더. 폴더 밑에 폴더를 둘 수 있다.",
    "win": "창/실행 단위",
    "port": "입력/출력/명령 포트 또는 action",
    "dir_path": "실제 파일 시스템 경로. folder_route와 혼동 금지"
  },
  "examples": [
    "home.prj_shop.A1#cmd/shop/order/product_read/win_extract/run",
    "home.prj_shop.A1#out/shop/order/product_read/win_extract/result",
    "home.prj_shop.HOST1#cmd/shop/order/*/*/pause"
  ],
  "payload_recommendation": {
    "to": "home.prj_shop.A1",
    "from": "home.prj_shop.HOST1",
    "endpoint": "cmd",
    "folder_route": "/shop/order/product_read/win_extract/run",
    "cmd": "run",
    "payload": {
      "mode": "manual"
    }
  },
  "updated_at": "2026-05-31T00:00:00+09:00",
  "domain_folder_rule": {
    "format": "AIWK_COMMON/domains/{domain_family}/{full_domain}/folders/{folder_key}/",
    "inherit_order": [
      "AIWK_COMMON",
      "domain_family",
      "full_domain",
      "folder",
      "window/module"
    ],
    "optional_common": "domain_family 공통부는 선택이다. 있으면 상속하고 없으면 건너뛴다.",
    "example_chatgpt": "AIWK_COMMON/domains/chatgpt/chatgpt.com/folders/chatGPT/",
    "example_instagram": "AIWK_COMMON/domains/instagram/instagram.com/folders/account/"
  },
  "chatgpt_prompt_selector": "#prompt-textarea",
  "domain_module_route_rule": "도메인 파일 로딩은 group.room.client_id 뒤의 folder_route와 별개다. 실제 파일은 AIWK_COMMON/domains/{service_or_group}/{representative_domain}/ 에서 찾고, 대표도메인 아래 $folders는 가변 하위 커스터마이징 경로다.",
  "tab_setting_rule": "도메인 모듈 설치/사용/자동/수동 상태는 tab_id별 설정으로 저장하고, 저장된 tab_id 설정은 현재 tab_id로 복제해서 사용할 수 있다."
}