No description
Find a file
toki 1ed718cadc fix(single_request): 명시된 null 템플릿 경로를 생략과 구분한다
`plan_file: null`과 `review_file: ~`은 YAML에 실제로 존재하는 키인데
mapstructure가 present nil을 생략과 같은 nil pointer로 접어버려, 승인 경계가
빈 문자열과 공백만 거부하고 null 형태는 조용히 built-in default로 떨어뜨렸다.
Viper가 돌려주는 raw preset 구조에는 두 키가 nil 값으로 남아 있으므로, strict
decode 전에 그 presence를 검사해 필드 경로와 함께 거부하고 실제로 없는 키만
fallback 신호로 남긴다.

두 필드와 두 가지 YAML null 표기를 모두 회귀로 고정하고, 기존 빈/공백, 생략,
상대 경로, clone 독립성, refresh redaction 근거는 그대로 유지한다.

Refs: agent-task/single_request_plan_review_templates/PLAN-cloud-G08.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-09 10:35:53 +09:00
.claude sync: agent-ops from agentic-framework v1.1.141 2026-06-16 20:57:31 +09:00
agent-client feat(protocol-profile): 멀티 프로토콜 프로필을 추가한다 2026-08-01 10:33:10 +09:00
agent-contract fix(single_request): 템플릿 승인 경계를 닫고 회귀 근거를 채운다 2026-08-09 09:25:27 +09:00
agent-ops merge(agent): 단일 요청 실행 경로를 dev에 반영한다 2026-08-08 23:39:05 +09:00
agent-roadmap docs(roadmap): 벤치마크를 다음 작업으로 지정한다 2026-08-09 07:12:16 +09:00
agent-spec fix(single_request): 템플릿 승인 경계를 닫고 회귀 근거를 채운다 2026-08-09 09:25:27 +09:00
agent-task docs(single_request): 경로 presence 수리의 검증 근거를 기록한다 2026-08-09 10:11:32 +09:00
agent-test feat(agent): 단일 요청 실행 경로를 완성한다 2026-08-08 23:35:13 +09:00
agent-ui docs(agent-ui): 설정 후보 등록 규칙을 정리한다 2026-08-03 15:53:39 +09:00
apps fix(single_request): 템플릿 경로 생략과 명시 빈 값을 구분한다 2026-08-09 10:04:01 +09:00
configs feat(single_request): implement bounded Plan and Review Markdown templates 2026-08-09 08:41:03 +09:00
docs feat(agent-ops): GLM 백업 경로를 OpenCode로 전환한다 2026-08-05 05:05:55 +09:00
packages fix(single_request): 명시된 null 템플릿 경로를 생략과 구분한다 2026-08-09 10:35:53 +09:00
proto feat(agent): 단일 요청 실행 경로를 완성한다 2026-08-08 23:35:13 +09:00
scripts feat(agent): 단일 요청 실행 경로를 완성한다 2026-08-08 23:35:13 +09:00
.aiexclude sync: agent-ops from agentic-framework v1.1.75 2026-05-27 13:49:48 +09:00
.clineignore sync: agent-ops from agentic-framework v1.1.75 2026-05-27 13:49:48 +09:00
.clinerules docs(agent-ops): 마일스톤과 설정 UI 기준을 갱신한다 2026-08-03 07:50:57 +09:00
.codex update project files and proto definitions 2026-05-11 07:36:50 +09:00
.cursorignore sync: agent-ops from agentic-framework v1.1.75 2026-05-27 13:49:48 +09:00
.cursorrules docs(agent-ops): 마일스톤과 설정 UI 기준을 갱신한다 2026-08-03 07:50:57 +09:00
.env.dev-corp.example refactor: archive openai-compatible-provider-passthrough files and update configs 2026-07-14 18:20:48 +09:00
.env.dev.example refactor: archive openai-compatible-provider-passthrough files and update configs 2026-07-14 18:20:48 +09:00
.env.example refactor: archive openai-compatible-provider-passthrough files and update configs 2026-07-14 18:20:48 +09:00
.geminiignore sync: agent-ops from agentic-framework v1.1.75 2026-05-27 13:49:48 +09:00
.gitignore sync: agent-ops from agentic-framework v1.1.178 2026-07-29 11:15:39 +09:00
AGENTS.md docs(agent-ops): 마일스톤과 설정 UI 기준을 갱신한다 2026-08-03 07:50:57 +09:00
CLAUDE.md docs(agent-ops): 마일스톤과 설정 UI 기준을 갱신한다 2026-08-03 07:50:57 +09:00
docker-compose.yml refactor: archive openai-compatible-provider-passthrough files and update configs 2026-07-14 18:20:48 +09:00
GEMINI.md docs(agent-ops): 마일스톤과 설정 UI 기준을 갱신한다 2026-08-03 07:50:57 +09:00
go.mod Merge dev into feature/iop-hot-path-one-shot-execution 2026-08-04 16:11:49 +09:00
go.sum refactor(runtime): promote provider-only execution boundary 2026-08-02 20:28:45 +09:00
go.work feat: CLI setup, edge/node transport refactor, and infrastructure updates 2026-05-20 16:37:42 +09:00
go.work.sum feat(credential): Provider Credential Slot 라우팅을 구현한다 2026-08-02 09:10:11 +09:00
HANDOFF.md docs(roadmap): Chronos 분리 마일스톤을 종료한다 2026-08-02 21:52:44 +09:00
Makefile feat(agent): 단일 요청 실행 경로를 완성한다 2026-08-08 23:35:13 +09:00
opencode.json sync: agent-ops from agentic-framework v1.1.141 2026-06-16 20:57:31 +09:00
README.md docs(opencode): IOP 모델 설정 가이드를 추가한다 2026-08-05 04:22:50 +09:00

IOP

IOP is a provider and device execution platform. It exposes OpenAI- and Anthropic-compatible inference APIs, routes work through Edge provider pools, executes against Node-owned adapters, and presents fleet operations through Control Plane and the Flutter Client.

Architecture

Client -> Control Plane -> Edge -> Node -> Provider
                         |        |
                         |        +-- normalized inference and provider tunnels
                         +-- model routing, queues, leases, API compatibility
  • Edge owns model routing, provider-pool admission, leases, external APIs, Node readiness, and reconnect fencing.
  • Node owns provider adapter construction and local execution.
  • Control Plane owns connected Edge views and operation relay, not Edge runtime state.
  • Client consumes Control Plane fleet, Node, provider, and operation views.
  • packages/go/execution contains transport-neutral provider primitives.

Internal provider selection uses adapter + target. session_id is opaque correlation only, and cancellation targets a non-empty run_id. Provider commands are limited to capabilities, transport status, and the Ollama API tunnel.

IOP does not own interactive host programs, persistent conversations, terminal emulation, arbitrary host command execution, or local filesystem execution context.

Development

make proto
make proto-dart
go test -count=1 ./...
make client-test
make test-control-plane-edge-wire
make test-e2e

Start with agent-contract/index.md for protocol and runtime contracts, and agent-spec/index.md for living implementation summaries.

Operator and client setup guides: