No description
Find a file
toki 31fada5d08 fix(single_request): 템플릿 승인 경계를 닫고 회귀 근거를 채운다
공식 리뷰가 지적한 두 가지 승인 경계 결함을 고친다. `plan_file`/`review_file`은
edge.yaml 디렉터리 기준 상대 경로만 허용하고 절대/빈 경로는 파일 접근 전에 거부한다.
필수 heading과 Review `PASS`는 부분 문자열이 아니라 정확한 단독 줄로 검증하며,
문서화된 placeholder를 제거한 뒤 남는 `{{`/`}}`를 거부해 문법을 닫는다.

리뷰가 존재한다고 기술했지만 실제로는 없던 회귀 근거를 추가한다. admission 시
고정된 effective 템플릿 쌍이 clone과 workspace 재검증을 통과하는지, refresh가
이미 승인된 요청이 아니라 새 요청에만 적용되는지, custom Review 템플릿이 내부
artifact만 바꾸고 caller 최종 출력은 그대로인지를 각각 확정 검증한다.

현재 문서도 실제 동작에 맞춘다. Edge 실행 spec의 낡은 Plan JSON Schema 서술을
direct PlanMD 검증으로 고치고, outer Anthropic 계약과 input spec에 템플릿이
Edge 내부 stage 입력일 뿐 caller 요청/응답 계약을 바꾸지 않음을 명시한다.

Refs: agent-task/single_request_plan_review_templates/PLAN-cloud-G08.md
2026-08-09 09:25:27 +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 fix(single_request): 템플릿 승인 경계를 닫고 회귀 근거를 채운다 2026-08-09 09:25:27 +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 09:25:27 +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): 템플릿 승인 경계를 닫고 회귀 근거를 채운다 2026-08-09 09:25:27 +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: