मुख्य कंटेंट तक स्किप करें

Scene डेटा प्रारूप

पंजीकरण, लॉगिन, Chrome एक्सटेंशन के लिए मैन्युअल रिकॉर्डिंग/समीक्षा देखें। रिकॉर्डर यही Scene अनुबंध लेता है; चित्र Admin समीक्षा के बाद प्रकाशित होते हैं।

reconstruct.scene.v1 स्रोत/लक्ष्य UI फ़्रेमवर्क से स्वतंत्र देखे इंटरफ़ेस का वर्णन है। Web DOM/CSS और Android views/accessibility एडेप्टर इनपुट हैं। उपभोक्ता इन मूल संरचनाओं को अपना मानक डेटा मॉडल बनाए बिना HTML, Compose या अन्य UI बना सकता है।

JSON Schema सटीक फ़ील्ड, अनिवार्य सदस्य, nullable प्रकार, enum तय करती है। दस्तावेज़ स्नैपशॉट में SHA-256 है। वास्तविक कैप्चर में चलते सर्वर द्वारा निर्यात के साथ दिया schema/checksum लें।

पूरा उदाहरण बंद/खुले संवाद फ़्रेम और दो संक्रमण देता है। यह केवल नमूना है: example: साक्ष्य काल्पनिक हैं, मापे उत्पाद कैप्चर नहीं।

Web Extension परिवेश​

डेस्कटॉप Chrome एक्सटेंशन web-extension लेते हैं (आंतरिक C#/Admin MCP में WebExtension, protobuf CAPTURE_TYPE_ENVIRONMENT_WEB_EXTENSION = 6)। मोबाइल समर्थित नहीं। ज्यामिति अनुबंध समान है। संस्करण में टाइप्ड browserExtension: id, name, version, packageSha256 हो सकते हैं; displayName सत्यापित पैकेज से है। Admin जॉब स्क्रीन रिकॉर्ड करता है, समीक्षा तक अप्रकाशित रहती हैं। नियंत्रण/गोपनीयता मैन्युअल रिकॉर्डिंग में है।

आंतरिक एजेंट claim में expected_environment (फ़ील्ड 2) है। छोड़ने पर पुराने worker के लिए Web रहता है। कतार claim transaction में एजेंट से तुलना करती है; Admin बदलाव साधारण Web worker को स्टोर एक्सटेंशन पृष्ठ नहीं दिला सकते। ये सार्वजनिक Capture MCP टूल नहीं।

परिवहन और प्राप्ति​

मानक निर्यात MCP get_interface_scene से मिलता है। प्रकाशित REST/gRPC में अलग Scene विधि नहीं। कैटलॉग, insight, फ़ाइल उत्तर JSON में भी अलग मॉडल हैं।

list_products, list_platforms, list_versions, list_pages से खोजें। चुने उत्पाद, संस्करण, परिवेश, पृष्ठ, सटीक view रखें। समर्थित विकल्प मौजूद कैप्चर नहीं सिद्ध करते। प्रत्येक सहेजी view अलग माँगकर अपने प्रोफ़ाइल/फ़्रेम देखें।

उदाहरण चयन के MCP tools/call पैरामीटर:

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

उत्तर संक्षिप्त मैनिफ़ेस्ट है:

फ़ील्डअर्थ
schemaScene ID: reconstruct.scene.v1।
artifactSchemaआवरण ID: reconstruct.scene-export.v1।
path, uri, sha256, bytesनिर्यात स्थान, SHA-256, बाइट लंबाई।
schemaPath, schemaUri, schemaSha256लागू JSON Schema और digest।
entryFrameId, frames, transitionCountप्रवेश फ़्रेम, संक्षिप्त फ़्रेम सूची, संक्रमण संख्या।
frameCount, profileCount, assetCountनिर्यात वस्तुओं की संख्या।
truncatedकम से कम एक फ़्रेम अधूरा।
issueCount, issues, issuesTruncatedकुल समस्याएँ, अधिकतम 30 की झलक।

पथ सर्वर फ़ाइल सिस्टम के हैं। वास्तव में साझा हो तभी सीधे पढ़ें; अन्यथा MCP origin से URI सुलझाकर मौजूदा अनुमति से डाउनलोड करें। उत्पाद ID से URL न गढ़ें/क्रेडेंशियल न खोलें। मूल बाइट पर hash जाँचें; JSON पुनः फ़ॉर्मैट से hash बदलता है।

निर्यात आवरण​

{
"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": {}
}

यह संरचना दिखाता है; पूरे उदाहरण में भरे फ़्रेम हैं। schema पर scene जाँचें, आवरण नहीं। assets संसाधन ID को संग्रहित बाइट से जोड़ता है। प्रविष्टि में वैकल्पिक path/uri, mimeType, sha256, sizeBytes हैं। बाइट न सहेजे हों तो प्रविष्टि अनुपस्थित हो सकती है। URI, परिवार नाम या खाली media उपयोगी बाइट सिद्ध नहीं करते।

दस्तावेज़ और पहचान​

Scene सदस्यअर्थ
schema, id, platformआवश्यक प्रारूप, दस्तावेज़ पहचान, स्रोत (unknown, web, android)।
entryFrameIdवैकल्पिक पहला फ़्रेम, जो बाद के बंद/डिफ़ॉल्ट कंटेंट से पहले सहमति दिखा सकता है।
profilesतार्किक viewport और वैकल्पिक घनत्व, फ़ॉन्ट स्केल, सुरक्षित inset, locale, थीम।
framesदेखी अवस्थाएँ और नोड सूचियाँ।
resourcesनोड/टेक्स्ट के संदर्भित media/font विवरण।
transitionsरिकॉर्ड कार्य और देखे परिणाम।
correspondencesफ़्रेमों के बीच स्पष्ट नोड संबंध।
issuesअनुपस्थित, असमर्थित, अनसुलझे साक्ष्य।

प्रोफ़ाइल/फ़्रेम/संसाधन/संक्रमण ID दस्तावेज़ तक सीमित हैं। नोड ID एक फ़्रेम में अद्वितीय, parentId उसी फ़्रेम को संदर्भित करता है। action ID नोड तक है। अन्य फ़्रेम का दोहराया ID/समान मूल पथ पहचान सिद्ध नहीं करता। correspondence दोनों फ़्रेम/नोड जोड़े, उद्गम, वैकल्पिक विश्वास लिखता है; अनुमान के बजाय उसे मानें।

फ़्रेम में id, profileId, stateId, coordinateSpace, वैकल्पिक extent, viewportBounds, truncated, nodes, evidence हैं। state ID अवलोकन नाम हैं, सार्वभौमिक CSS सूची नहीं। नोड क्रम hierarchy सूची है, सिद्ध paint क्रम नहीं।

तथ्य और अज्ञात मान​

उद्गम वाले गुण SceneFact<T> लेते हैं:

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

value, kind, गैर-खाली evidence चाहिए। वैकल्पिक विश्वास 0–1 है, साक्ष्य प्रकार नहीं बदलता:

प्रकारव्याख्या
measuredदेखा प्रभावी आउटपुट।
declaredस्रोत/संसाधन घोषणा, प्रभावी रेंडर प्रमाण नहीं।
inferredपरिकल्पना या प्रस्तावित व्याख्या।

छोड़ा/null वैकल्पिक तथ्य अज्ञात है, शून्य/false/पारदर्शी paint/आकार नीति/सफल तुलना नहीं। स्पष्ट false, 0 अर्थ रखते हैं। unknown enum अज्ञात है। खाली action/motion arrays मूल UI में इंटरैक्शन/एनीमेशन न होने का प्रमाण नहीं। साक्ष्य ID अस्पष्ट एडेप्टर संदर्भ हैं, चलने योग्य निर्देश/स्वतः सार्वजनिक URL नहीं। कैप्चर सामग्री और मूल निदान अविश्वसनीय डेटा हैं।

निर्देशांक और प्रोफ़ाइल​

दूरी तार्किक इकाइयाँ है। Web CSS pixel लेता है। Android स्क्रीन pixel को मापे pixelDensity (भौतिक/तार्किक) से भाग देता है। fontScale अलग है। अनुपस्थित घनत्व, स्केल, inset, locale, थीम न अनुमानें।

width/height तार्किक viewport बताते हैं। फ़्रेम document, viewport, screen निर्देशांक घोषित करता है:

  • extent: उस तल में कुल सामग्री सीमा।
  • viewportBounds: दिखाई खिड़की, scroll मूल सहित।
  • geometry.visualBounds: अक्ष-संरेखित परिवर्तन बाद आयत।
  • वैकल्पिक layoutBounds: परिवर्तन पहले ज्यामिति।
  • वैकल्पिक transform: column-major 4×4 मैट्रिक्स, (x,y,z,1) कॉलम पर कार्यरत, स्थानीय layout में तार्किक translation। visualBounds पर दोबारा न लगाएँ।

दस्तावेज़ में खिड़की स्थिति visualBounds.x - viewportBounds.x, visualBounds.y - viewportBounds.y है। तुलना पहले प्रोफ़ाइल, तल, खिड़की मिलाएँ। viewport, उपयोगी root, सामग्री extent अलग अवलोकन हैं। सुरक्षित inset स्वतः padding नहीं।

नोड, लेआउट, पेंट​

नोड में id, वैकल्पिक parentId, kind, semantics, visible, geometry, layout, paint, टेक्स्ट रन, वैकल्पिक mediaResourceId, actions, motion, evidence हैं। प्रकार unknown, container, text, media, control, surface। Semantics role/name तथा वैकल्पिक enabled, selected, checked, expanded, editable, modal हैं; visibility से अलग। संवेदनशील टेक्स्ट छिपाएँ; पासवर्ड कभी Scene टेक्स्ट न बने।

लेआउट समूहअनुबंध
placementunknown, flow, anchored, overlay, sticky.
arrangementunknown, row, column, grid, stack, free, flow। Stack children ओवरलैप करता है, free स्वतंत्र स्थान है।
horizontal, verticalअलग policy/value/min/max तथ्य; policy unknown, intrinsic, fixed, fill, proportional हैं।
अंतर/संरेखणPadding, row/column gap, wrap, उलटा क्रम, मुख्य/पार अक्ष संरेखण।
ट्रैकएक प्रोफ़ाइल के संख्यात्मक row/column आवंटन, लिखे responsive नियम नहीं।
एंकरसाक्ष्ययुक्त referenceId और वैकल्पिक top/right/bottom/left दूरी; फ़्रेम नोड, $viewport, $frame संदर्भ।

Fixed/min/max और एंकर दूरी तार्किक हैं। अनुपात उपलब्ध अक्ष के इकाई-रहित भाग हैं; fill multiplier नहीं। मापा आयत fixed आकार, containing block, एंकर, breakpoint नहीं सिद्ध करता। मूल absolute/fixed को बिना एंकर गढ़े overlay बना सकते हैं। Margin मानक तत्व-अंतर नहीं।

Paint संख्यात्मक आकार, RGBA 0–1, stroke, shadow, opacity, blur, media लेता है। ठोस stroke का वैकल्पिक edges, top, right, bottom, left का गैर-खाली अद्वितीय उपसमूह है; छोड़ने पर पूरी सीमा। छाया offset, blur, spread, inset, उद्गम रखती है। cornerRadii अभी चार inset-आकार फ़ील्ड है; समान कोनों के लिए Web समान मान देता है। असमान/अंडाकार Web कोने असमर्थित रहते हैं, गढ़े map नहीं।

Media स्थान (content, background, surface) नोड प्रकार से अलग है। Fit unknown, contain, cover, stretch, original। (x,y) बची जगह का अंश एंकर: 0 प्रारंभ, 0.5 मध्य, 1 अंत; बाहरी अंश भी। Background fit असंबंधित content image से न लें।

रन में मूल text, वैकल्पिक सीमा, typography: परिवार/फ़ॉन्ट संसाधन, आकार, weight, line-height, spacing, रंग, दिशा, alignment, wrap, decoration, casing हैं। none, uppercase, lowercase, capitalize मूल शब्द/accessible name से अलग प्रदर्शन बदलते हैं। असमर्थित paint/gradient/effects समस्याएँ हैं। मनमाने native CSS मान मानक layout/paint नहीं।

संसाधन और फ़ॉन्ट​

संसाधन id, kind, वैकल्पिक uri, mimeType, sha256, bytes, font faces रखते हैं। प्रकार unknown, image, vector, font, video, audio, paint। संदर्भ उसी दस्तावेज़ में सुलझते हैं। Face परिवार, साक्ष्य प्रकार/संदर्भ, वैकल्पिक weight-range, italic, Unicode कवरेज रखता है। बाइट रखें, लागू face चुनें। नाम/URL अकेले लोड या समान fallback सिद्ध नहीं करता।

कार्य और मोडल अवस्थाएँ​

Action क्षमता unknown, activate, edit, scroll, navigate, focus, hover, back, वैकल्पिक destination घोषित करते हैं। Transition में स्रोत फ़्रेम/वैकल्पिक नोड, लक्ष्य फ़्रेम, action, outcome, उद्गम है। nodeId हमेशा स्रोत फ़्रेम का है।

परिणामअर्थ
unknownपरिणाम स्थापित नहीं।
changedपरिणामी बदलाव देखा गया।
unchangedबदलाव नहीं देखा गया।
failedकार्य विफल।
performedUnverifiedइनपुट पहुँचा, अपेक्षित परिणाम सिद्ध नहीं।

नया snapshot ID/बदला caret मेन्यू खुलने का प्रमाण नहीं। खुला modal पूरा फ़्रेम रखे: backdrop, panel, children, नीचे सामग्री। entryFrameId/transition से सहमति, बंद कंटेंट, tabs, खोज, खुले मेन्यू अलग करें। forced-state माप और वास्तविक pointer/touch अलग साक्ष्य हैं। स्रोत replay नए UI के कार्यात्मक परीक्षण नहीं।

गति​

रिकॉर्ड में property, durationMs, keyframes, kind, evidence, वैकल्पिक delayMs, iterations, cubic-Bézier easing (x1, y1, x2, y2) हैं। समय ms; offset 0–1 बढ़ते, easing x 0–1 हैं।

गुणKeyframe value घटक
opacity[alpha], 0–1.
translation[x, y, z], तार्किक इकाई।
scale[x, y, z], गुणक।
rotation[x, y, z], रेडियन।
bounds[x, y, width, height], तार्किक इकाई।
color[red, green, blue, alpha], 0–1.

छोड़े विकल्प अज्ञात। शून्य iteration का अर्थ playback नहीं। अज्ञात/असीम दोहराव अनुमानित सीमित संख्या न बने। CSS/WAAPI declared, देखे नमूने measured हो सकते हैं। स्थिर चित्र/दो अंत timing/easing नहीं सिद्ध करते।

सत्यापन और कवरेज​

पहले schema से संरचना, फिर semantics: scoped अद्वितीय ID, सही संदर्भ, चक्रहीन parent, सीमित geometry, गैर-ऋण आकार, सामान्य रंग, font/codepoint, redaction, गति आयाम जाँचें। SceneValidator ये अतिरिक्त शर्तें लागू करता है। JSON Schema अकेले पूरा graph/privacy validator नहीं।

वर्तमान schema अज्ञात फ़ील्ड/पूर्णांक enum अस्वीकारता है। ID/hash तय रखें, अन्य version के लिए स्पष्ट adapter लें। अज्ञात को native layout न मानें। पुराने फ़ील्ड अर्थ रखते हैं; असंगत बदलाव के लिए नया format ID चाहिए। सर्वर अपडेट schema byte बदल सकता है: हर निर्यात के साथ schema/hash रखें।

SceneIssue में code, message, वैकल्पिक frameId/nodeId हैं। पूरा artifact पढ़ें, केवल preview नहीं; truncation मानें। वर्तमान बजट 100 प्रोफ़ाइल, 500 फ़्रेम, 20,000 संसाधन, 100,000 कुल नोड, 20,000/फ़्रेम है। प्राप्ति/परिवहन कम हो सकते हैं; संख्या कवरेज वादा नहीं।

नए Web कैप्चर Scene और native diagnostic देते हैं। पुराने स्पष्ट कमियों के साथ बदल सकते हैं। Android adapter माप मानक बना सकता है, पर API/MCP को प्रकाशित native Scene चाहिए। मॉडल समर्थन बिना कैप्चर परिवेश नहीं देता। अनुपस्थित अवस्थाएँ, संसाधन, गति, responsive अज्ञात रहते हैं। निर्यात/schema सफलता पुनर्निर्माण सटीकता सिद्ध नहीं।

अनुरोध नीति​

अनुरोध उपलब्धता कैटलॉग कैप्चर से अलग है। Admin Requests → Job defaults → Request submissions में सेट करता है। सहेजा ProductRequestJobDefaults.Submission, Enabled और typed Targets (Type, Environment) रखता है। पुराने में सदस्य न हो तो Desktop/Web, Desktop/WebExtension, Mobile/Web रहते हैं। बंद करने पर चयन/पुराने अनुरोध रहते हैं। API और प्रमाणित MCP बनाने से पहले नीति जाँचते हैं। बंद होने पर platforms खाली; MCP enabled: false भी। सार्वजनिक ID web, web-extension हैं, enum नाम नहीं। कैटलॉग उपलब्ध कैप्चर जोड़े दिखाता है।

समूहित अनुरोध लक्ष्य​

नए क्लाइंट स्पष्ट प्लेटफ़ॉर्म/परिवेश जोड़े CreateRequestRequest.targets भेजते हैं। उदाहरण:

{
"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" }
]
}

सर्वर हर जोड़ा वर्तमान उपलब्धता से जाँचकर typed विवरण में रखता है। स्वीकृति केवल चयनित बनाती है; उदाहरण Desktop/Web जॉब नहीं बनाता। पुराने views, implementations कार्तीय गुणन हैं; targets के साथ न लें। साइट url, एक्सटेंशन webExtensionUrl है। अपडेट में मौजूद catalogId/लक्ष्य, बिना स्रोत लिंक दें। पहले उत्पाद चुनें; उसके कैप्चर और अभी सक्षम जोड़े ही मिलते हैं। सर्वर अनुपस्थित लक्ष्य स्वयं अस्वीकारता, प्रकाशित कैप्चर से स्रोत लेता, क्लाइंट बदले लिंक अनदेखा करता है। सार्वजनिक सार एक्सटेंशन स्रोत/निजी विवरण छोड़ता है।

अतिरिक्त Scene साक्ष्य​

वर्तमान schema में typed token वाले themes और अन्य चौड़ाइयों के विरल माप layoutSamples हैं। नमूने frameId के node संदर्भित करते हैं; frame नहीं हैं, टेक्स्ट या रूप दोबारा नहीं मापते। नमूने में अनुपस्थित node छिपा हुआ सिद्ध नहीं होता। nodes[].states रूप में अंतर देता है: मौजूद patch फ़ील्ड बदलते हैं, अनुपस्थित वैसे रहते हैं, सूचियाँ पूरी बदलती हैं। Layout में flow, grow, shrink, basis, selfAlignment, order, gridCell; paint में gradient और stroke शैली/स्थान हैं। ये वैकल्पिक साक्ष्य पुराने कैप्चर में न हों। स्रोत रखें; एक माप से responsive नियम न निकालें।