docs를 저장소로 되돌리고 계약 예제를 복원한다

5cfb8a1이 .gitignore에 docs/를 넣고 68개 파일을 지웠다. 그런데
AgentBuilderContractExampleTest, ToolBundleContractExampleTest,
ArchitectureDocumentContractTest는 docs/ 아래 계약 예제와 architecture
문서를 입력으로 직접 읽는다. 그 결과 clean clone에서 테스트 10건이
입력을 찾지 못해 실패했다.

제외 범위를 원래 의도대로 좁힌다. 에이전트 산출물(AGENTS.md, .agents/,
.codex/, docs/superpowers/)은 계속 제외하고 저장소 문서는 추적한다.

문서는 삭제 직전 상태(3de052a)를 기준으로 복원하고, 그 위에 main 코드와
대조해 어긋난 부분을 고쳤다.

- ADR-0007을 Superseded로 바꾸고 ADR-0013을 새로 쓴다. route당 Tool
  Service N개가 최종안이며, PortalToolRegistryClient가 이미 route별로
  N개를 유지하고 있는데 ADR-0007은 "bundles는 항상 한 항목"을 Accepted
  상태로 주장하고 있었다. ADR-0009 결정 4도 부분 대체한다.
- ADR-0008 파일 헤더가 Accepted였으나 ADR-0009가 이미 대체한 상태였다.
- 6078852의 endpoint 소유권 반전이 반영되지 않은 서술을 계약 v0.2,
  bundle 설정 예제, Tool 적재 안내에서 고친다.
- Portal registry 계약 v0.1과 route key 규약을 새로 문서화한다. 둘 다
  구현은 있는데 계약 문서가 없었다.
- MCP SDK 2.0.0 SBOM을 추가한다.

번호 주석: ADR-0011과 0012는 feature/mcp-integration이 Tool inputSchema
정책에 쓰고 있어 비워 둔다.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-22 23:27:56 +09:00
parent 5a523ab317
commit cb29b192b4
76 changed files with 4626 additions and 1 deletions

View File

@@ -0,0 +1,17 @@
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-11-25",
"capabilities": {
"tools": {
"listChanged": true
}
},
"serverInfo": {
"name": "shl-axhub-mcp-server-external",
"title": "SHL AX HUB MCP Server (EXTERNAL)",
"version": "1.0.0"
}
}
}

View File

@@ -0,0 +1,13 @@
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "customer.search@1.0.0: timed out"
}
],
"isError": true
}
}

View File

@@ -0,0 +1,8 @@
{
"jsonrpc": "2.0",
"id": 3,
"error": {
"code": -32602,
"message": "Invalid params: 'query' is required"
}
}

View File

@@ -0,0 +1,12 @@
{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "processing",
"arguments": {
"query": "processing system information inquiry",
"category": "processing"
}
}
}

View File

@@ -0,0 +1,16 @@
{
"jsonrpc": "2.0",
"id": 3,
"result": {
"content": [
{
"type": "text",
"text": "processing complete",
"_meta": {
"searchTime": 976.1
}
}
],
"isError": false
}
}

View File

@@ -0,0 +1,67 @@
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"tools": [
{
"name": "insurance.processing.test",
"title": "처리계 연계 점검",
"description": "처리계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 보험 업무 데이터는 처리하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
},
"annotations": {
"readOnlyHint": true,
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false
}
},
{
"name": "insurance.corebanking.test",
"description": "계정계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 계약·수납·지급 처리는 수행하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
}
},
{
"name": "insurance.information.test",
"description": "정보계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 고객·계약 정보를 조회하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
}
},
{
"name": "insurance.channel.test",
"description": "채널계 연계 경로와 요청·응답 형식을 점검하는 테스트 전용 도구입니다. 실제 고객 채널 업무를 수행하지 않습니다.",
"inputSchema": {
"type": "object",
"properties": {
"requestId": {
"type": "string",
"description": "테스트 요청 식별자입니다."
}
}
}
}
]
}
}