agent-ops 공통 규칙/스킬/스크립트, 진입 파일(CLAUDE.md, GEMINI.md 등), AI 도구별 ignore 정책을 추가해 워크스페이스 공통 운영 체계를 적용한다.
46 lines
2 KiB
Markdown
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에 고정하지 않는다.
|