> ## Documentation Index
> Fetch the complete documentation index at: https://docs.platform.nora.my/llms.txt
> Use this file to discover all available pages before exploring further.

# nora edges

> 블록 배선 — 포트 연결, 와이어 삭제, 현재 배선 나열.

엣지가 블록 사이 와이어. `edges` 가 터미널에서 와이어 그리기·제거 가능 — Flow 구성 스크립트와 벌크 변경 후 정리에 유용.

## 명령

| 명령                                | 설명                      |
| --------------------------------- | ----------------------- |
| `edges connect <source> <target>` | 소스 블록에서 타겟 블록으로 와이어 그림. |
| `edges delete <edge-id>`          | 와이어 제거.                 |
| `edges list`                      | 현재 와이어 나열 (옵션 필터).      |

## `edges connect`

```bash theme={null}
nora edges connect tr_events ag_support
```

`tr_events` (출력) 에서 `ag_support` (입력) 로 와이어 그림.

기본 포트: `right` (소스의 오른쪽 가장자리) → `left` (타겟의 왼쪽 가장자리). side 플래그로 오버라이드:

* `--source-side left|right` — 와이어가 떠나는 소스 블록의 어느 쪽.
* `--target-side left|right` — 와이어가 진입하는 타겟 블록의 어느 쪽.

Flow 가 보통 왼쪽에서 오른쪽으로 배치되므로 right-to-left 가 기본.

생성된 엣지의 ID 인쇄.

## `edges delete`

```bash theme={null}
nora edges delete edge_abc
```

와이어 제거. 두 블록 유지; 연결만 끊김.

## `edges list`

```bash theme={null}
nora edges list
```

Flow 의 모든 와이어 인쇄: 엣지 id, source id, target id, sides.

특정 블록 포함 와이어로 필터:

```bash theme={null}
nora edges list --source ag_support   # ag_support 떠나는 모든 것
nora edges list --target tr_events    # tr_events 로 진입하는 모든 것
```

구조화 출력에 `--json` 추가.

## 레시피

### 처음부터 전체 단순 Flow 배선

```bash theme={null}
# 블록 생성
TR=$(nora triggers create --kind api --name entry | jq -r '.id')
AG=$(nora agents create --name assistant --model gpt-4o-mini | jq -r '.id')
AC=$(nora actions create --name log --runtime '{"kind":"http","method":"POST","url":"https://logs.internal/nora"}' | jq -r '.id')

# 배선
nora edges connect $TR $AG
nora edges connect $AG $AC

nora flows publish --note "초기 버전"
```

### 와이어 재라우팅 — 한 엣지를 다른 것으로 교체

`edges update` 없음; 삭제 후 재연결:

```bash theme={null}
old=$(nora edges list --target ag_old --json | jq -r '.[0].id')
nora edges delete $old
nora edges connect $(nora edges list --json | jq -r '.[0].source_id') ag_new
```

더 깨끗: `flows snapshot` → 손 JSON 편집 → `flows apply` 사용.

### 감사: 들어오는 와이어 없는 블록 찾기

```bash theme={null}
comm -23 \
  <(nora flows get support | jq -r '.blocks[].id' | sort) \
  <(nora edges list --json | jq -r '.[].target_id' | sort -u)
```

아무것도 안 가리키는 블록 ID 인쇄 — 도달 불가능 가능성, 가지치기 가치.

### 감사: 나가는 와이어 없는 블록 찾기

```bash theme={null}
comm -23 \
  <(nora flows get support | jq -r '.blocks[].id' | sort) \
  <(nora edges list --json | jq -r '.[].source_id' | sort -u)
```

아무것도 소비 안 하는 출력 생성하는 블록.

## 포트와 사이드

모든 블록이 왼쪽과 오른쪽 가장자리에 포트 가짐. 각 쪽의 **기본 포트** 가 primary in/out. 여러 출력 경로 있는 블록 (Router, 병렬 분기 있는 Agent) 이 추가 이름 있는 포트 노출.

지금 CLI 가 side 기반 배선 (`left`/`right`) 사용 — 이름 있는 포트 아님. 이름 있는 포트 필요한 Flow 는 앱 캔버스나 손 만든 JSON 으로 `flows apply` 사용.

## 사이클과 검증

사전 배포 체크가 acyclicity 포함 — Draft 에 사이클 만들 수 있지만 Publish 가 거부. 먼저 사이클 깸.

드문 예외: 경계 있는 루프 (검증-재시도 패턴을 위한 Agent → Router → Agent 로 돌아감). 명시 반복 경계 설정하면 검증 통과.
