Ana içeriğe geç

Sahne veri biçimi

Kayıt, giriş ve Chrome uzantısı akışları için elle kayıt ve inceleme bölümüne bakın. Kaydedici aynı Scene sözleşmesini kullanır ve görüntüleri yalnızca Admin incelemesinden sonra yayımlar.

reconstruct.scene.v1, gözlemlenen bir arayüzü kaynak veya hedef UI çatısından bağımsız tanımlar. Web DOM/CSS ile Android görünüm/erişilebilirlik yapıları bağdaştırıcı girdileridir. Tüketici, bu yerel yapıları temel veri modeli olarak kullanmadan HTML, Compose veya başka bir arayüz üretebilir.

İndirilebilir JSON Schema, tam alan adlarını, zorunlu üyeleri, null kabul eden türleri ve enum değerlerini tanımlar. Bu belge anlık görüntüsüne bir SHA-256 eşlik eder. Gerçek yakalamalar için çalışan sunucunun o dışa aktarımla döndürdüğü şemayı ve sağlama toplamını kullanın.

Tam örnek, kapalı/açık iletişim kutusu karelerini ve iki geçişi içerir. Bu açıklayıcı bir test verisidir: example: kanıtları kurgusaldır, ölçülmüş bir ürün yakalaması değildir.

Web Extension ortamı​

Masaüstü Chrome uzantısı yakalamaları web-extension ortamını kullanır (dahili C# / Admin MCP içinde WebExtension, protobuf değeri CAPTURE_TYPE_ENVIRONMENT_WEB_EXTENSION = 6). Mobil bu ortamı desteklemez. Scene geometri sözleşmesi aynı kalır. Yakalama sürümü türlendirilmiş browserExtension meta verisi içerebilir: id, name, version ve packageSha256; displayName doğrulanmış paketten gelir. Ekranlar bir Admin işiyle kaydedilir ve incelenene kadar yayımlanmaz. Operatör kontrolleri ve gizlilik sınırları için elle kayıt bölümüne bakın.

Dahili aracı iş sahiplenme isteği expected_environment (alan 2) içerir. Alan atlanırsa eski çalışanlar için Web korunur. Kuyruk bunu sahiplenme işlemi içinde aracının ortamıyla karşılaştırır; böylece aracının Admin ayarlarının değiştirilmesi normal Web çalışanının bir uzantı mağazası sayfasını taramasına yol açamaz. Bu kuyruk kontrolleri herkese açık Capture MCP araçları değildir.

Aktarım ve edinme​

Normalleştirilmiş dışa aktarım şu anda MCP get_interface_scene üzerinden kullanılabilir. Yayımlanan REST ve gRPC katalog sözleşmeleri şu anda ayrı Scene işlemi tanımlamaz. Bunların katalog, içgörü ve depolanmış dosya yanıtları, aktarım JSON olsa da ayrı modellerdir.

list_products, list_platforms, list_versions ve list_pages ile yakalamayı keşfedin. Seçili ürünü, sürümü, ortamı, sayfayı ve tam kaydedilmiş view değerini koruyun. Desteklenen platform seçenekleri yakalama bulunduğunu kanıtlamaz. Kaydedilmiş görünümleri ayrı isteyin ve her dışa aktarımın kendi profillerini ve karelerini inceleyin.

Açıklayıcı bir seçimle örnek MCP tools/call parametreleri:

{
"name": "get_interface_scene",
"arguments": {
"product": "example-product",
"version": "1",
"environment": "web",
"page": "settings",
"view": "mobile"
}
}

Yanıt kısa bir manifest biçimindedir:

AlanAnlam
schemaSahne tanımlayıcısı: reconstruct.scene.v1.
artifactSchemaZarf tanımlayıcısı: reconstruct.scene-export.v1.
path, uri, sha256, bytesDışa aktarım konumu, SHA-256 ve bayt uzunluğu.
schemaPath, schemaUri, schemaSha256Geçerli JSON Schema ve özeti.
entryFrameId, frames, transitionCountGiriş karesi, kısa kare envanteri ve geçiş sayısı.
frameCount, profileCount, assetCountDışa aktarım envanter sayıları.
truncatedEn az bir kare eksiktir.
issueCount, issues, issuesTruncatedToplam sorun sayısı ve en fazla 30 sorunun önizlemesi.

Yollar sunucunun dosya sistemine aittir. Bunları yalnızca dosya sistemi gerçekten istemciyle paylaşılıyorsa doğrudan okuyun. Aksi halde döndürülen URI'leri MCP origin adresine göre çözümleyin ve bağlantının mevcut yetkilendirmesiyle indirin. Ürün kimliklerinden aktarım URL'leri oluşturmayın veya kimlik bilgilerini açığa çıkarmayın. Özetleri özgün baytlarla doğrulayın; JSON'ı yeniden biçimlendirmek özetini değiştirir.

Dışa aktarım zarfı​

{
"schema": "reconstruct.scene-export.v1",
"scene": {
"schema": "reconstruct.scene.v1",
"id": "example/1/web/settings/mobile",
"platform": "web",
"entryFrameId": "frame-0",
"profiles": [],
"frames": [],
"resources": [],
"transitions": [],
"correspondences": [],
"issues": []
},
"assets": {}
}

Bu, yapıyı gösterir; tam örnek dolu kareler içerir. Scene JSON Schema'ya göre zarfı değil scene nesnesini doğrulayın. assets, Scene kaynak kimliklerini arşivlenmiş baytlarla eşler. Her girdide isteğe bağlı path/uri, mimeType, sha256 ve sizeBytes bulunur. Baytları arşivlenmediyse kaynağın bir varlık girdisi olmayabilir. Kaynak URI'si, aile adı veya boş medya kapsayıcısı kullanılabilir baytların varlığını kanıtlamaz.

Belge ve kimlik​

Scene üyesiAnlam
schema, id, platformZorunlu biçim, belge kimliği ve kaynak platform (unknown, web, android).
entryFrameIdDaha sonraki kapatılmış/varsayılan içerikten önce izin ekranını gösterebilen, isteğe bağlı ilk gözlemlenen kare.
profilesMantıksal görünüm alanı ve isteğe bağlı yoğunluk, yazı tipi ölçeği, güvenli kenar boşlukları, dil/yerel ayarı ve tema.
framesGözlemlenen durumlar ve düğüm envanterleri.
resourcesDüğümler ve metinlerin başvurduğu medya/yazı tipi tanımları.
transitionsKaydedilmiş eylemler ve gözlemlenen sonuçları.
correspondencesKareler arasında açıkça belirtilen düğüm ilişkileri.
issuesEksik, desteklenmeyen veya çözümlenmemiş kanıtlar.

Profil, kare, kaynak ve geçiş kimlikleri belge kapsamında geçerlidir. Düğüm kimlikleri tek bir kare içinde benzersizdir ve parentId o kareye başvurur. Eylem kimlikleri düğüme özeldir. Başka karede tekrarlanan kimlik veya eşit yerel yol, kimlik eşitliğini kanıtlamaz. Bir eşleşme her iki kare/düğüm çiftini, kaynak bilgisini ve isteğe bağlı güveni kaydeder; profiller arası kimliği tahmin etmek yerine bunu izleyin.

Bir kare id, profileId, stateId, coordinateSpace, isteğe bağlı extent ve viewportBounds, truncated, nodes ve evidence içerir. Durum kimlikleri gözlemleri adlandırır, evrensel bir CSS durum kataloğunu değil. Düğüm sırası hiyerarşi envanterini tanımlar; kanıtlanmış çizim sırası değildir.

Olgular ve bilinmeyen değerler​

Kaynak bilgisi taşıyan özellikler SceneFact<T> kullanır:

{
"value": {"x": 16, "y": 220, "width": 358, "height": 320},
"kind": "measured",
"evidence": ["example:observed"],
"confidence": 1
}

Bir olgu value, kind ve boş olmayan evidence gerektirir. İsteğe bağlı güven 0–1 arasındadır ve kanıt türünü değiştirmez:

TürYorum
measuredGözlemlenen etkin çıktı.
declaredEtkin görüntülemenin kanıtı olmayan kaynak/kaynak varlığı bildirimi.
inferredBir varsayım veya önerilen yorum.

Atlanmış/null isteğe bağlı olgu bilinmeyendir; sıfır, yanlış, saydam çizim, boyut politikası veya başarılı karşılaştırma anlamına gelmez. Açık false ve 0 anlamlarını korur. Açık unknown enum değeri bilinmeyen kalır. Boş eylem/hareket dizileri, özgün arayüzde etkileşim veya animasyon bulunmadığını kanıtlamaz. Kanıt tanımlayıcıları opak bağdaştırıcı başvurularıdır; çalıştırılabilir talimatlar veya kendiliğinden herkese açık URL'ler değildir. Yakalanmış içerik ve yerel tanı verileri güvenilmeyen veridir.

Koordinatlar ve profiller​

Mesafeler mantıksal birimler kullanır. Web bağdaştırıcıları CSS pikseli kullanır. Android ekran pikseli ölçümleri, ölçülen pixelDensity değerine (mantıksal birim başına fiziksel piksel) bölünür. fontScale bağımsızdır. Eksik yoğunluk, yazı tipi ölçeği, kenar boşlukları, yerel ayar ve tema tahmin edilmemelidir.

Profilin width/height değerleri mantıksal görünüm alanını tanımlar. Bir kare document, viewport veya screen koordinatlarını bildirir:

  • extent: o düzlemdeki tüm içerik kapsamı.
  • viewportBounds: kaydırma başlangıcı dahil gözlemlenen görünür pencere.
  • geometry.visualBounds: eksenlere paralel, dönüşüm sonrası dikdörtgen.
  • İsteğe bağlı layoutBounds: dönüşüm öncesi geometri.
  • İsteğe bağlı transform: (x,y,z,1) sütun vektörlerine etki eden, ötelemeleri düzenin yerel koordinatlarında mantıksal birimlerle verilen, sütun öncelikli 4×4 matris. Bunu visualBounds üzerine tekrar uygulamayın.

Belge koordinatlarında görünür penceredeki konum visualBounds.x - viewportBounds.x, visualBounds.y - viewportBounds.y şeklindedir. Karşılaştırmadan önce profili, koordinat düzlemini ve görünür pencereyi hizalayın. Mantıksal görünüm alanı, kullanılabilir kök sınırları ve içerik kapsamı farklı gözlemlerdir. Güvenli kenar boşlukları otomatik olarak padding uygulanmaz.

Düğümler, düzen ve çizim​

Düğümler id, isteğe bağlı parentId, kind, semantics, visible, geometry, layout, paint, metin parçaları, isteğe bağlı mediaResourceId, actions, motion ve evidence taşır. Türler unknown, container, text, media, control, surface şeklindedir. Semantik bilgiler rol/ad ile isteğe bağlı etkin, seçili, işaretli, genişletilmiş, düzenlenebilir ve modal bayraklarını içerir. Bunlar görünürlükten bağımsızdır. Hassas metin karartılmalıdır; parolalar asla Scene metnine dönüşmemelidir.

Düzen grubuSözleşme
placementunknown, flow, anchored, overlay, sticky.
arrangementunknown, row, column, grid, stack, free, flow. Stack alt öğeleri üst üste bindirir; free bağımsız yerleşimi tanımlar.
horizontal, verticalBağımsız politika/değer/minimum/maksimum olguları; politikalar unknown, intrinsic, fixed, fill, proportional şeklindedir.
Boşluk/hizalamaİç boşluk, satır/sütun aralıkları, satır kaydırma, ters sıra, ana/çapraz eksen hizalaması.
İzlerTek profildeki sayısal satır/sütun dağılımları; yazılmış uyarlanabilir kurallar değildir.
ÇapalarKanıtı bulunan referenceId ve isteğe bağlı üst/sağ/alt/sol mesafeler; kareye yerel düğüme, $viewport veya $frame öğesine başvurur.

Sabit/min/maks ve çapa mesafeleri mantıksal birimler kullanır. Oransal değerler, başvurulan kullanılabilir eksenin birimsiz kesirleridir; fill çarpan içermez. Ölçülmüş bir dikdörtgen sabit boyutlandırmayı, kapsayan bloğu, çapaları veya kesme noktalarını kanıtlamaz. Mutlak/sabit yerel yerleşim, çapa uydurmadan overlay olarak eşlenebilir. Margin, öğeler arası temel aralık değildir.

Çizim sayısal boyutlar, 0–1 aralığına normalleştirilmiş RGBA kanalları, çizgiler, gölgeler, opaklık, bulanıklık ve medya başvuruları kullanır. Düz çizginin isteğe bağlı edges alanı, top, right, bottom, left değerlerinin boş olmayan benzersiz alt kümesidir; atlanması tüm sınırı çizer. Gölgeler öteleme, bulanıklık, yayılma, içe gölge ve kaynak bilgisini kaydeder. cornerRadii şu anda kenar boşluğu biçimli dört alan kullanır; Web bağdaştırıcısı eşit köşeler için eşit değerler üretir. Eşit olmayan/eliptik Web köşeleri, uydurulmuş köşe eşlemesi almak yerine desteklenmeyen olarak kalır.

Medya yerleşimi (content, background, surface) düğüm türünden bağımsızdır. Sığdırma unknown, contain, cover, stretch veya original olur. Konum (x,y), kalan boşlukta kesirli çapadır: 0 başlangıca hizalar, 0.5 ortalar, 1 sona hizalar; aralık dışındaki kesirlere izin verilir. Arka plan sığdırması ilgisiz bir içerik görüntüsünden alınmamalıdır.

Metin parçaları özgün text, isteğe bağlı sınırlar ve tipografi içerir: aile/yazı tipi kaynağı, boyut, ağırlık, satır yüksekliği, harf aralığı, renk, yön, hizalama, satır kaydırma, süsleme ve harf dönüşümü. Harf dönüşümü (none, uppercase, lowercase, capitalize), özgün metinden ve erişilebilir adlardan bağımsız olarak sunumu değiştirir. Desteklenmeyen çizim/degrade/metin efektleri sorun olarak kalır. Keyfî yerel CSS ifadeleri temel düzen veya çizim değerleri değildir.

Kaynaklar ve yazı tipleri​

Kaynaklar id, kind, isteğe bağlı uri, mimeType, sha256, bytes ve yazı tipi yüzleri içerir. Türler unknown, image, vector, font, video, audio, paint şeklindedir. Düğüm ve tipografi kaynak başvuruları bu belge içinde çözümlenir. Yazı tipi yüzleri aileyi, kanıt türünü/başvurularını, isteğe bağlı ağırlık aralığını, italik durumunu ve Unicode kod noktası kapsamını kaydeder. Arşivlenmiş baytları koruyup uygun yüzü seçin. Tek başına aile adı veya URL, amaçlanan yazı tipinin yüklendiğini ya da yedeğinin eşdeğer olduğunu kanıtlamaz.

Eylemler ve modal durumlar​

Eylemler olası işlemleri bildirir: unknown, activate, edit, scroll, navigate, focus, hover, back; hedef isteğe bağlıdır. Bir geçişte kaynak kare, isteğe bağlı kaynak düğüm ve hedef kare, eylem, sonuç ve kaynak bilgisi bulunur. nodeId her zaman kaynak kareye aittir.

SonuçAnlam
unknownSonuç belirlenmemiştir.
changedBir değişiklik gözlemlenmiştir.
unchangedDeğişiklik gözlemlenmemiştir.
failedEylem başarısız olmuştur.
performedUnverifiedBeklenen sonucu kanıtlamadan girdi iletilmiştir.

Yeni anlık görüntü kimlikleri veya değişen imleç bir menünün açıldığını kanıtlamaz. Açık modal, gözlemlenen tam karesini korumalıdır: arka örtü, panel, alt öğeler ve alttaki içerik. İzin ekranı, kapatılmış içerik, iletişim kutusu sekmeleri, arama ve genişletilmiş menüleri ayırmak için entryFrameId ve geçişleri izleyin. Zorlanmış durum ölçümleri ile gerçek işaretçi/dokunma girdileri farklı kanıtlar olarak kalır. Kaynak üzerindeki tekrar oynatmalar, yeni üretilmiş arayüzün işlevsel testleri değildir.

Hareket​

Düğüm/geçiş hareket kayıtları property, durationMs, keyframes, kind, evidence ve isteğe bağlı delayMs, iterations ile kübik Bézier easing (x1, y1, x2, y2) içerir. Süre milisaniyedir; ofsetler artan sırada 0–1 aralığındadır. Easing x koordinatları 0–1 aralığındadır.

ÖzellikAnahtar karenin value bileşenleri
opacity[alpha], 0–1.
translation[x, y, z], mantıksal birimler.
scale[x, y, z], çarpanlar.
rotation[x, y, z], radyan.
bounds[x, y, width, height], mantıksal birimler.
color[red, green, blue, alpha], 0–1.

Atlanan seçenekler bilinmeyen kalır. Sıfır yineleme oynatma yapılmaması demektir. Bilinmeyen veya sınırsız tekrar, tahmin edilmiş sonlu sayıya dönüştürülmemelidir. CSS/WAAPI bildirimleri declared; gözlemlenen örnekler measured olabilir. Durağan görüntüler veya iki uç nokta zamanlamayı veya easing eğrisini kanıtlayamaz.

Doğrulama ve kapsam​

Yapıyı dışa aktarımın şemasıyla, ardından semantiği doğrulayın: kapsam içinde benzersiz kimlikler, geçerli başvurular, döngüsüz üst öğeler, sonlu geometri, negatif olmayan boyutlar, normalleştirilmiş renkler, yazı tipi/kod noktası aralıkları, karartma ve hareket boyutları. Backend SceneValidator bu ek değişmezleri uygular. JSON Schema tek başına tam bir grafik veya gizlilik doğrulayıcısı değildir.

Mevcut yapısal şema bilinmeyen alanları ve tamsayı enum değerlerini reddeder. Tanımlayıcısını ve özetini sabitleyin; farklı biçim sürümü için açık bir bağdaştırıcı kullanın. Bilinmeyen verileri yerel düzen olarak yeniden yorumlamayın. Mevcut alanlar anlamını korur; uyumsuz anlam değişiklikleri yeni biçim tanımlayıcısı gerektirir. Sunucu yükseltmeleri geçerli şema baytlarını değiştirebilir: her arşivlenmiş dışa aktarımla şema/özeti saklayın.

SceneIssue, code, message ve isteğe bağlı frameId/nodeId içerir. Yalnızca manifest önizlemesini değil tam çıktıyı okuyun ve kare kesilmesini dikkate alın. Mevcut doğrulayıcı sınırları 100 profil, 500 kare, 20.000 kaynak, toplam 100.000 düğüm ve kare başına 20.000 düğümdür. Edinme/aktarım sınırları daha düşük olabilir; bu sayılar yakalama kapsamı garantisi değildir.

Yeni Web yakalamaları yerel tanı verileriyle birlikte Scene üretir. Eski Web verileri açıkça belirtilmiş boşluklarla dönüştürülebilir. Android bağdaştırıcısı yerel ölçümleri normalleştirebilir; ancak API/MCP erişimi yine yayımlanmış yerel Scene gerektirir. Veri modelinin desteği, yakalanmamış ortamı kullanılabilir yapmaz. Eksik durumlar, kaynaklar, hareket ve uyarlanabilir gözlemler bilinmeyen kalır. Dışa aktarım başarısı veya şema geçerliliği yeniden üretim doğruluğunu kanıtlamaz.

İstek gönderim politikası​

İstek kullanılabilirliği katalog yakalamalarının kullanılabilirliğinden bağımsızdır. Yöneticiler bunu Requests → Job defaults → Request submissions altında yapılandırır. Saklanan ProductRequestJobDefaults.Submission, Enabled ve türlendirilmiş Targets (Type, Environment) içerir. Bu üyesi olmayan mevcut ayarlar varsayılanları korur: Desktop/Web, Desktop/WebExtension ve Mobile/Web. Gönderimleri kapatmak bu seçimleri ve mevcut istekleri korur. Platform API ve kimliği doğrulanmış MCP, istek oluşturmadan önce mevcut politikayı doğrular. Kapalıyken request-options boş platforms listesi döndürür; MCP ayrıca enabled: false döndürür. Herkese açık ortam kimlikleri enum adları değil, web ve web-extension olarak kalır. Katalog seçicileri ürün başına yakalanmış kullanılabilirliği kullanır ve kullanılamayan çiftleri gizler.

Gruplanmış istek hedefleri​

Yeni istemciler CreateRequestRequest.targets alanını açık platform/ortam çiftleri olarak gönderir. Örneğin:

{
"requestType": "PRODUCT_REQUEST_TYPE_ADD",
"url": "https://metamask.io/",
"webExtensionUrl": "https://chromewebstore.google.com/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn",
"targets": [
{ "view": "desktop", "implementation": "web-extension" },
{ "view": "mobile", "implementation": "web" }
]
}

Sunucu her çifti mevcut istek kullanılabilirliğine göre doğrular ve bu çiftleri türlendirilmiş istek ayrıntılarına kaydeder. Onay yalnızca seçili çiftleri oluşturur: bu örnek Desktop/Web işi oluşturmaz. Eski istemciler için views ve implementations kabul edilmeye devam eder ve Kartezyen çarpımlarını temsil eder; bunları targets ile birleştirmeyin. Web sitesi kaynağı url; uzantı işleri webExtensionUrl kullanır. Güncelleme isteklerinde kaynak bağlantıları olmadan mevcut catalogId ve hedefleri gönderin. Önce ürünü seçin: platform yalnızca ürünün yakalanmış ve istekler için şu anda etkin olan platform/ortam çiftlerini sunar. Sunucu üründe bulunmayan hedefleri bağımsız olarak reddeder, her ortamın kaynağını ürünün yayımlanmış yakalamalarından çözümler ve istemcinin alternatif bağlantılarını yok sayar. Herkese açık istek özetleri, özel istek ayrıntılarıyla birlikte uzantı kaynağını da çıkarır.

Ek Scene kanıtları​

Güncel şema tipli token içeren themes ve başka genişliklerde seyrek ölçümler içeren layoutSamples tanımlar. Örnekler frameId düğümlerine başvurur; kare değildir, metni veya görünümü yeniden ölçmez. Eksik düğüm gizli demek değildir. nodes[].states görünüm değişikliklerini içerir: mevcut patch alanları değerleri değiştirir, eksik alanlar değişmez, listeler tamamen değiştirilir. Layout; flow, grow, shrink, basis, selfAlignment, order, gridCell destekler; paint gradyan ve çizgi biçimi/konumu içerir. Bunlar eski yakalamalarda bulunmayabilecek isteğe bağlı kanıtlardır. Kökeni koruyun; tek ölçümden duyarlı kurallar çıkarmayın.