agent-shell/agent-ops/rules/project/domain/domain-model/rules.md
toki a43a9f66fa chore(agent-ops): agent-ops 운영 인프라와 진입 파일을 도입한다
agent-ops 공통 규칙/스킬/스크립트, 진입 파일(CLAUDE.md, GEMINI.md 등),
AI 도구별 ignore 정책을 추가해 워크스페이스 공통 운영 체계를 적용한다.
2026-06-02 21:48:27 +09:00

46 lines
2 KiB
Markdown

---
domain: domain-model
last_rule_review_commit: 09080ca7f67c07b5b9227de78ca11c6d6018c13f
last_rule_updated_at: 2026-05-31
---
# domain-model
## 목적 / 책임
Agent interaction surface의 제품 비종속 계약을 정의한다. 메시지, tool call, command, event, capability, context 모델을 host 앱과 capability pack이 공유할 수 있게 유지한다.
## 포함 경로
- `lib/src/domain/` — agent shell의 순수 Dart 계약과 상태 모델을 둔다.
- `lib/agent_shell.dart` — public export entrypoint로 domain model을 외부에 노출한다.
## 제외 경로
- `lib/src/widgets/` — Flutter UI rendering 책임은 widgets 도메인이다.
- 제품별 IOP/NomadCode capability 구현 — 각 제품 repo 또는 optional composition package가 소유한다.
## 주요 구성 요소
- `AgentCapability` — host가 등록하는 agent capability interface.
- `AgentCommand` — 사용자 입력 또는 capability 호출 요청 모델.
- `AgentEvent` — agent runtime에서 UI로 전달되는 event envelope.
- `AgentMessage` — 대화 메시지 모델.
- `AgentToolCall` — tool call 상태와 승인 필요 여부를 표현한다.
## 유지할 패턴
- 제품명, backend endpoint, 인증, transport 세부를 domain model에 넣지 않는다.
- `Map<String, Object?>` 확장은 host-specific payload를 담는 최소 탈출구로만 사용한다.
- public model을 추가하면 `lib/agent_shell.dart` export를 함께 갱신한다.
## 다른 도메인과의 경계
- **widgets**: domain-model은 상태와 계약만 정의하고, layout/rendering/interaction visual은 widgets가 담당한다.
- **product capability pack**: domain-model은 interface를 제공하고, IOP/NomadCode의 실제 capability 구현은 외부 package가 담당한다.
## 금지 사항
- `package:flutter/material.dart` 같은 UI dependency를 domain model에 추가하지 않는다.
- IOP, NomadCode, WebView, Control Plane, workflow 전용 타입을 import하지 않는다.
- transport, token, endpoint, persistence 정책을 domain model에 고정하지 않는다.