전체 문서
이 페이지 목차
라이브러리·이벤트·파일·설정 계약
상위 경로: Norma 시스템 지도 → 계약과 설정
Norma에는 제공 HTTP/RPC 서비스나 물리 DB schema가 없다. 적용되는 독립 계약은 public Go library, provider 소비 interface, event/tool schema, local files, CLI와 환경변수다. 외부 model HTTP와 MCP JSON-RPC는 Norma가 소비하는 protocol이며 endpoint의 전체 vendor schema는 이 snapshot이 소유하지 않는다.
Public surface 분모
Public surface 분모 · 관계
이 대상을 사용하는 기능·모듈·계약 · 7개
- 계약 사용 · agentcore와 harness · · api-agentcore-agentcore · api-harness-event · api-harness-query
- 계약 사용 · llm · · api-llm-accumulate · api-llm-boundary · api-llm-provider · api-llm-ratelimit · api-llm-skillmsg · api-llm-todomsg · api-llm-types
- 계약 사용 · tool, permission, hook · · api-tool-ask · api-tool-bash · api-tool-deferred · api-tool-files · api-tool-helpers · api-tool-ls · api-tool-monitor · api-tool-multiedit · api-tool-registry · api-tool-ripgrep · api-tool-schema · api-tool-search · api-tool-shell-session · api-tool-shell-tools · api-tool-sleep · api-tool-task · api-tool-tasklist · api-tool-taskoutput · api-tool-taskstop · api-tool-todo · api-tool-tool · api-tool-webfetch · api-tool-websearch · api-permission-permission · api-hook-hook
- 계약 사용 · compaction, transcript, memory · · api-compaction-compaction · api-compaction-summarizer · api-transcript-context · api-transcript-transcript · api-memory-memory · api-memory-relevant · api-memory-tools
- 계약 사용 · mcp, skill, plan · · api-mcp-mcp · api-mcp-stdio · api-skill-skill · api-plan-plan
- 계약 사용 · subagent, coordinator · · api-subagent-subagent · api-coordinator-coordinator
- 계약 사용 · noa와 noaadapter · · api-noa-archive · api-noa-boundaries · api-noa-compress · api-noa-config · api-noa-const · api-noa-nudge · api-noa-nudge-types · api-noa-nudgetext · api-noa-panel · api-noa-parseinput · api-noa-pipeline · api-noa-processturn · api-noa-prompts-rules · api-noa-prompts-system · api-noa-protected · api-noa-prune · api-noa-rebuild · api-noa-recommend · api-noa-refs · api-noa-schema · api-noa-state · api-noa-tier · api-noa-tokenize · api-noa-toolpairs · api-noa-truncate · api-noa-turnintegrity · api-noa-types · api-noaadapter-archive · api-noaadapter-compactor · api-noaadapter-deadrange · api-noaadapter-identity · api-noaadapter-inherit · api-noaadapter-materialize · api-noaadapter-noa · api-noaadapter-overflow · api-noaadapter-project · api-noaadapter-session · api-noaadapter-state-store · api-noaadapter-tags
고정 source의 production(non-test) Go 파일만 Go AST로 독립 계수한 public candidate surface는 16 SDK packages, exported types 147개, functions 180개, exported receiver의 methods 92개, variables 3개, constants 120개, exported struct fields 573개, interface methods 24개다. test declarations는 분모에서 제외했다. 별도 실행 단위는 demo CLI 1개와 examples 5개다. 이름이 export됐다는 사실만으로 호환성을 약속한 stable API라고 확정하지는 않는다.
모든 식별자와 선언/signature는 package별 전수 색인에 있다: 실행 코어, 도구·권한, 컨텍스트·지속성, 확장·조정. 각 행은 선언 source evidence로 연결된다. exact defaults/override/failure는 설정 field 참조가 보완한다. DB 객체와 inbound HTTP/RPC operation은 0이며 outbound provider/web/MCP는 소비 operation으로 분리했다.
Session options와 public lifecycle
Session options와 public lifecycle · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Prompt 생명주기 · · agentcore-newsession · agentcore-prompt
agentcore.Options가 embedding contract의 중심이다. NewSession은 error를 반환하지 않고 일부 misconfiguration을 warning, silent tool omission 또는 runtime failure로 미룬다. 52개 field와 nested option의 exact default/consumer는 설정 field 참조에 있다. agentcore 근거
| 영역 | 주요 입력 | default/생략 | 호출자 책임 |
|---|---|---|---|
| model | Provider, prompts, model caps | provider default 없음 | non-nil/working provider와 prompt policy |
| tools | Tools, deferred, web, todos, ask | nil Tools → defaults | capability/scope와 tool instance lifetime |
| permission | mode, allow/deny, callback | empty mode → default | resource-level authorization |
| context | Compaction 또는 Compactor | 둘 다 nil → boundary pairing만 | 정확한 window와 evidence retention |
| budgets | MaxTurns/Duration/Tokens/Settlement | zero의 의미가 필드별로 다름 | parent deadline과 업무 stop criteria |
| execution | WorkingDir, BashEnv, outputs, concurrency | cwd/env가 tool에 전달 | trusted paths, sandbox, secrets |
| persistence | Transcript, SessionID, memory/Noa external options | 대부분 opt-in | durable identity, integrity, cleanup |
public lifecycle은 NewSession → Prompt*이며 선택적으로 Resume, Reset, Close를 호출한다. Run은 one-shot 편의 함수지만 terminal reason fidelity가 줄어든다.
Event와 terminal
Event와 terminal · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Prompt 생명주기 · · harness-event
host가 받는 harness.Event 종류는 text, thinking, tool_use, tool_result, progress, usage, result다. 각 kind에서 유효한 payload field가 다르다. 마지막 result의 Terminal은 reason, error, cumulative usage, main turns, full conversation snapshot, final text를 가진다. event 근거
| event | 전달 시점 | 완료로 해석할 수 없는 이유 |
|---|---|---|
| text/thinking | delta 또는 non-stream response 조립 뒤 | response가 아직 tool-use/오류로 끝날 수 있음 |
| tool_use | scheduler에 등록할 call을 관찰 | permission·실행 완료 전 |
| tool_result | call result event | history/transcript commit·후속 model 판단 전 |
| usage | model turn의 누적 account | provider fidelity와 전체 child cost가 별도 |
| result | loop terminal | 업무 목표/외부 효과 validation은 host 의미 |
iterator의 별도 error 값보다 terminal error가 main loop 오류의 실제 전달 경로다. consumer가 result 전에 멈추는 경우와 context cancellation terminal은 구분해야 한다.
Tool interface와 input schema
Tool interface와 input schema · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Direct tool call의 실행 순서 · · tool-contract
CoreTool은 Name/Description/Prompt/InputSchema/IsReadOnly/IsConcurrencySafe/CheckPermissions/Call을 구현한다. ToolContext는 WorkingDir, AgentID, ToolUseID, output cap/dir, progress emitter, task manager와 extra process env를 전달한다. Result는 content, error flag, optional extra messages를 반환한다. tool 근거
중앙 schema validator는 JSON Schema 일부만 집행한다. resource constraint는 tool self-check나 더 바깥 broker에 있어야 한다. Result.Extra는 일반 result body가 아니라 conversation에 추가 user messages로 들어간다.
Permission 계약
Permission 계약 · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Direct tool call의 실행 순서 · · permission
permission mode는 default, acceptEdits, bypassPermissions, plan, dontAsk, auto다. CanUseTool callback은 interactive ask 단계에 도달했을 때만 호출되며 Decision은 allow/deny/ask, optional rewritten input/message/suggestions를 담는다. permission 근거
allow/deny rule은 name-only matcher이므로 argument와 target authorization contract가 아니다. 판정 순서에 mode별 우선순위가 있다.
Provider와 message contract
Provider와 message contract · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Provider, extension과 coordination · · llm-provider
Provider.Stream은 normalized StreamEvent iterator, Complete는 assistant Message, stop reason, Usage를 반환한다. CompletionRequest는 ordered system segments, dynamic cache boundary, messages, tool schemas, output/temperature/stop/thinking을 담는다. provider 근거
Usage는 input/output/cache-read/cache-write tokens를 합산하지만 공급자가 주지 않는 값의 정확도를 Norma가 보완하지 않는다. custom Provider는 cancellation, event ordering, tool JSON, error와 usage semantics를 이 contract에 맞춰야 한다.
파일 형식과 소유권
파일 형식과 소유권 · 관계
이 대상을 사용하는 기능·모듈·계약 · 1개
- 계약 사용 · Context, transcript와 resume · · transcript-record · noa-state-schema
| 파일/경로 | 생성자 | 내용 | atomicity·복구 경계 |
|---|---|---|---|
<transcript-dir>/<session>.jsonl |
transcript writer | message/usage records | append; fsync/lock/corrupt-tail repair 없음 |
<session>/subagents/agent-*.jsonl |
subagent recorder | child sidechain | parent completion과 단일 commit 아님 |
<memory-dir>/*.md |
memory store | frontmatter + body | file write 뒤 index rebuild |
<memory-dir>/MEMORY.md |
memory store | memory 목록 | memory file과 transaction 아님 |
<noa-root>/state.json |
StateStore | compression state projection | temp+rename, fsync 없음 |
<noa-root>/tierN/*.md |
file archiver | compressed range archive | file 단위 temp+rename; state와 transaction 아님 |
| task temp output | task manager | process stdout/stderr | session cleanup 대상 |
| tool output spill | capture helper | oversized full text | evidence integrity/retention 없음 |
각 nested field, corrupt/future handling과 consumer는 지속 파일 schema에 있다. transcript 근거 memory 근거 Noa state 근거 task 근거
Demo CLI
cmd/agentcore는 SDK 배선을 보여주는 demo binary다. 주요 flags는 -provider, -model, -base-url, -api-key, -system, -dir, -yes, -max-turns, -p다. construction error 일부만 non-zero exit로 매핑한다. Prompt iterator error는 stderr에 출력한 뒤 main이 정상 return할 수 있고, terminal reason은 process status로 변환하지 않는다. SIGINT/SIGTERM은 context cancel, Ctrl-D/EOF와 /exit는 정상 return이다. transcript를 설정하지 않아 기본 실행은 durable resume을 제공하지 않는다. stdout/stderr와 정확한 exit 의미는 CLI 참조에 있다.
README/examples의 wiring은 예시이고 지원되는 deployment/control policy의 완전한 contract가 아니다. 5개 예제의 실제 동작은 dependency와 examples에 있다.
환경변수와 설정 우선순위
| 변수 | 소비자 | 효과 |
|---|---|---|
ANTHROPIC_API_KEY, ANTHROPIC_BASE_URL |
Anthropic adapter | config가 비면 credential/base URL |
OPENAI_API_KEY, OPENAI_BASE_URL |
OpenAI adapters | config가 비면 credential/base URL |
AGENT_PROVIDER, AGENT_MODEL |
CLI/examples | flag default; explicit flag가 우선 |
AGENT_CORE_DISABLE_BACKGROUND_TASKS |
Session/task | per-session option과 함께 task injection disable |
AGENT_CORE_DISABLE_INTERACTIVE_SHELL |
PTY tools | process-wide interactive shell disable |
NORMA_DISABLE_RIPGREP |
search helper | ripgrep 사용 disable |
NORMA_RIPGREP_NO_INSTALL |
ripgrep helper | missing binary 자동 준비 경로 disable |
HTTP_PROXY/HTTPS_PROXY/NO_PROXY와 lowercase alias |
built-in LLM; zero-value WebFetch/Search client | LLM은 빈 Config.Proxy에서 명시 사용. Web tool은 Proxy·CA·insecure가 모두 zero일 때 default transport를 통해 상속. REQUEST_METHOD가 있는 CGI의 HTTP proxy는 거부될 수 있음 |
WebFetch/WebSearch에서 CA 또는 insecure만 설정하면 새 transport의 Proxy가 nil이어서 환경 proxy를 사용하지 않는다. WebSearch backend keys/proxy/CA는 agentcore.Options fields로도 전달된다. secrets는 문서·transcript·tool output에 복제하지 않고 host secret injection 경계에서 관리해야 한다. LLM transport 근거 Web tool transport 근거