sync_push
✅ 라이브 (서버)
sync_push/sync_*/vault_* 도구는 api.ainote.dev 서버에서 동작합니다 — JSON-RPC POST /api/mcp 또는 @ainote/sdk(ai.sync.*)로 호출하세요. (참고: @ainote/mcp npm 패키지의 구버전엔 번들이 안 됐을 수 있으니, 직접 JSON-RPC 또는 SDK 사용을 권장합니다.)
로컬 파일 → ainote hub. sync 시스템 의 일부.
시그니처
json
{
"name": "sync_push",
"arguments": {
"path": "global/CLAUDE.md",
"content": "<file content>",
"sha256": "abc123...",
"hlc": "2026-05-07T14:01:00.000Z.0.macmini",
"device_id": "macmini-2026-04-A1B2"
}
}| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
path | string | ✅ | ainote vault 내 경로 |
content | text | ✅ | 파일 본문 |
sha256 | string | ✅ | content 의 SHA-256 (서버 검증) |
hlc | string | ✅ | Hybrid Logical Clock |
device_id | string | ✅ | 송신 디바이스 식별 |
mtime | ISO 8601 | 로컬 mtime (충돌 임계 비교용) |
응답
json
{
"path": "global/CLAUDE.md",
"git_sha": "def456...",
"hlc": "2026-05-07T14:01:00.000Z.0.macmini",
"previous_hlc": "2026-05-06T...",
"size_bytes": 12345,
"stored_at": "2026-05-07T14:01:01Z"
}충돌
서버가 더 새로운 HLC 가지고 있으면:
json
{
"error": {
"code": -32006,
"message": "Conflict: server has newer HLC",
"data": {
"your_hlc": "2026-05-07T14:01:00.0.macmini",
"server_hlc": "2026-05-07T14:02:30.0.macbook",
"time_diff_seconds": 90
}
}
}→ 클라이언트가 sync-now.sh 알고리즘에 따라 처리 (conflicts).
sha256 검증
서버가 받은 content 의 sha256 을 계산해서 클라이언트가 보낸 것과 비교. 다르면:
json
{ "error": { "code": -32602, "message": "sha256 mismatch" } }→ 전송 중 손상 가능성 → 재시도.
에러
| 코드 | 메시지 |
|---|---|
| -32602 | invalid path |
| -32602 | sha256 mismatch |
| -32006 | conflict |
| -32004 | quota exceeded (5 GB) |