@ccslabs/xtend 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (664) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/LICENSE +201 -0
  3. package/README.md +184 -0
  4. package/a11y/motion-contrast-policy.d.ts +32 -0
  5. package/a11y/motion-contrast-policy.js +261 -0
  6. package/a11y/runtime-a11y-contract.d.ts +44 -0
  7. package/a11y/runtime-a11y-contract.js +385 -0
  8. package/a11y/screenreader-signals.d.ts +32 -0
  9. package/a11y/screenreader-signals.js +372 -0
  10. package/api.d.ts +168 -0
  11. package/api.js +864 -0
  12. package/catalog/catalog-public-types.d.ts +66 -0
  13. package/catalog/component-catalog-coverage.d.ts +20 -0
  14. package/catalog/component-catalog-coverage.js +377 -0
  15. package/catalog/component-long-tail-migration.d.ts +18 -0
  16. package/catalog/component-long-tail-migration.js +305 -0
  17. package/catalog/component-regression-priority.d.ts +20 -0
  18. package/catalog/component-regression-priority.js +305 -0
  19. package/catalog/enterprise-component-flex-release-handoff.d.ts +32 -0
  20. package/catalog/enterprise-component-flex-release-handoff.js +437 -0
  21. package/catalog/enterprise-component-style-audit.d.ts +22 -0
  22. package/catalog/enterprise-component-style-audit.js +353 -0
  23. package/catalog/enterprise-form-control-theme-a11y.d.ts +19 -0
  24. package/catalog/enterprise-form-control-theme-a11y.js +220 -0
  25. package/catalog/enterprise-icon-control-audit.d.ts +21 -0
  26. package/catalog/enterprise-icon-control-audit.js +258 -0
  27. package/catalog/enterprise-layout-display-media-tokenization.d.ts +20 -0
  28. package/catalog/enterprise-layout-display-media-tokenization.js +237 -0
  29. package/catalog/enterprise-navigation-routing-state-hardening.d.ts +20 -0
  30. package/catalog/enterprise-navigation-routing-state-hardening.js +255 -0
  31. package/catalog/enterprise-overlay-mode-token-parity.d.ts +15 -0
  32. package/catalog/enterprise-overlay-mode-token-parity.js +178 -0
  33. package/catalog/enterprise-third-party-authoring-guide.d.ts +23 -0
  34. package/catalog/enterprise-third-party-authoring-guide.js +310 -0
  35. package/catalog/enterprise-visual-dom-snapshot-matrix.d.ts +31 -0
  36. package/catalog/enterprise-visual-dom-snapshot-matrix.js +357 -0
  37. package/catalog/epic10-existing-component-metadata.d.ts +25 -0
  38. package/catalog/epic10-existing-component-metadata.js +534 -0
  39. package/catalog/epic10-p0-component-wave.d.ts +28 -0
  40. package/catalog/epic10-p0-component-wave.js +688 -0
  41. package/catalog/epic10-platform-gates.d.ts +31 -0
  42. package/catalog/epic10-platform-gates.js +425 -0
  43. package/catalog/epic10-release-handoff.d.ts +30 -0
  44. package/catalog/epic10-release-handoff.js +195 -0
  45. package/catalog/epic11-enterprise-ux-handoff.d.ts +29 -0
  46. package/catalog/epic11-enterprise-ux-handoff.js +403 -0
  47. package/catalog/epic12-docs-adoption.d.ts +29 -0
  48. package/catalog/epic12-docs-adoption.js +183 -0
  49. package/catalog/epic12-rc0-gate-matrix.d.ts +36 -0
  50. package/catalog/epic12-rc0-gate-matrix.js +439 -0
  51. package/catalog/epic12-rc0-handoff.d.ts +30 -0
  52. package/catalog/epic12-rc0-handoff.js +385 -0
  53. package/catalog/epic13-conditional-network-evidence-ci.d.ts +35 -0
  54. package/catalog/epic13-conditional-network-evidence-ci.js +278 -0
  55. package/catalog/epic13-conditional-network-evidence.d.ts +34 -0
  56. package/catalog/epic13-conditional-network-evidence.js +280 -0
  57. package/catalog/epic13-docs-rmt-production-hardening.d.ts +39 -0
  58. package/catalog/epic13-docs-rmt-production-hardening.js +286 -0
  59. package/catalog/epic13-hydration-performance-closure.d.ts +33 -0
  60. package/catalog/epic13-hydration-performance-closure.js +234 -0
  61. package/catalog/epic13-known-residual-triage.d.ts +32 -0
  62. package/catalog/epic13-known-residual-triage.js +339 -0
  63. package/catalog/epic13-package-export-lock.d.ts +41 -0
  64. package/catalog/epic13-package-export-lock.js +604 -0
  65. package/catalog/epic13-prod-browser-csp-smoke.d.ts +35 -0
  66. package/catalog/epic13-prod-browser-csp-smoke.js +218 -0
  67. package/catalog/epic13-rc1-gate-matrix-ci-handoff.d.ts +36 -0
  68. package/catalog/epic13-rc1-gate-matrix-ci-handoff.js +418 -0
  69. package/catalog/epic13-rc1-migration-notes.d.ts +36 -0
  70. package/catalog/epic13-rc1-migration-notes.js +271 -0
  71. package/catalog/epic13-rc1-readiness.d.ts +33 -0
  72. package/catalog/epic13-rc1-readiness.js +487 -0
  73. package/catalog/epic13-release-owner-acceptance.d.ts +33 -0
  74. package/catalog/epic13-release-owner-acceptance.js +354 -0
  75. package/catalog/epic13-release-report-pack-dry-run-evidence.d.ts +36 -0
  76. package/catalog/epic13-release-report-pack-dry-run-evidence.js +253 -0
  77. package/catalog/epic13-rmt-production-readiness.d.ts +35 -0
  78. package/catalog/epic13-rmt-production-readiness.js +314 -0
  79. package/catalog/epic13-trusted-dom-boundary.d.ts +36 -0
  80. package/catalog/epic13-trusted-dom-boundary.js +230 -0
  81. package/catalog/epic13-visual-owner-artifact.d.ts +35 -0
  82. package/catalog/epic13-visual-owner-artifact.js +233 -0
  83. package/catalog/epic14-lsp-handoff.d.ts +28 -0
  84. package/catalog/epic14-lsp-handoff.js +312 -0
  85. package/catalog/epic14-rmt-tooling.d.ts +33 -0
  86. package/catalog/epic14-rmt-tooling.js +282 -0
  87. package/catalog/surface-manager-adapter-runtime.d.ts +37 -0
  88. package/catalog/surface-manager-adapter-runtime.js +203 -0
  89. package/catalog/surface-manager-browser-lab.d.ts +39 -0
  90. package/catalog/surface-manager-browser-lab.js +225 -0
  91. package/catalog/surface-manager-controller.d.ts +43 -0
  92. package/catalog/surface-manager-controller.js +290 -0
  93. package/catalog/surface-manager-layout-engines.d.ts +32 -0
  94. package/catalog/surface-manager-layout-engines.js +161 -0
  95. package/catalog/surface-manager-lazy-loading.d.ts +35 -0
  96. package/catalog/surface-manager-lazy-loading.js +173 -0
  97. package/catalog/surface-manager-materialization.d.ts +37 -0
  98. package/catalog/surface-manager-materialization.js +202 -0
  99. package/catalog/surface-manager-native-rmt-surfaces.d.ts +48 -0
  100. package/catalog/surface-manager-native-rmt-surfaces.js +325 -0
  101. package/catalog/surface-manager-overlay-bridge.d.ts +42 -0
  102. package/catalog/surface-manager-overlay-bridge.js +247 -0
  103. package/catalog/surface-manager-persistence.d.ts +37 -0
  104. package/catalog/surface-manager-persistence.js +178 -0
  105. package/catalog/surface-manager-quality-gates.d.ts +48 -0
  106. package/catalog/surface-manager-quality-gates.js +324 -0
  107. package/catalog/surface-manager-release-handoff.d.ts +47 -0
  108. package/catalog/surface-manager-release-handoff.js +274 -0
  109. package/catalog/surface-manager-remote-policy.d.ts +34 -0
  110. package/catalog/surface-manager-remote-policy.js +199 -0
  111. package/catalog/surface-manager-rmt-authoring.d.ts +44 -0
  112. package/catalog/surface-manager-rmt-authoring.js +368 -0
  113. package/catalog/surface-manager-route-lifecycle.d.ts +32 -0
  114. package/catalog/surface-manager-route-lifecycle.js +162 -0
  115. package/catalog/surface-manager-runtime-release-handoff.d.ts +36 -0
  116. package/catalog/surface-manager-runtime-release-handoff.js +245 -0
  117. package/catalog/surface-manager-side-panel-runtime.d.ts +46 -0
  118. package/catalog/surface-manager-side-panel-runtime.js +307 -0
  119. package/catalog/surface-manager-stack-policy.d.ts +32 -0
  120. package/catalog/surface-manager-stack-policy.js +169 -0
  121. package/catalog/surface-manager-window-runtime.d.ts +45 -0
  122. package/catalog/surface-manager-window-runtime.js +285 -0
  123. package/catalog/surface-manager-workbench-fixture.d.ts +50 -0
  124. package/catalog/surface-manager-workbench-fixture.js +315 -0
  125. package/catalog/type-exports-api.js +236 -0
  126. package/catalog/type-exports-builder.js +405 -0
  127. package/catalog/type-exports-catalog.js +394 -0
  128. package/catalog/type-exports-loader.js +266 -0
  129. package/catalog/type-exports-policy.js +461 -0
  130. package/catalog/type-exports-rmt.js +407 -0
  131. package/catalog/type-exports-vendor.js +365 -0
  132. package/catalog/type-exports.js +574 -0
  133. package/components/icon-packs/core.js +154 -0
  134. package/components/icon-packs/lucide.js +136 -0
  135. package/components/manifest.json +44 -0
  136. package/components/prism.d.ts +73 -0
  137. package/components/prism.js +300 -0
  138. package/components/turndown.d.ts +34 -0
  139. package/components/turndown.js +107 -0
  140. package/components/x-rmt-lifecycle-demo-build.d.ts +78 -0
  141. package/components/x-rmt-lifecycle-demo-build.js +1175 -0
  142. package/components/x-rmt-lifecycle-demo.d.ts +83 -0
  143. package/components/x-rmt-lifecycle-demo.js +1175 -0
  144. package/components/xalert.d.ts +42 -0
  145. package/components/xalert.js +538 -0
  146. package/components/xbutton.d.ts +127 -0
  147. package/components/xbutton.js +612 -0
  148. package/components/xcalendar.d.ts +39 -0
  149. package/components/xcalendar.js +338 -0
  150. package/components/xcards.d.ts +34 -0
  151. package/components/xcards.js +253 -0
  152. package/components/xcheckbox.d.ts +48 -0
  153. package/components/xcheckbox.js +448 -0
  154. package/components/xcode.d.ts +35 -0
  155. package/components/xcode.js +370 -0
  156. package/components/xdialog.d.ts +48 -0
  157. package/components/xdialog.js +763 -0
  158. package/components/xdrawer.d.ts +61 -0
  159. package/components/xdrawer.js +654 -0
  160. package/components/xfooter.d.ts +41 -0
  161. package/components/xfooter.js +351 -0
  162. package/components/xform.d.ts +43 -0
  163. package/components/xform.js +456 -0
  164. package/components/xheader.d.ts +68 -0
  165. package/components/xheader.js +1253 -0
  166. package/components/xhero.d.ts +42 -0
  167. package/components/xhero.js +475 -0
  168. package/components/xicon.d.ts +146 -0
  169. package/components/xicon.js +688 -0
  170. package/components/xinput.d.ts +37 -0
  171. package/components/xinput.js +444 -0
  172. package/components/xlightbox.d.ts +48 -0
  173. package/components/xlightbox.js +571 -0
  174. package/components/xlink.d.ts +63 -0
  175. package/components/xlink.js +565 -0
  176. package/components/xmasonry.d.ts +35 -0
  177. package/components/xmasonry.js +666 -0
  178. package/components/xmenu.d.ts +118 -0
  179. package/components/xmenu.js +1005 -0
  180. package/components/xmodal.d.ts +64 -0
  181. package/components/xmodal.js +831 -0
  182. package/components/xplayer.d.ts +57 -0
  183. package/components/xplayer.js +1748 -0
  184. package/components/xpopover.d.ts +54 -0
  185. package/components/xpopover.js +466 -0
  186. package/components/xprogress.d.ts +40 -0
  187. package/components/xprogress.js +345 -0
  188. package/components/xradio.d.ts +50 -0
  189. package/components/xradio.js +474 -0
  190. package/components/xrouter.d.ts +244 -0
  191. package/components/xrouter.js +1841 -0
  192. package/components/xsection.d.ts +34 -0
  193. package/components/xsection.js +253 -0
  194. package/components/xselect.d.ts +46 -0
  195. package/components/xselect.js +463 -0
  196. package/components/xsidepanel.d.ts +56 -0
  197. package/components/xsidepanel.js +728 -0
  198. package/components/xspinner.d.ts +38 -0
  199. package/components/xspinner.js +388 -0
  200. package/components/xstate.d.ts +137 -0
  201. package/components/xstate.js +493 -0
  202. package/components/xstatus.d.ts +41 -0
  203. package/components/xstatus.js +381 -0
  204. package/components/xsummary.d.ts +43 -0
  205. package/components/xsummary.js +293 -0
  206. package/components/xsurfacemanager-controller.d.ts +130 -0
  207. package/components/xsurfacemanager-controller.js +699 -0
  208. package/components/xsurfacemanager.d.ts +452 -0
  209. package/components/xsurfacemanager.js +3775 -0
  210. package/components/xsurfaceoverlay-bridge.d.ts +43 -0
  211. package/components/xsurfaceoverlay-bridge.js +238 -0
  212. package/components/xsurfacewindow.d.ts +50 -0
  213. package/components/xsurfacewindow.js +576 -0
  214. package/components/xtabs.d.ts +73 -0
  215. package/components/xtabs.js +611 -0
  216. package/components/xtend-public-types.d.ts +208 -0
  217. package/components/xtextarea.d.ts +46 -0
  218. package/components/xtextarea.js +451 -0
  219. package/components/xtheme.d.ts +253 -0
  220. package/components/xtheme.js +1438 -0
  221. package/components/xtoast.d.ts +39 -0
  222. package/components/xtoast.js +389 -0
  223. package/components/xtooltip.d.ts +53 -0
  224. package/components/xtooltip.js +432 -0
  225. package/components/xtype.d.ts +42 -0
  226. package/components/xtype.js +244 -0
  227. package/components/xutils.d.ts +164 -0
  228. package/components/xutils.js +496 -0
  229. package/components/xwriter.d.ts +67 -0
  230. package/components/xwriter.js +854 -0
  231. package/design-tokens/themes/enterprise-light.json +40 -0
  232. package/design-tokens/themes/xtend-signature.json +126 -0
  233. package/design-tokens/xtend-design-tokens.d.ts +95 -0
  234. package/design-tokens/xtend-design-tokens.js +395 -0
  235. package/design-tokens/xtheme-token-alias-layer.d.ts +84 -0
  236. package/design-tokens/xtheme-token-alias-layer.js +423 -0
  237. package/docs/.htaccess +51 -0
  238. package/docs/README.md +340 -0
  239. package/docs/XTend-ADR.md +221 -0
  240. package/docs/a11y-keyboard-smokes.md +62 -0
  241. package/docs/about.md +18 -0
  242. package/docs/api.md +157 -0
  243. package/docs/best-practices.md +76 -0
  244. package/docs/component-catalog-coverage.md +58 -0
  245. package/docs/component-lab.md +103 -0
  246. package/docs/component-long-tail-migration.md +41 -0
  247. package/docs/component-platform.md +159 -0
  248. package/docs/component-ux-app-authoring.md +130 -0
  249. package/docs/component-ux-authoring.md +96 -0
  250. package/docs/component-ux-gates.md +45 -0
  251. package/docs/components/x-rmt-lifecycle-demo-build.md +60 -0
  252. package/docs/components/xalert.md +81 -0
  253. package/docs/components/xbutton.md +103 -0
  254. package/docs/components/xcalendar.md +82 -0
  255. package/docs/components/xcards.md +128 -0
  256. package/docs/components/xcheckbox.md +102 -0
  257. package/docs/components/xcode.md +126 -0
  258. package/docs/components/xdialog.md +92 -0
  259. package/docs/components/xdrawer.md +84 -0
  260. package/docs/components/xfooter.md +126 -0
  261. package/docs/components/xform.md +128 -0
  262. package/docs/components/xheader.md +308 -0
  263. package/docs/components/xhero.md +142 -0
  264. package/docs/components/xicon.md +125 -0
  265. package/docs/components/xinput.md +129 -0
  266. package/docs/components/xlightbox.md +98 -0
  267. package/docs/components/xlink.md +109 -0
  268. package/docs/components/xmasonry.md +124 -0
  269. package/docs/components/xmenu.md +158 -0
  270. package/docs/components/xmodal.md +82 -0
  271. package/docs/components/xplayer.md +104 -0
  272. package/docs/components/xpopover.md +67 -0
  273. package/docs/components/xprogress.md +56 -0
  274. package/docs/components/xradio.md +103 -0
  275. package/docs/components/xrouter.md +260 -0
  276. package/docs/components/xsection.md +125 -0
  277. package/docs/components/xselect.md +105 -0
  278. package/docs/components/xsidepanel.md +30 -0
  279. package/docs/components/xspinner.md +102 -0
  280. package/docs/components/xstate.md +148 -0
  281. package/docs/components/xstatus.md +55 -0
  282. package/docs/components/xsummary.md +78 -0
  283. package/docs/components/xsurfacemanager.md +27 -0
  284. package/docs/components/xsurfacewindow.md +21 -0
  285. package/docs/components/xtabs.md +160 -0
  286. package/docs/components/xtextarea.md +98 -0
  287. package/docs/components/xtheme.md +167 -0
  288. package/docs/components/xtoast.md +62 -0
  289. package/docs/components/xtooltip.md +66 -0
  290. package/docs/components/xtype.md +82 -0
  291. package/docs/components/xutils.md +144 -0
  292. package/docs/components/xwriter.md +94 -0
  293. package/docs/components.md +117 -0
  294. package/docs/conditional-network-evidence-ci.md +38 -0
  295. package/docs/conditional-network-evidence.md +50 -0
  296. package/docs/core-migration-guide.md +110 -0
  297. package/docs/design-tokens.md +116 -0
  298. package/docs/docs-rmt-production-hardening.md +31 -0
  299. package/docs/enterprise-adoption.md +411 -0
  300. package/docs/enterprise-component-flex-release-handoff.md +129 -0
  301. package/docs/epic10-platform-gates.md +62 -0
  302. package/docs/epic10-release-handoff.md +81 -0
  303. package/docs/epic11-enterprise-ux-handoff.md +70 -0
  304. package/docs/epic12-rc0-handoff.md +61 -0
  305. package/docs/existing-component-metadata.md +67 -0
  306. package/docs/hydration-performance-closure.md +34 -0
  307. package/docs/hydration-policies.md +71 -0
  308. package/docs/index.php +1625 -0
  309. package/docs/known-residual-triage.md +22 -0
  310. package/docs/manifest-import-policy.md +79 -0
  311. package/docs/manifest.md +106 -0
  312. package/docs/menu.json +1190 -0
  313. package/docs/motion-contrast.md +67 -0
  314. package/docs/package-export-lock.md +44 -0
  315. package/docs/performance-measurements.md +106 -0
  316. package/docs/performance-regression.md +89 -0
  317. package/docs/performance.md +94 -0
  318. package/docs/previews/README.md +17 -0
  319. package/docs/prod-browser-csp-smokes.md +40 -0
  320. package/docs/public-component-types.md +79 -0
  321. package/docs/quick-start-guide.md +152 -0
  322. package/docs/rc0-adoption-guide.md +102 -0
  323. package/docs/rc0-gate-matrix.md +58 -0
  324. package/docs/rc1-gate-matrix-ci-handoff.md +56 -0
  325. package/docs/rc1-migration-notes.md +69 -0
  326. package/docs/rc1-readiness.md +46 -0
  327. package/docs/release-owner-acceptance.md +56 -0
  328. package/docs/release-report-pack-dry-run-evidence.md +39 -0
  329. package/docs/rmt-dsl-authoring-polish.md +122 -0
  330. package/docs/rmt-first-demo-app.md +77 -0
  331. package/docs/rmt-first-xtend-apps.md +105 -0
  332. package/docs/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
  333. package/docs/rmt-kernel-security-hardening-migration.md +50 -0
  334. package/docs/rmt-kernel-trusted-output-authoring.md +69 -0
  335. package/docs/rmt-language-server.md +177 -0
  336. package/docs/rmt-lifecycle-demo.md +25 -0
  337. package/docs/rmt-linter.md +140 -0
  338. package/docs/rmt-production-readiness.md +63 -0
  339. package/docs/rmt-tooling-release-gates.md +77 -0
  340. package/docs/rmt-vnext-authoring.md +60 -0
  341. package/docs/rmt-vnext-cross-surface-events.md +68 -0
  342. package/docs/rmt-vnext-enterprise-mfe-handoff.md +70 -0
  343. package/docs/rmt-vnext-migration-notes.md +62 -0
  344. package/docs/rmt-vnext-release-handoff.md +69 -0
  345. package/docs/rmt-vnext-remote-surfaces.md +90 -0
  346. package/docs/rmt-vnext-surface-registry-enterprise.md +76 -0
  347. package/docs/screenreader-signals.md +56 -0
  348. package/docs/supply-chain-gates.md +100 -0
  349. package/docs/surface-manager-authoring-guide.md +94 -0
  350. package/docs/surface-manager-browser-lab.md +45 -0
  351. package/docs/surface-manager-component-lab.md +43 -0
  352. package/docs/surface-manager-controller.md +66 -0
  353. package/docs/surface-manager-layout-engines.md +32 -0
  354. package/docs/surface-manager-lazy-hydration.md +63 -0
  355. package/docs/surface-manager-migration-guide.md +94 -0
  356. package/docs/surface-manager-native-rmt-surfaces.md +38 -0
  357. package/docs/surface-manager-overlay-bridge.md +53 -0
  358. package/docs/surface-manager-persistence.md +30 -0
  359. package/docs/surface-manager-quality-gates.md +51 -0
  360. package/docs/surface-manager-release-handoff.md +68 -0
  361. package/docs/surface-manager-remote-policy.md +54 -0
  362. package/docs/surface-manager-rmt-authoring.md +86 -0
  363. package/docs/surface-manager-route-lifecycle.md +59 -0
  364. package/docs/surface-manager-runtime-release-handoff.md +69 -0
  365. package/docs/surface-manager-side-panel-runtime.md +36 -0
  366. package/docs/surface-manager-stack-policy.md +39 -0
  367. package/docs/surface-manager-window-runtime.md +47 -0
  368. package/docs/surface-manager-workbench-fixture.md +43 -0
  369. package/docs/third-party-design-authoring.md +406 -0
  370. package/docs/trusted-dom-boundary-browser-proof.md +32 -0
  371. package/docs/trusted-dom-sanitizing.md +110 -0
  372. package/docs/type-exports.md +61 -0
  373. package/docs/typescript-components.md +63 -0
  374. package/docs/utils/fabric-runtime.js +650 -0
  375. package/docs/utils/pageloader.js +2823 -0
  376. package/docs/utils/parsedown.php +298 -0
  377. package/docs/visual-browser-regression.md +83 -0
  378. package/docs/visual-owner-artifacts.md +46 -0
  379. package/docs/visual-snapshot-automation.md +87 -0
  380. package/docs/xtend-api-types.md +55 -0
  381. package/docs/xtend-builder-types.md +55 -0
  382. package/docs/xtend-catalog-types.md +44 -0
  383. package/docs/xtend-fabric-rmt-lane-mapping.md +143 -0
  384. package/docs/xtend-fabric.md +474 -0
  385. package/docs/xtend-loader-types.md +58 -0
  386. package/docs/xtend-loader.md +265 -0
  387. package/docs/xtend-policy-types.md +38 -0
  388. package/docs/xtend-rmt-types.md +39 -0
  389. package/docs/xtend-vendor-types.md +36 -0
  390. package/docs/xtendrmt-app-dsl.md +269 -0
  391. package/docs/xtendrmt-migration-guide.md +235 -0
  392. package/docs/xtendrmt-native-authoring.md +337 -0
  393. package/docs/xtendrmt-overview.md +89 -0
  394. package/docs/xtendrmt-parsedown-docs.rmt +956 -0
  395. package/docs/xtendrmt-parsedown-scheduling.md +301 -0
  396. package/docs/xtendrmt-runtime-bridge.md +155 -0
  397. package/fabric/hydration-policy.d.ts +27 -0
  398. package/fabric/hydration-policy.js +306 -0
  399. package/fabric/package.json +58 -0
  400. package/fabric/rmt-lane-mapping.d.ts +47 -0
  401. package/fabric/rmt-lane-mapping.js +504 -0
  402. package/fabric/xtend-fabric.d.ts +81 -0
  403. package/fabric/xtend-fabric.js +2669 -0
  404. package/fabric/xtend-policy-public-types.d.ts +135 -0
  405. package/package.json +8225 -0
  406. package/security/README.md +54 -0
  407. package/security/manifest-import-policy.d.ts +43 -0
  408. package/security/manifest-import-policy.js +260 -0
  409. package/security/supply-chain-gate-policy.d.ts +45 -0
  410. package/security/supply-chain-gate-policy.js +249 -0
  411. package/security/trusted-dom-policy.d.ts +36 -0
  412. package/security/trusted-dom-policy.js +316 -0
  413. package/tools/package.json +77 -0
  414. package/tools/rmt-editor/vscode/README.md +33 -0
  415. package/tools/rmt-editor/vscode/extension.d.ts +9 -0
  416. package/tools/rmt-editor/vscode/extension.js +55 -0
  417. package/tools/rmt-editor/vscode/language-configuration.json +28 -0
  418. package/tools/rmt-editor/vscode/package.json +83 -0
  419. package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +243 -0
  420. package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +13 -0
  421. package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
  422. package/tools/rmt-language/code-actions.d.ts +15 -0
  423. package/tools/rmt-language/code-actions.js +566 -0
  424. package/tools/rmt-language/completions.d.ts +22 -0
  425. package/tools/rmt-language/completions.js +475 -0
  426. package/tools/rmt-language/definitions.d.ts +13 -0
  427. package/tools/rmt-language/definitions.js +212 -0
  428. package/tools/rmt-language/diagnostics.d.ts +23 -0
  429. package/tools/rmt-language/diagnostics.js +486 -0
  430. package/tools/rmt-language/format-adapter.d.ts +16 -0
  431. package/tools/rmt-language/format-adapter.js +270 -0
  432. package/tools/rmt-language/hover.d.ts +12 -0
  433. package/tools/rmt-language/hover.js +326 -0
  434. package/tools/rmt-language/kernel-escalation.d.ts +122 -0
  435. package/tools/rmt-language/kernel-escalation.js +427 -0
  436. package/tools/rmt-language/kernel-panic-monitor.d.ts +176 -0
  437. package/tools/rmt-language/kernel-panic-monitor.js +674 -0
  438. package/tools/rmt-language/kernel-policy-parity.d.ts +142 -0
  439. package/tools/rmt-language/kernel-policy-parity.js +629 -0
  440. package/tools/rmt-language/kernel-recovery.d.ts +173 -0
  441. package/tools/rmt-language/kernel-recovery.js +666 -0
  442. package/tools/rmt-language/kernel-scheduler-failure.d.ts +136 -0
  443. package/tools/rmt-language/kernel-scheduler-failure.js +486 -0
  444. package/tools/rmt-language/kernel-security-regression.d.ts +154 -0
  445. package/tools/rmt-language/kernel-security-regression.js +465 -0
  446. package/tools/rmt-language/kernel-trust-authority.d.ts +120 -0
  447. package/tools/rmt-language/kernel-trust-authority.js +549 -0
  448. package/tools/rmt-language/parser.d.ts +14 -0
  449. package/tools/rmt-language/parser.js +111 -0
  450. package/tools/rmt-language/rmt-tooling-public-types.d.ts +179 -0
  451. package/tools/rmt-language/rules/boundary-policy.js +81 -0
  452. package/tools/rmt-language/rules/document-policy.js +65 -0
  453. package/tools/rmt-language/rules/index.js +29 -0
  454. package/tools/rmt-language/rules/route-policy.js +81 -0
  455. package/tools/rmt-language/rules/scheduler-policy.js +66 -0
  456. package/tools/rmt-language/rules/template-policy.js +130 -0
  457. package/tools/rmt-language/semantic-graph.d.ts +18 -0
  458. package/tools/rmt-language/semantic-graph.js +827 -0
  459. package/tools/rmt-language/snippets/README.md +17 -0
  460. package/tools/rmt-language/snippets/index.d.ts +17 -0
  461. package/tools/rmt-language/snippets/index.js +417 -0
  462. package/tools/rmt-language/snippets/rmt.code-snippets +243 -0
  463. package/tools/rmt-language/source-model.d.ts +14 -0
  464. package/tools/rmt-language/source-model.js +731 -0
  465. package/tools/rmt-language/symbols.d.ts +13 -0
  466. package/tools/rmt-language/symbols.js +183 -0
  467. package/tools/rmt-language/vnext-compatibility.d.ts +28 -0
  468. package/tools/rmt-language/vnext-compatibility.js +675 -0
  469. package/tools/rmt-language/vnext-compiler.d.ts +17 -0
  470. package/tools/rmt-language/vnext-compiler.js +716 -0
  471. package/tools/rmt-language/vnext-composition.d.ts +30 -0
  472. package/tools/rmt-language/vnext-composition.js +595 -0
  473. package/tools/rmt-language/vnext-conditions.d.ts +25 -0
  474. package/tools/rmt-language/vnext-conditions.js +474 -0
  475. package/tools/rmt-language/vnext-cross-surface-events.d.ts +30 -0
  476. package/tools/rmt-language/vnext-cross-surface-events.js +607 -0
  477. package/tools/rmt-language/vnext-degradation.d.ts +23 -0
  478. package/tools/rmt-language/vnext-degradation.js +428 -0
  479. package/tools/rmt-language/vnext-enterprise-fixtures.d.ts +28 -0
  480. package/tools/rmt-language/vnext-enterprise-fixtures.js +487 -0
  481. package/tools/rmt-language/vnext-enterprise-registry.d.ts +21 -0
  482. package/tools/rmt-language/vnext-enterprise-registry.js +495 -0
  483. package/tools/rmt-language/vnext-enterprise-release.d.ts +44 -0
  484. package/tools/rmt-language/vnext-enterprise-release.js +472 -0
  485. package/tools/rmt-language/vnext-event-governance.d.ts +29 -0
  486. package/tools/rmt-language/vnext-event-governance.js +488 -0
  487. package/tools/rmt-language/vnext-events.d.ts +44 -0
  488. package/tools/rmt-language/vnext-events.js +680 -0
  489. package/tools/rmt-language/vnext-import-resolver.d.ts +28 -0
  490. package/tools/rmt-language/vnext-import-resolver.js +642 -0
  491. package/tools/rmt-language/vnext-lifecycle.d.ts +22 -0
  492. package/tools/rmt-language/vnext-lifecycle.js +404 -0
  493. package/tools/rmt-language/vnext-parser.d.ts +21 -0
  494. package/tools/rmt-language/vnext-parser.js +1391 -0
  495. package/tools/rmt-language/vnext-regression.d.ts +25 -0
  496. package/tools/rmt-language/vnext-regression.js +394 -0
  497. package/tools/rmt-language/vnext-release.d.ts +29 -0
  498. package/tools/rmt-language/vnext-release.js +293 -0
  499. package/tools/rmt-language/vnext-remote-compatibility.d.ts +33 -0
  500. package/tools/rmt-language/vnext-remote-compatibility.js +892 -0
  501. package/tools/rmt-language/vnext-remote-compiler.d.ts +14 -0
  502. package/tools/rmt-language/vnext-remote-compiler.js +520 -0
  503. package/tools/rmt-language/vnext-remote-manifest.d.ts +33 -0
  504. package/tools/rmt-language/vnext-remote-manifest.js +538 -0
  505. package/tools/rmt-language/vnext-remote-security.d.ts +27 -0
  506. package/tools/rmt-language/vnext-remote-security.js +380 -0
  507. package/tools/rmt-language/vnext-remote-tooling.d.ts +25 -0
  508. package/tools/rmt-language/vnext-remote-tooling.js +805 -0
  509. package/tools/rmt-language/vnext-scheduler.d.ts +24 -0
  510. package/tools/rmt-language/vnext-scheduler.js +469 -0
  511. package/tools/rmt-language/vnext-security.d.ts +28 -0
  512. package/tools/rmt-language/vnext-security.js +597 -0
  513. package/tools/rmt-language/vnext-streaming.d.ts +28 -0
  514. package/tools/rmt-language/vnext-streaming.js +593 -0
  515. package/tools/rmt-language/vnext-surfaces.d.ts +24 -0
  516. package/tools/rmt-language/vnext-surfaces.js +406 -0
  517. package/tools/rmt-language/vnext-tooling.d.ts +25 -0
  518. package/tools/rmt-language/vnext-tooling.js +728 -0
  519. package/tools/rmt-language-server/protocol.d.ts +22 -0
  520. package/tools/rmt-language-server/protocol.js +352 -0
  521. package/tools/rmt-language-server/server.d.ts +15 -0
  522. package/tools/rmt-language-server/server.js +622 -0
  523. package/tools/rmt-linter/cli.d.ts +14 -0
  524. package/tools/rmt-linter/cli.js +450 -0
  525. package/tools/rmt-linter/reporter.d.ts +16 -0
  526. package/tools/rmt-linter/reporter.js +472 -0
  527. package/xtend-builder/README.md +83 -0
  528. package/xtend-builder/a11y/README.md +42 -0
  529. package/xtend-builder/a11y/component-a11y-profile.d.ts +14 -0
  530. package/xtend-builder/a11y/component-a11y-profile.js +314 -0
  531. package/xtend-builder/blueprints/README.md +105 -0
  532. package/xtend-builder/blueprints/component-blueprint.contract.d.ts +16 -0
  533. package/xtend-builder/blueprints/component-blueprint.contract.js +343 -0
  534. package/xtend-builder/builder-public-types.d.ts +234 -0
  535. package/xtend-builder/extensions/README.md +26 -0
  536. package/xtend-builder/extensions/component-extension-points.d.ts +11 -0
  537. package/xtend-builder/extensions/component-extension-points.js +277 -0
  538. package/xtend-builder/generators/README.md +149 -0
  539. package/xtend-builder/generators/component-files.d.ts +5 -0
  540. package/xtend-builder/generators/component-files.js +769 -0
  541. package/xtend-builder/generators/component-plan.d.ts +4 -0
  542. package/xtend-builder/generators/component-plan.js +104 -0
  543. package/xtend-builder/generators/registry.d.ts +6 -0
  544. package/xtend-builder/generators/registry.js +118 -0
  545. package/xtend-builder/generators/rmt-build.js +738 -0
  546. package/xtend-builder/generators/rmt-lifecycle-demo.js +922 -0
  547. package/xtend-builder/lib/cli.d.ts +9 -0
  548. package/xtend-builder/lib/cli.js +543 -0
  549. package/xtend-builder/lib/layout.d.ts +6 -0
  550. package/xtend-builder/lib/layout.js +153 -0
  551. package/xtend-builder/lib/package-resolver.js +25 -0
  552. package/xtend-builder/package.json +90 -0
  553. package/xtend-builder/performance/README.md +31 -0
  554. package/xtend-builder/performance/component-performance-profile.d.ts +11 -0
  555. package/xtend-builder/performance/component-performance-profile.js +347 -0
  556. package/xtend-builder/performance/component-ux-performance-contract.d.ts +27 -0
  557. package/xtend-builder/performance/component-ux-performance-contract.js +424 -0
  558. package/xtend-builder/preview/README.md +61 -0
  559. package/xtend-builder/preview/component-lab-ux-inspector.d.ts +20 -0
  560. package/xtend-builder/preview/component-lab-ux-inspector.js +448 -0
  561. package/xtend-builder/preview/component-lab.d.ts +14 -0
  562. package/xtend-builder/preview/component-lab.js +278 -0
  563. package/xtend-builder/preview/component-preview.d.ts +5 -0
  564. package/xtend-builder/preview/component-preview.js +160 -0
  565. package/xtend-builder/scaffold.config.d.ts +4 -0
  566. package/xtend-builder/scaffold.config.js +2056 -0
  567. package/xtend-builder/scaffold.d.ts +3 -0
  568. package/xtend-builder/scaffold.js +11 -0
  569. package/xtend-builder/templates/README.md +33 -0
  570. package/xtend-builder/templates/component/a11y.template.ts +11 -0
  571. package/xtend-builder/templates/component/component-suite.template.d.ts +2 -0
  572. package/xtend-builder/templates/component/component-suite.template.js +108 -0
  573. package/xtend-builder/templates/component/contract.template.ts +10 -0
  574. package/xtend-builder/templates/component/demo-plan.template.md +73 -0
  575. package/xtend-builder/templates/component/docs.template.md +301 -0
  576. package/xtend-builder/templates/component/fixture-data.template.ts +28 -0
  577. package/xtend-builder/templates/component/fixture.template.html +37 -0
  578. package/xtend-builder/templates/component/manifest-plan.template.json +22 -0
  579. package/xtend-builder/templates/component/performance.template.ts +13 -0
  580. package/xtend-builder/templates/component/rmt.template.ts +12 -0
  581. package/xtend-builder/templates/component/source.template.d.ts +2 -0
  582. package/xtend-builder/templates/component/source.template.js +137 -0
  583. package/xtend-builder/templates/component/source.template.ts +110 -0
  584. package/xtend-builder/templates/component/types.template.d.ts +423 -0
  585. package/xtend-builder/templates/loader.d.ts +4 -0
  586. package/xtend-builder/templates/loader.js +51 -0
  587. package/xtend-builder/templates/registry.d.ts +6 -0
  588. package/xtend-builder/templates/registry.js +119 -0
  589. package/xtend-builder/typing/README.md +130 -0
  590. package/xtend-builder/typing/component-contract-v2.d.ts +15 -0
  591. package/xtend-builder/typing/component-contract-v2.js +248 -0
  592. package/xtend-builder/typing/component-network-contract.d.ts +22 -0
  593. package/xtend-builder/typing/component-network-contract.js +478 -0
  594. package/xtend-builder/typing/component-shell-contract.d.ts +21 -0
  595. package/xtend-builder/typing/component-shell-contract.js +312 -0
  596. package/xtend-builder/typing/component-styling-contract.d.ts +22 -0
  597. package/xtend-builder/typing/component-styling-contract.js +301 -0
  598. package/xtend-builder/typing/component-types.d.ts +10 -0
  599. package/xtend-builder/typing/component-types.js +551 -0
  600. package/xtend-builder/typing/enterprise-component-flex-hardening-contract.d.ts +20 -0
  601. package/xtend-builder/typing/enterprise-component-flex-hardening-contract.js +332 -0
  602. package/xtend-builder/typing/feedback-status-ux-contract.d.ts +25 -0
  603. package/xtend-builder/typing/feedback-status-ux-contract.js +347 -0
  604. package/xtend-builder/typing/form-controls-ux-contract.d.ts +25 -0
  605. package/xtend-builder/typing/form-controls-ux-contract.js +357 -0
  606. package/xtend-builder/typing/layout-display-media-ux-contract.d.ts +25 -0
  607. package/xtend-builder/typing/layout-display-media-ux-contract.js +420 -0
  608. package/xtend-builder/typing/navigation-routing-ux-contract.d.ts +17 -0
  609. package/xtend-builder/typing/navigation-routing-ux-contract.js +297 -0
  610. package/xtend-builder/typing/overlay-interaction-ux-contract.d.ts +25 -0
  611. package/xtend-builder/typing/overlay-interaction-ux-contract.js +383 -0
  612. package/xtend-builder/typing/rmt-dsl-authoring-polish.d.ts +27 -0
  613. package/xtend-builder/typing/rmt-dsl-authoring-polish.js +419 -0
  614. package/xtend-builder/typing/rmt-shell-authoring-contract.d.ts +26 -0
  615. package/xtend-builder/typing/rmt-shell-authoring-contract.js +315 -0
  616. package/xtend-builder/utils/README.md +8 -0
  617. package/xtend-builder/utils/naming.d.ts +7 -0
  618. package/xtend-builder/utils/naming.js +36 -0
  619. package/xtend-builder/utils/validation.d.ts +5 -0
  620. package/xtend-builder/utils/validation.js +95 -0
  621. package/xtend-builder/wiring/README.md +46 -0
  622. package/xtend-builder/wiring/features.d.ts +5 -0
  623. package/xtend-builder/wiring/features.js +165 -0
  624. package/xtend-builder/wiring/hydration.d.ts +4 -0
  625. package/xtend-builder/wiring/hydration.js +44 -0
  626. package/xtend-builder/wiring/manifest.d.ts +5 -0
  627. package/xtend-builder/wiring/manifest.js +48 -0
  628. package/xtend-builder/workflows/README.md +47 -0
  629. package/xtend-builder/workflows/developer-workflow.d.ts +6 -0
  630. package/xtend-builder/workflows/developer-workflow.js +125 -0
  631. package/xtend-builder/writing/manifest-patcher.d.ts +49 -0
  632. package/xtend-builder/writing/manifest-patcher.js +391 -0
  633. package/xtend-builder/writing/write-plan.d.ts +148 -0
  634. package/xtend-builder/writing/write-plan.js +646 -0
  635. package/xtend-dev.d.ts +23 -0
  636. package/xtend-dev.js +4 -0
  637. package/xtend-loader.d.ts +201 -0
  638. package/xtend-loader.js +1704 -0
  639. package/xtend.css +402 -0
  640. package/xtendrmt/package.json +64 -0
  641. package/xtendrmt/rmt-core.d.ts +4452 -0
  642. package/xtendrmt/rmt-core.esm.js +25793 -0
  643. package/xtendrmt/rmt-first-demo-app.js +265 -0
  644. package/xtendrmt/rmt-first-demo-app.rmt +737 -0
  645. package/xtendrmt/rmt-lifecycle-demo.app.js +493 -0
  646. package/xtendrmt/rmt-lifecycle-demo.core.json +810 -0
  647. package/xtendrmt/rmt-lifecycle-demo.rmt +35 -0
  648. package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +153 -0
  649. package/xtendrmt/rmt-lifecycle-demo.rmt-build.core.json +810 -0
  650. package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +202 -0
  651. package/xtendrmt/rmt-lifecycle-demo.scaffold.json +187 -0
  652. package/xtendrmt/rmt-manifest.json +548 -0
  653. package/xtendrmt/rmt-runtime.browser.js +26183 -0
  654. package/xtendrmt/rmt-runtime.esm.js +26214 -0
  655. package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +849 -0
  656. package/xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt +50 -0
  657. package/xtendrmt/rmt-vnext-reference-demo.core.json +1069 -0
  658. package/xtendrmt/rmt-vnext-reference-demo.rmt +50 -0
  659. package/xtendrmt/rmt.schema.json +3145 -0
  660. package/xtendrmt/surface-workbench.js +316 -0
  661. package/xtendrmt/surface-workbench.rmt +762 -0
  662. package/xtendrmt/xtendrmt-bestcase-demo.core.json +1187 -0
  663. package/xtendrmt/xtendrmt-bestcase-demo.js +1728 -0
  664. package/xtendrmt/xtendrmt-bestcase-demo.rmt +57 -0
@@ -0,0 +1,472 @@
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const { pathToFileURL } = require('url');
4
+ const {
5
+ buildSemanticGraph
6
+ } = require('../rmt-language/semantic-graph');
7
+ const {
8
+ lintRmtSource
9
+ } = require('../rmt-language/diagnostics');
10
+ const {
11
+ getRmtCodeActions
12
+ } = require('../rmt-language/code-actions');
13
+ const {
14
+ analyzeRmtVNextToolingSource,
15
+ isLikelyRmtVNextSource,
16
+ lintRmtVNextToolingSource
17
+ } = require('../rmt-language/vnext-tooling');
18
+
19
+ const RMT_AGENT_REPAIR_REPORT_SCHEMA = 'xtend.rmt.ai-agent-repair-report.v1';
20
+ const RMT_AGENT_REPAIR_FILE_SCHEMA = 'xtend.rmt.ai-agent-repair-file.v1';
21
+ const RMT_AGENT_REPAIR_STEP_SCHEMA = 'xtend.rmt.ai-agent-repair-step.v1';
22
+ const RMT_AGENT_NOOP_SCHEMA = 'xtend.rmt.ai-agent-noop.v1';
23
+ const RMT_AGENT_REPAIR_REPORT_WORKPACKAGE = 'WP-E14-11';
24
+ const RMT_AGENT_REPAIR_REPORT_MODULE_PATH = 'tools/rmt-linter/reporter.js';
25
+ const RMT_AGENT_REPAIR_REPORT_SUITE_PATH = 'tests/rmt-language/rmt_agent_repair_report_suite.js';
26
+ const RMT_AGENT_REPAIR_REPORT_PACKAGE_SCRIPT = 'npm run test:rmt-agent-report';
27
+ const DEFAULT_TOOL_ROOT_DIR = path.resolve(__dirname, '..', '..');
28
+
29
+ const SEVERITY_RANK = Object.freeze({
30
+ error: 0,
31
+ warning: 1,
32
+ info: 2,
33
+ hint: 3
34
+ });
35
+
36
+ const REPAIR_PRIORITY = Object.freeze({
37
+ 'rename-file-extension': 10,
38
+ 'create-schedule': 20,
39
+ 'create-template-stub': 30,
40
+ 'create-component-stub': 40,
41
+ 'replace-field-value': 50,
42
+ 'add-route-title': 60,
43
+ 'append-property': 70
44
+ });
45
+
46
+ function normalizeString(value) {
47
+ return typeof value === 'string' ? value.trim() : '';
48
+ }
49
+
50
+ function toArray(value) {
51
+ return Array.isArray(value) ? value : [];
52
+ }
53
+
54
+ function normalizeSeverity(value) {
55
+ return Object.prototype.hasOwnProperty.call(SEVERITY_RANK, value) ? value : 'info';
56
+ }
57
+
58
+ function severityRank(value) {
59
+ return SEVERITY_RANK[normalizeSeverity(value)];
60
+ }
61
+
62
+ function shouldFail(summary, failOn = 'error') {
63
+ const threshold = severityRank(failOn);
64
+
65
+ return Object.entries(SEVERITY_RANK).some(([severity, rank]) => {
66
+ if (rank > threshold) {
67
+ return false;
68
+ }
69
+
70
+ return (summary[`${severity}Count`] || 0) > 0;
71
+ });
72
+ }
73
+
74
+ function createUri(input = {}) {
75
+ if (input.uri) {
76
+ return input.uri;
77
+ }
78
+
79
+ if (input.filePath) {
80
+ return pathToFileURL(path.resolve(input.filePath)).href;
81
+ }
82
+
83
+ return 'untitled:rmt-agent-report';
84
+ }
85
+
86
+ function createLanguageToolingOptions(options = {}) {
87
+ return {
88
+ ...options,
89
+ workspaceRoot: options.rootDir || options.workspaceRoot || null,
90
+ rootDir: path.resolve(options.toolRootDir || options.formatRootDir || DEFAULT_TOOL_ROOT_DIR)
91
+ };
92
+ }
93
+
94
+ function normalizeDiagnostic(diagnostic = {}) {
95
+ return {
96
+ schema: diagnostic.schema || 'xtend.rmt.linter.diagnostic.v1',
97
+ source: diagnostic.source || 'rmt-linter',
98
+ code: diagnostic.code || 'rmt.diagnostic',
99
+ ruleId: diagnostic.ruleId || null,
100
+ severity: normalizeSeverity(diagnostic.severity),
101
+ category: diagnostic.category || null,
102
+ message: diagnostic.message || diagnostic.code || 'RMT diagnostic',
103
+ uri: diagnostic.uri || null,
104
+ file: diagnostic.file || null,
105
+ pointer: diagnostic.pointer || null,
106
+ range: diagnostic.range || null,
107
+ repair: diagnostic.repair || null,
108
+ relatedInformation: toArray(diagnostic.relatedInformation)
109
+ };
110
+ }
111
+
112
+ function summarizeDiagnostics(diagnostics) {
113
+ return diagnostics.reduce((summary, diagnostic) => {
114
+ const severity = normalizeSeverity(diagnostic.severity);
115
+ const key = `${severity}Count`;
116
+
117
+ summary.totalCount += 1;
118
+ summary[key] += 1;
119
+
120
+ return summary;
121
+ }, {
122
+ totalCount: 0,
123
+ errorCount: 0,
124
+ warningCount: 0,
125
+ infoCount: 0,
126
+ hintCount: 0
127
+ });
128
+ }
129
+
130
+ function inferImpact(diagnostic = {}) {
131
+ if (diagnostic.code === 'rmt.template.inline-script.refused'
132
+ || diagnostic.code === 'rmt.xtend.kernel-boundary.violation') {
133
+ return 'critical';
134
+ }
135
+
136
+ if (diagnostic.severity === 'error') {
137
+ return 'high';
138
+ }
139
+
140
+ if (diagnostic.severity === 'warning') {
141
+ return 'medium';
142
+ }
143
+
144
+ return 'low';
145
+ }
146
+
147
+ function inferNoopReason(diagnostic = {}, actions = []) {
148
+ if (actions.some((action) => action.diagnosticCode === diagnostic.code)) {
149
+ return 'covered-by-related-repair';
150
+ }
151
+
152
+ if (diagnostic.code === 'rmt.syntax.invalid-json') {
153
+ return 'source-not-parseable';
154
+ }
155
+
156
+ if (diagnostic.code === 'rmt.template.inline-script.refused'
157
+ || diagnostic.code === 'rmt.xtend.kernel-boundary.violation') {
158
+ return 'unsafe-automatic-edit';
159
+ }
160
+
161
+ if (diagnostic.code && diagnostic.code.startsWith('rmt.ref.component')) {
162
+ return 'component-stub-needs-authoring-context';
163
+ }
164
+
165
+ return 'no-safe-mvp-fix';
166
+ }
167
+
168
+ function explainNoop(diagnostic = {}, actions = []) {
169
+ const reason = inferNoopReason(diagnostic, actions);
170
+
171
+ if (reason === 'covered-by-related-repair') {
172
+ return 'Eine verwandte Diagnose desselben Typs erzeugt bereits einen deduplizierten Fix. Diesen Fix zuerst anwenden und danach erneut linten.';
173
+ }
174
+
175
+ if (reason === 'source-not-parseable') {
176
+ return 'Die Quelle ist syntaktisch nicht parsebar. Erst JSON/RMT-Syntax korrigieren, dann semantische Fixes erneut anfordern.';
177
+ }
178
+
179
+ if (reason === 'unsafe-automatic-edit') {
180
+ return 'Die Diagnose betrifft Security- oder Kernel-Boundary-Verhalten. Automatisches Entfernen waere zu riskant und benoetigt Review.';
181
+ }
182
+
183
+ if (reason === 'component-stub-needs-authoring-context') {
184
+ return 'Ein Component-Stub benoetigt bewusstes UI-/Adapter-Authoring. Der MVP erzeugt dafuer keinen automatischen Stub.';
185
+ }
186
+
187
+ return 'Fuer diese Diagnose gibt es im sicheren MVP noch keinen deterministischen Quick Fix.';
188
+ }
189
+
190
+ function repairKindForAction(action = {}) {
191
+ if (action.edit && action.edit.metadata && action.edit.metadata.repairKind) {
192
+ return action.edit.metadata.repairKind;
193
+ }
194
+
195
+ if (action.command && action.command.command === 'xtend.rmt.renameFileExtension') {
196
+ return 'rename-file-extension';
197
+ }
198
+
199
+ return action.diagnosticCode || 'manual-review';
200
+ }
201
+
202
+ function repairPriority(action = {}) {
203
+ const repairKind = repairKindForAction(action);
204
+
205
+ return REPAIR_PRIORITY[repairKind] || 100;
206
+ }
207
+
208
+ function relatedDiagnosticsFor(diagnostic, diagnostics) {
209
+ const pointer = diagnostic.pointer || null;
210
+
211
+ if (!pointer) {
212
+ return [];
213
+ }
214
+
215
+ return diagnostics
216
+ .filter((entry) => entry !== diagnostic && entry.pointer === pointer)
217
+ .map((entry) => ({
218
+ code: entry.code,
219
+ severity: entry.severity,
220
+ message: entry.message,
221
+ pointer: entry.pointer,
222
+ impact: inferImpact(entry)
223
+ }));
224
+ }
225
+
226
+ function actionMatchesDiagnostic(action, diagnostic) {
227
+ return toArray(action.diagnostics).some((entry) => {
228
+ return entry.code === diagnostic.code && (entry.pointer || null) === (diagnostic.pointer || null);
229
+ });
230
+ }
231
+
232
+ function normalizeActionForAgent(action, diagnostic, diagnostics, order) {
233
+ const repairKind = repairKindForAction(action);
234
+
235
+ return {
236
+ schema: RMT_AGENT_REPAIR_STEP_SCHEMA,
237
+ order,
238
+ title: action.title,
239
+ diagnosticCode: action.diagnosticCode,
240
+ pointer: action.pointer || (diagnostic && diagnostic.pointer) || null,
241
+ severity: diagnostic ? diagnostic.severity : 'info',
242
+ impact: diagnostic ? inferImpact(diagnostic) : 'low',
243
+ confidence: action.confidence || 'high',
244
+ safe: action.safe !== false,
245
+ repairKind,
246
+ applyMode: action.edit ? 'workspace-edit' : action.command ? 'command' : 'manual',
247
+ action,
248
+ edit: action.edit || null,
249
+ command: action.command || null,
250
+ relatedDiagnostics: diagnostic ? relatedDiagnosticsFor(diagnostic, diagnostics) : []
251
+ };
252
+ }
253
+
254
+ function createNoop(diagnostic, diagnostics, actions = []) {
255
+ return {
256
+ schema: RMT_AGENT_NOOP_SCHEMA,
257
+ diagnosticCode: diagnostic.code,
258
+ pointer: diagnostic.pointer || null,
259
+ severity: diagnostic.severity,
260
+ impact: inferImpact(diagnostic),
261
+ confidence: 'none',
262
+ repairable: false,
263
+ reason: inferNoopReason(diagnostic, actions),
264
+ explanation: explainNoop(diagnostic, actions),
265
+ relatedDiagnostics: relatedDiagnosticsFor(diagnostic, diagnostics)
266
+ };
267
+ }
268
+
269
+ function sortRepairSteps(steps) {
270
+ return steps.sort((a, b) => {
271
+ const severityDiff = severityRank(a.severity) - severityRank(b.severity);
272
+
273
+ if (severityDiff !== 0) {
274
+ return severityDiff;
275
+ }
276
+
277
+ const priorityDiff = repairPriority(a.action) - repairPriority(b.action);
278
+
279
+ if (priorityDiff !== 0) {
280
+ return priorityDiff;
281
+ }
282
+
283
+ const pointerDiff = String(a.pointer || '').localeCompare(String(b.pointer || ''));
284
+
285
+ if (pointerDiff !== 0) {
286
+ return pointerDiff;
287
+ }
288
+
289
+ return String(a.title || '').localeCompare(String(b.title || ''));
290
+ }).map((step, index) => ({
291
+ ...step,
292
+ order: index + 1
293
+ }));
294
+ }
295
+
296
+ function createFileAgentReport(input = {}, options = {}) {
297
+ const sourceInput = {
298
+ text: String(input.text || ''),
299
+ uri: input.uri,
300
+ filePath: input.filePath || null,
301
+ version: input.version || 0,
302
+ languageId: input.languageId || 'rmt'
303
+ };
304
+ const uri = createUri(sourceInput);
305
+ const languageOptions = createLanguageToolingOptions(options);
306
+ const vnext = isLikelyRmtVNextSource(sourceInput, languageOptions);
307
+ const graph = options.graph || (vnext
308
+ ? analyzeRmtVNextToolingSource(sourceInput, languageOptions)
309
+ : buildSemanticGraph(sourceInput, languageOptions));
310
+ const lintReport = options.lintReport || (vnext
311
+ ? lintRmtVNextToolingSource(sourceInput, {
312
+ ...languageOptions,
313
+ analysis: graph
314
+ })
315
+ : lintRmtSource(sourceInput, {
316
+ ...languageOptions,
317
+ graph
318
+ }));
319
+ const codeActionReport = options.codeActionReport || (vnext
320
+ ? {
321
+ actions: []
322
+ }
323
+ : getCodeActionReport(sourceInput, graph, lintReport, languageOptions));
324
+ const diagnostics = toArray(lintReport.diagnostics).map(normalizeDiagnostic);
325
+ const actions = toArray(codeActionReport.actions);
326
+ const matchedDiagnostics = new Set();
327
+ const repairSteps = [];
328
+
329
+ actions.forEach((action) => {
330
+ const diagnostic = diagnostics.find((entry) => actionMatchesDiagnostic(action, entry))
331
+ || diagnostics.find((entry) => entry.code === action.diagnosticCode);
332
+
333
+ if (diagnostic) {
334
+ matchedDiagnostics.add(diagnostic);
335
+ }
336
+
337
+ repairSteps.push(normalizeActionForAgent(action, diagnostic, diagnostics, repairSteps.length + 1));
338
+ });
339
+
340
+ const sortedRepairSteps = sortRepairSteps(repairSteps);
341
+ const noOps = diagnostics
342
+ .filter((diagnostic) => !matchedDiagnostics.has(diagnostic))
343
+ .map((diagnostic) => createNoop(diagnostic, diagnostics, actions))
344
+ .sort((a, b) => {
345
+ const severityDiff = severityRank(a.severity) - severityRank(b.severity);
346
+
347
+ if (severityDiff !== 0) {
348
+ return severityDiff;
349
+ }
350
+
351
+ const pointerDiff = String(a.pointer || '').localeCompare(String(b.pointer || ''));
352
+
353
+ if (pointerDiff !== 0) {
354
+ return pointerDiff;
355
+ }
356
+
357
+ return String(a.diagnosticCode || '').localeCompare(String(b.diagnosticCode || ''));
358
+ });
359
+ const summary = summarizeDiagnostics(diagnostics);
360
+
361
+ return {
362
+ schema: RMT_AGENT_REPAIR_FILE_SCHEMA,
363
+ uri,
364
+ file: sourceInput.filePath,
365
+ status: lintReport.status,
366
+ ok: lintReport.ok,
367
+ languageMode: vnext ? 'vnext' : 'legacy',
368
+ graphStatus: graph.status,
369
+ sourceMapSummary: graph.sourceMapSummary || null,
370
+ diagnostics,
371
+ repairPlan: sortedRepairSteps,
372
+ noOps,
373
+ actionableCount: sortedRepairSteps.length,
374
+ noOpCount: noOps.length,
375
+ ...summary
376
+ };
377
+ }
378
+
379
+ function getCodeActionReport(sourceInput, graph, lintReport, options = {}) {
380
+ const {
381
+ getRmtCodeActions
382
+ } = require('../rmt-language/code-actions');
383
+
384
+ return getRmtCodeActions(sourceInput, {
385
+ ...options,
386
+ graph,
387
+ lintReport
388
+ });
389
+ }
390
+
391
+ function createFileInputFromPath(filePath) {
392
+ const absolutePath = path.resolve(filePath);
393
+
394
+ return {
395
+ text: fs.readFileSync(absolutePath, 'utf8'),
396
+ filePath: absolutePath
397
+ };
398
+ }
399
+
400
+ function createRmtAgentRepairReport(inputs = [], options = {}) {
401
+ const sourceInputs = (Array.isArray(inputs) ? inputs : [inputs]).map((input) => {
402
+ if (typeof input === 'string') {
403
+ return createFileInputFromPath(input);
404
+ }
405
+
406
+ return input;
407
+ });
408
+ const fileReports = sourceInputs.map((input) => createFileAgentReport(input, options));
409
+ const diagnostics = fileReports.flatMap((fileReport) => fileReport.diagnostics);
410
+ const repairPlan = fileReports.flatMap((fileReport) => fileReport.repairPlan.map((step) => ({
411
+ ...step,
412
+ uri: fileReport.uri,
413
+ file: fileReport.file
414
+ })));
415
+ const sortedRepairPlan = sortRepairSteps(repairPlan);
416
+ const noOps = fileReports.flatMap((fileReport) => fileReport.noOps.map((noop) => ({
417
+ ...noop,
418
+ uri: fileReport.uri,
419
+ file: fileReport.file
420
+ })));
421
+ const summary = summarizeDiagnostics(diagnostics);
422
+ const failOn = normalizeSeverity(options.failOn || 'error');
423
+ const status = shouldFail(summary, failOn) ? 'failed' : 'passed';
424
+
425
+ return {
426
+ schema: RMT_AGENT_REPAIR_REPORT_SCHEMA,
427
+ sourceReportSchema: 'xtend.rmt.linter.report.v1',
428
+ codeActionProviderSchema: 'xtend.rmt.code-action-provider.v1',
429
+ workpackage: RMT_AGENT_REPAIR_REPORT_WORKPACKAGE,
430
+ status,
431
+ ok: status === 'passed',
432
+ failOn,
433
+ files: fileReports.length,
434
+ fileReports,
435
+ diagnostics,
436
+ repairPlan: sortedRepairPlan,
437
+ fixOrder: sortedRepairPlan.map((step) => ({
438
+ order: step.order,
439
+ title: step.title,
440
+ diagnosticCode: step.diagnosticCode,
441
+ pointer: step.pointer,
442
+ uri: step.uri,
443
+ applyMode: step.applyMode,
444
+ safe: step.safe,
445
+ confidence: step.confidence,
446
+ impact: step.impact
447
+ })),
448
+ noOps,
449
+ actionableCount: sortedRepairPlan.length,
450
+ noOpCount: noOps.length,
451
+ ...summary
452
+ };
453
+ }
454
+
455
+ function createRmtAgentRepairReportForFiles(files = [], options = {}) {
456
+ return createRmtAgentRepairReport(files, options);
457
+ }
458
+
459
+ module.exports = {
460
+ RMT_AGENT_NOOP_SCHEMA,
461
+ RMT_AGENT_REPAIR_FILE_SCHEMA,
462
+ RMT_AGENT_REPAIR_REPORT_MODULE_PATH,
463
+ RMT_AGENT_REPAIR_REPORT_PACKAGE_SCRIPT,
464
+ RMT_AGENT_REPAIR_REPORT_SCHEMA,
465
+ RMT_AGENT_REPAIR_REPORT_SUITE_PATH,
466
+ RMT_AGENT_REPAIR_REPORT_WORKPACKAGE,
467
+ RMT_AGENT_REPAIR_STEP_SCHEMA,
468
+ createRmtAgentRepairReport,
469
+ createRmtAgentRepairReportForFiles,
470
+ createFileAgentReport,
471
+ inferImpact
472
+ };
@@ -0,0 +1,83 @@
1
+ # XTend-Scaffold
2
+
3
+ `XTend-Scaffold` ist das repo-lokale Build-Environment fuer kuenftige XTend-Generatoren. Epic 03 hat es als generator-only, dry-run-first Scaffold abgeschlossen; Epic 17 baut daraus einen dry-run-first, aber produktiv schreibfaehigen Buildpfad.
4
+
5
+ ## Local Entry Points
6
+
7
+ ```bash
8
+ xt --help
9
+ xt validate --json
10
+ xt component-files --tag x-example --profile display --json
11
+ xtend validate --json
12
+ xtend-scaffold verify --json
13
+ node xtend-builder/scaffold.js --help
14
+ node xtend-builder/scaffold.js layout
15
+ node xtend-builder/scaffold.js layout --json
16
+ node xtend-builder/scaffold.js blueprint --json
17
+ node xtend-builder/scaffold.js generators --json
18
+ node xtend-builder/scaffold.js templates --json
19
+ node xtend-builder/scaffold.js component-plan --tag x-example --profile display --json
20
+ node xtend-builder/scaffold.js component-files --tag x-example --profile display --json
21
+ node xtend-builder/scaffold.js component-files --tag x-example --profile display --write --json
22
+ node xtend-builder/scaffold.js component-files --tag x-example --profile display --check --json
23
+ node xtend-builder/scaffold.js typing --tag x-example --profile display --json
24
+ node xtend-builder/scaffold.js preview --tag x-example --profile display --json
25
+ node xtend-builder/scaffold.js extensions --tag x-example --profile display --json
26
+ node xtend-builder/scaffold.js rmt-build --source xtendrmt/rmt-lifecycle-demo.rmt --write --json
27
+ node xtend-builder/scaffold.js workflow --json
28
+ node xtend-builder/scaffold.js verify --json
29
+ node scripts/run_xtend_tests.js rmt-compatibility --json
30
+ npm run scaffold -- layout
31
+ npm run scaffold:workflow
32
+ npm run scaffold:verify
33
+ npm run scaffold:dry-run
34
+ npm run scaffold:typing
35
+ npm run scaffold:preview
36
+ npm run scaffold:extensions
37
+ ```
38
+
39
+ `xt` ist der kurze lokale CLI-Alias fuer dieselbe Scaffold-Implementierung wie `xtend` und `xtend-scaffold`. `validate` ist ein stabiler Alias fuer `verify`, damit lokale Gates kurz als `xt validate --json` aufgerufen werden koennen.
40
+
41
+ ## Projektlayout
42
+
43
+ | Bereich | Pfad | Grenze |
44
+ |---------|------|--------|
45
+ | CLI | `xtend-builder/scaffold.js` | lokaler Einstieg fuer Hilfe, Layout und spaetere Generatorbefehle |
46
+ | CLI-Modul | `xtend-builder/lib/cli.js` | Argumentauswertung und Dispatch ohne Schreiblogik |
47
+ | Layout-Contract | `xtend-builder/lib/layout.js` | maschinenlesbare Struktur fuer Docs, Tests und CLI |
48
+ | Blueprints | `xtend-builder/blueprints/` | Komponenten-Blueprint und Artefaktcontract |
49
+ | Generators | `xtend-builder/generators/` | Generator-Registry, Component-Plan und dry-run Component-Files |
50
+ | Templates | `xtend-builder/templates/` | Template-Registry, Ladepfad und konkrete Pflichtartefakt-Templates |
51
+ | Wiring | `xtend-builder/wiring/` | Manifest-, Hydrations- und Feature-Contracts fuer dry-run Component-Files |
52
+ | Typing | `xtend-builder/typing/` | Type-Contracts fuer `.d.ts` Artefakte und vorbereiteten XTendRMT-Anschluss |
53
+ | Preview | `xtend-builder/preview/` | Preview- und Referenzpfad-Contracts fuer scaffolded Demo-Plaene |
54
+ | Extensions | `xtend-builder/extensions/` | Extension-Point-Contracts fuer Templating, Rendering und Root-Lifecycle |
55
+ | A11y | `xtend-builder/a11y/` | A11y- und Screenreader-Signal-Profilplan fuer neue Komponenten, Fixtures, Docs, Tests, Types und Manifest |
56
+ | Performance | `xtend-builder/performance/` | Performance-Profilplan fuer neue Komponenten, Budgets, Lanes, Hydration und Gates |
57
+ | Workflows | `xtend-builder/workflows/` | lokale Dry-Run-, Verify- und Reporting-Schrittfolgen |
58
+ | Utils | `xtend-builder/utils/` | pure Helfer fuer Naming, Tokenersetzung und Validierung |
59
+ | Writing | `xtend-builder/writing/` | zentraler WritePlan, strukturierte Patcher und kontrollierte Dateischreibpfade fuer produktive Scaffold-Builds |
60
+ | Config | `xtend-builder/scaffold.config.js` | zentrale Profile, Pfade, Testpflicht und Tooling-Entscheidung |
61
+
62
+ ## Modulgrenzen
63
+
64
+ - `lib/` darf CLI-, Layout- und spaeter reine Orchestrierungslogik enthalten.
65
+ - `blueprints/` beschreibt Zielartefakte und Contracts, erzeugt aber nichts selbst.
66
+ - `generators/` enthaelt ab `WP-E03-11` Plan-, Render-, Typing-, Preview- und Extension-Contract-Generatorlogik.
67
+ - `templates/` enthaelt ab `WP-E03-05` konkrete Ausgabetemplates fuer Komponente, Doku, Tests, Fixture, Types und Manifest-Patch-Plan.
68
+ - `wiring/` enthaelt ab `WP-E03-07` reine Builder-Contracts fuer Manifest-Patchplaene, Hydration-Mindestpfade und profilbasierte Feature-Wiring-Patterns.
69
+ - `typing/` enthaelt ab `WP-E03-09` reine Type-Contracts fuer oeffentliche APIs, Events, Attribute und vorbereitete XTendRMT-Adapter-Anbindung.
70
+ - `preview/` enthaelt ab `WP-E03-10` reine Preview- und Reference-Gate-Contracts fuer scaffolded Komponenten.
71
+ - `extensions/` enthaelt ab `WP-E03-11` reine Extension-Point-Contracts fuer Templating, Rendering und Root-Lifecycle.
72
+ - `a11y/` enthaelt ab `ER-WP-23` reine A11y-Profilplaene nach `xtend.a11y.profile.v1`; ab `ER-WP-25` haengt es `xtend.a11y.screenreader-signals.v1` fuer Live-Region-, Status- und Error-Signale an; ab `ER-WP-26` haengt es `xtend.a11y.motion-contrast-policy.v1` fuer Reduced Motion und High Contrast an. Die Schicht erzeugt keine Runtime, sondern verpflichtet neue Artefakte auf Rolle, Namen, Fokus, Keyboard, ARIA, Screenreader, Reduced Motion und Kontrast.
73
+ - `performance/` enthaelt ab `ER-WP-21` reine Performance-Profilplaene nach `xtend.performance.component-profile.v1`; sie erzeugen keine Runtime, sondern verpflichten neue Artefakte auf Budgetklasse, Lane, Hydration Policy, Messpunkte und lokale Gates.
74
+ - `workflows/` enthaelt ab `WP-E03-08` lokale Dry-Run- und Verify-Contracts ohne Schreibzugriff.
75
+ - `utils/` enthaelt nur seiteneffektarme Helfer; Schreibstrategien muessen dry-run-first bleiben.
76
+ - `writing/` enthaelt ab `WP-E17-01` den zentralen WritePlan und Writer fuer kontrollierte Dateioperationen. Produktive Buildbefehle duerfen darueber schreiben, muessen aber weiterhin dry-run-first, reportbar und root-begrenzt bleiben.
77
+ - `component-files --write` nutzt ab `WP-E17-02` das Sidecar `.xtend-build/scaffold-ownership.json` nach `xtend.scaffold.generated-ownership.v1`, damit generierte Dateien idempotent aktualisiert und unowned Dateien ohne `--force` blockiert werden.
78
+ - `manifest-patcher.js` patcht ab `WP-E17-03` `components/manifest.json` als echtes JSON nach `xtend.scaffold.manifest-patcher.v1` und schreibt stabile Build Reports nach `.xtend-build/component-files/`.
79
+ - `rmt-build` uebersetzt ab `WP-E17-04` RMT vNext Templates in Core JSON, XTend Custom Element, App-Modul, HTTP-Host, Browser-Smoke-Fixture und Scaffold Report.
80
+
81
+ ## Aktueller Stand
82
+
83
+ Epic 03 ist abgeschlossen. `WP-E03-02` definiert Struktur und Entry Points. `WP-E03-03` definiert den Komponenten-Blueprint und Artefaktcontract. `WP-E03-04` definiert Generator-Registry, Template-Ladepfad, Eingabevalidierung und Plan-Ausgabe. `WP-E03-05` rendert daraus echte Pflichtartefakt-Inhalte im Dry-Run-Modus. `WP-E03-06` ergaenzt deterministisches Manifest-Wiring und den Hydration-Mindestcontract ohne externe Importquellen. `WP-E03-07` ergaenzt State-, API- und Feature-Wiring-Patterns nach Core-Contract. `WP-E03-08` standardisiert lokale Dry-Run-, Verify- und Reporting-Workflows. `WP-E03-09` standardisiert Typ-Artefakte und den vorbereiteten Template-/XTendRMT-Anschluss. `WP-E03-10` bindet Preview- und Referenzpfade an die lokale Reference-Suite an. `WP-E03-11` bereitet Templating-, Rendering- und Root-Lifecycle-Extension-Punkte als Dry-Run-Contract vor. `WP-E03-12` nimmt den Epic gegen KPI, Testpflicht und Erweiterbarkeit final ab. Epic 04 / `WP-E04-08` fuehrt den dedizierten `rmt-compatibility` Gate fuer RMT-kompatible Scaffold-Artefakte ein. `ER-WP-21` erweitert die Scaffold-Ausgaben um Performance-Profilpflichten nach `xtend.performance.component-profile.v1`; `ER-WP-23` erweitert sie um A11y-Profilpflichten nach `xtend.a11y.profile.v1`; `ER-WP-25` fuegt Screenreader-Signal-Contracts nach `xtend.a11y.screenreader-signals.v1` hinzu; `ER-WP-26` fuegt Motion-/Contrast-Policies nach `xtend.a11y.motion-contrast-policy.v1` hinzu.
@@ -0,0 +1,42 @@
1
+ # XTend Scaffold A11y
2
+
3
+ Status: implemented by ER-WP-23, extended by ER-WP-25 and ER-WP-26
4
+
5
+ ## Zweck
6
+
7
+ `xtend-builder/a11y/` enthaelt den A11y-Profilplan fuer neue Scaffold-Komponenten. Der Plan uebersetzt den A11y Component Contract `xtend.a11y.component-contract.v1` in konkrete Dry-Run-Artefakte.
8
+
9
+ Ab ER-WP-25 haengt das Profil zusätzlich den Screenreader-Signal-Contract an. Neue Komponenten deklarieren damit nicht nur Rolle, Namen und Keyboard-Pflichten, sondern auch maschinenlesbare Live-Region-, Status- und Error-Signale fuer Fabric/RMT-A11y-Lanes.
10
+
11
+ Ab ER-WP-26 haengt das Profil zudem `xtend.a11y.motion-contrast-policy.v1` an. Neue Komponenten erhalten damit pruefbare Regeln fuer `prefers-reduced-motion`, `forced-colors`, Fokus, Theme Tokens und Nicht-Farbstatus.
12
+
13
+ ## Contract IDs
14
+
15
+ - Component Contract: `xtend.a11y.component-contract.v1`
16
+ - Profil: `xtend.a11y.profile.v1`
17
+ - Screenreader Signals: `xtend.a11y.screenreader-signals.v1`
18
+ - Screenreader Signal Record: `xtend.a11y.screenreader-signal.v1`
19
+ - Motion/Contrast Policy: `xtend.a11y.motion-contrast-policy.v1`
20
+ - Motion Policy: `xtend.a11y.motion-policy.v1`
21
+ - Contrast Policy: `xtend.a11y.contrast-policy.v1`
22
+ - Test Contract: `xtend.a11y.test-contract.v1`
23
+ - Scaffold Plan: `xtend.scaffold.a11y-profile-plan.v1`
24
+
25
+ ## Artefaktwirkung
26
+
27
+ - Source: statischer Getter `xtendScaffoldA11yProfile`
28
+ - Docs: Abschnitte `A11y-Profil`, `Screenreader-Signale` und `Motion-und-Contrast-Policy`
29
+ - Fixture: `aria-label` und Hydration-Ergebnis fuer Rolle, Name, Profil, Screenreader-Signale und Motion/Contrast
30
+ - Tests: Assertions fuer A11y-Profil, Rolle, Name, Screenreader-Signale, Motion/Contrast und A11y-Hydration-Gate
31
+ - Manifest: `a11yProfile`, `screenreaderSignals` und `motionContrastPolicy`
32
+ - Types: `X<Component>A11yProfile`, `X<Component>ScreenreaderSignalContract` und `X<Component>MotionContrastPolicy`
33
+
34
+ ## Gates
35
+
36
+ ```bash
37
+ node scripts/run_xtend_tests.js components
38
+ node scripts/run_xtend_tests.js a11y-hydration
39
+ node scripts/run_xtend_tests.js screenreader-signals
40
+ node scripts/run_xtend_tests.js motion-contrast
41
+ node scripts/run_xtend_tests.js references
42
+ ```
@@ -0,0 +1,14 @@
1
+ import type { XtendBuilderComponentInput, XtendBuilderRecord } from '../builder-public-types';
2
+
3
+ export declare const A11Y_COMPONENT_CONTRACT_SCHEMA: string;
4
+ export declare const A11Y_PROFILE_SCHEMA: string;
5
+ export declare const A11Y_MOTION_CONTRAST_POLICY_SCHEMA: string;
6
+ export declare const A11Y_MOTION_POLICY_SCHEMA: string;
7
+ export declare const A11Y_CONTRAST_POLICY_SCHEMA: string;
8
+ export declare const A11Y_MOTION_CONTRAST_TEST_SCHEMA: string;
9
+ export declare const A11Y_SCREENREADER_SIGNALS_SCHEMA: string;
10
+ export declare const A11Y_SCREENREADER_SIGNAL_RECORD_SCHEMA: string;
11
+ export declare const A11Y_TEST_CONTRACT_SCHEMA: string;
12
+ export declare const PROFILE_A11Y_RULES: XtendBuilderRecord;
13
+ export declare const SCAFFOLD_A11Y_PROFILE_PLAN_SCHEMA: string;
14
+ export declare function createComponentA11yProfile(input?: XtendBuilderComponentInput, options?: XtendBuilderRecord): XtendBuilderRecord;