# 확장과 조정 공개 API

<a id="overview"></a>

이 페이지는 고정 소스 리비전의 production(non-test) Go 파일을 AST로 열거한 공개 계약 색인이다. 테스트 선언, 비공개 식별자, 비공개 receiver 메서드는 제외했다. 각 행의 근거는 선언이 있는 파일 자체이며, 자세한 기본값과 실패 의미는 [설정 참조](configuration.md), [도구 계약](tools.md), [저장 스키마](persistence-schemas.md)에서 보완한다.

다른 묶음: [실행 코어](public-api-runtime.md) · [도구/권한](public-api-actions.md) · [컨텍스트/지속성](public-api-context.md) · [확장/조정](public-api-extensions.md)

<a id="pkg-mcp"></a>

## `mcp`

| 종류 | 식별자 | 선언/시그니처 | 근거 |
|---|---|---|---|
| field | `InProcessTool.Description` | <code>Description string</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| field | `InProcessTool.Handler` | <code>Handler func(ctx context.Context, args json.RawMessage) (string, error)</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| field | `InProcessTool.Name` | <code>Name string</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| field | `InProcessTool.Schema` | <code>Schema map[string]any</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| func | `InProcessServer` | <code>func InProcessServer(server string, tools []InProcessTool) []tool.CoreTool</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| func | `NewStdioClient` | <code>func NewStdioClient(ctx context.Context, server, command string, env map[string]string, args ...string) (*Client, error)</code> | [mcp/stdio.go](evidence:api-mcp-stdio) |
| func | `ToolName` | <code>func ToolName(server, name string) string</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| method | `Client.Close` | <code>func (*Client) Close() error</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| method | `Client.Tools` | <code>func (*Client) Tools(ctx context.Context) ([]tool.CoreTool, error)</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| type | `Client` | <code>type Client struct</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |
| type | `InProcessTool` | <code>type InProcessTool struct</code> | [mcp/mcp.go](evidence:api-mcp-mcp) |

<a id="pkg-skill"></a>

## `skill`

| 종류 | 식별자 | 선언/시그니처 | 근거 |
|---|---|---|---|
| field | `Registry.OnInvoke` | <code>OnInvoke func(Skill) string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.Compatibility` | <code>Compatibility string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.Description` | <code>Description string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.Dir` | <code>Dir string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.Instructions` | <code>Instructions string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.License` | <code>License string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.MCPs` | <code>MCPs []string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.Name` | <code>Name string</code> | [skill/skill.go](evidence:api-skill-skill) |
| field | `Skill.WhenToUse` | <code>WhenToUse string</code> | [skill/skill.go](evidence:api-skill-skill) |
| func | `LoadDir` | <code>func LoadDir(dir string) (*Registry, error)</code> | [skill/skill.go](evidence:api-skill-skill) |
| func | `NewRegistry` | <code>func NewRegistry(skills ...Skill) *Registry</code> | [skill/skill.go](evidence:api-skill-skill) |
| method | `Registry.Add` | <code>func (*Registry) Add(s Skill)</code> | [skill/skill.go](evidence:api-skill-skill) |
| method | `Registry.Get` | <code>func (*Registry) Get(name string) (Skill, bool)</code> | [skill/skill.go](evidence:api-skill-skill) |
| method | `Registry.List` | <code>func (*Registry) List() []Skill</code> | [skill/skill.go](evidence:api-skill-skill) |
| method | `Registry.Tool` | <code>func (*Registry) Tool() tool.CoreTool</code> | [skill/skill.go](evidence:api-skill-skill) |
| type | `Registry` | <code>type Registry struct</code> | [skill/skill.go](evidence:api-skill-skill) |
| type | `Skill` | <code>type Skill struct</code> | [skill/skill.go](evidence:api-skill-skill) |

<a id="pkg-plan"></a>

## `plan`

| 종류 | 식별자 | 선언/시그니처 | 근거 |
|---|---|---|---|
| func | `EnterTool` | <code>func EnterTool(c *Controller) tool.CoreTool</code> | [plan/plan.go](evidence:api-plan-plan) |
| func | `ExitTool` | <code>func ExitTool(c *Controller, approve Approver) tool.CoreTool</code> | [plan/plan.go](evidence:api-plan-plan) |
| func | `NewController` | <code>func NewController(start, target permission.Mode) *Controller</code> | [plan/plan.go](evidence:api-plan-plan) |
| func | `Tools` | <code>func Tools(c *Controller, approve Approver) []tool.CoreTool</code> | [plan/plan.go](evidence:api-plan-plan) |
| method | `Controller.Enter` | <code>func (*Controller) Enter()</code> | [plan/plan.go](evidence:api-plan-plan) |
| method | `Controller.InPlan` | <code>func (*Controller) InPlan() bool</code> | [plan/plan.go](evidence:api-plan-plan) |
| method | `Controller.Mode` | <code>func (*Controller) Mode() permission.Mode</code> | [plan/plan.go](evidence:api-plan-plan) |
| type | `Approver` | <code>type Approver func(ctx context.Context, plan string) (approved bool, feedback string)</code> | [plan/plan.go](evidence:api-plan-plan) |
| type | `Controller` | <code>type Controller struct</code> | [plan/plan.go](evidence:api-plan-plan) |

<a id="pkg-subagent"></a>

## `subagent`

| 종류 | 식별자 | 선언/시그니처 | 근거 |
|---|---|---|---|
| field | `Config.Agents` | <code>Agents map[string]Definition</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Config.CanUseTool` | <code>CanUseTool permission.CanUseTool</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Config.Hooks` | <code>Hooks harness.HookRunner</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Config.MaxDepth` | <code>MaxDepth int</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Config.ParentTools` | <code>ParentTools *tool.Registry</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Config.Provider` | <code>Provider llm.Provider</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Config.Transcript` | <code>Transcript *transcript.Store</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Definition.Description` | <code>Description string</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Definition.MaxTurns` | <code>MaxTurns int</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Definition.PermissionMode` | <code>PermissionMode permission.Mode</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Definition.Prompt` | <code>Prompt []string</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| field | `Definition.Tools` | <code>Tools []string</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| func | `NewTool` | <code>func NewTool(cfg Config) tool.CoreTool</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| func | `Run` | <code>func Run(ctx context.Context, cfg Config, agentType, prompt, workDir string) (string, error)</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| type | `Config` | <code>type Config struct</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |
| type | `Definition` | <code>type Definition struct</code> | [subagent/subagent.go](evidence:api-subagent-subagent) |

<a id="pkg-coordinator"></a>

## `coordinator`

| 종류 | 식별자 | 선언/시그니처 | 근거 |
|---|---|---|---|
| const | `DefaultWorkerPrompt` | <code>const DefaultWorkerPrompt = &lt;expression omitted; 650 source chars&gt;</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.CanUseTool` | <code>CanUseTool permission.CanUseTool</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.Hooks` | <code>Hooks harness.HookRunner</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.MaxDepth` | <code>MaxDepth int</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.MaxParallel` | <code>MaxParallel int</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.MaxTurns` | <code>MaxTurns int</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.PermissionMode` | <code>PermissionMode permission.Mode</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.Provider` | <code>Provider llm.Provider</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.WorkerPrompt` | <code>WorkerPrompt []string</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.WorkerTools` | <code>WorkerTools *tool.Registry</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Config.WorkingDir` | <code>WorkingDir string</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Result.Err` | <code>Err error</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Result.Output` | <code>Output string</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| field | `Result.Task` | <code>Task string</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| method | `Config.AgentTool` | <code>func (*Config) AgentTool() tool.CoreTool</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| method | `Config.RunParallel` | <code>func (*Config) RunParallel(ctx context.Context, tasks []string) []Result</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| method | `Config.SystemSegment` | <code>func (*Config) SystemSegment() string</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| type | `Config` | <code>type Config struct</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |
| type | `Result` | <code>type Result struct</code> | [coordinator/coordinator.go](evidence:api-coordinator-coordinator) |

