agent-ops 공통 규칙/스킬/스크립트, 진입 파일(CLAUDE.md, GEMINI.md 등), AI 도구별 ignore 정책을 추가해 워크스페이스 공통 운영 체계를 적용한다.
2 KiB
2 KiB
| domain | last_rule_review_commit | last_rule_updated_at |
|---|---|---|
| domain-model | 09080ca7f6 |
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.dartexport를 함께 갱신한다.
다른 도메인과의 경계
- 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에 고정하지 않는다.