Uygulamayı aç
Moonborn — Developers

Git senkronizasyonu

Persona'ları bir Git deposuna YAML + Markdown olarak yansıt (mirror) — pull / push / iki yönlü (bidirectional), temel yol (base path) kapsamı, Git blob SHA çakışma tespiti.

Git senkronizasyonu persona kütüphaneni çekme isteklerinde (pull request) görünür yapar. Kanonik Moonborn durumu yapılandırılmış bir Git deposuna YAML + Markdown olarak yansıtılır (mirror). Depo kanonik kaynak olabilir (PR inceleme deseni), denetim izi olabilir (Moonborn arayüzü birincil, Git geçmiş), ya da ikisi birden (iki yönlü senkronizasyon, çakışma koruması ile).

Bu sayfayı bitirdiğinde

  • Üç senkronizasyon modunu (pull / push / iki yönlü) ayırt edebileceksin.
  • Persona'ların dosya biçimini (YAML başlık + Markdown gövde) bileceksin.
  • Çakışma tespit (conflict detection) mekanizmasını (Git blob SHA) ve üç çözümleme stratejisini (remote_wins / local_wins / error) tanıyacaksın.
  • Commit stratejisi seçeneklerini (per_change / batched / manual) çalışma alanına göre seçebileceksin.

Ön koşul: Team plan, GitHub / GitLab / Bitbucket deposu, depoya yazma yetkisi olan OAuth token'ı.

Üç senkronizasyon modu

integrations.git.sync_direction:

ModYönKullanım örneği
pullGit → MoonbornDepo kanoniktir. Kod-olarak-persona; PR incelemesi zorunlu.
pushMoonborn → GitArayüz kanoniktir. Git denetim izi / yedek.
bidirectionalİkisi deKarma ekipler — arayüz editörleri + depo editörleri, çakışma koruması ile.

Dosya biçimi

Her persona bir dosyadır:

{base_path}/{persona_id}.yaml

Varsayılan base_path: personas/. İçerik YAML başlık + Markdown gövde:

---
id: per_mert_01H...
name: Mert Aksoy
version: 4
soul:
  desire: dünyanın görmezden gelemeyeceği bir şey inşa etmek
  fear: sıradan görünmek
  wound: sevgiyi başarıyla ölçen bir ebeveyn
  growth_arc: onay arayan'dan kendine güven'e
self:
  bigFive:
    openness: 0.78
    conscientiousness: 0.71
    extraversion: 0.55
    agreeableness: 0.42
    neuroticism: 0.68
  archetype: the rebel
  values: [competence, autonomy, honesty]
mask:
  voice:
    register: intelligent, restless, occasionally sharp
    rhythm: short clauses; long pauses imagined
  signaturePhrases: ["look —", "the thing is", "fine, let me think out loud"]
surface:
  name: Mert Aksoy
  age: 34
  location: Beyoğlu, Istanbul
  occupation: Founder, devtools startup
  language: tr
---
 
# Mert Aksoy — anlatı bağlamı
 
Mert yirmili yaşlarını İstanbul tech sahnesinde geçirdi. İlk
şirketi bir Türk telekoma satıldı — hâlâ "fena değil" diye
tanımladığı sessiz bir çıkış (exit).

YAML başlık dört yapısal katmanı taşır; Markdown gövde anlatı temellendirmesi (serbest biçim, isteğe bağlı).

Çakışma tespiti

Üç yönlü birleştirme (three-way merge) yoktur; son-yazan-kazanır (last-write-wins) yaklaşımını açıkça reddederiz. Senkronizasyon sırasında Moonborn son gördüğümüz Git blob SHA'sını saklar; yeni senkronizasyonda SHA'yı tekrar kontrol eder. Eşleşmezse hangi tarafın kazanacağını sen seçersin.

integrations.git.conflict_strategy:

StratejiDavranış
remote_winsPull → yerel değişiklikleri ezer
local_winsPush → uzaktaki sürümü ezer
errorPersonaFileSyncConflictError fırlat — etkilenen persona kimlikleri yükte; senkronizasyon durur

Commit stratejisi

integrations.git.commit_strategy:

StratejiDavranışKullanım örneği
per_changeHer persona refine = 1 commitPR inceleme deseni; commit geçmişi değişiklik başına fark
batchedSenkronizasyon koşumu başına 1 commitPeriyodik senkronizasyon (saatlik, günlük)
manualTaslak toplu yayar; commit operatöre bırakılırEkip onay deseni — otomatik commit yerine incele-sonra-commit

Push'lar için varsayılan per_change — her refine incelenebilir bir commit olur.

Kurulum — adım adım

await client.config.setItem({
  key: 'integrations.git.enabled',
  value: true,
  scope: 'workspace',
});
 
await client.config.setItem({
  key: 'integrations.git.provider',
  value: 'github',  // 'github' | 'gitlab' | 'bitbucket'
  scope: 'workspace',
});
 
await client.config.setItem({
  key: 'integrations.git.repo',
  value: 'moonborn-org/personas',  // sahip/depo
  scope: 'workspace',
});
 
await client.config.setItem({
  key: 'integrations.git.branch',
  value: 'main',
  scope: 'workspace',
});
 
await client.config.setItem({
  key: 'integrations.git.sync_direction',
  value: 'bidirectional',
  scope: 'workspace',
});
 
await client.config.setItem({
  key: 'integrations.git.commit_strategy',
  value: 'per_change',
  scope: 'workspace',
});
 
await client.config.setItem({
  key: 'integrations.git.oauth_token_ref',
  value: 'secret://workspace/github-pat',
  scope: 'workspace',
});

Tetiklemek için: POST /v1/integrations/git/sync (elle) veya integrations.git.cron_schedule yapılandırma maddesi (periyodik).

Desteklenen sağlayıcılar

SağlayıcıDurumKimlik doğrulama
GitHubcanlıPersonal Access Token / GitHub App
GitLabcanlıPersonal Access Token / Deploy Token
BitbucketcanlıApp Password / Repository Access Token

Her sağlayıcı integrations.git.providers.<provider>.* altında bağımsız plan kapısıyla kontrol edilir. Üçü de Team ve üzeri.

Henüz inenler

  • /v1/integrations/git/* REST yüzeyi (şu an sadece yapılandırma + zamanlanmış görev tetikleme)
  • Sağlayıcı OAuth akışı için ilk kurulum arayüzü (token şu an elle referans)
  • Dış push'ları otomatik tetikleyen git push webhook alıcısı
  • error stratejisi için çakışma çözümleme arayüzü

Plan gereksinimi

Team ve üzeri.

Dürüst kapsam

İlgili

Kod-olarak-persona eğitimi

Git senkronizasyonu kurulumunun uçtan uca anlatımı.

Open →
Persona'dan karakter incili

Persona YAML + Markdown'ı yazar odası iş akışına bağlama.

Open →
Denetim kaydı dışa aktarımı

Çalışma alanı dışa aktarımı — Git senkronizasyonundan farklı (salt okunur imzalı arşiv).

Open →
Webhook entegrasyonu

persona.created / persona.refined olayları ile senkronizasyon tetikleme.

Open →