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

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.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에 고정하지 않는다.