project-tiny-context-harness 0.8.4 → 0.8.6

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 (254) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +394 -363
  3. package/assets/README.md +570 -514
  4. package/assets/README.zh-CN.md +331 -300
  5. package/assets/agents/.gitkeep +1 -1
  6. package/assets/agents/AGENTS_CORE.md +45 -25
  7. package/assets/context_templates/architecture.md +26 -25
  8. package/assets/context_templates/area.md +32 -31
  9. package/assets/context_templates/context.toml +30 -24
  10. package/assets/context_templates/deployment.md +35 -35
  11. package/assets/context_templates/global.md +57 -57
  12. package/assets/context_templates/product-surface-contract.md +70 -70
  13. package/assets/context_templates/screen-contract.md +189 -189
  14. package/assets/context_templates/verification.md +31 -30
  15. package/assets/github/.gitkeep +1 -1
  16. package/assets/github/harness.yml +39 -39
  17. package/assets/make/.gitkeep +1 -1
  18. package/assets/make/ty-context.mk +48 -48
  19. package/assets/skills/context_development_engineer/SKILL.md +155 -122
  20. package/assets/skills/context_full_project_export/SKILL.md +28 -28
  21. package/assets/skills/context_harness_upgrade/SKILL.md +60 -60
  22. package/assets/skills/context_product_plan/SKILL.md +99 -79
  23. package/assets/skills/context_surface_contract/SKILL.md +191 -191
  24. package/assets/skills/context_uiux_design/SKILL.md +171 -171
  25. package/assets/skills/design-resource-authoring/SKILL.md +86 -84
  26. package/assets/skills/design-resource-authoring/references/downstream-handoff.md +138 -123
  27. package/assets/skills/design-resource-authoring/references/open-design-provider.md +132 -127
  28. package/assets/skills/design-resource-authoring/references/resource-selection.md +181 -154
  29. package/assets/skills/design-system-authoring/SKILL.md +57 -57
  30. package/assets/skills/design-system-authoring/agents/openai.yaml +6 -6
  31. package/assets/skills/design-system-authoring/references/authority-adoption.md +48 -48
  32. package/assets/skills/design-system-authoring/references/open-design-design-system-provider.md +110 -110
  33. package/assets/skills/long-task-workflow/SKILL.md +98 -92
  34. package/assets/skills/long-task-workflow/agents/openai.yaml +3 -1
  35. package/assets/skills/long-task-workflow/references/authority-lifecycle.md +72 -72
  36. package/assets/skills/long-task-workflow/references/contract-authoring.md +122 -101
  37. package/assets/skills/long-task-workflow/references/evidence-design.md +82 -61
  38. package/assets/skills/long-task-workflow/references/source-authoring.md +109 -90
  39. package/assets/skills/source-plan-authoring/SKILL.md +14 -14
  40. package/assets/tools/validate_context.py +442 -442
  41. package/dist/commands/long-task-authoring.js +27 -2
  42. package/dist/lib/context-default-footprint.js +2 -0
  43. package/dist/lib/context-manifest.js +6 -0
  44. package/dist/lib/context-templates.js +1 -1
  45. package/dist/lib/design-resource-fact-enums.d.ts +20 -0
  46. package/dist/lib/design-resource-fact-enums.js +170 -0
  47. package/dist/lib/design-resource-fact-locator-extractors.d.ts +8 -0
  48. package/dist/lib/design-resource-fact-locator-extractors.js +108 -0
  49. package/dist/lib/design-resource-fact-locator-resolver.d.ts +3 -0
  50. package/dist/lib/design-resource-fact-locator-resolver.js +112 -0
  51. package/dist/lib/design-resource-fact-locator-validation.d.ts +5 -0
  52. package/dist/lib/design-resource-fact-locator-validation.js +16 -0
  53. package/dist/lib/design-resource-fact-manifest-catalog.d.ts +4 -0
  54. package/dist/lib/design-resource-fact-manifest-catalog.js +249 -0
  55. package/dist/lib/design-resource-fact-manifest-model.d.ts +91 -0
  56. package/dist/lib/design-resource-fact-manifest-model.js +21 -0
  57. package/dist/lib/design-resource-fact-manifest-shape-axes.d.ts +6 -0
  58. package/dist/lib/design-resource-fact-manifest-shape-axes.js +159 -0
  59. package/dist/lib/design-resource-fact-manifest-shape-evidence.d.ts +4 -0
  60. package/dist/lib/design-resource-fact-manifest-shape-evidence.js +59 -0
  61. package/dist/lib/design-resource-fact-manifest-shape-facts.d.ts +4 -0
  62. package/dist/lib/design-resource-fact-manifest-shape-facts.js +109 -0
  63. package/dist/lib/design-resource-fact-manifest-shape-inspector.d.ts +5 -0
  64. package/dist/lib/design-resource-fact-manifest-shape-inspector.js +144 -0
  65. package/dist/lib/design-resource-fact-manifest-shape.d.ts +7 -0
  66. package/dist/lib/design-resource-fact-manifest-shape.js +75 -0
  67. package/dist/lib/design-resource-fact-manifest-types.d.ts +3 -0
  68. package/dist/lib/design-resource-fact-manifest-types.js +3 -0
  69. package/dist/lib/design-resource-fact-manifest-universe.d.ts +5 -0
  70. package/dist/lib/design-resource-fact-manifest-universe.js +50 -0
  71. package/dist/lib/design-resource-fact-manifest-validation.d.ts +3 -0
  72. package/dist/lib/design-resource-fact-manifest-validation.js +106 -0
  73. package/dist/lib/design-resource-fact-policy.d.ts +18 -0
  74. package/dist/lib/design-resource-fact-policy.js +72 -1
  75. package/dist/lib/design-resource-fact-property-methods.d.ts +3 -0
  76. package/dist/lib/design-resource-fact-property-methods.js +158 -0
  77. package/dist/lib/design-resource-fact-shape-primitives.d.ts +3 -0
  78. package/dist/lib/design-resource-fact-shape-primitives.js +18 -0
  79. package/dist/lib/design-resource-fact-types.d.ts +164 -0
  80. package/dist/lib/design-resource-fact-types.js +1 -0
  81. package/dist/lib/design-resource-fact-universe-assets.d.ts +4 -0
  82. package/dist/lib/design-resource-fact-universe-assets.js +71 -0
  83. package/dist/lib/design-resource-fact-universe-catalog.d.ts +4 -0
  84. package/dist/lib/design-resource-fact-universe-catalog.js +151 -0
  85. package/dist/lib/design-resource-fact-universe-conditions.d.ts +2 -0
  86. package/dist/lib/design-resource-fact-universe-conditions.js +92 -0
  87. package/dist/lib/design-resource-fact-universe-facts.d.ts +4 -0
  88. package/dist/lib/design-resource-fact-universe-facts.js +108 -0
  89. package/dist/lib/design-resource-fact-universe-helpers.d.ts +30 -0
  90. package/dist/lib/design-resource-fact-universe-helpers.js +167 -0
  91. package/dist/lib/design-resource-fact-universe-inspector.d.ts +7 -0
  92. package/dist/lib/design-resource-fact-universe-inspector.js +119 -0
  93. package/dist/lib/design-resource-fact-universe-proof.d.ts +4 -0
  94. package/dist/lib/design-resource-fact-universe-proof.js +113 -0
  95. package/dist/lib/design-resource-fact-universe-subjects.d.ts +5 -0
  96. package/dist/lib/design-resource-fact-universe-subjects.js +97 -0
  97. package/dist/lib/design-resource-fact-universe-variations.d.ts +2 -0
  98. package/dist/lib/design-resource-fact-universe-variations.js +75 -0
  99. package/dist/lib/design-resource-fact-value-validation.d.ts +2 -0
  100. package/dist/lib/design-resource-fact-value-validation.js +80 -0
  101. package/dist/lib/design-resource-handoff-file-primitives.js +2 -0
  102. package/dist/lib/design-resource-handoff-file-validation.js +13 -100
  103. package/dist/lib/design-resource-handoff-policy.d.ts +1 -0
  104. package/dist/lib/design-resource-handoff-policy.js +118 -11
  105. package/dist/lib/design-resource-handoff-shape-evidence.js +46 -3
  106. package/dist/lib/design-resource-handoff-shape-primitives.d.ts +5 -0
  107. package/dist/lib/design-resource-handoff-shape-primitives.js +28 -0
  108. package/dist/lib/design-resource-handoff-shape-structure.js +143 -22
  109. package/dist/lib/design-resource-handoff-shape.js +25 -0
  110. package/dist/lib/design-resource-handoff-types.d.ts +97 -21
  111. package/dist/lib/design-resource-handoff-types.js +22 -0
  112. package/dist/lib/design-resource-handoff-validation-coverage.d.ts +1 -1
  113. package/dist/lib/design-resource-handoff-validation-coverage.js +145 -118
  114. package/dist/lib/design-resource-handoff-validation-fact-cells.d.ts +2 -0
  115. package/dist/lib/design-resource-handoff-validation-fact-cells.js +60 -0
  116. package/dist/lib/design-resource-handoff-validation-fact-records.d.ts +2 -0
  117. package/dist/lib/design-resource-handoff-validation-fact-records.js +90 -0
  118. package/dist/lib/design-resource-handoff-validation-facts.js +10 -94
  119. package/dist/lib/design-resource-handoff-validation-proofs.d.ts +2 -0
  120. package/dist/lib/design-resource-handoff-validation-proofs.js +67 -0
  121. package/dist/lib/design-resource-handoff-validation-resource-closure.d.ts +3 -0
  122. package/dist/lib/design-resource-handoff-validation-resource-closure.js +88 -0
  123. package/dist/lib/design-resource-handoff-validation-structure.js +43 -14
  124. package/dist/lib/design-resource-handoff-validation.js +32 -0
  125. package/dist/lib/design-resource-handoff-web-dependency-validation.d.ts +2 -1
  126. package/dist/lib/design-resource-handoff-web-dependency-validation.js +67 -7
  127. package/dist/lib/execution-target-capabilities.d.ts +1 -1
  128. package/dist/lib/execution-target-capabilities.js +14 -0
  129. package/dist/lib/long-task-activation-validation.js +6 -2
  130. package/dist/lib/long-task-applicability-shape.js +3 -3
  131. package/dist/lib/long-task-authoring-authority-preview.js +1 -0
  132. package/dist/lib/long-task-authority-policy.d.ts +1 -0
  133. package/dist/lib/long-task-authority-policy.js +1 -0
  134. package/dist/lib/long-task-authority.js +13 -0
  135. package/dist/lib/long-task-claim-definitions.js +13 -1
  136. package/dist/lib/long-task-claims.js +23 -1
  137. package/dist/lib/long-task-contract-types.d.ts +3 -0
  138. package/dist/lib/long-task-delivery-compiler.js +1 -0
  139. package/dist/lib/long-task-delivery-parser.js +11 -1
  140. package/dist/lib/long-task-delivery-types.d.ts +1 -0
  141. package/dist/lib/long-task-delivery-types.js +1 -0
  142. package/dist/lib/long-task-delivery-validation.js +17 -0
  143. package/dist/lib/long-task-design-resource-handoff.js +62 -38
  144. package/dist/lib/long-task-design-target-capabilities.d.ts +14 -0
  145. package/dist/lib/long-task-design-target-capabilities.js +126 -0
  146. package/dist/lib/long-task-evidence-capability-codec.d.ts +94 -0
  147. package/dist/lib/long-task-evidence-capability-codec.js +395 -22
  148. package/dist/lib/long-task-evidence-capability-policy.js +18 -0
  149. package/dist/lib/long-task-evidence-capability-runtime.js +78 -0
  150. package/dist/lib/long-task-evidence-capability-types.d.ts +114 -1
  151. package/dist/lib/long-task-outcome-parser.js +4 -0
  152. package/dist/lib/long-task-playwright-capability-records.d.ts +5 -0
  153. package/dist/lib/long-task-playwright-capability-records.js +146 -0
  154. package/dist/lib/long-task-playwright-case-evidence.d.ts +3 -2
  155. package/dist/lib/long-task-playwright-case-evidence.js +10 -79
  156. package/dist/lib/long-task-playwright-case-primitives.d.ts +28 -0
  157. package/dist/lib/long-task-playwright-case-primitives.js +143 -0
  158. package/dist/lib/long-task-playwright-evidence.d.ts +1 -1
  159. package/dist/lib/long-task-playwright-evidence.js +10 -75
  160. package/dist/lib/long-task-runner-freeze.d.ts +2 -2
  161. package/dist/lib/long-task-runner-freeze.js +15 -1
  162. package/dist/lib/long-task-runtime-types.d.ts +4 -1
  163. package/dist/lib/long-task-semantic-contract-types.d.ts +1 -1
  164. package/dist/lib/long-task-semantic-drift-migration.js +2 -2
  165. package/dist/lib/long-task-semantic-fact-binding-types.d.ts +57 -0
  166. package/dist/lib/long-task-semantic-fact-binding-types.js +1 -0
  167. package/dist/lib/long-task-semantic-fact-closure-primitives.d.ts +5 -0
  168. package/dist/lib/long-task-semantic-fact-closure-primitives.js +43 -0
  169. package/dist/lib/long-task-semantic-fact-closure.d.ts +13 -0
  170. package/dist/lib/long-task-semantic-fact-closure.js +48 -0
  171. package/dist/lib/long-task-semantic-fact-contract-closure.d.ts +4 -0
  172. package/dist/lib/long-task-semantic-fact-contract-closure.js +24 -0
  173. package/dist/lib/long-task-semantic-fact-contract-facts.d.ts +4 -0
  174. package/dist/lib/long-task-semantic-fact-contract-facts.js +30 -0
  175. package/dist/lib/long-task-semantic-fact-contract-proofs.d.ts +4 -0
  176. package/dist/lib/long-task-semantic-fact-contract-proofs.js +97 -0
  177. package/dist/lib/long-task-semantic-fact-evidence.d.ts +21 -0
  178. package/dist/lib/long-task-semantic-fact-evidence.js +165 -0
  179. package/dist/lib/long-task-semantic-fact-input-closure.d.ts +4 -0
  180. package/dist/lib/long-task-semantic-fact-input-closure.js +101 -0
  181. package/dist/lib/long-task-semantic-fact-provenance-closure.d.ts +4 -0
  182. package/dist/lib/long-task-semantic-fact-provenance-closure.js +140 -0
  183. package/dist/lib/long-task-semantic-fact-shape.d.ts +3 -0
  184. package/dist/lib/long-task-semantic-fact-shape.js +89 -0
  185. package/dist/lib/long-task-semantic-fact-value-closure.d.ts +3 -0
  186. package/dist/lib/long-task-semantic-fact-value-closure.js +110 -0
  187. package/dist/lib/long-task-shape-primitives.d.ts +2 -1
  188. package/dist/lib/long-task-shape-primitives.js +7 -0
  189. package/dist/lib/long-task-source-item-parser.js +25 -6
  190. package/dist/lib/long-task-source-target-continuity.js +4 -1
  191. package/dist/lib/long-task-source-target-index.d.ts +1 -1
  192. package/dist/lib/long-task-source-target-index.js +5 -1
  193. package/dist/lib/long-task-ui-design-policy.js +8 -4
  194. package/dist/lib/long-task-ui-surface-shape.js +83 -1
  195. package/dist/lib/long-task-ui-surface-types.d.ts +29 -0
  196. package/dist/lib/modularity.js +7 -1
  197. package/dist/lib/semantic-fact-base-types.d.ts +14 -0
  198. package/dist/lib/semantic-fact-base-types.js +1 -0
  199. package/dist/lib/semantic-fact-catalog.d.ts +8 -0
  200. package/dist/lib/semantic-fact-catalog.js +191 -0
  201. package/dist/lib/semantic-fact-condition-shape.d.ts +48 -0
  202. package/dist/lib/semantic-fact-condition-shape.js +111 -0
  203. package/dist/lib/semantic-fact-input-shape.d.ts +34 -0
  204. package/dist/lib/semantic-fact-input-shape.js +111 -0
  205. package/dist/lib/semantic-fact-inventory-types.d.ts +147 -0
  206. package/dist/lib/semantic-fact-inventory-types.js +1 -0
  207. package/dist/lib/semantic-fact-manifest-shape.d.ts +4 -0
  208. package/dist/lib/semantic-fact-manifest-shape.js +135 -0
  209. package/dist/lib/semantic-fact-manifest-types.d.ts +58 -0
  210. package/dist/lib/semantic-fact-manifest-types.js +19 -0
  211. package/dist/lib/semantic-fact-policy-authority.d.ts +8 -0
  212. package/dist/lib/semantic-fact-policy-authority.js +79 -0
  213. package/dist/lib/semantic-fact-policy-census.d.ts +2 -0
  214. package/dist/lib/semantic-fact-policy-census.js +80 -0
  215. package/dist/lib/semantic-fact-policy-condition-references.d.ts +7 -0
  216. package/dist/lib/semantic-fact-policy-condition-references.js +19 -0
  217. package/dist/lib/semantic-fact-policy-conditions.d.ts +2 -0
  218. package/dist/lib/semantic-fact-policy-conditions.js +105 -0
  219. package/dist/lib/semantic-fact-policy-facts.d.ts +3 -0
  220. package/dist/lib/semantic-fact-policy-facts.js +73 -0
  221. package/dist/lib/semantic-fact-policy-primitives.d.ts +26 -0
  222. package/dist/lib/semantic-fact-policy-primitives.js +169 -0
  223. package/dist/lib/semantic-fact-policy-proofs.d.ts +2 -0
  224. package/dist/lib/semantic-fact-policy-proofs.js +75 -0
  225. package/dist/lib/semantic-fact-policy-properties.d.ts +3 -0
  226. package/dist/lib/semantic-fact-policy-properties.js +84 -0
  227. package/dist/lib/semantic-fact-policy-units.d.ts +4 -0
  228. package/dist/lib/semantic-fact-policy-units.js +103 -0
  229. package/dist/lib/semantic-fact-policy.d.ts +17 -0
  230. package/dist/lib/semantic-fact-policy.js +41 -0
  231. package/dist/lib/semantic-fact-proof-shape.d.ts +51 -0
  232. package/dist/lib/semantic-fact-proof-shape.js +121 -0
  233. package/dist/lib/semantic-fact-proof-types.d.ts +74 -0
  234. package/dist/lib/semantic-fact-proof-types.js +1 -0
  235. package/dist/lib/semantic-fact-property-shape.d.ts +29 -0
  236. package/dist/lib/semantic-fact-property-shape.js +77 -0
  237. package/dist/lib/semantic-fact-shape-constants.d.ts +3 -0
  238. package/dist/lib/semantic-fact-shape-constants.js +38 -0
  239. package/dist/lib/semantic-fact-shape-primitives.d.ts +15 -0
  240. package/dist/lib/semantic-fact-shape-primitives.js +68 -0
  241. package/dist/lib/semantic-fact-source-parser.d.ts +9 -0
  242. package/dist/lib/semantic-fact-source-parser.js +46 -0
  243. package/dist/lib/semantic-fact-support-shape.d.ts +21 -0
  244. package/dist/lib/semantic-fact-support-shape.js +59 -0
  245. package/dist/lib/semantic-fact-types.d.ts +5 -0
  246. package/dist/lib/semantic-fact-types.js +5 -0
  247. package/dist/lib/semantic-fact-unit-shape.d.ts +34 -0
  248. package/dist/lib/semantic-fact-unit-shape.js +89 -0
  249. package/dist/lib/semantic-fact-value-shape.d.ts +12 -0
  250. package/dist/lib/semantic-fact-value-shape.js +39 -0
  251. package/dist/schemas/long-task-delivery-v2/long-task-delivery-v2.schema.json +1339 -131
  252. package/migrations/README.md +15 -15
  253. package/package.json +84 -84
  254. package/source-mappings.yaml +25 -25
@@ -1,5 +1,6 @@
1
- import { contractKey, contractKeys, designResourceShapeFail, positiveInteger, stableKey, stableKeys, } from "./design-resource-handoff-shape-primitives.js";
2
- import { array, literal, object, repositoryFile, string, strings, } from "./long-task-shape-primitives.js";
1
+ import { DESIGN_RESOURCE_SUBJECT_KINDS, DESIGN_RESOURCE_SUBJECT_PRESENCE_KINDS, } from "./design-resource-fact-manifest-types.js";
2
+ import { atomicAxisValue, contractKey, contractKeys, designResourceShapeFail, nonnegativeNumber, positiveInteger, positiveNumber, stableKey, stableKeys, } from "./design-resource-handoff-shape-primitives.js";
3
+ import { array, literal, nullable, object, repositoryFile, string, } from "./long-task-shape-primitives.js";
3
4
  const SHA256 = /^[a-f0-9]{64}$/u;
4
5
  export function parseDesignResourceHandoffResources(value) {
5
6
  return array(value, "design_resource_handoff.resources").map((item, index) => {
@@ -36,31 +37,123 @@ export function parseDesignResourceHandoffConditions(value) {
36
37
  const row = object(item, label, [
37
38
  "key",
38
39
  "platform",
40
+ "os_version",
41
+ "device_profile",
42
+ "form_factor",
39
43
  "viewport",
40
- "modes",
41
- "states",
42
- "content_cases",
43
- "input_methods",
44
+ "orientation",
45
+ "density",
46
+ "safe_area",
47
+ "window_state",
48
+ "fold_state",
49
+ "display_mode",
50
+ "color_scheme",
51
+ "locale",
52
+ "language",
53
+ "script",
54
+ "direction",
55
+ "pseudo_localization",
56
+ "content_case",
57
+ "data_case",
58
+ "text_scale",
59
+ "input_method",
60
+ "assistive_technology",
44
61
  "motion",
62
+ "transparency",
63
+ "contrast",
64
+ "bold_text",
65
+ "button_shapes",
66
+ "system_ui",
67
+ "ime",
68
+ "permission",
69
+ "capability",
70
+ "connectivity",
71
+ "lifecycle",
72
+ "custom_axes",
45
73
  ]);
46
74
  const viewport = object(row.viewport, `${label}.viewport`, [
75
+ "key",
47
76
  "width",
48
77
  "height",
49
78
  "unit",
50
79
  ]);
80
+ const density = object(row.density, `${label}.density`, [
81
+ "key",
82
+ "pixel_ratio",
83
+ ]);
84
+ const safeArea = object(row.safe_area, `${label}.safe_area`, [
85
+ "key",
86
+ "top",
87
+ "right",
88
+ "bottom",
89
+ "left",
90
+ "unit",
91
+ ]);
92
+ const textScale = object(row.text_scale, `${label}.text_scale`, [
93
+ "key",
94
+ "multiplier",
95
+ ]);
51
96
  return {
52
97
  key: contractKey(row.key, `${label}.key`),
53
- platform: string(row.platform, `${label}.platform`),
98
+ platform: atomicAxisValue(row.platform, `${label}.platform`),
99
+ os_version: atomicAxisValue(row.os_version, `${label}.os_version`),
100
+ device_profile: atomicAxisValue(row.device_profile, `${label}.device_profile`),
101
+ form_factor: atomicAxisValue(row.form_factor, `${label}.form_factor`),
54
102
  viewport: {
103
+ key: atomicAxisValue(viewport.key, `${label}.viewport.key`),
55
104
  width: positiveInteger(viewport.width, `${label}.viewport.width`),
56
105
  height: positiveInteger(viewport.height, `${label}.viewport.height`),
57
106
  unit: literal(viewport.unit, ["px"], `${label}.viewport.unit`),
58
107
  },
59
- modes: strings(row.modes, `${label}.modes`),
60
- states: strings(row.states, `${label}.states`),
61
- content_cases: strings(row.content_cases, `${label}.content_cases`),
62
- input_methods: strings(row.input_methods, `${label}.input_methods`),
63
- motion: literal(row.motion, ["full", "reduced", "not_applicable"], `${label}.motion`),
108
+ orientation: atomicAxisValue(row.orientation, `${label}.orientation`),
109
+ density: {
110
+ key: atomicAxisValue(density.key, `${label}.density.key`),
111
+ pixel_ratio: positiveNumber(density.pixel_ratio, `${label}.density.pixel_ratio`),
112
+ },
113
+ safe_area: {
114
+ key: atomicAxisValue(safeArea.key, `${label}.safe_area.key`),
115
+ top: nonnegativeNumber(safeArea.top, `${label}.safe_area.top`),
116
+ right: nonnegativeNumber(safeArea.right, `${label}.safe_area.right`),
117
+ bottom: nonnegativeNumber(safeArea.bottom, `${label}.safe_area.bottom`),
118
+ left: nonnegativeNumber(safeArea.left, `${label}.safe_area.left`),
119
+ unit: literal(safeArea.unit, ["px"], `${label}.safe_area.unit`),
120
+ },
121
+ window_state: atomicAxisValue(row.window_state, `${label}.window_state`),
122
+ fold_state: atomicAxisValue(row.fold_state, `${label}.fold_state`),
123
+ display_mode: atomicAxisValue(row.display_mode, `${label}.display_mode`),
124
+ color_scheme: atomicAxisValue(row.color_scheme, `${label}.color_scheme`),
125
+ locale: atomicAxisValue(row.locale, `${label}.locale`),
126
+ language: atomicAxisValue(row.language, `${label}.language`),
127
+ script: atomicAxisValue(row.script, `${label}.script`),
128
+ direction: literal(row.direction, ["ltr", "rtl", "not_applicable"], `${label}.direction`),
129
+ pseudo_localization: atomicAxisValue(row.pseudo_localization, `${label}.pseudo_localization`),
130
+ content_case: atomicAxisValue(row.content_case, `${label}.content_case`),
131
+ data_case: atomicAxisValue(row.data_case, `${label}.data_case`),
132
+ text_scale: {
133
+ key: atomicAxisValue(textScale.key, `${label}.text_scale.key`),
134
+ multiplier: positiveNumber(textScale.multiplier, `${label}.text_scale.multiplier`),
135
+ },
136
+ input_method: atomicAxisValue(row.input_method, `${label}.input_method`),
137
+ assistive_technology: atomicAxisValue(row.assistive_technology, `${label}.assistive_technology`),
138
+ motion: atomicAxisValue(row.motion, `${label}.motion`),
139
+ transparency: atomicAxisValue(row.transparency, `${label}.transparency`),
140
+ contrast: atomicAxisValue(row.contrast, `${label}.contrast`),
141
+ bold_text: atomicAxisValue(row.bold_text, `${label}.bold_text`),
142
+ button_shapes: atomicAxisValue(row.button_shapes, `${label}.button_shapes`),
143
+ system_ui: atomicAxisValue(row.system_ui, `${label}.system_ui`),
144
+ ime: atomicAxisValue(row.ime, `${label}.ime`),
145
+ permission: atomicAxisValue(row.permission, `${label}.permission`),
146
+ capability: atomicAxisValue(row.capability, `${label}.capability`),
147
+ connectivity: atomicAxisValue(row.connectivity, `${label}.connectivity`),
148
+ lifecycle: atomicAxisValue(row.lifecycle, `${label}.lifecycle`),
149
+ custom_axes: array(row.custom_axes, `${label}.custom_axes`).map((item, itemIndex) => {
150
+ const itemLabel = `${label}.custom_axes[${itemIndex}]`;
151
+ const custom = object(item, itemLabel, ["axis_ref", "value_ref"]);
152
+ return {
153
+ axis_ref: stableKey(custom.axis_ref, `${itemLabel}.axis_ref`),
154
+ value_ref: atomicAxisValue(custom.value_ref, `${itemLabel}.value_ref`),
155
+ };
156
+ }),
64
157
  };
65
158
  });
66
159
  }
@@ -72,20 +165,41 @@ export function parseDesignResourceHandoffSubjects(value) {
72
165
  "kind",
73
166
  "stable_keys",
74
167
  "target_refs",
168
+ "parent_ref",
169
+ "instance_of_ref",
170
+ "slot_key",
171
+ "override_of_ref",
172
+ "family_ref",
173
+ "presence",
174
+ "presence_rule_ref",
175
+ "population_ref",
176
+ "portal_host_ref",
177
+ "relation_endpoints",
178
+ "census_refs",
75
179
  ]);
76
180
  return {
77
181
  key: stableKey(row.key, `${label}.key`),
78
- kind: literal(row.kind, [
79
- "surface",
80
- "flow",
81
- "region",
82
- "component_family",
83
- "control",
84
- "state",
85
- "asset",
86
- ], `${label}.kind`),
182
+ kind: literal(row.kind, DESIGN_RESOURCE_SUBJECT_KINDS, `${label}.kind`),
87
183
  stable_keys: stableKeys(row.stable_keys, `${label}.stable_keys`),
88
184
  target_refs: contractKeys(row.target_refs, `${label}.target_refs`),
185
+ parent_ref: nullable(row.parent_ref, (item) => stableKey(item, `${label}.parent_ref`)),
186
+ instance_of_ref: nullable(row.instance_of_ref, (item) => stableKey(item, `${label}.instance_of_ref`)),
187
+ slot_key: nullable(row.slot_key, (item) => stableKey(item, `${label}.slot_key`)),
188
+ override_of_ref: nullable(row.override_of_ref, (item) => stableKey(item, `${label}.override_of_ref`)),
189
+ family_ref: nullable(row.family_ref, (item) => stableKey(item, `${label}.family_ref`)),
190
+ presence: literal(row.presence, DESIGN_RESOURCE_SUBJECT_PRESENCE_KINDS, `${label}.presence`),
191
+ presence_rule_ref: nullable(row.presence_rule_ref, (item) => stableKey(item, `${label}.presence_rule_ref`)),
192
+ population_ref: nullable(row.population_ref, (item) => stableKey(item, `${label}.population_ref`)),
193
+ portal_host_ref: nullable(row.portal_host_ref, (item) => stableKey(item, `${label}.portal_host_ref`)),
194
+ relation_endpoints: array(row.relation_endpoints, `${label}.relation_endpoints`).map((endpoint, endpointIndex) => {
195
+ const endpointLabel = `${label}.relation_endpoints[${endpointIndex}]`;
196
+ const parsed = object(endpoint, endpointLabel, ["role", "subject_ref"]);
197
+ return {
198
+ role: stableKey(parsed.role, `${endpointLabel}.role`),
199
+ subject_ref: stableKey(parsed.subject_ref, `${endpointLabel}.subject_ref`),
200
+ };
201
+ }),
202
+ census_refs: stableKeys(row.census_refs, `${label}.census_refs`),
89
203
  };
90
204
  });
91
205
  }
@@ -100,7 +214,13 @@ export function parseDesignResourceHandoffTargets(value) {
100
214
  "source_profile",
101
215
  "selection_basis",
102
216
  ]);
103
- const sourceProfile = object(row.source_profile, `${label}.source_profile`, ["kind", "entry_resource_ref", "dependency_resource_refs", "acquisition"]);
217
+ const sourceProfile = object(row.source_profile, `${label}.source_profile`, [
218
+ "kind",
219
+ "entry_resource_ref",
220
+ "dependency_resource_refs",
221
+ "fact_manifest_resource_ref",
222
+ "acquisition",
223
+ ]);
104
224
  return {
105
225
  key: contractKey(row.key, `${label}.key`),
106
226
  interpretation: literal(row.interpretation, ["exact_target", "constraint"], `${label}.interpretation`),
@@ -110,6 +230,7 @@ export function parseDesignResourceHandoffTargets(value) {
110
230
  kind: literal(sourceProfile.kind, ["implementation_web", "implementation_app", "reference"], `${label}.source_profile.kind`),
111
231
  entry_resource_ref: stableKey(sourceProfile.entry_resource_ref, `${label}.source_profile.entry_resource_ref`),
112
232
  dependency_resource_refs: stableKeys(sourceProfile.dependency_resource_refs, `${label}.source_profile.dependency_resource_refs`),
233
+ fact_manifest_resource_ref: stableKey(sourceProfile.fact_manifest_resource_ref, `${label}.source_profile.fact_manifest_resource_ref`),
113
234
  acquisition: literal(sourceProfile.acquisition, ["complete"], `${label}.source_profile.acquisition`),
114
235
  },
115
236
  selection_basis: string(row.selection_basis, `${label}.selection_basis`),
@@ -1,3 +1,4 @@
1
+ import { parseDesignResourceAssetBindings, parseDesignResourceAxisDispositions, parseDesignResourceConditionExclusions, parseDesignResourceEnvironments, parseDesignResourceFactCells, parseDesignResourceLineageNodes, parseDesignResourceOracles, parseDesignResourceProofObligations, parseDesignResourceProperties, parseDesignResourceVariationAxisDispositions, parseDesignResourceVariationExclusions, parseDesignResourceVariations, } from "./design-resource-fact-manifest-shape.js";
1
2
  import { parseDesignResourceHandoffBlockers, parseDesignResourceHandoffCoverage, parseDesignResourceHandoffEvidence, parseDesignResourceHandoffFacts, parseDesignResourceHandoffResourceFactClosure, } from "./design-resource-handoff-shape-evidence.js";
2
3
  import { contractKey, stableKeys, } from "./design-resource-handoff-shape-primitives.js";
3
4
  import { parseDesignResourceHandoffConditions, parseDesignResourceHandoffResources, parseDesignResourceHandoffSubjects, parseDesignResourceHandoffTargets, } from "./design-resource-handoff-shape-structure.js";
@@ -9,11 +10,23 @@ export function parseDesignResourceHandoffShape(value) {
9
10
  "scope",
10
11
  "provenance",
11
12
  "resources",
13
+ "axis_dispositions",
14
+ "condition_exclusions",
12
15
  "conditions",
13
16
  "subjects",
17
+ "variation_axis_dispositions",
18
+ "variation_exclusions",
19
+ "variations",
20
+ "properties",
21
+ "lineage_nodes",
14
22
  "targets",
15
23
  "evidence",
24
+ "fact_cells",
16
25
  "facts",
26
+ "proof_obligations",
27
+ "oracles",
28
+ "environments",
29
+ "asset_bindings",
17
30
  "resource_fact_closure",
18
31
  "coverage",
19
32
  "acceptance_blockers",
@@ -62,11 +75,23 @@ export function parseDesignResourceHandoffShape(value) {
62
75
  design_system_id: string(provenance.design_system_id, "design_resource_handoff.provenance.design_system_id"),
63
76
  },
64
77
  resources: parseDesignResourceHandoffResources(root.resources),
78
+ axis_dispositions: parseDesignResourceAxisDispositions(root.axis_dispositions),
79
+ condition_exclusions: parseDesignResourceConditionExclusions(root.condition_exclusions),
65
80
  conditions: parseDesignResourceHandoffConditions(root.conditions),
66
81
  subjects: parseDesignResourceHandoffSubjects(root.subjects),
82
+ variation_axis_dispositions: parseDesignResourceVariationAxisDispositions(root.variation_axis_dispositions),
83
+ variation_exclusions: parseDesignResourceVariationExclusions(root.variation_exclusions),
84
+ variations: parseDesignResourceVariations(root.variations),
85
+ properties: parseDesignResourceProperties(root.properties),
86
+ lineage_nodes: parseDesignResourceLineageNodes(root.lineage_nodes),
67
87
  targets: parseDesignResourceHandoffTargets(root.targets),
68
88
  evidence: parseDesignResourceHandoffEvidence(root.evidence),
89
+ fact_cells: parseDesignResourceFactCells(root.fact_cells),
69
90
  facts: parseDesignResourceHandoffFacts(root.facts),
91
+ proof_obligations: parseDesignResourceProofObligations(root.proof_obligations),
92
+ oracles: parseDesignResourceOracles(root.oracles),
93
+ environments: parseDesignResourceEnvironments(root.environments),
94
+ asset_bindings: parseDesignResourceAssetBindings(root.asset_bindings),
70
95
  resource_fact_closure: parseDesignResourceHandoffResourceFactClosure(root.resource_fact_closure),
71
96
  coverage: parseDesignResourceHandoffCoverage(root.coverage),
72
97
  acceptance_blockers: parseDesignResourceHandoffBlockers(root.acceptance_blockers),
@@ -1,11 +1,12 @@
1
1
  import type { ExecutionTargetCapabilityV2 } from "./execution-target-capabilities.js";
2
+ import type { DesignResourceAssetBindingV1, DesignResourceAxisDispositionV1, DesignResourceConditionCombinationDispositionV1, DesignResourceEnvironmentV1, DesignResourceFactCellV1, DesignResourceFactV1, DesignResourceLineageNodeV1, DesignResourceOracleV1, DesignResourcePropertyDefinitionV1, DesignResourceProofObligationV1, DesignResourceRelationEndpointV1, DesignResourceSubjectKind, DesignResourceSubjectPresenceKind, DesignResourceSubjectVariationV1, DesignResourceVariationAxisDispositionV1, DesignResourceVariationCombinationDispositionV1 } from "./design-resource-fact-manifest-types.js";
2
3
  export declare const DESIGN_RESOURCE_DIMENSIONS: readonly ["surface_flow", "visual_content", "component_control", "state_interaction", "motion", "adaptation_input", "accessibility", "assets"];
3
4
  export type DesignResourceDimension = (typeof DESIGN_RESOURCE_DIMENSIONS)[number];
4
- export declare const DESIGN_RESOURCE_EVIDENCE_KINDS: readonly ["frame", "component_variant", "prototype_state", "prototype_transition", "motion_spec", "motion_capture", "responsive_spec", "input_spec", "accessibility_spec", "semantic_tree", "token_spec", "asset", "annotation"];
5
+ export declare const DESIGN_RESOURCE_EVIDENCE_KINDS: readonly ["frame", "component_variant", "prototype_state", "prototype_transition", "motion_spec", "motion_capture", "responsive_spec", "input_spec", "accessibility_spec", "semantic_tree", "token_spec", "asset", "annotation", "localization_spec", "system_ui_spec", "haptic_spec", "sound_spec", "sound_capture", "render_environment", "relation_spec"];
5
6
  export type DesignResourceEvidenceKind = (typeof DESIGN_RESOURCE_EVIDENCE_KINDS)[number];
6
- export declare const DESIGN_RESOURCE_VERIFICATION_METHODS: readonly ["layout_geometry", "visual_pixel", "design_token", "content", "component_state", "interaction_trace", "motion_timeline", "responsive_reflow", "input_method", "accessibility_semantics", "asset_integrity"];
7
+ export declare const DESIGN_RESOURCE_VERIFICATION_METHODS: readonly ["layout_geometry", "visual_pixel", "design_token", "content", "component_state", "interaction_trace", "motion_timeline", "responsive_reflow", "input_method", "accessibility_semantics", "accessibility_navigation", "accessibility_visual", "gesture_trace", "scroll_navigation", "localization", "system_ui", "haptic_feedback", "sound_feedback", "asset_integrity"];
7
8
  export type DesignResourceVerificationMethod = (typeof DESIGN_RESOURCE_VERIFICATION_METHODS)[number];
8
- export declare const DESIGN_RESOURCE_LOCATOR_KINDS: readonly ["html_selector", "markdown_anchor", "json_pointer", "css_selector", "css_custom_property", "whole_resource"];
9
+ export declare const DESIGN_RESOURCE_LOCATOR_KINDS: readonly ["html_selector", "html_inner_html", "markdown_anchor", "json_pointer", "css_selector", "css_custom_property", "html_attribute", "css_declaration", "javascript_export", "svg_selector", "svg_inner_xml", "svg_attribute", "whole_resource"];
9
10
  export type DesignResourceLocatorKind = (typeof DESIGN_RESOURCE_LOCATOR_KINDS)[number];
10
11
  export type DesignResourceSourceProfileKind = "implementation_web" | "implementation_app" | "reference";
11
12
  export type DesignResourceCoverageDisposition = "covered" | "not_applicable" | "excluded_by_scope" | "decision_required" | "unavailable";
@@ -30,11 +31,23 @@ export interface DesignResourceHandoffV1 {
30
31
  design_system_id: string;
31
32
  };
32
33
  resources: DesignResourceHandoffResourceV1[];
34
+ axis_dispositions: DesignResourceAxisDispositionV1[];
35
+ condition_exclusions: DesignResourceConditionCombinationDispositionV1[];
33
36
  conditions: DesignResourceHandoffConditionV1[];
34
37
  subjects: DesignResourceHandoffSubjectV1[];
38
+ variation_axis_dispositions: DesignResourceVariationAxisDispositionV1[];
39
+ variation_exclusions: DesignResourceVariationCombinationDispositionV1[];
40
+ variations: DesignResourceSubjectVariationV1[];
41
+ properties: DesignResourcePropertyDefinitionV1[];
42
+ lineage_nodes: DesignResourceLineageNodeV1[];
35
43
  targets: DesignResourceHandoffTargetV1[];
36
44
  evidence: DesignResourceHandoffEvidenceV1[];
37
- facts: DesignResourceHandoffFactV1[];
45
+ fact_cells: DesignResourceFactCellV1[];
46
+ facts: DesignResourceFactV1[];
47
+ proof_obligations: DesignResourceProofObligationV1[];
48
+ oracles: DesignResourceOracleV1[];
49
+ environments: DesignResourceEnvironmentV1[];
50
+ asset_bindings: DesignResourceAssetBindingV1[];
38
51
  resource_fact_closure: DesignResourceHandoffResourceFactClosureV1[];
39
52
  coverage: DesignResourceHandoffCoverageV1[];
40
53
  acceptance_blockers: DesignResourceHandoffBlockerV1[];
@@ -59,22 +72,77 @@ export interface DesignResourceHandoffResourceV1 {
59
72
  export interface DesignResourceHandoffConditionV1 {
60
73
  key: string;
61
74
  platform: string;
75
+ os_version: string;
76
+ device_profile: string;
77
+ form_factor: string;
62
78
  viewport: {
79
+ key: string;
63
80
  width: number;
64
81
  height: number;
65
82
  unit: "px";
66
83
  };
67
- modes: string[];
68
- states: string[];
69
- content_cases: string[];
70
- input_methods: string[];
71
- motion: "full" | "reduced" | "not_applicable";
84
+ orientation: string;
85
+ density: {
86
+ key: string;
87
+ pixel_ratio: number;
88
+ };
89
+ safe_area: {
90
+ key: string;
91
+ top: number;
92
+ right: number;
93
+ bottom: number;
94
+ left: number;
95
+ unit: "px";
96
+ };
97
+ window_state: string;
98
+ fold_state: string;
99
+ display_mode: string;
100
+ color_scheme: string;
101
+ locale: string;
102
+ language: string;
103
+ script: string;
104
+ direction: "ltr" | "rtl" | "not_applicable";
105
+ pseudo_localization: string;
106
+ content_case: string;
107
+ data_case: string;
108
+ text_scale: {
109
+ key: string;
110
+ multiplier: number;
111
+ };
112
+ input_method: string;
113
+ assistive_technology: string;
114
+ motion: string;
115
+ transparency: string;
116
+ contrast: string;
117
+ bold_text: string;
118
+ button_shapes: string;
119
+ system_ui: string;
120
+ ime: string;
121
+ permission: string;
122
+ capability: string;
123
+ connectivity: string;
124
+ lifecycle: string;
125
+ custom_axes: Array<{
126
+ axis_ref: string;
127
+ value_ref: string;
128
+ }>;
72
129
  }
73
130
  export interface DesignResourceHandoffSubjectV1 {
74
131
  key: string;
75
- kind: "surface" | "flow" | "region" | "component_family" | "control" | "state" | "asset";
132
+ kind: DesignResourceSubjectKind;
76
133
  stable_keys: string[];
77
134
  target_refs: string[];
135
+ parent_ref: string | null;
136
+ instance_of_ref: string | null;
137
+ slot_key: string | null;
138
+ override_of_ref: string | null;
139
+ family_ref: string | null;
140
+ presence: DesignResourceSubjectPresenceKind;
141
+ presence_rule_ref: string | null;
142
+ population_ref: string | null;
143
+ portal_host_ref: string | null;
144
+ relation_endpoints: DesignResourceRelationEndpointV1[];
145
+ census_refs: string[];
78
146
  }
79
147
  export interface DesignResourceHandoffTargetV1 {
80
148
  key: string;
@@ -85,6 +153,7 @@ export interface DesignResourceHandoffTargetV1 {
85
153
  kind: DesignResourceSourceProfileKind;
86
154
  entry_resource_ref: string;
87
155
  dependency_resource_refs: string[];
156
+ fact_manifest_resource_ref: string;
88
157
  acquisition: "complete";
89
158
  };
90
159
  selection_basis: string;
@@ -99,17 +168,7 @@ export interface DesignResourceHandoffEvidenceV1 {
99
168
  };
100
169
  condition_refs: string[];
101
170
  }
102
- export interface DesignResourceHandoffFactV1 {
103
- key: string;
104
- subject_ref: string;
105
- target_ref: string;
106
- condition_ref: string;
107
- dimension: DesignResourceDimension;
108
- observation_scope: "subject" | "full_target";
109
- evidence_refs: string[];
110
- source_item_refs: string[];
111
- verification_method: DesignResourceVerificationMethod;
112
- }
171
+ export type DesignResourceHandoffFactV1 = DesignResourceFactV1;
113
172
  export interface DesignResourceHandoffResourceFactClosureV1 {
114
173
  key: string;
115
174
  resource_ref: string;
@@ -128,8 +187,12 @@ export interface DesignResourceHandoffCoverageV1 {
128
187
  disposition: DesignResourceCoverageDisposition;
129
188
  target_refs: string[];
130
189
  condition_refs: string[];
190
+ variation_refs: string[];
191
+ property_refs: string[];
131
192
  evidence_refs: string[];
193
+ fact_cell_refs: string[];
132
194
  fact_refs: string[];
195
+ proof_obligation_refs: string[];
133
196
  source_item_refs: string[];
134
197
  verification_methods: DesignResourceVerificationMethod[];
135
198
  rationale: string;
@@ -139,6 +202,9 @@ export interface DesignResourceHandoffBlockerV1 {
139
202
  target_refs: string[];
140
203
  subject_refs: string[];
141
204
  dimensions: DesignResourceDimension[];
205
+ fact_cell_refs: string[];
206
+ fact_refs: string[];
207
+ proof_obligation_refs: string[];
142
208
  source_item_refs: string[];
143
209
  verification_methods: DesignResourceVerificationMethod[];
144
210
  required_capabilities: ExecutionTargetCapabilityV2[];
@@ -156,11 +222,21 @@ export interface DesignResourceHandoffPreflightV1 extends ParsedDesignResourceHa
156
222
  resource_hashes: Record<string, string>;
157
223
  counts: {
158
224
  resources: number;
225
+ manifests: number;
226
+ axis_dispositions: number;
159
227
  conditions: number;
160
228
  subjects: number;
229
+ variations: number;
230
+ properties: number;
231
+ lineage_nodes: number;
161
232
  targets: number;
162
233
  evidence: number;
234
+ fact_cells: number;
163
235
  facts: number;
236
+ proof_obligations: number;
237
+ oracles: number;
238
+ environments: number;
239
+ asset_bindings: number;
164
240
  resource_fact_closure: number;
165
241
  coverage: number;
166
242
  acceptance_blockers: number;
@@ -22,6 +22,13 @@ export const DESIGN_RESOURCE_EVIDENCE_KINDS = [
22
22
  "token_spec",
23
23
  "asset",
24
24
  "annotation",
25
+ "localization_spec",
26
+ "system_ui_spec",
27
+ "haptic_spec",
28
+ "sound_spec",
29
+ "sound_capture",
30
+ "render_environment",
31
+ "relation_spec",
25
32
  ];
26
33
  export const DESIGN_RESOURCE_VERIFICATION_METHODS = [
27
34
  "layout_geometry",
@@ -34,13 +41,28 @@ export const DESIGN_RESOURCE_VERIFICATION_METHODS = [
34
41
  "responsive_reflow",
35
42
  "input_method",
36
43
  "accessibility_semantics",
44
+ "accessibility_navigation",
45
+ "accessibility_visual",
46
+ "gesture_trace",
47
+ "scroll_navigation",
48
+ "localization",
49
+ "system_ui",
50
+ "haptic_feedback",
51
+ "sound_feedback",
37
52
  "asset_integrity",
38
53
  ];
39
54
  export const DESIGN_RESOURCE_LOCATOR_KINDS = [
40
55
  "html_selector",
56
+ "html_inner_html",
41
57
  "markdown_anchor",
42
58
  "json_pointer",
43
59
  "css_selector",
44
60
  "css_custom_property",
61
+ "html_attribute",
62
+ "css_declaration",
63
+ "javascript_export",
64
+ "svg_selector",
65
+ "svg_inner_xml",
66
+ "svg_attribute",
45
67
  "whole_resource",
46
68
  ];
@@ -1,4 +1,4 @@
1
- import { type DesignResourceHandoffV1 } from "./design-resource-handoff-types.js";
1
+ import type { DesignResourceHandoffV1 } from "./design-resource-handoff-types.js";
2
2
  export declare function validateDesignResourceCoverage(handoff: DesignResourceHandoffV1, subjects: Map<string, unknown>, targets: Map<string, DesignResourceHandoffV1["targets"][number]>, conditions: Map<string, unknown>, evidence: Map<string, DesignResourceHandoffV1["evidence"][number]>, facts: Map<string, DesignResourceHandoffV1["facts"][number]>, sourceItems: Map<string, string>): void;
3
3
  export declare function validateDesignResourceBlockers(handoff: DesignResourceHandoffV1, subjects: Map<string, unknown>, targets: Map<string, unknown>, sourceItems: Map<string, string>): void;
4
4
  export declare function validateDesignResourceReachability(handoff: DesignResourceHandoffV1): void;