| domain | technical | |||
|---|---|---|---|---|
| audience |
|
|||
| keywords |
|
|||
| last-updated | 2026-03-01 |
- APIλ JSON(
application/json)μ μ¬μ©νκ³ νλ λ€μ΄λ°μcamelCaseλ₯Ό κΈ°λ³ΈμΌλ‘ νλ€. - μ κ· μΌλ° APIλ
/api/v1/...λ₯Ό κΈ°λ³Έ κ²½λ‘λ‘ μ¬μ©νλ€. - λ°νμ μ μ΄ APIλ νΈνμ± μ΄μ λ‘
/api/runtime/*λ₯Ό μμΈ κ²½λ‘λ‘ μ μ§νλ€.
- νμ¬ Runtime HTTP μ€λ₯ μλ΅ ν¬λ§·μ μλ 2κ° νλλ₯Ό μ¬μ©νλ€.
requestIdλ WebSocket μ€λ₯(runtime:error)μμ μ 곡νλ€.
{
"errorCode": "VALIDATION_ERROR",
"message": "workdirλ₯Ό μ§μ ν΄ μ£ΌμΈμ."
}μ€λ₯ μ½λ:
VALIDATION_ERROR(400)FORBIDDEN(403)NOT_FOUND(404)INTERNAL_ERROR(500)
GET /api/runtime/health
{
"ok": true,
"now": "2026-02-20T07:00:00.000Z"
}GET /api/runtime/status?workdir=<absolute-path>
workdirλ μ νκ°μ΄λ€.workdirκ° μμΌλ©΄ μλ²λ νμ¬ μ€ν μ€ λ°νμμ workdirμ μ¬μ©νλ€.- νμ¬ μ€ν μ€ λ°νμμ΄ μκ³
workdirλ μμΌλ©΄VALIDATION_ERRORλ₯Ό λ°ννλ€.
POST /api/runtime/init
μμ²:
{
"workdir": "/path/to/workdir",
"reset": false
}reset=trueμ΄λ©΄ κΈ°μ‘΄/path/to/workdir/.agentCompanyλ₯Ό μμ ν μ¬μ΄κΈ°ννλ€.- μ΄κΈ°ν μ
tasks/queue.jsonμ μν λ°μ΄ν° μμ΄ λΉ λ°°μ΄([])λ‘ μμ±νλ€. - μ΄κΈ°ν μ μλ³Έ
knowledge-base/νΈλ¦¬λ₯Ό/path/to/workdir/.agentCompany/docsλ‘ λ―Έλ¬ λ³΅μ¬νλ€(AGENTS.mdμ μΈ).
POST /api/runtime/start
μμ²:
{
"workdir": "/path/to/workdir"
}startλ κΈ°μ‘΄ μν¬μ€νμ΄μ€λ₯Ό μ¬μ¬μ©νλ©°,docsλ―Έλ¬ μ¬λ³΅μ¬λ₯Ό μννμ§ μλλ€.- μν¬μ€νμ΄μ€κ° μ΄κΈ°νλμ§ μμμΌλ©΄
VALIDATION_ERRORλ₯Ό λ°ννλ€.
POST /api/runtime/stop
μμ²:
{
"workdir": "/path/to/workdir"
}workdirλ μ νκ°μ΄λ€.- μ€ν μ€ λ°νμμ΄ μλ μνμμ
workdirμμ΄ νΈμΆνλ©΄ λΉ μ€λ μ·μ λ°ννλ€.
GET /api/runtime/providers
μλ΅:
{
"providers": [
{
"provider": "codex",
"binary": "codex",
"installed": true,
"creatable": true
}
]
}GET /api/runtime/agent-guidelines?workdir=<absolute-path>
μλ΅:
{
"workdir": "/path/to/workdir",
"docsRoot": "/path/to/workdir/.agentCompany/docs",
"orgLevels": ["chief", "lead", "member"],
"roles": [
{
"roleName": "strategy-chief",
"orgLevel": "chief",
"sourcePath": "/path/to/workdir/.agentCompany/docs/agents/roles/strategy-chief.md"
}
]
}GET /api/runtime/mode?workdir=<absolute-path>
μλ΅:
{
"workdir": "/path/to/workdir",
"operatingMode": "governed",
"availableModes": ["governed", "silicon-valley"],
"initialized": true,
"configPath": "/path/to/workdir/.agentCompany/config.json"
}POST /api/runtime/mode
μμ²:
{
"workdir": "/path/to/workdir",
"operatingMode": "silicon-valley"
}κ·μΉ:
operatingModeλgoverned|silicon-valleyμ€ νλμ¬μΌ νλ€.- μν¬μ€νμ΄μ€κ° μ΄κΈ°νλμ§ μμ κ²½μ°(μ€μ νμΌ λΆμ¬)
VALIDATION_ERRORλ₯Ό λ°ννλ€. - λͺ¨λ λ³κ²½μ μ μ¬μ΄ν΄ μμ μμ (λͺ¨λ task status=
pending)μμλ§ νμ©νλ€.
GET /api/runtime/metrics?workdir=<absolute-path>&limit=<number>
μλ΅:
{
"workdir": "/path/to/workdir",
"count": 2,
"sourcePath": "/path/to/workdir/.agentCompany/logs/metrics.ndjson",
"events": [
{
"eventType": "mode.changed",
"timestamp": "2026-02-21T03:20:00.000Z",
"workdir": "/path/to/workdir",
"operatingMode": "silicon-valley"
}
]
}κ·μΉ:
limitκΈ°λ³Έκ°μ200μ΄λ©° μ΅λ2000κΉμ§ νμ©νλ€.- νμΌμ΄ μμΌλ©΄ λΉ λ°°μ΄(
events: [])μ λ°ννλ€.
POST /api/runtime/agents
μμ²:
{
"workdir": "/path/to/workdir",
"type": "codex",
"displayName": "Codex Builder",
"personaSummary": "ꡬν μ€μ¬",
"orgLevel": "member",
"roleName": "implementation-engineer",
"primaryGoal": "κΈ°λ₯ ꡬν",
"reportsTo": "lead-agent-uuid"
}κ·μΉ:
orgLevelμchief|lead|memberμ€ νλμ¬μΌ νλ€.roleNameμ λΉ λ¬Έμμ΄μΌ μ μλ€.reportsToλ μ νκ°μ΄λ€.leadλchiefμλμλ§ λ°°μΉ κ°λ₯νλ€.memberλleadμλμλ§ λ°°μΉ κ°λ₯νλ€.
PATCH /api/runtime/agents/{agentId}
μμ² νλλ λΆλΆ μ λ°μ΄νΈλ₯Ό νμ©νλ€.
orgLevel,roleNameμ λ 립 νλλ‘ μ λ°μ΄νΈνλ€.reportsToλ μ νκ°μ΄λ©°nullλ‘ μ λ¬νλ©΄ κ·Έλ£Ή λ°°μΉλ₯Ό ν΄μ νλ€.
GET /api/runtime/org-chart?workdir=<absolute-path>
μλ΅:
{
"workdir": "/path/to/workdir",
"generatedAt": "2026-02-21T01:20:00.000Z",
"operatingMode": "governed",
"orgLevels": ["chief", "lead", "member"],
"nodes": [
{
"agentId": "agent-uuid",
"displayName": "Strategy Chief",
"agentType": "claude",
"orgLevel": "chief",
"roleName": "strategy-chief",
"primaryGoal": "λ²μ/DoD νμ ",
"groupId": "chief-agent-uuid",
"teamId": null,
"reportsTo": null,
"approvableTransitions": ["PLAN->WORK", "REVIEW->COMPOUND"]
}
],
"groups": [
{
"groupId": "chief-agent-uuid",
"groupName": "Strategy Chief Group",
"rootAgentId": "chief-agent-uuid",
"chiefAgentId": "chief-agent-uuid",
"leadAgentIds": ["lead-agent-uuid"],
"memberAgentIds": ["member-agent-uuid"],
"agentIds": ["chief-agent-uuid", "lead-agent-uuid", "member-agent-uuid"]
}
],
"approvalRules": [
{
"fromStage": "PLAN",
"toStage": "WORK",
"transitionKey": "PLAN->WORK",
"requiredOrgLevels": ["chief"],
"requiresUserApproval": false
}
]
}POST /api/runtime/directives
μμ²:
{
"workdir": "/path/to/workdir",
"instruction": "μ΄λ² μ£Ό κ²°μ μ΄νλ₯ μ 20% μ€μ΄λ μ€νμμ μ립νκ³ μ§νν΄μ€",
"priority": "high",
"operatingMode": "governed",
"riskLevel": "low",
"targetChiefs": ["chief-product", "chief-tech"],
"dueBy": "2026-02-22T12:00:00Z"
}κ·μΉ:
- CEO Dashboard κ³΅κ° μ§μ μ μ΄λ€.
- ν€λ
x-agent-company-user-role=ceoκ° νμνλ€. targetChiefsλorgLevel=chiefμμ΄μ νΈλ‘ ν΄μ κ°λ₯ν΄μΌ νλ€.lead/memberλ₯Ό μ§μ μμ μλ‘ μ§μ νλ©΄FORBIDDENμ λ°ννλ€.- μμ± μ±κ³΅ μ μ§μ μνλ
submittedλ‘ κΈ°λ‘νλ€.
μλ΅:
{
"ok": true,
"directiveId": "directive-uuid",
"status": "submitted",
"requestId": "req-1234",
"message": "CEO μ§μλ₯Ό λ±λ‘νκ³ chief λΌμ°ν
μ μμνμ΅λλ€."
}GET /api/runtime/directives?workdir=<absolute-path>&status=<submitted|routed|briefing|delegated|in-progress|reviewing|completed|blocked|canceled>&limit=<number>
μλ΅:
{
"workdir": "/path/to/workdir",
"count": 1,
"directives": [
{
"directiveId": "directive-uuid",
"instruction": "μ΄λ² μ£Ό κ²°μ μ΄νλ₯ μ 20% μ€μ΄λ μ€νμ",
"priority": "high",
"status": "routed",
"targetChiefs": ["chief-product", "chief-tech"],
"createdAt": "2026-02-22T01:00:00Z",
"updatedAt": "2026-02-22T01:10:00Z"
}
]
}κ·μΉ:
workdirλ νμκ°μ΄λ€.limitκΈ°λ³Έκ°μ50μ΄λ©° μ΅λ500κΉμ§ νμ©νλ€.statusλ μ νκ°μ΄λ©° μ§μ μ ν΄λΉ μνλ§ νν°λ§νλ€.
POST /api/runtime/directives/{directiveId}/chief-briefs
μμ²:
{
"workdir": "/path/to/workdir",
"chiefAgentId": "agent-uuid",
"scope": "κ²°μ μ€ν¨ μμ μμΈ 3κ° κ°μ ",
"nonScope": "κ²°μ μλ¨ μ κ· λμ
μ μ μΈ",
"dod": "μ΄νλ₯ 20% κ°μ κ²μ¦ λ‘κ·Έ μ μΆ",
"riskLevel": "low"
}κ·μΉ:
chiefAgentIdλorgLevel=chiefμ¬μΌ νλ€.directiveIdμνκ°routedλλbriefingμΌ λλ§ μμ± κ°λ₯νλ€.scope,nonScope,dodλ λΉ λ¬Έμμ΄μΌ μ μλ€.
μλ΅:
{
"ok": true,
"briefId": "chief-brief-uuid",
"status": "draft",
"requestId": "req-1234"
}POST /api/runtime/chief-briefs/{briefId}/work-orders
μμ²:
{
"workdir": "/path/to/workdir",
"directiveId": "directive-uuid",
"ownerAgentId": "agent-uuid",
"workId": "checkout-drop-r1",
"summary": "κ²°μ μ€ν¨μ¨ κ°μ ꡬν",
"dueBy": "2026-02-24T12:00:00Z"
}κ·μΉ:
ownerAgentIdλorgLevel=lead|chiefμ¬μΌ νλ€.orgLevel=chiefλleadλΉνμ± + μ μνμΌ λλ§ νμ©νλ€.- μμ
briefIdκ° μΉμΈ μνκ° μλλ©΄work-orderλ₯Ό λ§λ€ μ μλ€. - μμ±λ
work-orderλdirectiveIdμ λ°λμ μ°κ²°λμ΄μΌ νλ€.
μλ΅:
{
"ok": true,
"workOrderId": "work-order-uuid",
"status": "queued",
"requestId": "req-1234"
}GET /api/runtime/scaling/policy?workdir=<absolute-path>
μλ΅:
{
"workdir": "/path/to/workdir",
"policy": {
"minMembers": 1,
"maxMembers": 6,
"targetThroughputPerMember": 2,
"evaluationIntervalSec": 60,
"cooldownSec": 600
}
}POST /api/runtime/scaling/policy
μμ²:
{
"workdir": "/path/to/workdir",
"minMembers": 1,
"maxMembers": 8,
"targetThroughputPerMember": 2,
"evaluationIntervalSec": 60,
"cooldownSec": 600
}κ·μΉ:
minMembersλ1μ΄μμ΄μ΄μΌ νλ€.maxMembersλminMembersμ΄μμ΄μ΄μΌ νλ€.evaluationIntervalSecλ μ΅μ10μ΄μμ΄μ΄μΌ νλ€.cooldownSecλ μ΅μ60μ΄μμ΄μ΄μΌ νλ€.chiefλ μλ μ€μΌμΌ λμμμ μ μΈνλ€.
μλ΅:
{
"ok": true,
"requestId": "req-1234",
"message": "μν νλ ₯ μ μ±
μ μ μ₯νμ΅λλ€."
}GET /api/runtime/scaling/status?workdir=<absolute-path>&chiefGroupId=<id>
μλ΅:
{
"workdir": "/path/to/workdir",
"chiefGroupId": "chief-agent-uuid",
"queueDepth": 4,
"inProgressWorkOrders": 3,
"riskHighCount": 1,
"lead": {
"required": true,
"active": true
},
"members": {
"desired": 3,
"active": 2,
"draining": 0
},
"lastEvaluatedAt": "2026-02-22T01:00:00Z"
}POST /api/runtime/scaling/reconcile
μμ²:
{
"workdir": "/path/to/workdir",
"chiefGroupId": "chief-agent-uuid",
"reason": "queue-depth-threshold"
}κ·μΉ:
- μλ²λ νμ¬ backlog/SLA/riskλ₯Ό νκ°ν΄
lead/memberλ§ μ¦κ°ν΄μΌ νλ€. chiefλΉνμ±/μΆμλ νμ©νμ§ μλλ€.- μ€μΌμΌλ€μ΄μ
drainμλ£ μ μλ μ μ© μλ£λ‘ κ°μ£Όνμ§ μλλ€.
μλ΅:
{
"ok": true,
"requestId": "req-1234",
"appliedDecisions": [
{
"roleType": "member",
"action": "up",
"delta": 1
}
]
}POST /api/runtime/approval/validate
μμ²:
{
"workdir": "/path/to/workdir",
"directiveId": "directive-uuid",
"workId": "landing-auth-r3",
"fromStage": "WORK",
"toStage": "REVIEW",
"approverAgentId": "agent-uuid",
"riskLevel": "low"
}κ·μΉ:
riskLevelμ μ νκ°μ΄λ©°low|high|unknownμ νμ©νλ€.directiveIdλ νμκ°μ΄λ€.workIdλ νμκ°μ΄λ€.leadλΉνμ± + μ μν μμ μ΄λ©΄chiefλ₯Ό μΉμΈκΆμλ‘ νμ©ν μ μλ€.
μλ΅:
{
"ok": true,
"allowed": true,
"transitionKey": "WORK->REVIEW",
"operatingMode": "governed",
"requiredOrgLevels": ["lead", "chief"],
"requiresUserApproval": false,
"approver": {
"agentId": "agent-uuid",
"displayName": "Delivery Lead",
"orgLevel": "lead",
"roleName": "delivery-lead"
},
"reason": "μ κ²° ν΅κ³Ό"
}POST /api/runtime/approval/user
μμ²:
{
"workdir": "/path/to/workdir",
"directiveId": "directive-uuid",
"workId": "landing-auth-r3",
"transitionKey": "COMPOUND->CYCLE_END",
"approved": true,
"note": "λ¦΄λ¦¬μ¦ μ’
λ£ μΉμΈ"
}κ·μΉ:
transitionKeyλ νμ¬COMPOUND->CYCLE_ENDλ§ νμ©νλ€.directiveIdμworkIdλ λμΌ μ¬μ΄ν΄λ‘ λ§€ν κ°λ₯ν΄μΌ νλ€.approved=trueκ° κΈ°λ‘λμ΄μΌCOMPOUND->CYCLE_ENDμ§νμ΄ κ°λ₯νλ€.- μ΄λ²€νΈμλ
operatingMode,policyHashλ₯Ό ν¨κ» κΈ°λ‘νλ€. - ν€λ
x-agent-company-user-idκ° νμνλ€. - ν€λ
x-agent-company-user-role=ceoκ° νμνλ€. - μλ² νκ²½λ³μ
AGENT_COMPANY_USER_APPROVAL_TOKENμ΄ μ€μ λ κ²½μ°:- ν€λ
x-agent-company-user-tokenμ΄ νμνλ©° ν΄λΉ κ°κ³Ό μΌμΉν΄μΌ νλ€.
- ν€λ
- μλ² νκ²½λ³μκ° λ―Έμ€μ /λΉ κ°μΈ κ²½μ°:
x-agent-company-user-tokenμμ΄λx-agent-company-user-idλ‘ μΉμΈ μ΄λ²€νΈλ₯Ό κΈ°λ‘ν μ μλ€(λ‘컬 κ°λ° κΈ°λ³Έ κ²½λ‘).
μλ΅:
{
"ok": true,
"requestId": "req-1234",
"transitionKey": "COMPOUND->CYCLE_END",
"message": "CEO(μ¬μ©μ) μ΅μ’
μΉμΈμ κΈ°λ‘νμ΅λλ€."
}POST /api/runtime/messages
μμ²:
{
"workdir": "/path/to/workdir",
"directiveId": "directive-uuid",
"workId": "landing-auth-r3",
"fromPrincipalType": "agent",
"fromAgent": "lead-qa",
"toAgent": "chief-tech",
"channel": "review",
"operatingMode": "governed",
"riskLevel": "low",
"summary": "νκ· ν
μ€νΈ μλ£, λ¦΄λ¦¬μ¦ μΉμΈ νμ",
"requiredAction": "PLAN->WORK μΉμΈ",
"requiredApprover": "chief-tech",
"dueBy": "2026-02-20T12:00:00Z"
}κ·μΉ:
fromAgentλ₯Ό μ μΈν λͺ¨λ νλλ νμκ°μ΄λ€.channelμdirective|plan|work|review|riskλ§ νμ©νλ€.operatingModeλ λ°νμ νμ¬ λͺ¨λμ μΌμΉν΄μΌ νλ€.riskLevelμlow|high|unknownλ§ νμ©νλ€.riskLevel=highμ΄λ©΄requiredApproverλchiefκ³μΈ΅μ ν¬ν¨ν΄μΌ νλ€.dueByλ RFC3339 UTC νμμ€ν¬νμ¬μΌ νλ€.fromAgent,toAgentλ νμ¬ workdirμ λ±λ‘λ μμ΄μ νΈ(id/roleName/displayName)λ‘ ν΄μ κ°λ₯ν΄μΌ νλ€.fromAgentμtoAgentλ μλ‘ λ¬λΌμΌ νλ€.fromPrincipalType=agentμΌ λλ§fromAgentλ₯Ό νμλ‘ κ°μ νλ€.fromPrincipalType=ceo-userμ΄λ©΄toAgentλchiefκ³μΈ΅λ§ νμ©νλ€.
μλ΅:
{
"ok": true,
"requestId": "req-1234",
"message": "μμ΄μ νΈ λ©μμ§λ₯Ό μμ νκ³ μ€ν€λ§ κ²μ¦/κΈ°λ‘νμ΅λλ€."
}μλ APIλ knowledge-base/technical/cross-workdir-collaboration.md κΈ°μ€μ μ€κ³ μ΄μμ΄λ€.
νμ¬ λ¬Έμλ κ³μ½ μ΄μμ μ μνλ©°, μλ² κ΅¬ν μ μΈλΆ νλλ νμ νΈν μμΉμΌλ‘ νμ νλ€.
POST /api/runtime/handoffs
μμ²:
{
"sourceWorkdir": "/path/to/workdir-a",
"targetWorkdir": "/path/to/workdir-b",
"handoffWorkId": "auth-platform-r1",
"fromAgent": "chief-tech",
"toAgent": "lead-platform",
"operatingMode": "governed",
"riskLevel": "high",
"summary": "A νλ‘μ νΈ μΈμ¦ λͺ¨λμ B νλ‘μ νΈ νλ«νΌ κ·κ²©μ λ§μΆ° κ²μ¦ μμ²",
"requiredAction": "WORK->REVIEW μ ν κ²μ¦",
"requiredApprover": "chief-platform",
"dueBy": "2026-02-24T12:00:00Z",
"evidenceLogPath": "knowledge-base/history/reviews/auth-platform-r1-review.md",
"idempotencyKey": "handoff-auth-platform-r1-001"
}κ·μΉ:
- λͺ¨λ νλλ νμκ°μ΄λ€.
sourceWorkdirμtargetWorkdirλ μλ‘ λ¬λΌμΌ νλ€.operatingModeλgoverned|silicon-valleyλ§ νμ©νλ€.riskLevelμlow|high|unknownλ§ νμ©νλ€.fromAgentλsourceWorkdirμ μμ΄μ νΈλ‘,toAgentλtargetWorkdirμ μμ΄μ νΈλ‘ ν΄μ κ°λ₯ν΄μΌ νλ€.riskLevel=highμ΄λ©΄requiredApproverλchiefκ³μΈ΅μ ν¬ν¨ν΄μΌ νλ€.dueByλ RFC3339 UTC νμμ€ν¬νμ¬μΌ νλ€.idempotencyKeyλ λμΌ μμ² μ¬μ μ‘ μ μ€λ³΅ μμ±μ λ§κΈ° μν΄ μ¬μ©νλ€.
μλ΅:
{
"ok": true,
"handoffId": "handoff-uuid",
"status": "requested",
"requestId": "req-1234",
"message": "κ΅μ°¨ workdir νμ
μμ²μ κΈ°λ‘νμ΅λλ€."
}GET /api/runtime/handoffs?workdir=<absolute-path>&status=<requested|accepted|in-progress|completed|rejected|blocked>&limit=<number>
μλ΅:
{
"workdir": "/path/to/workdir-a",
"count": 1,
"handoffs": [
{
"handoffId": "handoff-uuid",
"sourceWorkdir": "/path/to/workdir-a",
"targetWorkdir": "/path/to/workdir-b",
"handoffWorkId": "auth-platform-r1",
"status": "requested",
"operatingMode": "governed",
"riskLevel": "high",
"requiredApprover": "chief-platform",
"createdAt": "2026-02-22T01:00:00Z",
"updatedAt": "2026-02-22T01:00:00Z"
}
]
}κ·μΉ:
workdirλ νμκ°μ΄λ€.limitκΈ°λ³Έκ°μ50μ΄λ©° μ΅λ500κΉμ§ νμ©νλ€.statusλ μ νκ°μ΄λ©° μ§μ μ ν΄λΉ μνλ§ νν°λ§νλ€.
POST /api/runtime/handoffs/{handoffId}/approve
μμ²:
{
"workdir": "/path/to/workdir-b",
"approverAgentId": "agent-uuid",
"approved": true,
"note": "νλ«νΌ μ μ±
κ²ν μλ£"
}κ·μΉ:
workdirλtargetWorkdirμ μΌμΉν΄μΌ νλ€.approverAgentIdλtargetWorkdirμ μμ΄μ νΈλ‘ ν΄μ κ°λ₯ν΄μΌ νλ€.- μΉμΈ κΆν κ²μ¦μ
orgLevelκ³ΌriskLevelμ ν¨κ» μ¬μ©νλ€. riskLevel=highμ΄κ³ μ μ± μμ μ¬μ©μ μΉμΈμ΄ μꡬλλ©΄POST /api/runtime/approval/userλ₯Ό μΆκ°λ‘ ν΅κ³Όν΄μΌ νλ€.
μλ΅:
{
"ok": true,
"handoffId": "handoff-uuid",
"status": "accepted",
"requestId": "req-1234",
"message": "κ΅μ°¨ workdir νμ
μΉμΈμ κΈ°λ‘νμ΅λλ€."
}POST /api/runtime/handoffs/{handoffId}/complete
μμ²:
{
"workdir": "/path/to/workdir-b",
"completedByAgentId": "agent-uuid",
"outcomeSummary": "μμ²λ κ²μ¦ μλ£, λ¦΄λ¦¬μ¦ μ°¨λ¨ μ΄μ μμ",
"evidenceLogPath": "knowledge-base/history/reviews/auth-platform-r1-review.md"
}μλ΅:
{
"ok": true,
"handoffId": "handoff-uuid",
"status": "completed",
"requestId": "req-1234",
"message": "κ΅μ°¨ workdir νμ
μλ£λ₯Ό κΈ°λ‘νμ΅λλ€."
}μΆμ μ΄λ²€νΈ νμ :
handoff.requestedhandoff.approvedhandoff.rejectedhandoff.startedhandoff.completedhandoff.blocked
Directive μΆμ μ΄λ²€νΈ νμ :
directive.submitteddirective.routedchief.brief.createdwork-order.assigneddirective.closed
Scaling μΆμ μ΄λ²€νΈ νμ :
scaling.evaluatedscaling.upscaling.downlead.activatedlead.deactivated
POST /api/runtime/command (Internal-only)
μμ²:
{
"workdir": "/path/to/workdir",
"agent": "agent-uuid-or-role-id",
"provider": "codex",
"language": "Korean",
"command": "λ²κ·Έ μμΈ λΆμν΄μ€"
}κ·μΉ:
- CEO Dashboardμ μ§μ νΈμΆ κ²½λ‘λ‘ μ¬μ©νλ©΄ μ λλ€.
- λ΄λΆ μ€μΌμ€νΈλ μ΄μ
κ²½λ‘(
directive -> chief-brief -> work-order)μμλ§ νμ©νλ€. - ν€λ
x-agent-company-call-path=internal-orchestratorκ° νμνλ€. providerλ μ νκ°μ΄λ©° λλ½ μagentκ°μ λ체 μ¬μ©νλ€.- μ΅μ’
providerλ
claude|gemini|codexμ€ νλλ‘ ν΄μ κ°λ₯ν΄μΌ νλ€. languageλ μ νκ°μ΄λ©° μ΅λ 64μλ€.commandκ°args:λ‘ μμνλ©΄ CLI μΈμ λͺ¨λλ‘ μ€ννλ€.languageμ§μλ¬Έμ ν둬ννΈ λͺ¨λμμλ§ μλ λΆμ°©λκ³args:λͺ¨λμμλ λΆμ°©λμ§ μλλ€.
μλ΅:
{
"ok": true,
"requestId": "req-1234"
}{
"workdir": "/path/to/workdir",
"initialized": true,
"isRunning": false,
"directiveState": {},
"runtimeState": {},
"liveState": {},
"events": [],
"stdout": [],
"stderr": []
}- κ²½λ‘:
/ws/runtime
ν΄λΌμ΄μΈνΈ ꡬλ λ©μμ§:
{
"type": "runtime:subscribe",
"requestId": "req-1234",
"payload": {
"workdir": "/path/to/workdir"
}
}νΈνμ± κ·μΉ:
payload.workdirλμ top-levelworkdirλ νμ©νλ€.- λμΌ
requestIdμ¬μ μ‘μ μ€λ³΅ μ²λ¦¬νμ§ μλλ€.
μλ² μ΄λ²€νΈ νμ :
runtime:connectedruntime:subscribedruntime:snapshotruntime:logruntime:agent_streamruntime:directiveruntime:scalingruntime:error
runtime:agent_stream payload:
{
"workdir": "/path/to/workdir",
"agent": "agent-uuid-or-role-id",
"stream": "stdout",
"content": "line",
"requestId": "req-1234",
"timestamp": "2026-02-20T07:00:00.000Z"
}streamκ°μstdout|stderr|systemμ μ¬μ©νλ€.- λͺ
λ Ή μμ/μ’
λ£/νμμμ κ°μ μμ€ν
λ©μμ§λ
systemμ€νΈλ¦ΌμΌλ‘ μ λ¬νλ€.
runtime:directive payload:
{
"workdir": "/path/to/workdir",
"directiveId": "directive-uuid",
"status": "routed",
"chiefAgentIds": ["agent-uuid"],
"requestId": "req-1234",
"timestamp": "2026-02-20T07:00:00.000Z"
}runtime:scaling payload:
{
"workdir": "/path/to/workdir",
"chiefGroupId": "chief-agent-uuid",
"roleType": "member",
"action": "up",
"delta": 1,
"reason": "queue-depth-threshold",
"requestId": "req-1234",
"timestamp": "2026-02-20T07:00:00.000Z"
}λͺ¨λ WebSocket λ©μμ§λ μλ envelopeλ₯Ό λ°λ₯Έλ€.
{
"type": "runtime:snapshot",
"version": "1.0",
"requestId": "req-5678",
"timestamp": "2026-02-20T07:00:00.000Z",
"payload": {}
}μΆμ κ·μΉ:
- envelope
requestIdλ μλ² μ΄λ²€νΈ λ¨μ μλ³μλ€. - λͺ
λ Ή μ€ν μκ΄κ΄κ³λ
runtime:agent_stream.payload.requestIdλ₯Ό κΈ°μ€μΌλ‘ μΆμ νλ€. - μ€μΌμΌλ§ μκ΄κ΄κ³λ
runtime:scaling.payload.requestIdλ₯Ό κΈ°μ€μΌλ‘ μΆμ νλ€.
- Runtime HTTP/WS μ€ν€λ§ λ³κ²½ μ λ³Έ λ¬Έμλ₯Ό λ¨Όμ κ°±μ νλ€.
- μΈμ¦/μ€ν μ μ±
μ΄ λ³κ²½λλ©΄
knowledge-base/technical/agent-communication-auth.mdλ₯Ό ν¨κ» κ°±μ νλ€. - CEO μ§μ λΌμ°ν
μ μ±
μ΄ λ³κ²½λλ©΄
knowledge-base/operations/ceo-command-orchestration.mdλ₯Ό ν¨κ» κ°±μ νλ€. - μν νλ ₯ μ μ±
μ΄ λ³κ²½λλ©΄
knowledge-base/governance/approval-rules/role-capacity-scaling.mdλ₯Ό ν¨κ» κ°±μ νλ€.