@3fn/core 14.1.0 → 15.0.0

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 (1380) hide show
  1. package/.kiro/steering/AI-Collaboration-Principles.md +9 -3
  2. package/.kiro/steering/Agent-Directory.md +31 -7
  3. package/.kiro/steering/Civitas-System-Overview.md +3 -3
  4. package/.kiro/steering/DesignerPunk-Systems-Overview.md +3 -3
  5. package/.kiro/steering/Task-Completion-Protocol.md +12 -11
  6. package/.kiro/steering/start-up-tasks.md +12 -4
  7. package/CHANGELOG.md +74 -0
  8. package/README.md +26 -21
  9. package/application-mcp-server/src/__tests__/consumerRootLiveReindex.test.ts +118 -0
  10. package/application-mcp-server/src/__tests__/errorCatalogWiring.test.ts +73 -0
  11. package/application-mcp-server/src/__tests__/mcpDataRootsDeclaration.test.ts +107 -0
  12. package/application-mcp-server/src/__tests__/tool-boundary.contract.test.ts +55 -0
  13. package/application-mcp-server/src/index.ts +249 -59
  14. package/application-mcp-server/src/indexer/ComponentIndexer.ts +273 -46
  15. package/application-mcp-server/src/indexer/ModeClassifier.ts +23 -16
  16. package/application-mcp-server/src/indexer/SemanticOverrideReader.ts +113 -0
  17. package/application-mcp-server/src/indexer/TokenIndexer.ts +195 -3
  18. package/application-mcp-server/src/indexer/__tests__/MultiRootIndexing.test.ts +134 -0
  19. package/application-mcp-server/src/indexer/__tests__/ThemeResolution.test.ts +241 -0
  20. package/application-mcp-server/src/indexer/__tests__/ThemeRootFollowsIndex.test.ts +216 -0
  21. package/application-mcp-server/src/indexer/__tests__/fixtures/consumerFixture.ts +84 -0
  22. package/application-mcp-server/src/indexer/resolveThemeTierRoot.ts +61 -0
  23. package/application-mcp-server/src/watcher/FileWatcher.ts +20 -7
  24. package/dist/ComponentTokens.android.kt +1 -1
  25. package/dist/ComponentTokens.ios.swift +1 -1
  26. package/dist/ComponentTokens.web.css +1 -1
  27. package/dist/DesignTokens.android.kt +1 -5
  28. package/dist/DesignTokens.dtcg.json +388 -122
  29. package/dist/DesignTokens.figma.json +281 -941
  30. package/dist/DesignTokens.ios.swift +1 -5
  31. package/dist/DesignTokens.web.css +5 -5
  32. package/dist/browser/designerpunk.esm.js +160 -94
  33. package/dist/browser/designerpunk.esm.min.js +58 -55
  34. package/dist/browser/designerpunk.umd.js +160 -94
  35. package/dist/browser/designerpunk.umd.min.js +57 -54
  36. package/dist/browser/tokens.css +5 -5
  37. package/dist/build/platforms/AndroidMotionTokenFormatter.d.ts +101 -0
  38. package/dist/build/platforms/AndroidMotionTokenFormatter.js +220 -0
  39. package/dist/build/platforms/WebMotionTokenFormatter.d.ts +85 -0
  40. package/dist/build/platforms/WebMotionTokenFormatter.js +167 -0
  41. package/dist/build/platforms/iOSMotionTokenFormatter.d.ts +99 -0
  42. package/dist/build/platforms/iOSMotionTokenFormatter.js +221 -0
  43. package/dist/build/validation/index.d.ts +0 -4
  44. package/dist/build/validation/index.js +1 -8
  45. package/dist/cli/attach.d.ts +153 -0
  46. package/dist/cli/attach.js +423 -0
  47. package/dist/cli/designerpunk.d.ts +46 -0
  48. package/dist/cli/designerpunk.js +171 -34
  49. package/dist/cli/figma-extract.js +10 -1
  50. package/dist/cli/figma-push.js +11 -2
  51. package/dist/cli/init.d.ts +36 -5
  52. package/dist/cli/init.js +348 -143
  53. package/dist/cli/loadComponentTokens.d.ts +25 -0
  54. package/dist/cli/loadComponentTokens.js +87 -8
  55. package/dist/cli/shared/bornRepo.d.ts +50 -0
  56. package/dist/cli/shared/bornRepo.js +199 -0
  57. package/dist/cli/shared/errorCatalog.d.ts +130 -0
  58. package/dist/cli/shared/errorCatalog.js +148 -0
  59. package/dist/cli/shared/mcpConfig/cc.d.ts +25 -0
  60. package/dist/cli/shared/mcpConfig/cc.js +156 -0
  61. package/dist/cli/shared/mcpConfig/kiro.d.ts +53 -0
  62. package/dist/cli/shared/mcpConfig/kiro.js +140 -0
  63. package/dist/cli/shared/mcpDataRoots.d.ts +88 -1
  64. package/dist/cli/shared/mcpDataRoots.js +76 -2
  65. package/dist/cli/shared/transforms.d.ts +64 -0
  66. package/dist/cli/shared/transforms.js +138 -0
  67. package/dist/cli/shared/vocabulary.d.ts +50 -0
  68. package/dist/cli/shared/vocabulary.js +62 -0
  69. package/dist/cli/sync/Applier.d.ts +25 -26
  70. package/dist/cli/sync/Applier.js +37 -73
  71. package/dist/cli/sync/Classifier.d.ts +70 -6
  72. package/dist/cli/sync/Classifier.js +123 -84
  73. package/dist/cli/sync/FileScanner.d.ts +19 -10
  74. package/dist/cli/sync/FileScanner.js +33 -25
  75. package/dist/cli/sync/KeyGrain.d.ts +106 -0
  76. package/dist/cli/sync/KeyGrain.js +301 -0
  77. package/dist/cli/sync/Manifest.d.ts +147 -12
  78. package/dist/cli/sync/Manifest.js +276 -21
  79. package/dist/cli/sync/Migration.d.ts +271 -0
  80. package/dist/cli/sync/Migration.js +764 -0
  81. package/dist/cli/sync/NameContract.d.ts +169 -0
  82. package/dist/cli/sync/NameContract.js +246 -0
  83. package/dist/cli/sync/RegionGrain.d.ts +118 -0
  84. package/dist/cli/sync/RegionGrain.js +167 -0
  85. package/dist/cli/sync/Reporter.d.ts +33 -4
  86. package/dist/cli/sync/Reporter.js +112 -53
  87. package/dist/cli/sync/SteeringDirCheck.d.ts +32 -4
  88. package/dist/cli/sync/SteeringDirCheck.js +62 -14
  89. package/dist/cli/sync/index.d.ts +125 -6
  90. package/dist/cli/sync/index.js +716 -66
  91. package/dist/color/OklchValidator.d.ts +43 -3
  92. package/dist/color/OklchValidator.js +46 -8
  93. package/dist/components/core/Button-CTA/Button-CTA.refs.d.ts +83 -0
  94. package/dist/components/core/Button-CTA/Button-CTA.refs.js +86 -0
  95. package/dist/components/core/Button-CTA/Button-CTA.tokens.d.ts +20 -10
  96. package/dist/components/core/Button-CTA/Button-CTA.tokens.js +21 -10
  97. package/dist/components/core/Button-CTA/index.d.ts +2 -2
  98. package/dist/components/core/Button-CTA/index.js +3 -3
  99. package/dist/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.d.ts +11 -30
  100. package/dist/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.js +16 -49
  101. package/dist/components/core/Container-Base/Container-Base.refs.d.ts +181 -0
  102. package/dist/components/core/Container-Base/Container-Base.refs.js +223 -0
  103. package/dist/components/core/Container-Base/index.d.ts +2 -2
  104. package/dist/components/core/Container-Base/index.js +10 -10
  105. package/dist/components/core/Container-Base/platforms/web/ContainerBase.web.js +1 -1
  106. package/dist/components/core/Container-Base/platforms/web/token-mapping.d.ts +27 -9
  107. package/dist/components/core/Container-Base/platforms/web/token-mapping.js +50 -22
  108. package/dist/components/core/Container-Card-Base/Container-Card-Base.refs.d.ts +149 -0
  109. package/dist/components/core/Container-Card-Base/Container-Card-Base.refs.js +207 -0
  110. package/dist/components/core/Container-Card-Base/index.d.ts +1 -1
  111. package/dist/components/core/Container-Card-Base/index.js +19 -19
  112. package/dist/components/core/Container-Card-Base/platforms/web/ContainerCardBase.web.js +7 -6
  113. package/dist/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.d.ts +15 -0
  114. package/dist/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.js +41 -1
  115. package/dist/components/core/Input-Text-Base/Input-Text-Base.refs.d.ts +331 -0
  116. package/dist/components/core/Input-Text-Base/Input-Text-Base.refs.js +164 -0
  117. package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.web.js +1 -1
  118. package/dist/components/core/Input-Text-Email/Input-Text-Email.refs.d.ts +20 -0
  119. package/dist/components/core/Input-Text-Email/Input-Text-Email.refs.js +34 -0
  120. package/dist/components/core/Input-Text-Password/Input-Text-Password.refs.d.ts +20 -0
  121. package/dist/components/core/Input-Text-Password/Input-Text-Password.refs.js +34 -0
  122. package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.d.ts +30 -0
  123. package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.js +72 -3
  124. package/dist/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.refs.d.ts +20 -0
  125. package/dist/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.refs.js +34 -0
  126. package/dist/consumer-canonical/agents/ada.md +331 -0
  127. package/dist/consumer-canonical/agents/data.md +429 -0
  128. package/dist/consumer-canonical/agents/kenya.md +400 -0
  129. package/dist/consumer-canonical/agents/leonardo.md +524 -0
  130. package/dist/consumer-canonical/agents/lina.md +501 -0
  131. package/dist/consumer-canonical/agents/sparky.md +395 -0
  132. package/dist/consumer-canonical/agents/stacy.md +515 -0
  133. package/dist/consumer-canonical/agents/thurgood.md +463 -0
  134. package/dist/consumer-canonical/always-set/agent-directory.dispositions.yaml +21 -0
  135. package/dist/consumer-canonical/always-set/agent-directory.overlay.md +51 -0
  136. package/dist/consumer-canonical/always-set/ai-collaboration-principles.dispositions.yaml +15 -0
  137. package/dist/consumer-canonical/always-set/ai-collaboration-principles.overlay.md +26 -0
  138. package/dist/consumer-canonical/always-set/civitas-system-overview.dispositions.yaml +15 -0
  139. package/dist/consumer-canonical/always-set/civitas-system-overview.overlay.md +70 -0
  140. package/dist/consumer-canonical/always-set/core-goals.dispositions.yaml +9 -0
  141. package/dist/consumer-canonical/always-set/core-goals.overlay.md +74 -0
  142. package/dist/consumer-canonical/always-set/designerpunk-systems-overview.dispositions.yaml +16 -0
  143. package/dist/consumer-canonical/always-set/designerpunk-systems-overview.overlay.md +44 -0
  144. package/dist/consumer-canonical/always-set/spec-feedback-protocol.dispositions.yaml +21 -0
  145. package/dist/consumer-canonical/always-set/spec-feedback-protocol.overlay.md +44 -0
  146. package/dist/consumer-canonical/always-set/start-up-tasks.dispositions.yaml +15 -0
  147. package/dist/consumer-canonical/always-set/start-up-tasks.overlay.md +25 -0
  148. package/dist/consumer-canonical/always-set/task-completion-protocol.dispositions.yaml +19 -0
  149. package/dist/consumer-canonical/always-set/task-completion-protocol.overlay.md +116 -0
  150. package/dist/consumer-canonical/consumer-profile.yaml +9 -0
  151. package/dist/consumer-canonical/shared/always-set.yaml +113 -0
  152. package/dist/consumer-canonical/shared/field-dispositions.yaml +85 -0
  153. package/dist/consumer-canonical/shared/shared-catalog.yaml +19 -0
  154. package/dist/consumer-canonical/shared/skills-map.yaml +33 -0
  155. package/dist/consumer-canonical/skills/adaptive/SKILL.md +301 -0
  156. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
  157. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
  158. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
  159. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
  160. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +238 -0
  161. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
  162. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
  163. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +168 -0
  164. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +329 -0
  165. package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
  166. package/dist/consumer-canonical/skills/adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
  167. package/dist/consumer-canonical/skills/edge-to-edge/SKILL.md +426 -0
  168. package/dist/consumer-canonical/skills/impeccable/SKILL.md +237 -0
  169. package/dist/consumer-canonical/skills/impeccable/detector-exclusions.md +42 -0
  170. package/dist/consumer-canonical/skills/impeccable/reference/adapt.md +190 -0
  171. package/dist/consumer-canonical/skills/impeccable/reference/animate.md +194 -0
  172. package/dist/consumer-canonical/skills/impeccable/reference/audit.md +150 -0
  173. package/dist/consumer-canonical/skills/impeccable/reference/bolder.md +113 -0
  174. package/dist/consumer-canonical/skills/impeccable/reference/brand-dp.md +103 -0
  175. package/dist/consumer-canonical/skills/impeccable/reference/clarify.md +174 -0
  176. package/dist/consumer-canonical/skills/impeccable/reference/codex.md +105 -0
  177. package/dist/consumer-canonical/skills/impeccable/reference/cognitive-load.md +106 -0
  178. package/dist/consumer-canonical/skills/impeccable/reference/color-and-contrast.md +122 -0
  179. package/dist/consumer-canonical/skills/impeccable/reference/colorize.md +155 -0
  180. package/dist/consumer-canonical/skills/impeccable/reference/craft.md +123 -0
  181. package/dist/consumer-canonical/skills/impeccable/reference/critique.md +245 -0
  182. package/dist/consumer-canonical/skills/impeccable/reference/delight.md +302 -0
  183. package/dist/consumer-canonical/skills/impeccable/reference/distill.md +111 -0
  184. package/dist/consumer-canonical/skills/impeccable/reference/extract-dp.md +43 -0
  185. package/dist/consumer-canonical/skills/impeccable/reference/harden.md +347 -0
  186. package/dist/consumer-canonical/skills/impeccable/reference/heuristics-scoring.md +234 -0
  187. package/dist/consumer-canonical/skills/impeccable/reference/interaction-design.md +195 -0
  188. package/dist/consumer-canonical/skills/impeccable/reference/layout.md +141 -0
  189. package/dist/consumer-canonical/skills/impeccable/reference/live.md +622 -0
  190. package/dist/consumer-canonical/skills/impeccable/reference/motion-design.md +109 -0
  191. package/dist/consumer-canonical/skills/impeccable/reference/onboard.md +234 -0
  192. package/dist/consumer-canonical/skills/impeccable/reference/optimize.md +258 -0
  193. package/dist/consumer-canonical/skills/impeccable/reference/overdrive.md +130 -0
  194. package/dist/consumer-canonical/skills/impeccable/reference/personas.md +179 -0
  195. package/dist/consumer-canonical/skills/impeccable/reference/polish.md +242 -0
  196. package/dist/consumer-canonical/skills/impeccable/reference/product-dp.md +79 -0
  197. package/dist/consumer-canonical/skills/impeccable/reference/quieter.md +99 -0
  198. package/dist/consumer-canonical/skills/impeccable/reference/responsive-design.md +114 -0
  199. package/dist/consumer-canonical/skills/impeccable/reference/shape.md +165 -0
  200. package/dist/consumer-canonical/skills/impeccable/reference/spatial-design.md +100 -0
  201. package/dist/consumer-canonical/skills/impeccable/reference/typeset.md +126 -0
  202. package/dist/consumer-canonical/skills/impeccable/reference/typography.md +159 -0
  203. package/dist/consumer-canonical/skills/impeccable/reference/ux-writing.md +107 -0
  204. package/dist/consumer-canonical/skills/impeccable/scripts/detect.mjs +21 -0
  205. package/dist/consumer-canonical/skills/impeccable/scripts/detector/browser/injected/index.mjs +1725 -0
  206. package/dist/consumer-canonical/skills/impeccable/scripts/detector/cli/main.mjs +244 -0
  207. package/dist/consumer-canonical/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4567 -0
  208. package/dist/consumer-canonical/skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
  209. package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +252 -0
  210. package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +535 -0
  211. package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +986 -0
  212. package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +208 -0
  213. package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
  214. package/dist/consumer-canonical/skills/impeccable/scripts/detector/findings.mjs +12 -0
  215. package/dist/consumer-canonical/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
  216. package/dist/consumer-canonical/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
  217. package/dist/consumer-canonical/skills/impeccable/scripts/detector/registry/antipatterns.mjs +419 -0
  218. package/dist/consumer-canonical/skills/impeccable/scripts/detector/rules/checks.mjs +2316 -0
  219. package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/color.mjs +156 -0
  220. package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
  221. package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
  222. package/dist/consumer-canonical/skills/navigation-3/SKILL.md +110 -0
  223. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/index.md +38 -0
  224. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +498 -0
  225. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
  226. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
  227. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
  228. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
  229. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
  230. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
  231. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
  232. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-advanced.md +155 -0
  233. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-basic.md +744 -0
  234. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
  235. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
  236. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
  237. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
  238. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
  239. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +436 -0
  240. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
  241. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +272 -0
  242. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
  243. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
  244. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
  245. package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
  246. package/dist/consumer-canonical/skills/theming-styles/SKILL.md +220 -0
  247. package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
  248. package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/fundamentals.md +420 -0
  249. package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
  250. package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
  251. package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/theming.md +257 -0
  252. package/dist/generator/consumer-entry.js +5939 -0
  253. package/dist/generators/DTCGFormatGenerator.d.ts +14 -4
  254. package/dist/generators/DTCGFormatGenerator.js +35 -18
  255. package/dist/generators/TokenFileGenerator.js +13 -13
  256. package/dist/generators/generateTokenIndex.d.ts +14 -0
  257. package/dist/generators/generateTokenIndex.js +23 -0
  258. package/dist/generators/transformers/FigmaTransformer.d.ts +35 -0
  259. package/dist/generators/transformers/FigmaTransformer.js +101 -13
  260. package/dist/generators/types/DTCGTypes.d.ts +10 -0
  261. package/dist/mcp/application-mcp.js +1062 -261
  262. package/dist/mcp/docs-mcp.js +93 -13
  263. package/dist/mcp/product-mcp.js +539 -41
  264. package/dist/mcp/tool-manifest.json +184 -0
  265. package/dist/name-contract.json +4283 -0
  266. package/dist/tokens/BlurTokens.d.ts +3 -1
  267. package/dist/tokens/BlurTokens.js +6 -4
  268. package/dist/tokens/ShadowOffsetTokens.js +14 -14
  269. package/dist/tokens/SizingTokens.js +3 -3
  270. package/dist/tokens/TapAreaTokens.d.ts +13 -2
  271. package/dist/tokens/TapAreaTokens.js +19 -8
  272. package/dist/tokens/semantic/ColorTokens.js +50 -5
  273. package/dist/tokens/semantic/TypographyTokens.js +10 -10
  274. package/dist/tokens/themes/dark/SemanticOverrides.js +21 -4
  275. package/dist/tools/integrity/Invariants.d.ts +23 -8
  276. package/dist/tools/integrity/Invariants.js +27 -8
  277. package/dist/tools/integrity/cli/run-audit.js +1 -1
  278. package/dist/types/PrimitiveToken.d.ts +15 -1
  279. package/dist/types/generated/TokenTypes.d.ts +1 -1
  280. package/dist/types/generated/TokenTypes.js +1 -1
  281. package/dist/types/index.d.ts +1 -0
  282. package/governance/AI-Collaboration-Framework.md +19 -10
  283. package/governance/Component-Family-Navigation.md +2 -2
  284. package/governance/DTCG-Integration-Guide.md +63 -36
  285. package/governance/DesignerPunk-Integration-Guide.md +57 -61
  286. package/governance/Figma-Workflow-Guide.md +15 -8
  287. package/governance/Process-Integration-Methodology.md +5 -5
  288. package/governance/Process-Spec-Planning.md +179 -54
  289. package/governance/Product-Handoff-Protocol.md +27 -2
  290. package/governance/Test-Behavioral-Contract-Validation.md +5 -0
  291. package/governance/Test-Development-Standards.md +4 -4
  292. package/governance/Token-Family-Accessibility.md +18 -14
  293. package/governance/Token-Family-Blend.md +5 -4
  294. package/governance/Token-Family-Blur.md +8 -8
  295. package/governance/Token-Family-Color.md +40 -22
  296. package/governance/Token-Family-Glow.md +26 -24
  297. package/governance/Token-Family-Layering.md +1 -0
  298. package/governance/Token-Family-Motion.md +22 -13
  299. package/governance/Token-Family-Opacity.md +20 -34
  300. package/governance/Token-Family-Radius.md +4 -2
  301. package/governance/Token-Family-Responsive.md +4 -4
  302. package/governance/Token-Family-Shadow.md +69 -46
  303. package/governance/Token-Family-Spacing.md +22 -12
  304. package/governance/Token-Family-Typography.md +86 -85
  305. package/governance/Token-Governance.md +5 -1
  306. package/governance/Token-Quick-Reference.md +67 -63
  307. package/governance/Transformer-Development-Guide.md +5 -4
  308. package/governance/classification-map.md +597 -7
  309. package/governance/completion-documentation-guide.md +284 -2
  310. package/governance/platform-implementation-guidelines.md +2 -1
  311. package/mcp-server/src/index.ts +16 -12
  312. package/mcp-server/src/relocation-integrity-gate/__tests__/relocation-integrity-gate.test.ts +3 -3
  313. package/mcp-server/src/relocation-integrity-gate/relocation-integrity-gate.ts +70 -49
  314. package/mcp-server/src/tools/find-docs.ts +1 -0
  315. package/mcp-server/src/tools/get-document-full.ts +1 -0
  316. package/mcp-server/src/tools/get-document-summary.ts +1 -0
  317. package/mcp-server/src/tools/get-index-health.ts +1 -0
  318. package/mcp-server/src/tools/get-section.ts +1 -0
  319. package/mcp-server/src/tools/list-cross-references.ts +1 -0
  320. package/mcp-server/src/tools/rebuild-index.ts +1 -0
  321. package/mcp-server/src/tools/validate-metadata.ts +1 -0
  322. package/package.json +75 -11
  323. package/src/cli/templates/mcp-config.json.template +15 -20
  324. package/src/components/core/Avatar-Base/platforms/android/AvatarPreview.kt +9 -2
  325. package/src/components/core/Container-Base/Container-Base.schema.yaml +9 -11
  326. package/src/components/core/Container-Base/platforms/android/ContainerBase.android.kt +5 -5
  327. package/src/components/core/Container-Base/platforms/ios/ContainerBase.ios.swift +5 -5
  328. package/src/components/core/Container-Card-Base/platforms/android/ContainerCardBase.android.kt +3 -3
  329. package/src/components/core/Container-Card-Base/platforms/ios/ContainerCardBase.ios.swift +2 -2
  330. package/src/components/core/Nav-Header-App/contracts.yaml +1 -1
  331. package/src/components/core/Nav-Header-Base/component-meta.yaml +0 -1
  332. package/src/components/core/Nav-Header-Base/contracts.yaml +1 -1
  333. package/src/components/core/Nav-Header-Page/contracts.yaml +1 -1
  334. package/src/components/core/Nav-TabBar-Base/contracts.yaml +1 -1
  335. package/src/components/core/Progress-Bar-Base/contracts.yaml +1 -1
  336. package/src/tokens/BlurTokens.ts +6 -4
  337. package/src/tokens/ShadowOffsetTokens.ts +14 -14
  338. package/src/tokens/SizingTokens.ts +3 -3
  339. package/src/tokens/TapAreaTokens.ts +20 -8
  340. package/src/tokens/__tests__/BaselineGridAlignmentFlag.test.ts +116 -0
  341. package/src/tokens/__tests__/BlurTokens.test.ts +10 -2
  342. package/src/tokens/__tests__/SemanticColorContrast.test.ts +339 -0
  343. package/src/tokens/__tests__/ShadowOffsetTokens.test.ts +8 -7
  344. package/src/tokens/__tests__/SizingTokens.test.ts +10 -2
  345. package/src/tokens/__tests__/TokenCategories.test.ts +1 -1
  346. package/src/tokens/__tests__/neutral-partition.test.ts +28 -0
  347. package/src/tokens/semantic/AccessibilityTokens.README.md +2 -2
  348. package/src/tokens/semantic/ColorTokens.ts +50 -5
  349. package/src/tokens/semantic/TypographyTokens.ts +10 -10
  350. package/src/tokens/semantic/__tests__/ColorTokens.test.ts +8 -4
  351. package/src/tokens/themes/dark/SemanticOverrides.ts +23 -4
  352. package/src/types/PrimitiveToken.ts +15 -1
  353. package/token-index/meta.json +3 -0
  354. package/token-index/semantics.yaml +21 -15
  355. package/.kiro/agents/ada-prompt.md +0 -213
  356. package/.kiro/agents/ada-prompt.md.attribution.json +0 -45
  357. package/.kiro/agents/ada.json +0 -72
  358. package/.kiro/agents/ada.json.attribution.json +0 -13
  359. package/.kiro/agents/data-prompt.md +0 -324
  360. package/.kiro/agents/data-prompt.md.attribution.json +0 -53
  361. package/.kiro/agents/data.json +0 -51
  362. package/.kiro/agents/data.json.attribution.json +0 -13
  363. package/.kiro/agents/kenya-prompt.md +0 -309
  364. package/.kiro/agents/kenya-prompt.md.attribution.json +0 -53
  365. package/.kiro/agents/kenya.json +0 -46
  366. package/.kiro/agents/kenya.json.attribution.json +0 -13
  367. package/.kiro/agents/leonardo-prompt.md +0 -359
  368. package/.kiro/agents/leonardo-prompt.md.attribution.json +0 -45
  369. package/.kiro/agents/leonardo.json +0 -47
  370. package/.kiro/agents/leonardo.json.attribution.json +0 -13
  371. package/.kiro/agents/lina-prompt.md +0 -344
  372. package/.kiro/agents/lina-prompt.md.attribution.json +0 -53
  373. package/.kiro/agents/lina.json +0 -64
  374. package/.kiro/agents/lina.json.attribution.json +0 -13
  375. package/.kiro/agents/sparky-prompt.md +0 -312
  376. package/.kiro/agents/sparky-prompt.md.attribution.json +0 -53
  377. package/.kiro/agents/sparky.json +0 -56
  378. package/.kiro/agents/sparky.json.attribution.json +0 -13
  379. package/.kiro/agents/stacy-prompt.md +0 -304
  380. package/.kiro/agents/stacy-prompt.md.attribution.json +0 -45
  381. package/.kiro/agents/stacy.json +0 -46
  382. package/.kiro/agents/stacy.json.attribution.json +0 -13
  383. package/.kiro/agents/thurgood-prompt.md +0 -363
  384. package/.kiro/agents/thurgood-prompt.md.attribution.json +0 -45
  385. package/.kiro/agents/thurgood.json +0 -47
  386. package/.kiro/agents/thurgood.json.attribution.json +0 -13
  387. package/.kiro/steering/personal-note.md +0 -35
  388. package/designerpunk.config.ts +0 -27
  389. package/dist/android/DesignTokens.android.kt +0 -695
  390. package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.d.ts +0 -26
  391. package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.js +0 -224
  392. package/dist/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.d.ts +0 -30
  393. package/dist/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.js +0 -254
  394. package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.d.ts +0 -44
  395. package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.js +0 -376
  396. package/dist/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.d.ts +0 -38
  397. package/dist/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.js +0 -328
  398. package/dist/ios/DesignTokens.ios.swift +0 -697
  399. package/dist/web/DesignTokens.web.css +0 -929
  400. package/product-template/agents/README.md +0 -73
  401. package/product-template/agents/ada-prompt.md +0 -83
  402. package/product-template/agents/data-prompt.md +0 -74
  403. package/product-template/agents/kenya-prompt.md +0 -74
  404. package/product-template/agents/leonardo-prompt.md +0 -99
  405. package/product-template/agents/lina-prompt.md +0 -61
  406. package/product-template/agents/sparky-prompt.md +0 -66
  407. package/product-template/agents/stacy-prompt.md +0 -51
  408. package/product-template/agents/thurgood-prompt.md +0 -64
  409. package/src/TokenEngine.ts +0 -628
  410. package/src/__tests__/BuildSystemIntegration.test.ts +0 -485
  411. package/src/__tests__/ProductMCPIntegration.test.ts +0 -204
  412. package/src/__tests__/__mocks__/styleMock.js +0 -18
  413. package/src/__tests__/browser-distribution/build-error-handling.test.ts +0 -143
  414. package/src/__tests__/browser-distribution/bundle-loading.test.ts +0 -353
  415. package/src/__tests__/browser-distribution/bundler-resolution.test.ts +0 -223
  416. package/src/__tests__/browser-distribution/component-registration.test.ts +0 -217
  417. package/src/__tests__/browser-distribution/css-bundling.test.ts +0 -233
  418. package/src/__tests__/browser-distribution/demo-system.test.ts +0 -588
  419. package/src/__tests__/browser-distribution/mcp-format-compliance.property.test.ts +0 -379
  420. package/src/__tests__/browser-distribution/mcp-queryability.test.ts +0 -342
  421. package/src/__tests__/browser-distribution/minification-effectiveness.property.test.ts +0 -188
  422. package/src/__tests__/browser-distribution/registration-idempotency.property.test.ts +0 -372
  423. package/src/__tests__/browser-distribution/soft-ceiling-warning.test.ts +0 -161
  424. package/src/__tests__/browser-distribution/token-completeness.property.test.ts +0 -412
  425. package/src/__tests__/browser-distribution/token-loading.test.ts +0 -344
  426. package/src/__tests__/browser-distribution/umd-bundle-loading.test.ts +0 -169
  427. package/src/__tests__/console-allowlist.json +0 -14
  428. package/src/__tests__/console-fail-setup.ts +0 -169
  429. package/src/__tests__/examples/improved-test-example.test.ts +0 -120
  430. package/src/__tests__/expected-exports.json +0 -66
  431. package/src/__tests__/export-contracts.test.ts +0 -83
  432. package/src/__tests__/fixtures/acknowledged-differences.json +0 -127
  433. package/src/__tests__/fixtures/acknowledged-differences.schema.json +0 -113
  434. package/src/__tests__/fixtures/acknowledged-differences.types.ts +0 -230
  435. package/src/__tests__/fixtures/tokenFixtures.ts +0 -248
  436. package/src/__tests__/helpers/configModuleLoader.ts +0 -20
  437. package/src/__tests__/helpers/tsModuleLoader.ts +0 -24
  438. package/src/__tests__/helpers/web-component-test-utils.ts +0 -39
  439. package/src/__tests__/integration/BlendCrossPlatformConsistency.test.ts +0 -505
  440. package/src/__tests__/integration/BuildSystemCompatibility.test.ts +0 -551
  441. package/src/__tests__/integration/CrossPlatformConsistency.test.ts +0 -855
  442. package/src/__tests__/integration/EndToEndWorkflow.test.ts +0 -601
  443. package/src/__tests__/integration/ErrorHandling.test.ts +0 -459
  444. package/src/__tests__/integration/OpacityPlatformTranslation.test.ts +0 -364
  445. package/src/__tests__/integration/PerformanceValidation.test.ts +0 -887
  446. package/src/__tests__/integration/SemanticTokenGeneration.test.ts +0 -451
  447. package/src/__tests__/integration/Spec107-DesignLanguageContext.test.ts +0 -139
  448. package/src/__tests__/integration/TokenSystemIntegration.test.ts +0 -890
  449. package/src/__tests__/integration/ValidationPipeline.test.ts +0 -404
  450. package/src/__tests__/package-drift-validation.test.ts +0 -249
  451. package/src/__tests__/performance/GenerationPerformance.test.ts +0 -409
  452. package/src/__tests__/performance/OptimizationValidation.test.ts +0 -509
  453. package/src/__tests__/platform-parity/ProgressPlatformParity.test.ts +0 -546
  454. package/src/__tests__/spec073-opacity-architecture.test.ts +0 -344
  455. package/src/__tests__/stemma-system/behavioral-contract-validation.test.ts +0 -520
  456. package/src/__tests__/stemma-system/composition-compliance-validation.test.ts +0 -162
  457. package/src/__tests__/stemma-system/contract-catalog-name-validation.test.ts +0 -184
  458. package/src/__tests__/stemma-system/contract-existence-validation.test.ts +0 -43
  459. package/src/__tests__/stemma-system/contract-test-reporter.ts +0 -269
  460. package/src/__tests__/stemma-system/cross-platform-consistency.test.ts +0 -564
  461. package/src/__tests__/stemma-system/form-inputs-contracts.test.ts +0 -710
  462. package/src/__tests__/stemma-system/input-text-native-base-call-alignment.test.ts +0 -298
  463. package/src/__tests__/stemma-system/mcp-component-integration.test.ts +0 -445
  464. package/src/analytics/PrimitiveTokenFallbackTracker.ts +0 -228
  465. package/src/analytics/SemanticTokenUsageTracker.ts +0 -193
  466. package/src/analytics/StrategicFlexibilityTracker.ts +0 -226
  467. package/src/analytics/TokenUsageTracker.ts +0 -177
  468. package/src/analytics/UsagePatternAnalyzer.ts +0 -177
  469. package/src/analytics/__tests__/UsageTracking.test.ts +0 -647
  470. package/src/analytics/index.ts +0 -42
  471. package/src/assets/fonts/__tests__/androidFontLoadingValidation.test.ts +0 -600
  472. package/src/assets/fonts/__tests__/fontLoading.test.ts +0 -341
  473. package/src/assets/fonts/__tests__/iosFontConfiguration.test.ts +0 -256
  474. package/src/assets/fonts/__tests__/iosFontLoadingValidation.test.ts +0 -465
  475. package/src/assets/fonts/inter/Inter-Bold.ttf +0 -0
  476. package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
  477. package/src/assets/fonts/inter/Inter-Medium.ttf +0 -0
  478. package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
  479. package/src/assets/fonts/inter/Inter-Regular.ttf +0 -0
  480. package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
  481. package/src/assets/fonts/inter/Inter-SemiBold.ttf +0 -0
  482. package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
  483. package/src/assets/fonts/inter/inter.css +0 -49
  484. package/src/blend/BlendCalculator.ts +0 -120
  485. package/src/blend/ColorSpaceUtils.ts +0 -325
  486. package/src/blend/OklchBlendCalculator.ts +0 -82
  487. package/src/blend/ThemeAwareBlendUtilities.web.ts +0 -323
  488. package/src/blend/__tests__/BlendCalculator.test.ts +0 -393
  489. package/src/blend/__tests__/BlendUtilities.property.test.ts +0 -600
  490. package/src/blend/__tests__/ColorSpaceUtils.test.ts +0 -885
  491. package/src/blend/__tests__/InteractionStateAudit.test.ts +0 -238
  492. package/src/blend/__tests__/OklchBlendCalculator.test.ts +0 -134
  493. package/src/blend/__tests__/ThemeAwareBlendUtilities.test.ts +0 -200
  494. package/src/blend/__tests__/ThemeSwitching.test.ts +0 -508
  495. package/src/blend/index.ts +0 -37
  496. package/src/browser-entry.ts +0 -270
  497. package/src/build/.gitkeep +0 -1
  498. package/src/build/BuildOrchestrator.ts +0 -663
  499. package/src/build/__tests__/AndroidBuildIntegration.test.ts +0 -437
  500. package/src/build/__tests__/AndroidMotionTokenGeneration.test.ts +0 -256
  501. package/src/build/__tests__/BuildOrchestrator.test.ts +0 -562
  502. package/src/build/__tests__/MotionTokenCrossPlatformIntegration.test.ts +0 -424
  503. package/src/build/__tests__/WebCSSTokenGeneration.test.ts +0 -271
  504. package/src/build/__tests__/WebMotionTokenGeneration.test.ts +0 -305
  505. package/src/build/__tests__/WebNPMPackageStructure.test.ts +0 -447
  506. package/src/build/__tests__/iOSMotionTokenGeneration.test.ts +0 -298
  507. package/src/build/errors/BuildError.ts +0 -140
  508. package/src/build/errors/ErrorDocumentation.ts +0 -638
  509. package/src/build/errors/ErrorHandler.ts +0 -406
  510. package/src/build/errors/ErrorReporter.ts +0 -573
  511. package/src/build/errors/PlatformGenerationError.ts +0 -201
  512. package/src/build/errors/README.md +0 -486
  513. package/src/build/errors/RecoveryStrategy.ts +0 -393
  514. package/src/build/errors/TokenGenerationError.ts +0 -196
  515. package/src/build/errors/TokenReferenceError.ts +0 -204
  516. package/src/build/errors/__tests__/BuildError.test.ts +0 -212
  517. package/src/build/errors/__tests__/ErrorDocumentation.example.ts +0 -272
  518. package/src/build/errors/__tests__/ErrorDocumentation.test.ts +0 -458
  519. package/src/build/errors/__tests__/ErrorHandler.integration.test.ts +0 -303
  520. package/src/build/errors/__tests__/ErrorHandler.test.ts +0 -502
  521. package/src/build/errors/__tests__/ErrorReporter.test.ts +0 -581
  522. package/src/build/errors/__tests__/MotionTokenErrors.test.ts +0 -392
  523. package/src/build/errors/__tests__/RecoveryStrategy.test.ts +0 -643
  524. package/src/build/errors/index.ts +0 -90
  525. package/src/build/index.ts +0 -73
  526. package/src/build/orchestration/IncrementalBuilder.ts +0 -532
  527. package/src/build/orchestration/ParallelExecutor.ts +0 -336
  528. package/src/build/orchestration/ProgressTracker.ts +0 -582
  529. package/src/build/orchestration/SequentialExecutor.ts +0 -305
  530. package/src/build/orchestration/__tests__/IncrementalBuilder.test.ts +0 -354
  531. package/src/build/orchestration/__tests__/ParallelExecutor.integration.test.ts +0 -295
  532. package/src/build/orchestration/__tests__/ParallelExecutor.test.ts +0 -493
  533. package/src/build/orchestration/__tests__/ProgressTracker.test.ts +0 -529
  534. package/src/build/orchestration/__tests__/SequentialExecutor.integration.test.ts +0 -202
  535. package/src/build/orchestration/__tests__/SequentialExecutor.test.ts +0 -232
  536. package/src/build/orchestration/index.ts +0 -35
  537. package/src/build/platforms/.gitkeep +0 -1
  538. package/src/build/platforms/AndroidBuilder.ts +0 -1366
  539. package/src/build/platforms/AndroidShadowGenerator.ts +0 -394
  540. package/src/build/platforms/IOSShadowGenerator.ts +0 -324
  541. package/src/build/platforms/PlatformBuilder.ts +0 -131
  542. package/src/build/platforms/WebBuilder.ts +0 -1414
  543. package/src/build/platforms/WebShadowGenerator.ts +0 -288
  544. package/src/build/platforms/__tests__/AndroidBuilder.tokenGeneration.test.ts +0 -146
  545. package/src/build/platforms/__tests__/AndroidShadowGenerator.test.ts +0 -195
  546. package/src/build/platforms/__tests__/IOSShadowGenerator.test.ts +0 -156
  547. package/src/build/platforms/__tests__/WebShadowGenerator.test.ts +0 -123
  548. package/src/build/platforms/__tests__/iOSBuilder.test.ts +0 -1599
  549. package/src/build/platforms/iOSBuilder.ts +0 -1746
  550. package/src/build/platforms/index.ts +0 -9
  551. package/src/build/product/ProductTokenGenerator.ts +0 -162
  552. package/src/build/product/TokenIndexReader.ts +0 -78
  553. package/src/build/product/__tests__/KotlinEmitter.test.ts +0 -109
  554. package/src/build/product/__tests__/ProductTokenGenerator.test.ts +0 -135
  555. package/src/build/product/__tests__/SwiftEmitter.test.ts +0 -90
  556. package/src/build/product/__tests__/TokenIndexReader.test.ts +0 -85
  557. package/src/build/product/__tests__/WebEmitter.test.ts +0 -111
  558. package/src/build/product/__tests__/fixtures/tokens/layout.yaml +0 -21
  559. package/src/build/product/__tests__/fixtures/tokens/motion.yaml +0 -11
  560. package/src/build/product/__tests__/fixtures/tokens/visualization.yaml +0 -8
  561. package/src/build/product/emitters/KotlinEmitter.ts +0 -83
  562. package/src/build/product/emitters/SwiftEmitter.ts +0 -95
  563. package/src/build/product/emitters/WebEmitter.ts +0 -69
  564. package/src/build/tokens/.gitkeep +0 -1
  565. package/src/build/tokens/__tests__/ClassInvariantGuard.test.ts +0 -167
  566. package/src/build/tokens/__tests__/ComponentTokenGenerator.test.ts +0 -285
  567. package/src/build/tokens/__tests__/TokenIntegrator.test.ts +0 -319
  568. package/src/build/tokens/__tests__/TokenSelector.test.ts +0 -264
  569. package/src/build/tokens/__tests__/UnitConverter.applyScaleWithRounding.test.ts +0 -160
  570. package/src/build/tokens/__tests__/UnitConverter.test.ts +0 -331
  571. package/src/build/tokens/__tests__/brand-dual-instance.test.ts +0 -135
  572. package/src/build/tokens/__tests__/defineComponentTokens.test.ts +0 -553
  573. package/src/build/types/.gitkeep +0 -1
  574. package/src/build/types/BuildConfig.ts +0 -123
  575. package/src/build/types/BuildOrchestrator.ts +0 -114
  576. package/src/build/types/BuildResult.ts +0 -125
  577. package/src/build/types/index.ts +0 -39
  578. package/src/build/validation/.gitkeep +0 -1
  579. package/src/build/validation/AndroidBuildValidator.ts +0 -630
  580. package/src/build/validation/CrossPlatformValidationReporter.ts +0 -1267
  581. package/src/build/validation/InterfaceContractValidator.ts +0 -417
  582. package/src/build/validation/InterfaceValidator.ts +0 -326
  583. package/src/build/validation/MathematicalConsistencyValidator.ts +0 -874
  584. package/src/build/validation/MethodSignatureValidator.ts +0 -374
  585. package/src/build/validation/PropertyTypeValidator.ts +0 -312
  586. package/src/build/validation/TokenComparator.ts +0 -796
  587. package/src/build/validation/ValidationReporter.example.ts +0 -310
  588. package/src/build/validation/ValidationReporter.ts +0 -745
  589. package/src/build/validation/WebBuildValidator.ts +0 -583
  590. package/src/build/validation/__tests__/AndroidBuildValidator.test.ts +0 -522
  591. package/src/build/validation/__tests__/CrossPlatformValidationReporter.test.ts +0 -593
  592. package/src/build/validation/__tests__/InterfaceContractValidator.test.ts +0 -647
  593. package/src/build/validation/__tests__/InterfaceValidation.functional.test.ts +0 -360
  594. package/src/build/validation/__tests__/InterfaceValidator.test.ts +0 -318
  595. package/src/build/validation/__tests__/MethodSignatureValidator.test.ts +0 -625
  596. package/src/build/validation/__tests__/MotionTokenCrossPlatformValidation.test.ts +0 -305
  597. package/src/build/validation/__tests__/MotionTokenValidation.test.ts +0 -309
  598. package/src/build/validation/__tests__/PropertyTypeValidator.test.ts +0 -557
  599. package/src/build/validation/__tests__/TokenComparator.test.ts +0 -358
  600. package/src/build/validation/__tests__/ValidationReporter.integration.test.ts +0 -424
  601. package/src/build/validation/__tests__/ValidationReporter.test.ts +0 -793
  602. package/src/build/validation/__tests__/WebBuildValidator.test.ts +0 -495
  603. package/src/build/validation/iOSBuildValidator.ts +0 -783
  604. package/src/build/validation/index.ts +0 -74
  605. package/src/build/validation/types/InterfaceDefinition.ts +0 -101
  606. package/src/build/validation/types/ValidationResult.ts +0 -114
  607. package/src/build/workflow/BuildMode.ts +0 -336
  608. package/src/build/workflow/CICDIntegration.ts +0 -503
  609. package/src/build/workflow/ConfigHelpers.example.ts +0 -317
  610. package/src/build/workflow/ConfigHelpers.ts +0 -834
  611. package/src/build/workflow/README.md +0 -327
  612. package/src/build/workflow/SourceMapGenerator.ts +0 -362
  613. package/src/build/workflow/__tests__/BuildMode.test.ts +0 -544
  614. package/src/build/workflow/__tests__/CICDIntegration.test.ts +0 -602
  615. package/src/build/workflow/__tests__/ConfigHelpers.test.ts +0 -559
  616. package/src/build/workflow/__tests__/SourceMapGenerator.test.ts +0 -421
  617. package/src/build/workflow/index.ts +0 -42
  618. package/src/cli/__tests__/Applier.test.ts +0 -202
  619. package/src/cli/__tests__/Classifier.test.ts +0 -187
  620. package/src/cli/__tests__/FileScanner.test.ts +0 -108
  621. package/src/cli/__tests__/IgnoreFilter.test.ts +0 -92
  622. package/src/cli/__tests__/Manifest.test.ts +0 -107
  623. package/src/cli/__tests__/PackageResolver.test.ts +0 -66
  624. package/src/cli/__tests__/Prompter.test.ts +0 -165
  625. package/src/cli/__tests__/Reporter.test.ts +0 -128
  626. package/src/cli/__tests__/backward-compat.test.ts +0 -142
  627. package/src/cli/__tests__/figma-extract.test.ts +0 -342
  628. package/src/cli/__tests__/figma-push.test.ts +0 -350
  629. package/src/cli/__tests__/init.test.ts +0 -293
  630. package/src/cli/__tests__/loadComponentTokens.test.ts +0 -187
  631. package/src/cli/__tests__/pipeline-independence.test.ts +0 -127
  632. package/src/cli/__tests__/product-only.test.ts +0 -130
  633. package/src/cli/__tests__/resolveTokens.test.ts +0 -88
  634. package/src/cli/__tests__/staleness.test.ts +0 -132
  635. package/src/cli/__tests__/sync.test.ts +0 -199
  636. package/src/cli/__tests__/validate.test.ts +0 -69
  637. package/src/cli/designerpunk.ts +0 -410
  638. package/src/cli/figma-extract.ts +0 -331
  639. package/src/cli/figma-push.ts +0 -288
  640. package/src/cli/generateProductTokens.ts +0 -69
  641. package/src/cli/init.ts +0 -481
  642. package/src/cli/loadComponentTokens.ts +0 -145
  643. package/src/cli/resolveTokens.ts +0 -123
  644. package/src/cli/shared/mcpDataRoots.ts +0 -122
  645. package/src/cli/shared/resolvePackageRoot.ts +0 -58
  646. package/src/cli/shared/transforms.ts +0 -18
  647. package/src/cli/staleness.ts +0 -81
  648. package/src/cli/sync/Applier.ts +0 -128
  649. package/src/cli/sync/Classifier.ts +0 -130
  650. package/src/cli/sync/FileScanner.ts +0 -64
  651. package/src/cli/sync/IgnoreFilter.ts +0 -44
  652. package/src/cli/sync/Manifest.ts +0 -64
  653. package/src/cli/sync/PackageResolver.ts +0 -40
  654. package/src/cli/sync/Prompter.ts +0 -173
  655. package/src/cli/sync/Reporter.ts +0 -78
  656. package/src/cli/sync/SteeringDirCheck.ts +0 -166
  657. package/src/cli/sync/index.ts +0 -115
  658. package/src/cli/validate.ts +0 -135
  659. package/src/cli/validateProductTokens.ts +0 -55
  660. package/src/color/OklchConverter.ts +0 -284
  661. package/src/color/OklchValidator.ts +0 -186
  662. package/src/color/__tests__/OklchConverter.test.ts +0 -232
  663. package/src/color/__tests__/OklchRegression.test.ts +0 -101
  664. package/src/color/__tests__/OklchValidator.test.ts +0 -199
  665. package/src/color/__tests__/WcagContrast.test.ts +0 -76
  666. package/src/components/__tests__/BlendTokenUsageValidation.test.ts +0 -726
  667. package/src/components/__tests__/DynamicImportGuard.test.ts +0 -226
  668. package/src/components/__tests__/ExtensionLintPolicy.test.ts +0 -113
  669. package/src/components/__tests__/TokenCompliance.test.ts +0 -921
  670. package/src/components/__tests__/colorInheritanceValidation.test.ts +0 -267
  671. package/src/components/__tests__/componentTypographyInheritance.test.ts +0 -326
  672. package/src/components/core/Avatar-Base/README.md +0 -366
  673. package/src/components/core/Avatar-Base/__tests__/.gitkeep +0 -3
  674. package/src/components/core/Avatar-Base/__tests__/Avatar.accessibility.test.ts +0 -597
  675. package/src/components/core/Avatar-Base/__tests__/Avatar.icon-integration.test.ts +0 -656
  676. package/src/components/core/Avatar-Base/__tests__/Avatar.image.test.ts +0 -396
  677. package/src/components/core/Avatar-Base/__tests__/Avatar.lifecycle.test.ts +0 -545
  678. package/src/components/core/Avatar-Base/__tests__/Avatar.rendering.test.ts +0 -505
  679. package/src/components/core/Avatar-Base/__tests__/Avatar.test.ts +0 -701
  680. package/src/components/core/Avatar-Base/avatar.tokens.ts +0 -373
  681. package/src/components/core/Avatar-Base/index.ts +0 -25
  682. package/src/components/core/Avatar-Base/platforms/ios/.gitkeep +0 -3
  683. package/src/components/core/Avatar-Base/platforms/web/.gitkeep +0 -3
  684. package/src/components/core/Avatar-Base/platforms/web/Avatar.styles.css +0 -595
  685. package/src/components/core/Avatar-Base/platforms/web/Avatar.web.ts +0 -892
  686. package/src/components/core/Avatar-Base/platforms/web/hexagon-clip.svg +0 -87
  687. package/src/components/core/Avatar-Base/tokens/.gitkeep +0 -4
  688. package/src/components/core/Avatar-Base/types.ts +0 -86
  689. package/src/components/core/Badge-Count-Base/README.md +0 -323
  690. package/src/components/core/Badge-Count-Base/__tests__/BadgeCountBase.stemma.test.ts +0 -548
  691. package/src/components/core/Badge-Count-Base/__tests__/BadgeCountBase.test.ts +0 -452
  692. package/src/components/core/Badge-Count-Base/__tests__/test-utils.ts +0 -244
  693. package/src/components/core/Badge-Count-Base/index.ts +0 -37
  694. package/src/components/core/Badge-Count-Base/platforms/ios/.gitkeep +0 -1
  695. package/src/components/core/Badge-Count-Base/platforms/web/BadgeCountBase.styles.css +0 -148
  696. package/src/components/core/Badge-Count-Base/platforms/web/BadgeCountBase.web.ts +0 -363
  697. package/src/components/core/Badge-Count-Base/types.ts +0 -150
  698. package/src/components/core/Badge-Count-Notification/README.md +0 -396
  699. package/src/components/core/Badge-Count-Notification/__tests__/BadgeCountNotification.stemma.test.ts +0 -571
  700. package/src/components/core/Badge-Count-Notification/__tests__/BadgeCountNotification.test.ts +0 -490
  701. package/src/components/core/Badge-Count-Notification/__tests__/test-utils.ts +0 -256
  702. package/src/components/core/Badge-Count-Notification/index.ts +0 -60
  703. package/src/components/core/Badge-Count-Notification/platforms/web/BadgeCountNotification.styles.css +0 -182
  704. package/src/components/core/Badge-Count-Notification/platforms/web/BadgeCountNotification.web.ts +0 -401
  705. package/src/components/core/Badge-Count-Notification/tokens.ts +0 -124
  706. package/src/components/core/Badge-Count-Notification/types.ts +0 -119
  707. package/src/components/core/Badge-Label-Base/README.md +0 -251
  708. package/src/components/core/Badge-Label-Base/__tests__/BadgeLabelBase.stemma.test.ts +0 -549
  709. package/src/components/core/Badge-Label-Base/__tests__/BadgeLabelBase.test.ts +0 -439
  710. package/src/components/core/Badge-Label-Base/__tests__/test-utils.ts +0 -269
  711. package/src/components/core/Badge-Label-Base/__tests__/tokens.test.ts +0 -88
  712. package/src/components/core/Badge-Label-Base/index.ts +0 -41
  713. package/src/components/core/Badge-Label-Base/platforms/web/BadgeLabelBase.styles.css +0 -166
  714. package/src/components/core/Badge-Label-Base/platforms/web/BadgeLabelBase.web.ts +0 -340
  715. package/src/components/core/Badge-Label-Base/tokens.ts +0 -80
  716. package/src/components/core/Badge-Label-Base/types.ts +0 -148
  717. package/src/components/core/Button-CTA/Button-CTA.tokens.ts +0 -79
  718. package/src/components/core/Button-CTA/README.md +0 -293
  719. package/src/components/core/Button-CTA/__tests__/ButtonCTA.alignment.test.ts +0 -355
  720. package/src/components/core/Button-CTA/__tests__/ButtonCTA.test.ts +0 -698
  721. package/src/components/core/Button-CTA/__tests__/ButtonCTA.tokens.test.ts +0 -89
  722. package/src/components/core/Button-CTA/__tests__/setup.test.ts +0 -209
  723. package/src/components/core/Button-CTA/__tests__/test-utils.ts +0 -185
  724. package/src/components/core/Button-CTA/examples/BasicUsage.html +0 -133
  725. package/src/components/core/Button-CTA/examples/BasicUsage.tsx +0 -219
  726. package/src/components/core/Button-CTA/examples/Variants.html +0 -263
  727. package/src/components/core/Button-CTA/examples/WithIcon.html +0 -166
  728. package/src/components/core/Button-CTA/index.ts +0 -20
  729. package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.css +0 -395
  730. package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.ts +0 -644
  731. package/src/components/core/Button-CTA/platforms/web/__tests__/ButtonCTA.icon-integration.test.ts +0 -476
  732. package/src/components/core/Button-CTA/types.ts +0 -239
  733. package/src/components/core/Button-Icon/README.md +0 -371
  734. package/src/components/core/Button-Icon/__tests__/ButtonIcon.alignment.test.ts +0 -358
  735. package/src/components/core/Button-Icon/__tests__/ButtonIcon.properties-8-13.test.ts +0 -953
  736. package/src/components/core/Button-Icon/__tests__/ButtonIcon.properties.test.ts +0 -920
  737. package/src/components/core/Button-Icon/__tests__/ButtonIcon.stemma.test.ts +0 -622
  738. package/src/components/core/Button-Icon/__tests__/ButtonIcon.unit.test.ts +0 -560
  739. package/src/components/core/Button-Icon/__tests__/setup.test.ts +0 -361
  740. package/src/components/core/Button-Icon/__tests__/test-utils.ts +0 -248
  741. package/src/components/core/Button-Icon/buttonIcon.tokens.ts +0 -218
  742. package/src/components/core/Button-Icon/platforms/web/.gitkeep +0 -4
  743. package/src/components/core/Button-Icon/platforms/web/ButtonIcon.web.css +0 -600
  744. package/src/components/core/Button-Icon/platforms/web/ButtonIcon.web.ts +0 -625
  745. package/src/components/core/Button-Icon/types.ts +0 -186
  746. package/src/components/core/Button-VerticalList-Item/Button-VerticalList-Item.tokens.ts +0 -112
  747. package/src/components/core/Button-VerticalList-Item/README.md +0 -450
  748. package/src/components/core/Button-VerticalList-Item/__tests__/.gitkeep +0 -2
  749. package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.alignment.test.ts +0 -271
  750. package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.failLoudly.test.ts +0 -106
  751. package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.integration.test.ts +0 -480
  752. package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.properties.test.ts +0 -634
  753. package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.unit.test.ts +0 -746
  754. package/src/components/core/Button-VerticalList-Item/__tests__/rtlSupport.test.ts +0 -206
  755. package/src/components/core/Button-VerticalList-Item/__tests__/test-utils.ts +0 -297
  756. package/src/components/core/Button-VerticalList-Item/__tests__/visualStateMapping.test.ts +0 -419
  757. package/src/components/core/Button-VerticalList-Item/index.ts +0 -49
  758. package/src/components/core/Button-VerticalList-Item/platforms/android/VerticalListButtonItemTest.kt +0 -1109
  759. package/src/components/core/Button-VerticalList-Item/platforms/ios/.gitkeep +0 -2
  760. package/src/components/core/Button-VerticalList-Item/platforms/ios/VerticalListButtonItemTests.swift +0 -794
  761. package/src/components/core/Button-VerticalList-Item/platforms/web/.gitkeep +0 -2
  762. package/src/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.styles.css +0 -459
  763. package/src/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.ts +0 -1030
  764. package/src/components/core/Button-VerticalList-Item/platforms/web/visualStateMapping.ts +0 -411
  765. package/src/components/core/Button-VerticalList-Item/types.ts +0 -338
  766. package/src/components/core/Button-VerticalList-Set/README.md +0 -578
  767. package/src/components/core/Button-VerticalList-Set/__tests__/.gitkeep +0 -5
  768. package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.integration.test.ts +0 -676
  769. package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.property.test.ts +0 -786
  770. package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.property2.test.ts +0 -1109
  771. package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.unit.test.ts +0 -924
  772. package/src/components/core/Button-VerticalList-Set/__tests__/animationTiming.test.ts +0 -182
  773. package/src/components/core/Button-VerticalList-Set/__tests__/crossPlatformConsistency.test.ts +0 -685
  774. package/src/components/core/Button-VerticalList-Set/__tests__/deriveItemStates.test.ts +0 -179
  775. package/src/components/core/Button-VerticalList-Set/__tests__/validation.test.ts +0 -275
  776. package/src/components/core/Button-VerticalList-Set/index.ts +0 -32
  777. package/src/components/core/Button-VerticalList-Set/platforms/android/ButtonVerticalListSetTest.kt +0 -961
  778. package/src/components/core/Button-VerticalList-Set/platforms/ios/.gitkeep +0 -0
  779. package/src/components/core/Button-VerticalList-Set/platforms/ios/ButtonVerticalListSetTests.swift +0 -475
  780. package/src/components/core/Button-VerticalList-Set/platforms/web/.gitkeep +0 -4
  781. package/src/components/core/Button-VerticalList-Set/platforms/web/Button-VerticalList-Set.styles.css +0 -167
  782. package/src/components/core/Button-VerticalList-Set/platforms/web/ButtonVerticalListSet.web.ts +0 -1446
  783. package/src/components/core/Button-VerticalList-Set/types.ts +0 -788
  784. package/src/components/core/Chip-Base/__tests__/ChipBase.test.ts +0 -534
  785. package/src/components/core/Chip-Base/index.ts +0 -40
  786. package/src/components/core/Chip-Base/platforms/ios/.gitkeep +0 -3
  787. package/src/components/core/Chip-Base/platforms/web/.gitkeep +0 -5
  788. package/src/components/core/Chip-Base/platforms/web/ChipBase.styles.css +0 -280
  789. package/src/components/core/Chip-Base/platforms/web/ChipBase.web.ts +0 -480
  790. package/src/components/core/Chip-Base/types.ts +0 -189
  791. package/src/components/core/Chip-Filter/__tests__/ChipFilter.test.ts +0 -592
  792. package/src/components/core/Chip-Filter/index.ts +0 -34
  793. package/src/components/core/Chip-Filter/platforms/web/ChipFilter.styles.css +0 -105
  794. package/src/components/core/Chip-Filter/platforms/web/ChipFilter.web.ts +0 -539
  795. package/src/components/core/Chip-Filter/types.ts +0 -47
  796. package/src/components/core/Chip-Input/__tests__/ChipInput.test.ts +0 -472
  797. package/src/components/core/Chip-Input/index.ts +0 -35
  798. package/src/components/core/Chip-Input/platforms/ios/.gitkeep +0 -3
  799. package/src/components/core/Chip-Input/platforms/web/ChipInput.styles.css +0 -99
  800. package/src/components/core/Chip-Input/platforms/web/ChipInput.web.ts +0 -485
  801. package/src/components/core/Chip-Input/types.ts +0 -35
  802. package/src/components/core/Container-Base/README.md +0 -450
  803. package/src/components/core/Container-Base/__tests__/ContainerBase.test.ts +0 -712
  804. package/src/components/core/Container-Base/index.ts +0 -47
  805. package/src/components/core/Container-Base/platforms/web/ContainerBase.web.ts +0 -405
  806. package/src/components/core/Container-Base/platforms/web/styles.css +0 -198
  807. package/src/components/core/Container-Base/platforms/web/token-mapping.ts +0 -573
  808. package/src/components/core/Container-Base/tokens.ts +0 -241
  809. package/src/components/core/Container-Base/types.ts +0 -307
  810. package/src/components/core/Container-Card-Base/README.md +0 -506
  811. package/src/components/core/Container-Card-Base/__tests__/ContainerCardBase.composition.test.ts +0 -167
  812. package/src/components/core/Container-Card-Base/__tests__/ContainerCardBase.test.ts +0 -646
  813. package/src/components/core/Container-Card-Base/index.ts +0 -64
  814. package/src/components/core/Container-Card-Base/platforms/web/ContainerCardBase.web.ts +0 -373
  815. package/src/components/core/Container-Card-Base/tokens.ts +0 -224
  816. package/src/components/core/Container-Card-Base/types.ts +0 -332
  817. package/src/components/core/Icon-Base/README.md +0 -168
  818. package/src/components/core/Icon-Base/__tests__/IconBase.test.ts +0 -192
  819. package/src/components/core/Icon-Base/index.ts +0 -34
  820. package/src/components/core/Icon-Base/platforms/ios/ASSET_CATALOG_SETUP.md +0 -239
  821. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Contents.json +0 -6
  822. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/Contents.json +0 -9
  823. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/alert-circle.imageset/Contents.json +0 -15
  824. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/alert-circle.imageset/alert-circle.svg +0 -1
  825. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-down.imageset/Contents.json +0 -15
  826. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-down.imageset/arrow-down.svg +0 -1
  827. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-left.imageset/Contents.json +0 -15
  828. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-left.imageset/arrow-left.svg +0 -1
  829. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-right.imageset/Contents.json +0 -15
  830. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-right.imageset/arrow-right.svg +0 -1
  831. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-up.imageset/Contents.json +0 -15
  832. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-up.imageset/arrow-up.svg +0 -1
  833. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/award.imageset/Contents.json +0 -15
  834. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/award.imageset/award.svg +0 -1
  835. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/bell.imageset/Contents.json +0 -15
  836. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/bell.imageset/bell.svg +0 -1
  837. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/briefcase.imageset/Contents.json +0 -15
  838. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/briefcase.imageset/briefcase.svg +0 -1
  839. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/calendar.imageset/Contents.json +0 -15
  840. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/calendar.imageset/calendar.svg +0 -1
  841. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check-circle.imageset/Contents.json +0 -15
  842. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check-circle.imageset/check-circle.svg +0 -1
  843. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check.imageset/Contents.json +0 -15
  844. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check.imageset/check.svg +0 -1
  845. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-down.imageset/Contents.json +0 -15
  846. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-down.imageset/chevron-down.svg +0 -1
  847. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-left.imageset/Contents.json +0 -15
  848. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-left.imageset/chevron-left.svg +0 -1
  849. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-right.imageset/Contents.json +0 -15
  850. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-right.imageset/chevron-right.svg +0 -1
  851. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/circle.imageset/Contents.json +0 -15
  852. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/circle.imageset/circle.svg +0 -1
  853. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/clock.imageset/Contents.json +0 -15
  854. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/clock.imageset/clock.svg +0 -1
  855. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/credit-card.imageset/Contents.json +0 -15
  856. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/credit-card.imageset/credit-card.svg +0 -1
  857. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/dollar-sign.imageset/Contents.json +0 -15
  858. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/dollar-sign.imageset/dollar-sign.svg +0 -1
  859. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/external-link.imageset/Contents.json +0 -15
  860. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/external-link.imageset/external-link.svg +0 -1
  861. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye-off.imageset/Contents.json +0 -15
  862. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye-off.imageset/eye-off.svg +0 -1
  863. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye.imageset/Contents.json +0 -15
  864. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye.imageset/eye.svg +0 -1
  865. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/file-text.imageset/Contents.json +0 -15
  866. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/file-text.imageset/file-text.svg +0 -1
  867. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/filter.imageset/Contents.json +0 -15
  868. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/filter.imageset/filter.svg +0 -1
  869. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/globe.imageset/Contents.json +0 -15
  870. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/globe.imageset/globe.svg +0 -1
  871. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/heart.imageset/Contents.json +0 -15
  872. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/heart.imageset/heart.svg +0 -1
  873. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/info.imageset/Contents.json +0 -15
  874. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/info.imageset/info.svg +0 -1
  875. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/mail.imageset/Contents.json +0 -15
  876. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/mail.imageset/mail.svg +0 -1
  877. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/map-pin.imageset/Contents.json +0 -15
  878. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/map-pin.imageset/map-pin.svg +0 -1
  879. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/minus.imageset/Contents.json +0 -15
  880. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/minus.imageset/minus.svg +0 -1
  881. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-horizontal.imageset/Contents.json +0 -15
  882. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-horizontal.imageset/more-horizontal.svg +0 -1
  883. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-vertical.imageset/Contents.json +0 -15
  884. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-vertical.imageset/more-vertical.svg +0 -1
  885. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/phone.imageset/Contents.json +0 -15
  886. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/phone.imageset/phone.svg +0 -1
  887. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/plus.imageset/Contents.json +0 -15
  888. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/plus.imageset/plus.svg +0 -1
  889. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/refresh-cw.imageset/Contents.json +0 -15
  890. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/refresh-cw.imageset/refresh-cw.svg +0 -1
  891. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/save.imageset/Contents.json +0 -15
  892. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/save.imageset/save.svg +0 -1
  893. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/search.imageset/Contents.json +0 -15
  894. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/search.imageset/search.svg +0 -1
  895. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/settings.imageset/Contents.json +0 -15
  896. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/settings.imageset/settings.svg +0 -1
  897. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share-2.imageset/Contents.json +0 -15
  898. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share-2.imageset/share-2.svg +0 -1
  899. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share.imageset/Contents.json +0 -15
  900. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share.imageset/share.svg +0 -1
  901. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/shield.imageset/Contents.json +0 -15
  902. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/shield.imageset/shield.svg +0 -1
  903. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smartphone.imageset/Contents.json +0 -15
  904. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smartphone.imageset/smartphone.svg +0 -1
  905. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smile.imageset/Contents.json +0 -15
  906. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smile.imageset/smile.svg +0 -1
  907. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/star.imageset/Contents.json +0 -15
  908. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/star.imageset/star.svg +0 -1
  909. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/trending-up.imageset/Contents.json +0 -15
  910. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/trending-up.imageset/trending-up.svg +0 -1
  911. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-check.imageset/Contents.json +0 -15
  912. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-check.imageset/user-check.svg +0 -1
  913. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-x.imageset/Contents.json +0 -15
  914. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-x.imageset/user-x.svg +0 -1
  915. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user.imageset/Contents.json +0 -15
  916. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user.imageset/user.svg +0 -1
  917. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/users.imageset/Contents.json +0 -15
  918. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/users.imageset/users.svg +0 -1
  919. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/wifi.imageset/Contents.json +0 -15
  920. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/wifi.imageset/wifi.svg +0 -1
  921. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/x.imageset/Contents.json +0 -15
  922. package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/x.imageset/x.svg +0 -1
  923. package/src/components/core/Icon-Base/platforms/web/IconBase.web.ts +0 -553
  924. package/src/components/core/Icon-Base/platforms/web/assets/alert-circle.svg +0 -1
  925. package/src/components/core/Icon-Base/platforms/web/assets/arrow-down.svg +0 -1
  926. package/src/components/core/Icon-Base/platforms/web/assets/arrow-left.svg +0 -1
  927. package/src/components/core/Icon-Base/platforms/web/assets/arrow-right.svg +0 -1
  928. package/src/components/core/Icon-Base/platforms/web/assets/arrow-up.svg +0 -1
  929. package/src/components/core/Icon-Base/platforms/web/assets/award.svg +0 -1
  930. package/src/components/core/Icon-Base/platforms/web/assets/bell.svg +0 -1
  931. package/src/components/core/Icon-Base/platforms/web/assets/briefcase.svg +0 -1
  932. package/src/components/core/Icon-Base/platforms/web/assets/calendar.svg +0 -1
  933. package/src/components/core/Icon-Base/platforms/web/assets/check-circle.svg +0 -1
  934. package/src/components/core/Icon-Base/platforms/web/assets/check.svg +0 -1
  935. package/src/components/core/Icon-Base/platforms/web/assets/chevron-down.svg +0 -1
  936. package/src/components/core/Icon-Base/platforms/web/assets/chevron-left.svg +0 -1
  937. package/src/components/core/Icon-Base/platforms/web/assets/chevron-right.svg +0 -1
  938. package/src/components/core/Icon-Base/platforms/web/assets/circle.svg +0 -1
  939. package/src/components/core/Icon-Base/platforms/web/assets/clock.svg +0 -1
  940. package/src/components/core/Icon-Base/platforms/web/assets/credit-card.svg +0 -1
  941. package/src/components/core/Icon-Base/platforms/web/assets/dollar-sign.svg +0 -1
  942. package/src/components/core/Icon-Base/platforms/web/assets/external-link.svg +0 -1
  943. package/src/components/core/Icon-Base/platforms/web/assets/eye-off.svg +0 -1
  944. package/src/components/core/Icon-Base/platforms/web/assets/eye.svg +0 -1
  945. package/src/components/core/Icon-Base/platforms/web/assets/file-text.svg +0 -1
  946. package/src/components/core/Icon-Base/platforms/web/assets/filter.svg +0 -1
  947. package/src/components/core/Icon-Base/platforms/web/assets/globe.svg +0 -1
  948. package/src/components/core/Icon-Base/platforms/web/assets/heart.svg +0 -1
  949. package/src/components/core/Icon-Base/platforms/web/assets/info.svg +0 -1
  950. package/src/components/core/Icon-Base/platforms/web/assets/mail.svg +0 -1
  951. package/src/components/core/Icon-Base/platforms/web/assets/map-pin.svg +0 -1
  952. package/src/components/core/Icon-Base/platforms/web/assets/minus.svg +0 -1
  953. package/src/components/core/Icon-Base/platforms/web/assets/more-horizontal.svg +0 -1
  954. package/src/components/core/Icon-Base/platforms/web/assets/more-vertical.svg +0 -1
  955. package/src/components/core/Icon-Base/platforms/web/assets/phone.svg +0 -1
  956. package/src/components/core/Icon-Base/platforms/web/assets/plus.svg +0 -1
  957. package/src/components/core/Icon-Base/platforms/web/assets/refresh-cw.svg +0 -1
  958. package/src/components/core/Icon-Base/platforms/web/assets/save.svg +0 -1
  959. package/src/components/core/Icon-Base/platforms/web/assets/search.svg +0 -1
  960. package/src/components/core/Icon-Base/platforms/web/assets/settings.svg +0 -1
  961. package/src/components/core/Icon-Base/platforms/web/assets/share-2.svg +0 -1
  962. package/src/components/core/Icon-Base/platforms/web/assets/share.svg +0 -1
  963. package/src/components/core/Icon-Base/platforms/web/assets/shield.svg +0 -1
  964. package/src/components/core/Icon-Base/platforms/web/assets/smartphone.svg +0 -1
  965. package/src/components/core/Icon-Base/platforms/web/assets/smile.svg +0 -1
  966. package/src/components/core/Icon-Base/platforms/web/assets/star.svg +0 -1
  967. package/src/components/core/Icon-Base/platforms/web/assets/trending-up.svg +0 -1
  968. package/src/components/core/Icon-Base/platforms/web/assets/user-check.svg +0 -1
  969. package/src/components/core/Icon-Base/platforms/web/assets/user-x.svg +0 -1
  970. package/src/components/core/Icon-Base/platforms/web/assets/user.svg +0 -1
  971. package/src/components/core/Icon-Base/platforms/web/assets/users.svg +0 -1
  972. package/src/components/core/Icon-Base/platforms/web/assets/wifi.svg +0 -1
  973. package/src/components/core/Icon-Base/platforms/web/assets/x.svg +0 -1
  974. package/src/components/core/Icon-Base/platforms/web/styles.css +0 -203
  975. package/src/components/core/Icon-Base/types.ts +0 -338
  976. package/src/components/core/Input-Checkbox-Base/README.md +0 -390
  977. package/src/components/core/Input-Checkbox-Base/__tests__/InputCheckboxBase.stemma.test.ts +0 -552
  978. package/src/components/core/Input-Checkbox-Base/__tests__/InputCheckboxBase.test.ts +0 -878
  979. package/src/components/core/Input-Checkbox-Base/checkbox-sizing.tokens.ts +0 -37
  980. package/src/components/core/Input-Checkbox-Base/platforms/web/InputCheckboxBase.web.css +0 -477
  981. package/src/components/core/Input-Checkbox-Base/platforms/web/InputCheckboxBase.web.ts +0 -561
  982. package/src/components/core/Input-Checkbox-Base/types.ts +0 -399
  983. package/src/components/core/Input-Checkbox-Legal/README.md +0 -554
  984. package/src/components/core/Input-Checkbox-Legal/__tests__/InputCheckboxLegal.test.ts +0 -727
  985. package/src/components/core/Input-Checkbox-Legal/platforms/ios/.gitkeep +0 -2
  986. package/src/components/core/Input-Checkbox-Legal/platforms/web/InputCheckboxLegal.web.css +0 -112
  987. package/src/components/core/Input-Checkbox-Legal/platforms/web/InputCheckboxLegal.web.ts +0 -505
  988. package/src/components/core/Input-Checkbox-Legal/types.ts +0 -348
  989. package/src/components/core/Input-Radio-Base/.gitkeep +0 -2
  990. package/src/components/core/Input-Radio-Base/README.md +0 -427
  991. package/src/components/core/Input-Radio-Base/__tests__/.gitkeep +0 -1
  992. package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.form.test.ts +0 -299
  993. package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.stemma.test.ts +0 -543
  994. package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.test.ts +0 -429
  995. package/src/components/core/Input-Radio-Base/platforms/ios/.gitkeep +0 -1
  996. package/src/components/core/Input-Radio-Base/platforms/web/.gitkeep +0 -1
  997. package/src/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.css +0 -504
  998. package/src/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.ts +0 -648
  999. package/src/components/core/Input-Radio-Base/radio-sizing.tokens.ts +0 -37
  1000. package/src/components/core/Input-Radio-Base/types.ts +0 -362
  1001. package/src/components/core/Input-Radio-Set/README.md +0 -373
  1002. package/src/components/core/Input-Radio-Set/__tests__/.gitkeep +0 -0
  1003. package/src/components/core/Input-Radio-Set/__tests__/InputRadioSet.stemma.test.ts +0 -493
  1004. package/src/components/core/Input-Radio-Set/__tests__/InputRadioSet.test.ts +0 -499
  1005. package/src/components/core/Input-Radio-Set/platforms/web/InputRadioSet.web.css +0 -99
  1006. package/src/components/core/Input-Radio-Set/platforms/web/InputRadioSet.web.ts +0 -790
  1007. package/src/components/core/Input-Radio-Set/types.ts +0 -301
  1008. package/src/components/core/Input-Text-Base/README.md +0 -258
  1009. package/src/components/core/Input-Text-Base/__tests__/focusIndicators.test.ts +0 -311
  1010. package/src/components/core/Input-Text-Base/__tests__/keyboardNavigation.test.ts +0 -444
  1011. package/src/components/core/Input-Text-Base/__tests__/labelAssociation.test.ts +0 -418
  1012. package/src/components/core/Input-Text-Base/__tests__/screenReaderSupport.test.ts +0 -405
  1013. package/src/components/core/Input-Text-Base/__tests__/setup.ts +0 -17
  1014. package/src/components/core/Input-Text-Base/__tests__/stateManagement.test.ts +0 -718
  1015. package/src/components/core/Input-Text-Base/__tests__/test-utils.ts +0 -81
  1016. package/src/components/core/Input-Text-Base/__tests__/touchTargetSizing.test.ts +0 -319
  1017. package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.ts +0 -241
  1018. package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.web.css +0 -293
  1019. package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.web.ts +0 -448
  1020. package/src/components/core/Input-Text-Base/stateManagement.ts +0 -267
  1021. package/src/components/core/Input-Text-Base/tokens.ts +0 -210
  1022. package/src/components/core/Input-Text-Base/types.ts +0 -114
  1023. package/src/components/core/Input-Text-Email/README.md +0 -252
  1024. package/src/components/core/Input-Text-Email/__tests__/validation.test.ts +0 -127
  1025. package/src/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.ts +0 -276
  1026. package/src/components/core/Input-Text-Email/platforms/web/InputTextEmail.web.ts +0 -319
  1027. package/src/components/core/Input-Text-Email/stateManagement.ts +0 -160
  1028. package/src/components/core/Input-Text-Email/tokens.ts +0 -33
  1029. package/src/components/core/Input-Text-Email/types.ts +0 -72
  1030. package/src/components/core/Input-Text-Email/validation.ts +0 -130
  1031. package/src/components/core/Input-Text-Password/README.md +0 -360
  1032. package/src/components/core/Input-Text-Password/__tests__/validation.test.ts +0 -362
  1033. package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.ts +0 -434
  1034. package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.ts +0 -512
  1035. package/src/components/core/Input-Text-Password/stateManagement.ts +0 -244
  1036. package/src/components/core/Input-Text-Password/tokens.ts +0 -32
  1037. package/src/components/core/Input-Text-Password/types.ts +0 -177
  1038. package/src/components/core/Input-Text-Password/validation.ts +0 -207
  1039. package/src/components/core/Input-Text-PhoneNumber/README.md +0 -276
  1040. package/src/components/core/Input-Text-PhoneNumber/__tests__/validation.test.ts +0 -301
  1041. package/src/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.ts +0 -370
  1042. package/src/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.web.ts +0 -393
  1043. package/src/components/core/Input-Text-PhoneNumber/stateManagement.ts +0 -250
  1044. package/src/components/core/Input-Text-PhoneNumber/tokens.ts +0 -33
  1045. package/src/components/core/Input-Text-PhoneNumber/types.ts +0 -135
  1046. package/src/components/core/Input-Text-PhoneNumber/validation.ts +0 -302
  1047. package/src/components/core/Nav-Header-App/README.md +0 -29
  1048. package/src/components/core/Nav-Header-App/index.ts +0 -5
  1049. package/src/components/core/Nav-Header-App/platforms/web/NavHeaderApp.web.ts +0 -37
  1050. package/src/components/core/Nav-Header-App/types.ts +0 -32
  1051. package/src/components/core/Nav-Header-Base/README.md +0 -21
  1052. package/src/components/core/Nav-Header-Base/index.ts +0 -12
  1053. package/src/components/core/Nav-Header-Base/platforms/web/NavHeaderBase.styles.css +0 -75
  1054. package/src/components/core/Nav-Header-Base/platforms/web/NavHeaderBase.web.ts +0 -120
  1055. package/src/components/core/Nav-Header-Base/types.ts +0 -63
  1056. package/src/components/core/Nav-Header-Page/README.md +0 -34
  1057. package/src/components/core/Nav-Header-Page/__tests__/NavHeaderPage.test.ts +0 -250
  1058. package/src/components/core/Nav-Header-Page/index.ts +0 -12
  1059. package/src/components/core/Nav-Header-Page/platforms/web/NavHeaderPage.styles.css +0 -90
  1060. package/src/components/core/Nav-Header-Page/platforms/web/NavHeaderPage.web.ts +0 -169
  1061. package/src/components/core/Nav-Header-Page/types.ts +0 -55
  1062. package/src/components/core/Nav-SegmentedChoice-Base/README.md +0 -327
  1063. package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.android.test.ts +0 -218
  1064. package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.interaction.test.ts +0 -419
  1065. package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.ios.test.ts +0 -207
  1066. package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.visual.test.ts +0 -371
  1067. package/src/components/core/Nav-SegmentedChoice-Base/index.ts +0 -38
  1068. package/src/components/core/Nav-SegmentedChoice-Base/platforms/web/NavSegmentedChoiceBase.styles.css +0 -160
  1069. package/src/components/core/Nav-SegmentedChoice-Base/platforms/web/NavSegmentedChoiceBase.web.ts +0 -477
  1070. package/src/components/core/Nav-SegmentedChoice-Base/types.ts +0 -65
  1071. package/src/components/core/Nav-TabBar-Base/README.md +0 -264
  1072. package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.android.test.ts +0 -270
  1073. package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.ios.test.ts +0 -221
  1074. package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.test.ts +0 -421
  1075. package/src/components/core/Nav-TabBar-Base/examples/BasicUsage.html +0 -2
  1076. package/src/components/core/Nav-TabBar-Base/examples/BasicUsage.tsx +0 -2
  1077. package/src/components/core/Nav-TabBar-Base/index.ts +0 -20
  1078. package/src/components/core/Nav-TabBar-Base/platforms/web/NavTabBarBase.styles.css +0 -281
  1079. package/src/components/core/Nav-TabBar-Base/platforms/web/NavTabBarBase.web.ts +0 -420
  1080. package/src/components/core/Nav-TabBar-Base/types.ts +0 -43
  1081. package/src/components/core/Progress-Bar-Base/README.md +0 -31
  1082. package/src/components/core/Progress-Bar-Base/__tests__/ProgressBarBase.test.ts +0 -202
  1083. package/src/components/core/Progress-Bar-Base/index.ts +0 -6
  1084. package/src/components/core/Progress-Bar-Base/platforms/web/ProgressBarBase.styles.css +0 -52
  1085. package/src/components/core/Progress-Bar-Base/platforms/web/ProgressBarBase.web.ts +0 -135
  1086. package/src/components/core/Progress-Bar-Base/types.ts +0 -46
  1087. package/src/components/core/Progress-Indicator-Connector-Base/README.md +0 -169
  1088. package/src/components/core/Progress-Indicator-Connector-Base/index.ts +0 -33
  1089. package/src/components/core/Progress-Indicator-Connector-Base/platforms/web/ProgressIndicatorConnectorBase.styles.css +0 -50
  1090. package/src/components/core/Progress-Indicator-Connector-Base/platforms/web/ProgressIndicatorConnectorBase.web.ts +0 -141
  1091. package/src/components/core/Progress-Indicator-Connector-Base/types.ts +0 -67
  1092. package/src/components/core/Progress-Indicator-Label-Base/README.md +0 -191
  1093. package/src/components/core/Progress-Indicator-Label-Base/index.ts +0 -28
  1094. package/src/components/core/Progress-Indicator-Label-Base/platforms/web/ProgressIndicatorLabelBase.styles.css +0 -81
  1095. package/src/components/core/Progress-Indicator-Label-Base/platforms/web/ProgressIndicatorLabelBase.web.ts +0 -174
  1096. package/src/components/core/Progress-Indicator-Label-Base/types.ts +0 -64
  1097. package/src/components/core/Progress-Indicator-Node-Base/README.md +0 -206
  1098. package/src/components/core/Progress-Indicator-Node-Base/__tests__/VisualStates.test.ts +0 -259
  1099. package/src/components/core/Progress-Indicator-Node-Base/index.ts +0 -36
  1100. package/src/components/core/Progress-Indicator-Node-Base/platforms/web/ProgressIndicatorNodeBase.styles.css +0 -193
  1101. package/src/components/core/Progress-Indicator-Node-Base/platforms/web/ProgressIndicatorNodeBase.web.ts +0 -226
  1102. package/src/components/core/Progress-Indicator-Node-Base/types.ts +0 -142
  1103. package/src/components/core/Progress-Pagination-Base/README.md +0 -290
  1104. package/src/components/core/Progress-Pagination-Base/__tests__/PaginationBase.test.ts +0 -290
  1105. package/src/components/core/Progress-Pagination-Base/index.ts +0 -40
  1106. package/src/components/core/Progress-Pagination-Base/platforms/web/ProgressPaginationBase.styles.css +0 -80
  1107. package/src/components/core/Progress-Pagination-Base/platforms/web/ProgressPaginationBase.web.ts +0 -293
  1108. package/src/components/core/Progress-Pagination-Base/types.ts +0 -112
  1109. package/src/components/core/Progress-Stepper-Base/README.md +0 -311
  1110. package/src/components/core/Progress-Stepper-Base/__tests__/StepperBase.test.ts +0 -345
  1111. package/src/components/core/Progress-Stepper-Base/index.ts +0 -43
  1112. package/src/components/core/Progress-Stepper-Base/platforms/web/ProgressStepperBase.styles.css +0 -49
  1113. package/src/components/core/Progress-Stepper-Base/platforms/web/ProgressStepperBase.web.ts +0 -288
  1114. package/src/components/core/Progress-Stepper-Base/types.ts +0 -175
  1115. package/src/components/core/Progress-Stepper-Detailed/README.md +0 -401
  1116. package/src/components/core/Progress-Stepper-Detailed/__tests__/StepperDetailed.test.ts +0 -481
  1117. package/src/components/core/Progress-Stepper-Detailed/index.ts +0 -48
  1118. package/src/components/core/Progress-Stepper-Detailed/platforms/web/ProgressStepperDetailed.styles.css +0 -106
  1119. package/src/components/core/Progress-Stepper-Detailed/platforms/web/ProgressStepperDetailed.web.ts +0 -336
  1120. package/src/components/core/Progress-Stepper-Detailed/types.ts +0 -195
  1121. package/src/composition/BlendComposition.ts +0 -46
  1122. package/src/composition/BlendCompositionParser.ts +0 -215
  1123. package/src/composition/OpacityComposition.ts +0 -62
  1124. package/src/composition/OpacityCompositionParser.ts +0 -308
  1125. package/src/composition/__tests__/BlendCompositionParser.test.ts +0 -431
  1126. package/src/composition/__tests__/OpacityCompositionParser.test.ts +0 -539
  1127. package/src/composition/index.ts +0 -20
  1128. package/src/config/ConfigLoader.ts +0 -143
  1129. package/src/config/__resolution-matrix__/README.md +0 -76
  1130. package/src/config/__resolution-matrix__/fixtures/faithful-cjs/compiled/defineConfig.js +0 -9
  1131. package/src/config/__resolution-matrix__/fixtures/faithful-cjs/designerpunk.config.ts +0 -20
  1132. package/src/config/__resolution-matrix__/fixtures/faithful-cjs/my-overrides.ts +0 -8
  1133. package/src/config/__resolution-matrix__/fixtures/faithful-esm/compiled/defineConfig.js +0 -11
  1134. package/src/config/__resolution-matrix__/fixtures/faithful-esm/designerpunk.config.ts +0 -23
  1135. package/src/config/__resolution-matrix__/fixtures/faithful-esm/my-overrides.ts +0 -6
  1136. package/src/config/__resolution-matrix__/fixtures/source-dir-cjs/designerpunk.config.ts +0 -11
  1137. package/src/config/__resolution-matrix__/fixtures/source-dir-cjs/src/config/index.ts +0 -15
  1138. package/src/config/__resolution-matrix__/fixtures/source-dir-esm/designerpunk.config.ts +0 -15
  1139. package/src/config/__resolution-matrix__/fixtures/source-dir-esm/src/config/index.ts +0 -13
  1140. package/src/config/__resolution-matrix__/run-matrix.js +0 -107
  1141. package/src/config/__resolution-matrix__/runner.js +0 -153
  1142. package/src/config/__resolution-matrix__/verify-real-loadconfig.js +0 -122
  1143. package/src/config/__tests__/ConfigLoader.test.ts +0 -115
  1144. package/src/config/defineConfig.ts +0 -71
  1145. package/src/config/index.ts +0 -7
  1146. package/src/config/scopedTsRequire.ts +0 -62
  1147. package/src/constants/BaselineGrid.ts +0 -41
  1148. package/src/constants/SpacingTokens.ts +0 -55
  1149. package/src/figma/ComponentAnalysis.ts +0 -292
  1150. package/src/figma/ComponentAnalysisGenerator.ts +0 -444
  1151. package/src/figma/ConsoleMCPClient.ts +0 -168
  1152. package/src/figma/ConsoleMCPClientImpl.ts +0 -1034
  1153. package/src/figma/DesignExtractor.ts +0 -3620
  1154. package/src/figma/TokenSyncWorkflow.ts +0 -915
  1155. package/src/figma/TokenTranslator.ts +0 -891
  1156. package/src/figma/VariantAnalyzer.ts +0 -712
  1157. package/src/figma/__tests__/ComponentAnalysisGenerator.json.test.ts +0 -429
  1158. package/src/figma/__tests__/ComponentAnalysisGenerator.markdown.test.ts +0 -428
  1159. package/src/figma/__tests__/ConsoleMCPClient.bugfix.test.ts +0 -261
  1160. package/src/figma/__tests__/ConsoleMCPClient.preservation.test.ts +0 -395
  1161. package/src/figma/__tests__/ConsoleMCPClient.test.ts +0 -375
  1162. package/src/figma/__tests__/DesignExtractor.boundVariableResolution.test.ts +0 -580
  1163. package/src/figma/__tests__/DesignExtractor.buildNodeTree.test.ts +0 -535
  1164. package/src/figma/__tests__/DesignExtractor.captureComponentScreenshot.test.ts +0 -176
  1165. package/src/figma/__tests__/DesignExtractor.detectBehavioralContracts.test.ts +0 -263
  1166. package/src/figma/__tests__/DesignExtractor.detectComponentTokenDecisions.test.ts +0 -379
  1167. package/src/figma/__tests__/DesignExtractor.detectCompositionPatterns.test.ts +0 -507
  1168. package/src/figma/__tests__/DesignExtractor.detectPlatformParity.test.ts +0 -406
  1169. package/src/figma/__tests__/DesignExtractor.queryContext.test.ts +0 -214
  1170. package/src/figma/__tests__/DesignExtractor.readFigmaComponent.test.ts +0 -431
  1171. package/src/figma/__tests__/DesignExtractor.readStyles.test.ts +0 -204
  1172. package/src/figma/__tests__/DesignExtractor.readTokenBindings.test.ts +0 -268
  1173. package/src/figma/__tests__/DesignExtractor.reconstructCompositeTokens.test.ts +0 -403
  1174. package/src/figma/__tests__/DesignExtractor.resolveUnknownVariableIds.test.ts +0 -259
  1175. package/src/figma/__tests__/DesignExtractor.translateTokens.test.ts +0 -433
  1176. package/src/figma/__tests__/DesignExtractor.validateModes.test.ts +0 -350
  1177. package/src/figma/__tests__/TokenSyncWorkflow.batch.test.ts +0 -277
  1178. package/src/figma/__tests__/TokenSyncWorkflow.drift.test.ts +0 -187
  1179. package/src/figma/__tests__/TokenSyncWorkflow.preservation.test.ts +0 -544
  1180. package/src/figma/__tests__/TokenSyncWorkflow.styles.test.ts +0 -245
  1181. package/src/figma/__tests__/TokenSyncWorkflow.sync.test.ts +0 -217
  1182. package/src/figma/__tests__/TokenTranslator.test.ts +0 -757
  1183. package/src/figma/__tests__/VariantAnalyzer.detectConflicts.test.ts +0 -126
  1184. package/src/figma/__tests__/VariantAnalyzer.test.ts +0 -633
  1185. package/src/figma/__tests__/error-reporting.test.ts +0 -254
  1186. package/src/figma/__tests__/preflight.test.ts +0 -94
  1187. package/src/figma/error-reporting.ts +0 -260
  1188. package/src/figma/index.ts +0 -98
  1189. package/src/figma/portCleanup.ts +0 -86
  1190. package/src/figma/preflight.ts +0 -120
  1191. package/src/generators/BlendUtilityGenerator.ts +0 -847
  1192. package/src/generators/BlendValueGenerator.ts +0 -198
  1193. package/src/generators/DTCGFormatGenerator.ts +0 -1355
  1194. package/src/generators/DTCGGeneratorConfig.ts +0 -46
  1195. package/src/generators/ModeResolvedTokens.ts +0 -58
  1196. package/src/generators/ResponsiveGridGenerator.ts +0 -273
  1197. package/src/generators/TokenFileGenerator.ts +0 -2075
  1198. package/src/generators/__tests__/AccessibilityTokenGeneration.test.ts +0 -350
  1199. package/src/generators/__tests__/BlendUtilityGenerator.test.ts +0 -829
  1200. package/src/generators/__tests__/BlendValueGenerator.test.ts +0 -200
  1201. package/src/generators/__tests__/BreakpointTokenGeneration.test.ts +0 -172
  1202. package/src/generators/__tests__/CSSThemeScoping.test.ts +0 -153
  1203. package/src/generators/__tests__/DTCGConfigOptions.test.ts +0 -271
  1204. package/src/generators/__tests__/DTCGErrorHandling.test.ts +0 -139
  1205. package/src/generators/__tests__/DTCGFormatGenerator.integration.test.ts +0 -346
  1206. package/src/generators/__tests__/DTCGFormatGenerator.property.test.ts +0 -497
  1207. package/src/generators/__tests__/DTCGFormatGenerator.test.ts +0 -469
  1208. package/src/generators/__tests__/FigmaTransformer.styles.test.ts +0 -398
  1209. package/src/generators/__tests__/FigmaTransformer.variables.test.ts +0 -540
  1210. package/src/generators/__tests__/GridSpacingTokenGeneration.test.ts +0 -254
  1211. package/src/generators/__tests__/IconTokenGeneration.test.ts +0 -452
  1212. package/src/generators/__tests__/KotlinThemeTypes.test.ts +0 -110
  1213. package/src/generators/__tests__/ModeAwareGeneration.test.ts +0 -160
  1214. package/src/generators/__tests__/NativeOklchOutput.test.ts +0 -56
  1215. package/src/generators/__tests__/OklchExport.test.ts +0 -71
  1216. package/src/generators/__tests__/ProductRepoSimulation.test.ts +0 -91
  1217. package/src/generators/__tests__/ResponsiveGridGeneration.test.ts +0 -291
  1218. package/src/generators/__tests__/Spec076TokenMigration.test.ts +0 -106
  1219. package/src/generators/__tests__/Spec077ModesVerification.test.ts +0 -52
  1220. package/src/generators/__tests__/SwiftThemeTypes.test.ts +0 -122
  1221. package/src/generators/__tests__/TokenFileGenerator.test.ts +0 -914
  1222. package/src/generators/__tests__/TransformerRegistry.test.ts +0 -118
  1223. package/src/generators/__tests__/WcagValueExportSupport.test.ts +0 -84
  1224. package/src/generators/__tests__/WcagValueInfrastructure.test.ts +0 -122
  1225. package/src/generators/__tests__/WebOklchOutput.test.ts +0 -72
  1226. package/src/generators/__tests__/generateTokenIndex.test.ts +0 -204
  1227. package/src/generators/__tests__/helpers/defaultSemanticOptions.ts +0 -24
  1228. package/src/generators/generateTokenFiles.ts +0 -337
  1229. package/src/generators/generateTokenIndex.ts +0 -258
  1230. package/src/generators/oklch/OklchExportUtils.ts +0 -57
  1231. package/src/generators/oklch/OklchTokenIndexMetadata.ts +0 -30
  1232. package/src/generators/transformers/FigmaTransformer.ts +0 -912
  1233. package/src/generators/transformers/ITokenTransformer.ts +0 -56
  1234. package/src/generators/transformers/TransformerRegistry.ts +0 -63
  1235. package/src/generators/transformers/index.ts +0 -52
  1236. package/src/generators/types/DTCGTypes.ts +0 -101
  1237. package/src/integration/BuildErrorHandler.ts +0 -440
  1238. package/src/integration/BuildSystemInterface.ts +0 -338
  1239. package/src/integration/PlatformFileSelector.ts +0 -288
  1240. package/src/integration/RegistryCoordinator.ts +0 -404
  1241. package/src/integration/TranslationCoordinator.ts +0 -458
  1242. package/src/integration/TreeShakingOptimizer.ts +0 -350
  1243. package/src/integration/ValidationCoordinator.ts +0 -780
  1244. package/src/integration/__tests__/ComponentTokenValidation.test.ts +0 -762
  1245. package/src/integration/__tests__/ValidationCoordinator.test.ts +0 -609
  1246. package/src/integration/__tests__/performance/ComponentTokenValidationPerformance.test.ts +0 -161
  1247. package/src/integration/index.ts +0 -55
  1248. package/src/naming/NamingConventionManager.ts +0 -318
  1249. package/src/naming/PlatformNamingRules.ts +0 -278
  1250. package/src/naming/__tests__/NamingConventions.test.ts +0 -224
  1251. package/src/naming/index.ts +0 -23
  1252. package/src/parent-completion.md +0 -1
  1253. package/src/performance/CachingStrategy.ts +0 -426
  1254. package/src/performance/FileGenerationOptimizer.ts +0 -294
  1255. package/src/performance/PerformanceMonitor.ts +0 -185
  1256. package/src/performance/PerformanceOptimizer.ts +0 -348
  1257. package/src/performance/index.ts +0 -30
  1258. package/src/providers/AndroidFileOrganizer.ts +0 -241
  1259. package/src/providers/AndroidFormatGenerator.ts +0 -750
  1260. package/src/providers/AndroidUnitConverter.ts +0 -177
  1261. package/src/providers/FormatProvider.ts +0 -187
  1262. package/src/providers/PathProvider.ts +0 -197
  1263. package/src/providers/UnitProvider.ts +0 -106
  1264. package/src/providers/WebFileOrganizer.ts +0 -121
  1265. package/src/providers/WebFormatGenerator.ts +0 -611
  1266. package/src/providers/WebUnitConverter.ts +0 -116
  1267. package/src/providers/__tests__/AndroidAccessibilityTokens.test.ts +0 -86
  1268. package/src/providers/__tests__/AndroidFormatGenerator-semantic.test.ts +0 -494
  1269. package/src/providers/__tests__/FormatProviders.test.ts +0 -828
  1270. package/src/providers/__tests__/InsetTokenGeneration.test.ts +0 -627
  1271. package/src/providers/__tests__/PathProviders.test.ts +0 -512
  1272. package/src/providers/__tests__/PlatformOutputFormat.test.ts +0 -252
  1273. package/src/providers/__tests__/UnitProviders.test.ts +0 -721
  1274. package/src/providers/__tests__/WebFormatGenerator-semantic.test.ts +0 -293
  1275. package/src/providers/__tests__/iOSFormatGenerator-semantic.test.ts +0 -410
  1276. package/src/providers/iOSFileOrganizer.ts +0 -162
  1277. package/src/providers/iOSFormatGenerator.ts +0 -599
  1278. package/src/providers/iOSUnitConverter.ts +0 -125
  1279. package/src/providers/index.ts +0 -26
  1280. package/src/registries/ComponentTokenRegistry.ts +0 -292
  1281. package/src/registries/IRegistry.ts +0 -170
  1282. package/src/registries/__tests__/ComponentTokenRegistry.test.ts +0 -446
  1283. package/src/registries/__tests__/IRegistry.test.ts +0 -250
  1284. package/src/registries/__tests__/PrimitiveTokenRegistry.test.ts +0 -342
  1285. package/src/registries/__tests__/SemanticTokenRegistry.test.ts +0 -444
  1286. package/src/resolvers/AndroidColorResolver.ts +0 -333
  1287. package/src/resolvers/ModeThemeResolver.ts +0 -152
  1288. package/src/resolvers/SemanticOverrideResolver.ts +0 -155
  1289. package/src/resolvers/SemanticValueResolver.ts +0 -133
  1290. package/src/resolvers/WebColorResolver.ts +0 -240
  1291. package/src/resolvers/__tests__/AndroidColorResolver.test.ts +0 -507
  1292. package/src/resolvers/__tests__/ModeThemeResolver.test.ts +0 -411
  1293. package/src/resolvers/__tests__/SemanticOverrideResolver.test.ts +0 -186
  1294. package/src/resolvers/__tests__/WebColorResolver.test.ts +0 -405
  1295. package/src/resolvers/__tests__/iOSColorResolver.test.ts +0 -432
  1296. package/src/resolvers/iOSColorResolver.ts +0 -224
  1297. package/src/resolvers/index.ts +0 -11
  1298. package/src/security/AIAgentRestrictions.ts +0 -298
  1299. package/src/security/ContaminationAuditor.ts +0 -393
  1300. package/src/security/ContaminationPrevention.ts +0 -275
  1301. package/src/security/DocumentationGuard.ts +0 -258
  1302. package/src/security/FlexibilityTokenGuard.ts +0 -256
  1303. package/src/security/HumanApprovalWorkflow.ts +0 -319
  1304. package/src/security/__tests__/AIAgentRestrictions.test.ts +0 -482
  1305. package/src/security/__tests__/ContaminationPrevention.test.ts +0 -424
  1306. package/src/security/__tests__/SecurityIntegration.test.ts +0 -505
  1307. package/src/security/index.ts +0 -48
  1308. package/src/testing/__tests__/utilities.test.ts +0 -175
  1309. package/src/testing/index.ts +0 -154
  1310. package/src/testing/jest-preset.ts +0 -62
  1311. package/src/testing/style-mock.ts +0 -7
  1312. package/src/testing/validators.ts +0 -10
  1313. package/src/themes/ResolvedThemeSet.ts +0 -22
  1314. package/src/themes/ThemeRegistry.ts +0 -97
  1315. package/src/themes/__tests__/ThemeRegistry.test.ts +0 -162
  1316. package/src/tools/ThemeFileGenerator.ts +0 -109
  1317. package/src/tools/integrity/DiskFreshGenerator.ts +0 -36
  1318. package/src/tools/integrity/GenerationIntegrityCheck.ts +0 -132
  1319. package/src/tools/integrity/Invariants.ts +0 -228
  1320. package/src/tools/integrity/Normalizer.ts +0 -94
  1321. package/src/tools/integrity/SemanticComparator.ts +0 -127
  1322. package/src/tools/integrity/__tests__/GenerationIntegrityCheck.test.ts +0 -132
  1323. package/src/tools/integrity/__tests__/Invariants.test.ts +0 -142
  1324. package/src/tools/integrity/__tests__/Normalizer.test.ts +0 -65
  1325. package/src/tools/integrity/__tests__/SemanticComparator.test.ts +0 -62
  1326. package/src/tools/integrity/__tests__/consumer-package-mode.test.ts +0 -205
  1327. package/src/tools/integrity/cli/run-audit.ts +0 -150
  1328. package/src/tools/integrity/inventory.ts +0 -51
  1329. package/src/tools/integrity/manifest.ts +0 -56
  1330. package/src/tools/integrity/types/index.ts +0 -183
  1331. package/src/types/ComponentTypes.ts +0 -76
  1332. package/src/types/TranslationOutput.ts +0 -105
  1333. package/src/types/ValidationResult.ts +0 -74
  1334. package/src/types/__tests__/ComponentTypes.test.ts +0 -73
  1335. package/src/types/css.d.ts +0 -35
  1336. package/src/types/generated/TokenTypes.ts +0 -142
  1337. package/src/types/index.ts +0 -42
  1338. package/src/validators/BaselineGridValidator.ts +0 -119
  1339. package/src/validators/CompositionPatternValidator.ts +0 -259
  1340. package/src/validators/CrossPlatformConsistencyValidator.ts +0 -498
  1341. package/src/validators/ErrorValidator.ts +0 -998
  1342. package/src/validators/IValidator.ts +0 -273
  1343. package/src/validators/MathematicalRelationshipParser.ts +0 -434
  1344. package/src/validators/ModeParity.ts +0 -123
  1345. package/src/validators/PassValidator.ts +0 -533
  1346. package/src/validators/PlatformConstraintHandler.ts +0 -453
  1347. package/src/validators/PrimitiveReferenceValidator.ts +0 -284
  1348. package/src/validators/SemanticTokenValidator.ts +0 -496
  1349. package/src/validators/StemmaComponentNamingValidator.ts +0 -524
  1350. package/src/validators/StemmaErrorGuidanceSystem.ts +0 -1600
  1351. package/src/validators/StemmaPropertyAccessibilityValidator.ts +0 -823
  1352. package/src/validators/StemmaTokenUsageValidator.ts +0 -651
  1353. package/src/validators/SyntaxValidator.ts +0 -537
  1354. package/src/validators/ThreeTierValidator.ts +0 -822
  1355. package/src/validators/ToleranceCalculator.ts +0 -324
  1356. package/src/validators/ValidationReasoning.ts +0 -464
  1357. package/src/validators/WCAGValidator.ts +0 -219
  1358. package/src/validators/WarningValidator.ts +0 -626
  1359. package/src/validators/__tests__/BaselineGridValidator.test.ts +0 -292
  1360. package/src/validators/__tests__/BorderWidthValidation.test.ts +0 -595
  1361. package/src/validators/__tests__/CompositionPatterns.test.ts +0 -463
  1362. package/src/validators/__tests__/CrossPlatformConsistency.test.ts +0 -834
  1363. package/src/validators/__tests__/IValidator.test.ts +0 -258
  1364. package/src/validators/__tests__/MathematicalRelationshipParser.test.ts +0 -465
  1365. package/src/validators/__tests__/PlatformConstraints.test.ts +0 -486
  1366. package/src/validators/__tests__/SemanticTokenValidator.test.ts +0 -723
  1367. package/src/validators/__tests__/StemmaComponentNamingValidator.test.ts +0 -597
  1368. package/src/validators/__tests__/StemmaErrorGuidanceSystem.test.ts +0 -717
  1369. package/src/validators/__tests__/StemmaPropertyAccessibilityValidator.test.ts +0 -349
  1370. package/src/validators/__tests__/StemmaTokenUsageValidator.test.ts +0 -432
  1371. package/src/validators/__tests__/SyntaxValidator.test.ts +0 -360
  1372. package/src/validators/__tests__/ThreeTierValidator.test.ts +0 -906
  1373. package/src/validators/__tests__/ValidationReasoning.test.ts +0 -636
  1374. package/src/validators/__tests__/WCAGValidator.test.ts +0 -243
  1375. package/src/validators/buildValidation.ts +0 -170
  1376. package/src/validators/index.ts +0 -144
  1377. package/src/workflows/ConsistencyValidator.ts +0 -339
  1378. package/src/workflows/TokenGenerationWorkflow.ts +0 -460
  1379. package/src/workflows/ValidationPipeline.ts +0 -284
  1380. package/src/workflows/WorkflowErrorHandler.ts +0 -441
@@ -2982,7 +2982,7 @@ var require_compile = __commonJS({
2982
2982
  const schOrFunc = root.refs[ref];
2983
2983
  if (schOrFunc)
2984
2984
  return schOrFunc;
2985
- let _sch = resolve3.call(this, root, ref);
2985
+ let _sch = resolve5.call(this, root, ref);
2986
2986
  if (_sch === void 0) {
2987
2987
  const schema2 = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref];
2988
2988
  const { schemaId } = this.opts;
@@ -3009,7 +3009,7 @@ var require_compile = __commonJS({
3009
3009
  function sameSchemaEnv(s1, s2) {
3010
3010
  return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId;
3011
3011
  }
3012
- function resolve3(root, ref) {
3012
+ function resolve5(root, ref) {
3013
3013
  let sch;
3014
3014
  while (typeof (sch = this.refs[ref]) == "string")
3015
3015
  ref = sch;
@@ -3227,8 +3227,8 @@ var require_utils = __commonJS({
3227
3227
  }
3228
3228
  return ind;
3229
3229
  }
3230
- function removeDotSegments(path10) {
3231
- let input = path10;
3230
+ function removeDotSegments(path11) {
3231
+ let input = path11;
3232
3232
  const output = [];
3233
3233
  let nextSlash = -1;
3234
3234
  let len = 0;
@@ -3480,8 +3480,8 @@ var require_schemes = __commonJS({
3480
3480
  wsComponent.secure = void 0;
3481
3481
  }
3482
3482
  if (wsComponent.resourceName) {
3483
- const [path10, query] = wsComponent.resourceName.split("?");
3484
- wsComponent.path = path10 && path10 !== "/" ? path10 : void 0;
3483
+ const [path11, query] = wsComponent.resourceName.split("?");
3484
+ wsComponent.path = path11 && path11 !== "/" ? path11 : void 0;
3485
3485
  wsComponent.query = query;
3486
3486
  wsComponent.resourceName = void 0;
3487
3487
  }
@@ -3640,7 +3640,7 @@ var require_fast_uri = __commonJS({
3640
3640
  }
3641
3641
  return uri;
3642
3642
  }
3643
- function resolve3(baseURI, relativeURI, options) {
3643
+ function resolve5(baseURI, relativeURI, options) {
3644
3644
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
3645
3645
  const resolved = resolveComponent(parse3(baseURI, schemelessOptions), parse3(relativeURI, schemelessOptions), schemelessOptions, true);
3646
3646
  schemelessOptions.skipEscape = true;
@@ -3898,7 +3898,7 @@ var require_fast_uri = __commonJS({
3898
3898
  var fastUri = {
3899
3899
  SCHEMES,
3900
3900
  normalize,
3901
- resolve: resolve3,
3901
+ resolve: resolve5,
3902
3902
  resolveComponent,
3903
3903
  equal,
3904
3904
  serialize,
@@ -6874,12 +6874,12 @@ var require_dist = __commonJS({
6874
6874
  throw new Error(`Unknown format "${name}"`);
6875
6875
  return f;
6876
6876
  };
6877
- function addFormats(ajv, list, fs12, exportName) {
6877
+ function addFormats(ajv, list, fs14, exportName) {
6878
6878
  var _a;
6879
6879
  var _b;
6880
6880
  (_a = (_b = ajv.opts.code).formats) !== null && _a !== void 0 ? _a : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").${exportName}`;
6881
6881
  for (const f of list)
6882
- ajv.addFormat(f, fs12[f]);
6882
+ ajv.addFormat(f, fs14[f]);
6883
6883
  }
6884
6884
  module2.exports = exports2 = formatsPlugin;
6885
6885
  Object.defineProperty(exports2, "__esModule", { value: true });
@@ -6923,11 +6923,11 @@ var require_resolvePackageRoot = __commonJS({
6923
6923
  resolvePackageRoot: () => resolvePackageRoot2
6924
6924
  });
6925
6925
  module2.exports = __toCommonJS2(resolvePackageRoot_exports);
6926
- var path10 = __toESM2(require("path"));
6927
- var fs12 = __toESM2(require("fs"));
6926
+ var path11 = __toESM2(require("path"));
6927
+ var fs14 = __toESM2(require("fs"));
6928
6928
  function resolvePackageRoot2(fromDir) {
6929
- const fromCli = path10.resolve(fromDir, "../..");
6930
- if (fs12.existsSync(path10.join(fromCli, "package.json"))) {
6929
+ const fromCli = path11.resolve(fromDir, "../..");
6930
+ if (fs14.existsSync(path11.join(fromCli, "package.json"))) {
6931
6931
  return fromCli;
6932
6932
  }
6933
6933
  console.error(
@@ -6971,51 +6971,452 @@ var require_mcpDataRoots = __commonJS({
6971
6971
  var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
6972
6972
  var mcpDataRoots_exports = {};
6973
6973
  __export2(mcpDataRoots_exports, {
6974
+ resolveComponentRoots: () => resolveComponentRoots,
6974
6975
  resolveConsumerOwnedRoot: () => resolveConsumerOwnedRoot,
6975
6976
  resolvePackageOwnedRoot: () => resolvePackageOwnedRoot,
6976
- resolvePackageRoot: () => import_resolvePackageRoot.resolvePackageRoot
6977
+ resolvePackageRoot: () => import_resolvePackageRoot.resolvePackageRoot,
6978
+ resolveProductRoot: () => resolveProductRoot,
6979
+ resolveTokenIndexRoot: () => resolveTokenIndexRoot
6977
6980
  });
6978
6981
  module2.exports = __toCommonJS2(mcpDataRoots_exports);
6979
- var path10 = __toESM2(require("path"));
6980
- var fs12 = __toESM2(require("fs"));
6982
+ var path11 = __toESM2(require("path"));
6983
+ var fs14 = __toESM2(require("fs"));
6981
6984
  var import_resolvePackageRoot = require_resolvePackageRoot();
6982
6985
  function resolvePackageOwnedRoot(opts) {
6983
6986
  if (opts.envValue) {
6984
- return { path: path10.resolve(opts.envValue), source: "env" };
6987
+ return { path: path11.resolve(opts.envValue), source: "env" };
6985
6988
  }
6986
- return { path: path10.resolve(opts.packageRoot, opts.relPath), source: "package" };
6989
+ return { path: path11.resolve(opts.packageRoot, opts.relPath), source: "package" };
6987
6990
  }
6988
6991
  function resolveConsumerOwnedRoot(opts) {
6989
6992
  if (opts.envValue) {
6990
- return { path: path10.resolve(opts.envValue), source: "env" };
6993
+ return { path: path11.resolve(opts.envValue), source: "env" };
6991
6994
  }
6992
- const cwdPath = path10.resolve(process.cwd(), opts.relPath);
6995
+ const cwdPath = path11.resolve(process.cwd(), opts.relPath);
6993
6996
  if (existsNonEmpty(cwdPath)) {
6994
6997
  return { path: cwdPath, source: "cwd" };
6995
6998
  }
6996
6999
  if (opts.packageRoot) {
6997
- return { path: path10.resolve(opts.packageRoot, opts.relPath), source: "package" };
7000
+ return { path: path11.resolve(opts.packageRoot, opts.relPath), source: "package" };
6998
7001
  }
6999
7002
  return { path: cwdPath, source: "cwd" };
7000
7003
  }
7001
7004
  function existsNonEmpty(p) {
7002
7005
  try {
7003
- const stat = fs12.statSync(p);
7006
+ const stat = fs14.statSync(p);
7004
7007
  if (stat.isDirectory()) {
7005
- return fs12.readdirSync(p).length > 0;
7008
+ return fs14.readdirSync(p).length > 0;
7006
7009
  }
7007
7010
  return stat.size > 0;
7008
7011
  } catch {
7009
7012
  return false;
7010
7013
  }
7011
7014
  }
7015
+ function isAbsentOrEmptyDir(p) {
7016
+ try {
7017
+ const stat = fs14.statSync(p);
7018
+ if (stat.isDirectory()) {
7019
+ return fs14.readdirSync(p).length === 0;
7020
+ }
7021
+ return false;
7022
+ } catch {
7023
+ return true;
7024
+ }
7025
+ }
7026
+ function resolveComponentRoots(opts) {
7027
+ const roots = [];
7028
+ const sources = [];
7029
+ if (opts.envValue) {
7030
+ roots.push(path11.resolve(opts.envValue));
7031
+ sources.push("env");
7032
+ } else if (opts.dsRoot.state === "born" && opts.dsRoot.root) {
7033
+ roots.push(path11.join(opts.dsRoot.root, "src", "components"));
7034
+ sources.push("cwd");
7035
+ }
7036
+ roots.push(path11.resolve(opts.packageRoot, "src", "components", "core"));
7037
+ sources.push("package");
7038
+ return { roots, sources };
7039
+ }
7040
+ function resolveTokenIndexRoot(opts) {
7041
+ if (opts.envValue !== void 0) {
7042
+ if (opts.envValue === "") {
7043
+ return { ok: false, reason: "empty-env-value" };
7044
+ }
7045
+ const resolved = path11.resolve(opts.envValue);
7046
+ if (isAbsentOrEmptyDir(resolved)) {
7047
+ return { ok: false, reason: "empty-env-value" };
7048
+ }
7049
+ return { ok: true, path: resolved, source: "env" };
7050
+ }
7051
+ switch (opts.dsRoot.state) {
7052
+ case "born": {
7053
+ const indexPath = path11.join(opts.dsRoot.root, "token-index");
7054
+ if (isAbsentOrEmptyDir(indexPath)) return { ok: false, reason: "run-generate" };
7055
+ return { ok: true, path: indexPath, source: "cwd" };
7056
+ }
7057
+ case "package-mode": {
7058
+ const indexPath = path11.join(opts.dsRoot.root, "token-index");
7059
+ if (isAbsentOrEmptyDir(indexPath)) return { ok: false, reason: "run-generate" };
7060
+ return { ok: true, path: indexPath, source: "cwd", tokenOrigin: "designerpunk-package-mode" };
7061
+ }
7062
+ case "partial":
7063
+ return { ok: false, reason: "partial", partialCase: opts.dsRoot.partialCase };
7064
+ case "unborn":
7065
+ default:
7066
+ return {
7067
+ ok: true,
7068
+ path: path11.resolve(opts.packageRoot, "token-index"),
7069
+ source: "package-consume",
7070
+ tokenOrigin: "designerpunk-reference"
7071
+ };
7072
+ }
7073
+ }
7074
+ function resolveProductRoot(opts) {
7075
+ if (opts.envValue) {
7076
+ return { path: path11.resolve(opts.envValue), source: "env" };
7077
+ }
7078
+ if (opts.dsRoot.state !== "unborn" && opts.dsRoot.root) {
7079
+ return { path: path11.join(opts.dsRoot.root, "product"), source: "cwd" };
7080
+ }
7081
+ return { path: path11.resolve(opts.cwd, "product"), source: "cwd" };
7082
+ }
7083
+ }
7084
+ });
7085
+
7086
+ // dist/cli/shared/bornRepo.js
7087
+ var require_bornRepo = __commonJS({
7088
+ "dist/cli/shared/bornRepo.js"(exports2, module2) {
7089
+ "use strict";
7090
+ var __create2 = Object.create;
7091
+ var __defProp2 = Object.defineProperty;
7092
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
7093
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
7094
+ var __getProtoOf2 = Object.getPrototypeOf;
7095
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
7096
+ var __export2 = (target, all) => {
7097
+ for (var name in all)
7098
+ __defProp2(target, name, { get: all[name], enumerable: true });
7099
+ };
7100
+ var __copyProps2 = (to, from, except, desc) => {
7101
+ if (from && typeof from === "object" || typeof from === "function") {
7102
+ for (let key of __getOwnPropNames2(from))
7103
+ if (!__hasOwnProp2.call(to, key) && key !== except)
7104
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
7105
+ }
7106
+ return to;
7107
+ };
7108
+ var __toESM2 = (mod, isNodeMode, target) => (target = mod != null ? __create2(__getProtoOf2(mod)) : {}, __copyProps2(
7109
+ // If the importer is in node compatibility mode or this is not an ESM
7110
+ // file that has been converted to a CommonJS file using a Babel-
7111
+ // compatible transform (i.e. "__esModule" has not been set), then set
7112
+ // "default" to the CommonJS "module.exports" for node compatibility.
7113
+ isNodeMode || !mod || !mod.__esModule ? __defProp2(target, "default", { value: mod, enumerable: true }) : target,
7114
+ mod
7115
+ ));
7116
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
7117
+ var bornRepo_exports = {};
7118
+ __export2(bornRepo_exports, {
7119
+ findDesignSystemRoot: () => findDesignSystemRoot,
7120
+ isDesignerPunkTier: () => isDesignerPunkTier
7121
+ });
7122
+ module2.exports = __toCommonJS2(bornRepo_exports);
7123
+ var path11 = __toESM2(require("path"));
7124
+ var fs14 = __toESM2(require("fs"));
7125
+ var import_resolvePackageRoot = require_resolvePackageRoot();
7126
+ var CONFIG_FILE = "designerpunk.config.ts";
7127
+ var MANIFEST_FILE = "designerpunk.manifest.json";
7128
+ var LEGACY_MANIFEST_RELPATH = path11.join(".kiro", "sync-manifest.json");
7129
+ var TOKEN_SOURCE_RELPATH = path11.join("src", "tokens");
7130
+ var GIT_MARKER = ".git";
7131
+ function hasNodeModulesSegment(dir) {
7132
+ return dir.split(path11.sep).includes("node_modules");
7133
+ }
7134
+ function isGitBoundary(dir) {
7135
+ return fs14.existsSync(path11.join(dir, GIT_MARKER));
7136
+ }
7137
+ function exportsTextually(source, exportName) {
7138
+ const escaped = exportName.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
7139
+ const functionForm = new RegExp(`export\\s+(?:async\\s+)?function\\s*\\*?\\s*${escaped}\\b`);
7140
+ const constLetForm = new RegExp(`export\\s+(?:const|let)\\s+${escaped}\\b`);
7141
+ const reExportForm = new RegExp(`export\\s*\\{[^}]*\\b${escaped}\\b[^}]*\\}\\s*from\\s*['"\`]`);
7142
+ return functionForm.test(source) || constLetForm.test(source) || reExportForm.test(source);
7143
+ }
7144
+ function readFileTextSafe(filePath) {
7145
+ try {
7146
+ const text = fs14.readFileSync(filePath, "utf8");
7147
+ return typeof text === "string" ? text : null;
7148
+ } catch {
7149
+ return null;
7150
+ }
7151
+ }
7152
+ function isDesignerPunkTier(dir) {
7153
+ const indexText = readFileTextSafe(path11.join(dir, "index.ts"));
7154
+ if (indexText === null || !exportsTextually(indexText, "getAllPrimitiveTokens")) return false;
7155
+ const semanticIndexText = readFileTextSafe(path11.join(dir, "semantic", "index.ts"));
7156
+ if (semanticIndexText === null || !exportsTextually(semanticIndexText, "getAllSemanticTokens")) return false;
7157
+ return true;
7158
+ }
7159
+ function readConfigTokenSource(configPath) {
7160
+ const text = readFileTextSafe(configPath);
7161
+ if (text === null) return { present: false };
7162
+ const uncommented = text.split("\n").filter((line) => !/^\s*\/\//.test(line)).join("\n");
7163
+ const literalMatch = uncommented.match(/\btokenSource\s*:\s*['"`]([^'"`]+)['"`]/);
7164
+ if (literalMatch) return { present: true, literal: true, value: literalMatch[1] };
7165
+ if (/\btokenSource\s*:/.test(uncommented)) return { present: true, literal: false };
7166
+ return { present: false };
7167
+ }
7168
+ function readManifestPosture(manifestPath) {
7169
+ const text = readFileTextSafe(manifestPath);
7170
+ if (text === null) return null;
7171
+ try {
7172
+ const parsed = JSON.parse(text);
7173
+ return typeof parsed.posture === "string" ? parsed.posture : null;
7174
+ } catch {
7175
+ return null;
7176
+ }
7177
+ }
7178
+ function evaluateDirectory(dir, packageRoot) {
7179
+ const configPath = path11.join(dir, CONFIG_FILE);
7180
+ const hasConfig = fs14.existsSync(configPath);
7181
+ const tokenSourceRead = hasConfig ? readConfigTokenSource(configPath) : { present: false };
7182
+ const hasTokenSource = tokenSourceRead.present;
7183
+ const localTierDir = path11.join(dir, TOKEN_SOURCE_RELPATH);
7184
+ const localBarrelIsTier = isDesignerPunkTier(localTierDir);
7185
+ const tokenSourceRoot = tokenSourceRead.present && tokenSourceRead.literal ? path11.resolve(dir, tokenSourceRead.value) : null;
7186
+ const tierPresentAtTokenSource = tokenSourceRoot !== null && isDesignerPunkTier(tokenSourceRoot);
7187
+ const packageOwnedTierDir = path11.resolve(packageRoot, TOKEN_SOURCE_RELPATH);
7188
+ const manifestPath = path11.join(dir, MANIFEST_FILE);
7189
+ const manifestExists = fs14.existsSync(manifestPath);
7190
+ const manifestPosture = manifestExists ? readManifestPosture(manifestPath) : null;
7191
+ const manifestSignal = manifestExists && manifestPosture !== "consume";
7192
+ const legacyManifestSignal = fs14.existsSync(path11.join(dir, LEGACY_MANIFEST_RELPATH));
7193
+ const isSteward = path11.resolve(dir) === path11.resolve(packageRoot);
7194
+ let state;
7195
+ let partialCase;
7196
+ let tierDir = null;
7197
+ if (hasConfig && hasTokenSource) {
7198
+ if (tierPresentAtTokenSource) {
7199
+ state = "born";
7200
+ tierDir = tokenSourceRoot;
7201
+ } else {
7202
+ state = "partial";
7203
+ partialCase = "config-no-tier";
7204
+ }
7205
+ } else if (hasConfig) {
7206
+ if (localBarrelIsTier && !isSteward) {
7207
+ state = "partial";
7208
+ partialCase = "unused-local-tier";
7209
+ } else {
7210
+ state = "package-mode";
7211
+ tierDir = packageOwnedTierDir;
7212
+ }
7213
+ } else if (localBarrelIsTier) {
7214
+ state = "partial";
7215
+ partialCase = "tier-no-config";
7216
+ } else if (manifestSignal) {
7217
+ state = "partial";
7218
+ partialCase = "manifest-only";
7219
+ } else {
7220
+ state = "unborn";
7221
+ }
7222
+ const anySignal = hasConfig || localBarrelIsTier || manifestSignal;
7223
+ const tierSignal = localBarrelIsTier || tierPresentAtTokenSource;
7224
+ const attemptedTokenSource = partialCase === "config-no-tier" && tokenSourceRoot !== null ? tokenSourceRoot : void 0;
7225
+ return {
7226
+ anySignal,
7227
+ state,
7228
+ partialCase,
7229
+ tierDir,
7230
+ attemptedTokenSource,
7231
+ signals: {
7232
+ config: hasConfig,
7233
+ tier: tierSignal,
7234
+ manifest: manifestSignal,
7235
+ legacyManifest: legacyManifestSignal
7236
+ }
7237
+ };
7238
+ }
7239
+ function resolveOwnPackageRoot() {
7240
+ let dir = __dirname;
7241
+ while (true) {
7242
+ if (fs14.existsSync(path11.join(dir, "package.json"))) return dir;
7243
+ const parent = path11.dirname(dir);
7244
+ if (parent === dir) return (0, import_resolvePackageRoot.resolvePackageRoot)(path11.dirname(__dirname));
7245
+ dir = parent;
7246
+ }
7247
+ }
7248
+ var UNBORN_RESULT = {
7249
+ state: "unborn",
7250
+ root: null,
7251
+ tierDir: null,
7252
+ signals: { config: false, tier: false, manifest: false, legacyManifest: false }
7253
+ };
7254
+ function findDesignSystemRoot(startDir) {
7255
+ const packageRoot = resolveOwnPackageRoot();
7256
+ let dir = path11.resolve(startDir);
7257
+ while (true) {
7258
+ if (!hasNodeModulesSegment(dir)) {
7259
+ const evaluation = evaluateDirectory(dir, packageRoot);
7260
+ if (evaluation.anySignal) {
7261
+ return {
7262
+ state: evaluation.state,
7263
+ root: dir,
7264
+ tierDir: evaluation.tierDir,
7265
+ partialCase: evaluation.partialCase,
7266
+ attemptedTokenSource: evaluation.attemptedTokenSource,
7267
+ signals: evaluation.signals
7268
+ };
7269
+ }
7270
+ }
7271
+ if (isGitBoundary(dir)) {
7272
+ break;
7273
+ }
7274
+ const parent = path11.dirname(dir);
7275
+ if (parent === dir) {
7276
+ break;
7277
+ }
7278
+ dir = parent;
7279
+ }
7280
+ return UNBORN_RESULT;
7281
+ }
7282
+ }
7283
+ });
7284
+
7285
+ // dist/cli/shared/errorCatalog.js
7286
+ var require_errorCatalog = __commonJS({
7287
+ "dist/cli/shared/errorCatalog.js"(exports2, module2) {
7288
+ "use strict";
7289
+ var __defProp2 = Object.defineProperty;
7290
+ var __getOwnPropDesc2 = Object.getOwnPropertyDescriptor;
7291
+ var __getOwnPropNames2 = Object.getOwnPropertyNames;
7292
+ var __hasOwnProp2 = Object.prototype.hasOwnProperty;
7293
+ var __export2 = (target, all) => {
7294
+ for (var name in all)
7295
+ __defProp2(target, name, { get: all[name], enumerable: true });
7296
+ };
7297
+ var __copyProps2 = (to, from, except, desc) => {
7298
+ if (from && typeof from === "object" || typeof from === "function") {
7299
+ for (let key of __getOwnPropNames2(from))
7300
+ if (!__hasOwnProp2.call(to, key) && key !== except)
7301
+ __defProp2(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc2(from, key)) || desc.enumerable });
7302
+ }
7303
+ return to;
7304
+ };
7305
+ var __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: true }), mod);
7306
+ var errorCatalog_exports = {};
7307
+ __export2(errorCatalog_exports, {
7308
+ attachUnbornRepoMessage: () => attachUnbornRepoMessage,
7309
+ bornIndexAbsentMessage: () => bornIndexAbsentMessage,
7310
+ cloneHatchMessage: () => cloneHatchMessage,
7311
+ componentTokenFamilyMismatchMessage: () => componentTokenFamilyMismatchMessage,
7312
+ componentTokenFileLoadFailedMessage: () => componentTokenFileLoadFailedMessage,
7313
+ consumerDegradationMessage: () => consumerDegradationMessage,
7314
+ existingMcpEntryMessage: () => existingMcpEntryMessage,
7315
+ explicitTokenIndexMissingMessage: () => explicitTokenIndexMissingMessage,
7316
+ initBornRepoMessage: () => initBornRepoMessage,
7317
+ jestConfigCollisionMessage: () => jestConfigCollisionMessage,
7318
+ managedRegionEditedInsideMessage: () => managedRegionEditedInsideMessage,
7319
+ managedRegionMarkersMissingMessage: () => managedRegionMarkersMissingMessage,
7320
+ packageModeIndexAbsentMessage: () => packageModeIndexAbsentMessage,
7321
+ partialCaseMessage: () => partialCaseMessage,
7322
+ partialConfigNoTierMessage: () => partialConfigNoTierMessage,
7323
+ partialManifestOnlyMessage: () => partialManifestOnlyMessage,
7324
+ partialTierNoConfigMessage: () => partialTierNoConfigMessage,
7325
+ partialUnusedLocalTierMessage: () => partialUnusedLocalTierMessage,
7326
+ personalNoteNamingMessage: () => personalNoteNamingMessage,
7327
+ restartLineNowMessage: () => restartLineNowMessage,
7328
+ restartLineSequencedMessage: () => restartLineSequencedMessage
7329
+ });
7330
+ module2.exports = __toCommonJS2(errorCatalog_exports);
7331
+ function partialConfigNoTierMessage(root, tokenSource) {
7332
+ const tokenSourceSlot = tokenSource ?? "(a non-literal tokenSource value in designerpunk.config.ts)";
7333
+ return `found designerpunk.config.ts at ${root} but no DesignerPunk token tier at ${tokenSourceSlot} \u2014 this repo looks partly initialized. Refusing rather than guessing. Inspect it, or complete it deliberately: npx designerpunk init --re-scaffold`;
7334
+ }
7335
+ function partialUnusedLocalTierMessage(root) {
7336
+ return `found a token tier at ${root}/src/tokens but your config omits tokenSource, so generate would use DesignerPunk's tokens, not yours. Add tokenSource: './src/tokens' to designerpunk.config.ts. (Refusing to generate until then.)`;
7337
+ }
7338
+ function partialTierNoConfigMessage(root) {
7339
+ return `found a DesignerPunk token tier at ${root}/src/tokens but no designerpunk.config.ts \u2014 refusing to generate or serve DesignerPunk's reference index as yours. Restore the config, or run: npx designerpunk init --re-scaffold`;
7340
+ }
7341
+ function partialManifestOnlyMessage(root) {
7342
+ return `found designerpunk.manifest.json at ${root} but no config or token tier \u2014 the design system files are missing. Restore them from version control, or run: npx designerpunk init --re-scaffold`;
7343
+ }
7344
+ function partialCaseMessage(root, partialCase, attemptedTokenSource) {
7345
+ switch (partialCase) {
7346
+ case "config-no-tier":
7347
+ return partialConfigNoTierMessage(root, attemptedTokenSource);
7348
+ case "unused-local-tier":
7349
+ return partialUnusedLocalTierMessage(root);
7350
+ case "tier-no-config":
7351
+ return partialTierNoConfigMessage(root);
7352
+ case "manifest-only":
7353
+ return partialManifestOnlyMessage(root);
7354
+ }
7355
+ }
7356
+ function packageModeIndexAbsentMessage() {
7357
+ return `this repo runs in package mode (designerpunk.config.ts has no tokenSource), so its token index is DesignerPunk's tokens \u2014 run 'npx designerpunk generate' to build it. To make a design system of your own: npx designerpunk init --re-scaffold`;
7358
+ }
7359
+ function bornIndexAbsentMessage(root) {
7360
+ return `no token index in this design system (${root}/token-index is absent or empty) \u2014 run 'npx designerpunk generate'`;
7361
+ }
7362
+ function explicitTokenIndexMissingMessage(explicitPath) {
7363
+ return `TOKEN_INDEX_DIR is set to ${explicitPath}, which is absent or empty \u2014 unset it, or run generate`;
7364
+ }
7365
+ function initBornRepoMessage(root) {
7366
+ return `this repo already has a design system (${root}) \u2014 init is the birth event and runs once. To join it: npm install \u2192 npx designerpunk generate \u2192 fill in .designerpunk/personal-note.local.md (generate creates it) \u2192 restart your agent session (approve DesignerPunk's MCP servers if asked). Using a different agent tool than this repo was set up for? Also run: npx designerpunk attach --target=<cc|kiro> to attach a harness (agents + MCP config + approvals). To deliberately re-scaffold: npx designerpunk init --re-scaffold`;
7367
+ }
7368
+ function restartLineSequencedMessage() {
7369
+ return `when the steps above are done, restart your agent session \u2014 DesignerPunk's MCP servers and your personal note load when a session starts, so this session cannot see them yet (approve the servers if your tool asks)`;
7370
+ }
7371
+ function cloneHatchMessage() {
7372
+ return `want to own the engine too? Clone github.com/3fn/DesignerPunk \u2014 init already made the token language yours; the clone adds the engine and the components`;
7373
+ }
7374
+ function personalNoteNamingMessage() {
7375
+ return `fill in .designerpunk/personal-note.local.md \u2014 who you are and how you want to be worked with; your agents read it every session (it stays on your machine)`;
7376
+ }
7377
+ function jestConfigCollisionMessage() {
7378
+ return `skipped: jest.config.js (already exists) \u2014 the DesignerPunk jest preset is not applied; to test your own forked components with @3fn/core/testing, add ...require('@3fn/core/jest-preset') to your config`;
7379
+ }
7380
+ function consumerDegradationMessage(member, where, consequence) {
7381
+ return `warning: ${member} is missing from the installed @3fn/core (${where}) \u2014 ${consequence}. Generation continued without it. If a clean reinstall (remove node_modules, then npm install) does not restore it, the package you installed does not contain it.`;
7382
+ }
7383
+ function managedRegionMarkersMissingMessage(file) {
7384
+ return `the DesignerPunk-managed region in ${file} is missing its markers \u2014 not rewriting the file. Restore the markers (see install doc \xA7 "Your agent layer") or re-run attach`;
7385
+ }
7386
+ function managedRegionEditedInsideMessage(file) {
7387
+ return `you edited inside the DesignerPunk-managed region of ${file} \u2014 those edits will be replaced. Move them outside the region; not applying without --apply`;
7388
+ }
7389
+ function attachUnbornRepoMessage() {
7390
+ return `no design system here. To create one: npx designerpunk init. Only reading DesignerPunk's docs and components? No init needed: npx designerpunk attach --target=<cc|kiro> --reference`;
7391
+ }
7392
+ function restartLineNowMessage() {
7393
+ return `restart your agent session now \u2014 DesignerPunk's MCP servers load when a session starts, so this session cannot see them yet (approve them if your tool asks)`;
7394
+ }
7395
+ function existingMcpEntryMessage(configFile, key, target) {
7396
+ return `${configFile} already has '${key}' entry; left unchanged. If it is outdated, delete the entry and re-run: npx designerpunk attach --target=${target} \u2014 or update it by hand.`;
7397
+ }
7398
+ function componentTokenFamilyMismatchMessage(file, guardMessage) {
7399
+ let alternative = "";
7400
+ if (file.startsWith("src/tokens/")) {
7401
+ alternative = ` Or, if an earlier DesignerPunk init copied this file, replace it with the package's version at node_modules/@3fn/core/${file} and change its '../../build/tokens' import to '@3fn/core/build'.`;
7402
+ } else if (file.startsWith("src/components/core/")) {
7403
+ alternative = ` Or, if this is an unedited copy an earlier DesignerPunk init made, delete it \u2014 its component tokens then leave your generated ComponentTokens.* files.`;
7404
+ }
7405
+ return `generate stopped \u2014 ${file} declares a component token in the wrong family's defineComponentTokens() call. ${guardMessage} To fix it, split that file's defineComponentTokens() into one call per token family.${alternative} Nothing was written.`;
7406
+ }
7407
+ function componentTokenFileLoadFailedMessage(file, reason) {
7408
+ const firstLine = reason.split(/\r?\n/, 1)[0].trim();
7409
+ return `generate stopped \u2014 ${file} could not be loaded: ${firstLine} Fix the file and run generate again. Nothing was written.`;
7410
+ }
7012
7411
  }
7013
7412
  });
7014
7413
 
7015
7414
  // application-mcp-server/src/index.ts
7016
7415
  var index_exports = {};
7017
7416
  __export(index_exports, {
7018
- createTestableServer: () => createTestableServer
7417
+ createTestableServer: () => createTestableServer,
7418
+ resolveTokenIndexUnavailableMessage: () => resolveTokenIndexUnavailableMessage,
7419
+ tools: () => tools
7019
7420
  });
7020
7421
  module.exports = __toCommonJS(index_exports);
7021
7422
 
@@ -7214,10 +7615,10 @@ function assignProp(target, prop, value) {
7214
7615
  configurable: true
7215
7616
  });
7216
7617
  }
7217
- function getElementAtPath(obj, path10) {
7218
- if (!path10)
7618
+ function getElementAtPath(obj, path11) {
7619
+ if (!path11)
7219
7620
  return obj;
7220
- return path10.reduce((acc, key) => acc?.[key], obj);
7621
+ return path11.reduce((acc, key) => acc?.[key], obj);
7221
7622
  }
7222
7623
  function promiseAllObject(promisesObj) {
7223
7624
  const keys = Object.keys(promisesObj);
@@ -7537,11 +7938,11 @@ function aborted(x, startIndex = 0) {
7537
7938
  }
7538
7939
  return false;
7539
7940
  }
7540
- function prefixIssues(path10, issues) {
7941
+ function prefixIssues(path11, issues) {
7541
7942
  return issues.map((iss) => {
7542
7943
  var _a;
7543
7944
  (_a = iss).path ?? (_a.path = []);
7544
- iss.path.unshift(path10);
7945
+ iss.path.unshift(path11);
7545
7946
  return iss;
7546
7947
  });
7547
7948
  }
@@ -12859,7 +13260,7 @@ var Protocol = class {
12859
13260
  return;
12860
13261
  }
12861
13262
  const pollInterval = task2.pollInterval ?? this._options?.defaultTaskPollInterval ?? 1e3;
12862
- await new Promise((resolve3) => setTimeout(resolve3, pollInterval));
13263
+ await new Promise((resolve5) => setTimeout(resolve5, pollInterval));
12863
13264
  options?.signal?.throwIfAborted();
12864
13265
  }
12865
13266
  } catch (error2) {
@@ -12876,7 +13277,7 @@ var Protocol = class {
12876
13277
  */
12877
13278
  request(request, resultSchema, options) {
12878
13279
  const { relatedRequestId, resumptionToken, onresumptiontoken, task, relatedTask } = options ?? {};
12879
- return new Promise((resolve3, reject) => {
13280
+ return new Promise((resolve5, reject) => {
12880
13281
  const earlyReject = (error2) => {
12881
13282
  reject(error2);
12882
13283
  };
@@ -12954,7 +13355,7 @@ var Protocol = class {
12954
13355
  if (!parseResult.success) {
12955
13356
  reject(parseResult.error);
12956
13357
  } else {
12957
- resolve3(parseResult.data);
13358
+ resolve5(parseResult.data);
12958
13359
  }
12959
13360
  } catch (error2) {
12960
13361
  reject(error2);
@@ -13215,12 +13616,12 @@ var Protocol = class {
13215
13616
  }
13216
13617
  } catch {
13217
13618
  }
13218
- return new Promise((resolve3, reject) => {
13619
+ return new Promise((resolve5, reject) => {
13219
13620
  if (signal.aborted) {
13220
13621
  reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
13221
13622
  return;
13222
13623
  }
13223
- const timeoutId = setTimeout(resolve3, interval);
13624
+ const timeoutId = setTimeout(resolve5, interval);
13224
13625
  signal.addEventListener("abort", () => {
13225
13626
  clearTimeout(timeoutId);
13226
13627
  reject(new McpError(ErrorCode.InvalidRequest, "Request cancelled"));
@@ -14090,20 +14491,20 @@ var StdioServerTransport = class {
14090
14491
  this.onclose?.();
14091
14492
  }
14092
14493
  send(message) {
14093
- return new Promise((resolve3) => {
14494
+ return new Promise((resolve5) => {
14094
14495
  const json2 = serializeMessage(message);
14095
14496
  if (this._stdout.write(json2)) {
14096
- resolve3();
14497
+ resolve5();
14097
14498
  } else {
14098
- this._stdout.once("drain", resolve3);
14499
+ this._stdout.once("drain", resolve5);
14099
14500
  }
14100
14501
  });
14101
14502
  }
14102
14503
  };
14103
14504
 
14104
14505
  // application-mcp-server/src/indexer/ComponentIndexer.ts
14105
- var fs8 = __toESM(require("fs"));
14106
- var path7 = __toESM(require("path"));
14506
+ var fs11 = __toESM(require("fs"));
14507
+ var path9 = __toESM(require("path"));
14107
14508
 
14108
14509
  // application-mcp-server/src/indexer/parsers.ts
14109
14510
  var fs = __toESM(require("fs"));
@@ -17511,8 +17912,8 @@ var LayoutTemplateIndexer = class {
17511
17912
  };
17512
17913
 
17513
17914
  // application-mcp-server/src/indexer/TokenIndexer.ts
17514
- var fs6 = __toESM(require("fs"));
17515
- var path5 = __toESM(require("path"));
17915
+ var fs8 = __toESM(require("fs"));
17916
+ var path6 = __toESM(require("path"));
17516
17917
 
17517
17918
  // application-mcp-server/src/indexer/TokenRefResolver.ts
17518
17919
  var fs5 = __toESM(require("fs"));
@@ -17643,7 +18044,80 @@ var TokenRefResolver = class {
17643
18044
  }
17644
18045
  };
17645
18046
 
18047
+ // application-mcp-server/src/indexer/SemanticOverrideReader.ts
18048
+ var fs6 = __toESM(require("fs"));
18049
+ var KEY_PATTERN = /^\s*'([^']+)':\s*\{\s*primitiveReferences:/gm;
18050
+ var REF_PAIR_PATTERN = /(?:'([^']+)'|([A-Za-z_$][\w$]*))\s*:\s*'([^']*)'/g;
18051
+ function extractBalancedBlock(content, openIndex) {
18052
+ if (content[openIndex] !== "{") return null;
18053
+ let depth = 0;
18054
+ for (let i = openIndex; i < content.length; i++) {
18055
+ const ch = content[i];
18056
+ if (ch === "{") depth++;
18057
+ else if (ch === "}") {
18058
+ depth--;
18059
+ if (depth === 0) return content.slice(openIndex + 1, i);
18060
+ }
18061
+ }
18062
+ return null;
18063
+ }
18064
+ function parseRefs(block) {
18065
+ const refs = {};
18066
+ REF_PAIR_PATTERN.lastIndex = 0;
18067
+ let match;
18068
+ while ((match = REF_PAIR_PATTERN.exec(block)) !== null) {
18069
+ const key = match[1] ?? match[2];
18070
+ refs[key] = match[3];
18071
+ }
18072
+ return refs;
18073
+ }
18074
+ function parseSemanticOverrides(overridesPath) {
18075
+ const overrides = /* @__PURE__ */ new Map();
18076
+ if (!fs6.existsSync(overridesPath)) return { overrides, fileFound: false };
18077
+ let content;
18078
+ try {
18079
+ content = fs6.readFileSync(overridesPath, "utf-8");
18080
+ } catch {
18081
+ return { overrides, fileFound: false };
18082
+ }
18083
+ KEY_PATTERN.lastIndex = 0;
18084
+ let match;
18085
+ while ((match = KEY_PATTERN.exec(content)) !== null) {
18086
+ const name = match[1];
18087
+ const braceIndex = content.indexOf("{", match.index + match[0].length - 1);
18088
+ const block = braceIndex === -1 ? null : extractBalancedBlock(content, braceIndex);
18089
+ overrides.set(name, block === null ? {} : parseRefs(block));
18090
+ }
18091
+ return { overrides, fileFound: true };
18092
+ }
18093
+
18094
+ // application-mcp-server/src/indexer/resolveThemeTierRoot.ts
18095
+ var fs7 = __toESM(require("fs"));
18096
+ var path5 = __toESM(require("path"));
18097
+ function resolveThemeTierRoot(tokenIndexDir, explicitTierDir, projectRoot) {
18098
+ if (tokenIndexDir) {
18099
+ try {
18100
+ const raw = fs7.readFileSync(path5.join(tokenIndexDir, "meta.json"), "utf8");
18101
+ const meta = JSON.parse(raw);
18102
+ if (typeof meta.tierDir === "string" && meta.tierDir.length > 0) {
18103
+ const recorded = path5.isAbsolute(meta.tierDir) ? meta.tierDir : path5.resolve(tokenIndexDir, meta.tierDir);
18104
+ if (fs7.existsSync(recorded)) return recorded;
18105
+ }
18106
+ } catch {
18107
+ }
18108
+ }
18109
+ if (explicitTierDir) return explicitTierDir;
18110
+ return path5.join(projectRoot, "src", "tokens");
18111
+ }
18112
+
17646
18113
  // application-mcp-server/src/indexer/TokenIndexer.ts
18114
+ function extractDarkModeValue(value) {
18115
+ if (!value || typeof value !== "object") return null;
18116
+ const dark = value.dark;
18117
+ if (!dark || typeof dark !== "object") return null;
18118
+ const base = dark.base;
18119
+ return typeof base === "string" || typeof base === "number" ? base : null;
18120
+ }
17647
18121
  var TokenIndexer = class {
17648
18122
  constructor() {
17649
18123
  this.primitives = /* @__PURE__ */ new Map();
@@ -17651,20 +18125,38 @@ var TokenIndexer = class {
17651
18125
  this.componentTokens = /* @__PURE__ */ new Map();
17652
18126
  this.consumerIndex = /* @__PURE__ */ new Map();
17653
18127
  this.warnings = [];
18128
+ // Level 2 dark overrides, text-parsed from src/tokens/themes/dark/SemanticOverrides.ts
18129
+ // (issue 2026-09-12). Empty map = no overrides loaded; see the ThemeResolutions contract.
18130
+ this.darkOverrides = /* @__PURE__ */ new Map();
17654
18131
  }
17655
- async indexTokens(tokenIndexDir) {
18132
+ /**
18133
+ * @param tokenIndexDir Directory holding primitives/semantics/components.yaml. Also where
18134
+ * `meta.json`'s `tierDir` is read from (Spec 123 Task 1.5, DD24) —
18135
+ * the AUTHORITATIVE theme-root source when present.
18136
+ * @param projectRoot LEGACY fallback used only when neither `meta.json` nor
18137
+ * `explicitTierDir` resolves a tier. Defaults to the token index's
18138
+ * parent (`<root>/token-index` is the standard layout).
18139
+ * @param explicitTierDir The caller's own resolved tier (e.g. `DesignSystemRoot.tierDir`),
18140
+ * used when `meta.json` is absent (a pre-1.5 index) — second
18141
+ * precedence, per `resolveThemeTierRoot`.
18142
+ */
18143
+ async indexTokens(tokenIndexDir, projectRoot, explicitTierDir) {
17656
18144
  this.primitives.clear();
17657
18145
  this.semantics.clear();
17658
18146
  this.componentTokens.clear();
17659
18147
  this.consumerIndex.clear();
18148
+ this.darkOverrides.clear();
17660
18149
  this.warnings = [];
17661
- if (!fs6.existsSync(tokenIndexDir)) {
18150
+ this.loadThemeOverrides(
18151
+ resolveThemeTierRoot(tokenIndexDir, explicitTierDir, projectRoot ?? path6.resolve(tokenIndexDir, ".."))
18152
+ );
18153
+ if (!fs8.existsSync(tokenIndexDir)) {
17662
18154
  this.warnings.push(`Token index directory not found: ${tokenIndexDir}`);
17663
18155
  return;
17664
18156
  }
17665
- this.loadTier(path5.join(tokenIndexDir, "primitives.yaml"), "primitive", this.primitives);
17666
- this.loadTier(path5.join(tokenIndexDir, "semantics.yaml"), "semantic", this.semantics);
17667
- this.loadTier(path5.join(tokenIndexDir, "components.yaml"), "component", this.componentTokens);
18157
+ this.loadTier(path6.join(tokenIndexDir, "primitives.yaml"), "primitive", this.primitives);
18158
+ this.loadTier(path6.join(tokenIndexDir, "semantics.yaml"), "semantic", this.semantics);
18159
+ this.loadTier(path6.join(tokenIndexDir, "components.yaml"), "component", this.componentTokens);
17668
18160
  this.resolver = new TokenRefResolver(tokenIndexDir);
17669
18161
  this.resolver.load();
17670
18162
  this.buildConsumerIndex();
@@ -17690,7 +18182,8 @@ var TokenIndexer = class {
17690
18182
  getDetails(name) {
17691
18183
  const entry = this.primitives.get(name) || this.semantics.get(name) || this.componentTokens.get(name) || null;
17692
18184
  if (!entry) return null;
17693
- return { ...entry, ...this.resolveTriple(name) };
18185
+ const triple = this.resolveTriple(name);
18186
+ return { ...entry, ...triple, themeResolutions: this.resolveThemeResolutions(name, triple) };
17694
18187
  }
17695
18188
  /**
17696
18189
  * Map TokenRefResolver's ResolvedRef → the resolved-value triple (Req 2 null-contract, verbatim):
@@ -17710,6 +18203,80 @@ var TokenIndexer = class {
17710
18203
  resolutionDepth: resolved.depth
17711
18204
  };
17712
18205
  }
18206
+ /**
18207
+ * Build the theme-scoped resolutions for a token (issue 2026-09-12).
18208
+ * Currently one theme: `dark`. See the ThemeResolutions doc for the null contract and for
18209
+ * why wcag/dark-wcag are deliberately not resolved here.
18210
+ *
18211
+ * @param baseTriple the token's base resolution — used only as the unitType fallback, so the
18212
+ * theme branch and the base branch agree on unit typing without
18213
+ * duplicating TokenRefResolver's category→unit table.
18214
+ */
18215
+ resolveThemeResolutions(name, baseTriple) {
18216
+ const refs = this.darkOverrides.get(name);
18217
+ if (!refs) return { dark: null };
18218
+ return { dark: this.resolveOverride(name, refs, baseTriple) };
18219
+ }
18220
+ /**
18221
+ * Resolve one override's primitiveReferences through the same chain the base triple uses.
18222
+ * Primary-ref extraction mirrors TokenRefResolver.extractPrimaryRef exactly (single key →
18223
+ * that key; multi-key with `value` → `value`; otherwise composite → partial).
18224
+ */
18225
+ resolveOverride(name, refs, baseTriple) {
18226
+ const keys = Object.keys(refs);
18227
+ const primaryRef = keys.length === 1 ? refs[keys[0]] : "value" in refs ? refs.value : null;
18228
+ if (primaryRef == null) {
18229
+ return {
18230
+ primitiveReferences: { ...refs },
18231
+ resolvedValue: name,
18232
+ resolvedUnitType: baseTriple.resolvedUnitType,
18233
+ resolutionDepth: "partial",
18234
+ modeValue: null
18235
+ };
18236
+ }
18237
+ const resolved = this.resolver?.resolve(primaryRef) ?? null;
18238
+ if (!resolved) {
18239
+ return {
18240
+ primitiveReferences: { ...refs },
18241
+ resolvedValue: primaryRef,
18242
+ resolvedUnitType: baseTriple.resolvedUnitType,
18243
+ resolutionDepth: "partial",
18244
+ modeValue: null
18245
+ };
18246
+ }
18247
+ return {
18248
+ primitiveReferences: { ...refs },
18249
+ resolvedValue: resolved.value,
18250
+ resolvedUnitType: resolved.unitType,
18251
+ resolutionDepth: resolved.depth,
18252
+ modeValue: extractDarkModeValue(resolved.value)
18253
+ };
18254
+ }
18255
+ /**
18256
+ * Load theme override files. Text-parsed — no coupling to the token pipeline.
18257
+ * A missing file is WARNED (not silent): without it every token reports `dark: null`,
18258
+ * which is indistinguishable from "no override" at the field level.
18259
+ *
18260
+ * @param tierRoot The resolved theme TIER ROOT (`resolveThemeTierRoot`'s return) — NOT a
18261
+ * project root. `themes/dark/SemanticOverrides.ts` is read directly under it (Spec 123
18262
+ * Task 1.5, DD24).
18263
+ */
18264
+ loadThemeOverrides(tierRoot) {
18265
+ const darkPath = path6.join(tierRoot, "themes/dark/SemanticOverrides.ts");
18266
+ const { overrides, fileFound } = parseSemanticOverrides(darkPath);
18267
+ if (!fileFound) {
18268
+ this.warnings.push(
18269
+ `Dark theme overrides not found: ${darkPath} \u2014 get_token_details will report themeResolutions.dark = null for every token`
18270
+ );
18271
+ return;
18272
+ }
18273
+ if (overrides.size === 0) {
18274
+ this.warnings.push(
18275
+ `Dark theme overrides parsed to 0 entries: ${darkPath} \u2014 the file exists but no override entries matched (parser may be stale)`
18276
+ );
18277
+ }
18278
+ this.darkOverrides = overrides;
18279
+ }
17713
18280
  getFamily(family) {
17714
18281
  const f = family.toLowerCase();
17715
18282
  const results = [];
@@ -17738,9 +18305,9 @@ var TokenIndexer = class {
17738
18305
  }
17739
18306
  // --- Private ---
17740
18307
  loadTier(filePath, tier, map2) {
17741
- if (!fs6.existsSync(filePath)) return;
18308
+ if (!fs8.existsSync(filePath)) return;
17742
18309
  try {
17743
- const content = fs6.readFileSync(filePath, "utf-8");
18310
+ const content = fs8.readFileSync(filePath, "utf-8");
17744
18311
  const data = load(content);
17745
18312
  if (!data?.tokens) return;
17746
18313
  for (const [name, entry] of Object.entries(data.tokens)) {
@@ -17779,8 +18346,8 @@ var TokenIndexer = class {
17779
18346
  };
17780
18347
 
17781
18348
  // application-mcp-server/src/indexer/ModeClassifier.ts
17782
- var fs7 = __toESM(require("fs"));
17783
- var path6 = __toESM(require("path"));
18349
+ var fs9 = __toESM(require("fs"));
18350
+ var path7 = __toESM(require("path"));
17784
18351
  var MODE_INVARIANT_TOKENS = /* @__PURE__ */ new Set([
17785
18352
  "color.scrim.standard",
17786
18353
  "color.print.default",
@@ -17797,15 +18364,7 @@ function isColorToken(name) {
17797
18364
  return COLOR_PREFIXES.some((p) => name.startsWith(p));
17798
18365
  }
17799
18366
  function extractOverrideKeys(overridesPath) {
17800
- const keys = /* @__PURE__ */ new Set();
17801
- if (!fs7.existsSync(overridesPath)) return keys;
17802
- const content = fs7.readFileSync(overridesPath, "utf-8");
17803
- const keyPattern = /^\s*'([^']+)':\s*\{\s*primitiveReferences:/gm;
17804
- let match;
17805
- while ((match = keyPattern.exec(content)) !== null) {
17806
- keys.add(match[1]);
17807
- }
17808
- return keys;
18367
+ return new Set(parseSemanticOverrides(overridesPath).overrides.keys());
17809
18368
  }
17810
18369
  var ModeClassifier = class {
17811
18370
  constructor() {
@@ -17814,12 +18373,26 @@ var ModeClassifier = class {
17814
18373
  }
17815
18374
  /**
17816
18375
  * Load classification data from the project's SemanticOverrides file.
17817
- * @param projectRoot Absolute path to the project root
18376
+ *
18377
+ * Spec 123 Task 1.5 (DD24 — "the theme root travels with the index"): the theme
18378
+ * root is resolved via `resolveThemeTierRoot` (meta.json's `tierDir` → the
18379
+ * caller's explicit tier → the legacy `<projectRoot>/src/tokens` default), NOT
18380
+ * hardcoded to `<projectRoot>/src/tokens` — that hardcoding is wrong for
18381
+ * package-mode consumers, whose live tier is the PACKAGE's `src/tokens`.
18382
+ *
18383
+ * @param projectRoot Absolute path to the project root (the LEGACY fallback tier
18384
+ * base — kept as the third-precedence source; unchanged callers see identical
18385
+ * behavior when neither `tokenIndexDir` nor `explicitTierDir` is passed).
18386
+ * @param tokenIndexDir The served token-index directory, so `meta.json`'s
18387
+ * recorded `tierDir` can be read (optional — omit when unknown).
18388
+ * @param explicitTierDir The caller's own resolved tier (e.g.
18389
+ * `DesignSystemRoot.tierDir`), used when `meta.json` is absent (optional).
17818
18390
  */
17819
- load(projectRoot) {
17820
- const overridesPath = path6.join(projectRoot, "src/tokens/themes/dark/SemanticOverrides.ts");
18391
+ load(projectRoot, tokenIndexDir, explicitTierDir) {
18392
+ const tierRoot = resolveThemeTierRoot(tokenIndexDir, explicitTierDir, projectRoot);
18393
+ const overridesPath = path7.join(tierRoot, "themes/dark/SemanticOverrides.ts");
17821
18394
  this.level2Keys = extractOverrideKeys(overridesPath);
17822
- if (!fs7.existsSync(overridesPath)) {
18395
+ if (!fs9.existsSync(overridesPath)) {
17823
18396
  this.warnings.push("SemanticOverrides.ts not found \u2014 mode classification unavailable");
17824
18397
  }
17825
18398
  }
@@ -17844,7 +18417,95 @@ var ModeClassifier = class {
17844
18417
  }
17845
18418
  };
17846
18419
 
18420
+ // application-mcp-server/src/staleness/StalenessGate.ts
18421
+ var fs10 = __toESM(require("fs"));
18422
+ var path8 = __toESM(require("path"));
18423
+ var StalenessGate = class {
18424
+ constructor(config2) {
18425
+ this.lastCheckTime = 0;
18426
+ this.lastIndexTime = 0;
18427
+ this.dataDirs = config2.dataDirs;
18428
+ this.fileExtensions = new Set(config2.fileExtensions);
18429
+ this.thresholdMs = config2.thresholdMs ?? 3e4;
18430
+ this.isImmutable = config2.isImmutable ?? false;
18431
+ this.onRebuild = config2.onRebuild;
18432
+ }
18433
+ /**
18434
+ * Call before every data-returning tool.
18435
+ * Returns true if a rebuild was triggered.
18436
+ */
18437
+ async checkAndRebuildIfNeeded() {
18438
+ if (this.isImmutable) return false;
18439
+ const now = Date.now();
18440
+ if (now - this.lastCheckTime < this.thresholdMs) return false;
18441
+ this.lastCheckTime = now;
18442
+ const staleFiles = this.getStaleFiles();
18443
+ if (staleFiles.length === 0) return false;
18444
+ console.error("\u26A0\uFE0F Index stale \u2014 rebuilding...");
18445
+ await this.onRebuild();
18446
+ this.markIndexed();
18447
+ return true;
18448
+ }
18449
+ /** Update lastIndexTime after successful index/rebuild. */
18450
+ markIndexed() {
18451
+ this.lastIndexTime = Date.now();
18452
+ }
18453
+ /** Get files newer than lastIndexTime. */
18454
+ getStaleFiles() {
18455
+ if (this.isImmutable) return [];
18456
+ if (this.lastIndexTime === 0) return [];
18457
+ const stale = [];
18458
+ for (const dir of this.dataDirs) {
18459
+ if (!fs10.existsSync(dir)) continue;
18460
+ this.scanDir(dir, stale);
18461
+ }
18462
+ return stale;
18463
+ }
18464
+ scanDir(dir, stale) {
18465
+ let entries;
18466
+ try {
18467
+ entries = fs10.readdirSync(dir, { withFileTypes: true });
18468
+ } catch {
18469
+ return;
18470
+ }
18471
+ for (const entry of entries) {
18472
+ const fullPath = path8.join(dir, entry.name);
18473
+ if (entry.isDirectory()) {
18474
+ this.scanDir(fullPath, stale);
18475
+ } else if (this.fileExtensions.has(path8.extname(entry.name))) {
18476
+ try {
18477
+ const mtime = fs10.statSync(fullPath).mtimeMs;
18478
+ if (mtime > this.lastIndexTime) {
18479
+ stale.push(fullPath);
18480
+ }
18481
+ } catch {
18482
+ }
18483
+ }
18484
+ }
18485
+ }
18486
+ };
18487
+ function isImmutableContext(dataPath) {
18488
+ return dataPath.includes("/node_modules/");
18489
+ }
18490
+
17847
18491
  // application-mcp-server/src/indexer/ComponentIndexer.ts
18492
+ function mutableComponentRoots(roots) {
18493
+ return roots.filter((r) => !isImmutableContext(r));
18494
+ }
18495
+ function normalizeRoots(componentsDir) {
18496
+ const list = Array.isArray(componentsDir) ? componentsDir : [componentsDir];
18497
+ const seen = /* @__PURE__ */ new Set();
18498
+ const out = [];
18499
+ for (const r of list) {
18500
+ if (!r) continue;
18501
+ const abs = path9.resolve(r);
18502
+ if (seen.has(abs)) continue;
18503
+ seen.add(abs);
18504
+ out.push(abs);
18505
+ }
18506
+ return out;
18507
+ }
18508
+ var LEGACY_LEVEL_DIR = "core";
17848
18509
  function tokenizeString(input) {
17849
18510
  if (!input) return [];
17850
18511
  const dehyphenated = input.replace(/[-_]+/g, " ");
@@ -17860,6 +18521,12 @@ var ComponentIndexer = class {
17860
18521
  this.layoutTemplateIndexer = new LayoutTemplateIndexer();
17861
18522
  this.tokenIndexer = new TokenIndexer();
17862
18523
  this.modeClassifier = new ModeClassifier();
18524
+ /** The pass-1 root set, precedence order (consumer first, package last). */
18525
+ this.componentRoots = [];
18526
+ /** Declared component name → the precedence winner's source (Spec 123 C3: precedence keys on the DECLARED name). */
18527
+ this.ownerByDeclaredName = /* @__PURE__ */ new Map();
18528
+ /** Component directory → the index key (schema name) it produced — lets a reindex remove exactly its own entry. */
18529
+ this.indexKeyByDir = /* @__PURE__ */ new Map();
17863
18530
  this.lastIndexTime = "";
17864
18531
  this.lastIndexTimeMs = 0;
17865
18532
  this.indexWarnings = [];
@@ -17868,44 +18535,72 @@ var ComponentIndexer = class {
17868
18535
  this.keywordIndex = /* @__PURE__ */ new Map();
17869
18536
  }
17870
18537
  /**
17871
- * Scan component directories and build initial index.
18538
+ * Scan the component root set and build the index.
18539
+ *
18540
+ * `componentsDir` is the pass-1 ROOT SET in precedence order — consumer root first, package
18541
+ * root last (Spec 123 C3; `resolveComponentRoots` produces it). A single string is the legacy
18542
+ * single-root form. The union is applied AT PASS 1: the contracts cache is filled from every
18543
+ * root before any component is assembled, so a consumer fork inheriting a package parent
18544
+ * resolves (Req 2.5). Precedence keys on the DECLARED component name (the contracts
18545
+ * `component` field; the schema `name` when a component has no contracts), never the
18546
+ * directory name.
17872
18547
  */
17873
- async indexComponents(componentsDir, patternsDir, templatesDir, guidanceDir, tokenIndexDir) {
18548
+ async indexComponents(componentsDir, patternsDir, templatesDir, guidanceDir, tokenIndexDir, options = {}) {
17874
18549
  this.index.clear();
17875
18550
  this.contractsCache.clear();
17876
18551
  this.keywordIndex.clear();
18552
+ this.ownerByDeclaredName.clear();
18553
+ this.indexKeyByDir.clear();
17877
18554
  this.indexWarnings = [];
17878
- this.dataDirs = [componentsDir, patternsDir, templatesDir, guidanceDir, tokenIndexDir].filter(Boolean);
17879
- if (!fs8.existsSync(componentsDir)) {
17880
- this.indexWarnings.push(`Components directory not found: ${componentsDir}`);
18555
+ const roots = normalizeRoots(componentsDir);
18556
+ this.componentRoots = roots;
18557
+ const packageComponentsRoot = roots[roots.length - 1] ?? path9.resolve(String(componentsDir));
18558
+ const legacyProjectRoot = path9.resolve(packageComponentsRoot, "..", "..", "..");
18559
+ const projectRoot = options.projectRoot ? path9.resolve(options.projectRoot) : legacyProjectRoot;
18560
+ this.bornRoot = projectRoot;
18561
+ this.explicitTierDir = options.tierDir;
18562
+ this.dataDirs = [...mutableComponentRoots(roots), patternsDir, templatesDir, guidanceDir, tokenIndexDir].filter(Boolean);
18563
+ const existingRoots = roots.filter((r) => fs11.existsSync(r));
18564
+ if (existingRoots.length === 0) {
18565
+ for (const r of roots) this.indexWarnings.push(`Components directory not found: ${r}`);
17881
18566
  this.lastIndexTime = (/* @__PURE__ */ new Date()).toISOString();
17882
18567
  return;
17883
18568
  }
17884
- const dirs = fs8.readdirSync(componentsDir, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
17885
- for (const dir of dirs) {
17886
- const contractsPath = path7.join(componentsDir, dir, "contracts.yaml");
17887
- const contractsResult = parseContractsYaml(contractsPath);
18569
+ const winners = [];
18570
+ for (const source of this.collectComponentSources(roots)) {
18571
+ const owner = this.ownerByDeclaredName.get(source.declaredName);
18572
+ if (owner) {
18573
+ if (owner.rank === source.rank) {
18574
+ this.indexWarnings.push(
18575
+ `Duplicate declared component name ${source.declaredName}: ${source.dirPath} is shadowed by ${owner.dirPath}`
18576
+ );
18577
+ }
18578
+ continue;
18579
+ }
18580
+ this.ownerByDeclaredName.set(source.declaredName, { dirPath: source.dirPath, rank: source.rank });
18581
+ winners.push(source);
18582
+ const contractsResult = parseContractsYaml(path9.join(source.dirPath, "contracts.yaml"));
17888
18583
  if (contractsResult.data) {
17889
18584
  this.contractsCache.set(contractsResult.data.component, contractsResult.data);
17890
18585
  }
17891
18586
  }
17892
- const projectRoot = path7.resolve(componentsDir, "..", "..", "..");
17893
- this.modeClassifier.load(projectRoot);
17894
- for (const dir of dirs) {
17895
- this.assembleComponent(componentsDir, dir);
18587
+ this.modeClassifier.load(projectRoot, tokenIndexDir, options.tierDir);
18588
+ for (const source of winners) {
18589
+ const key = this.assembleComponent(source.dirPath);
18590
+ if (key) this.indexKeyByDir.set(source.dirPath, key);
17896
18591
  }
17897
18592
  this.resolveComposedTokens();
17898
- const effectivePatternsDir = patternsDir || path7.resolve(componentsDir, "..", "..", "..", "experience-patterns");
18593
+ const effectivePatternsDir = patternsDir || path9.join(legacyProjectRoot, "experience-patterns");
17899
18594
  await this.patternIndexer.indexPatterns(effectivePatternsDir);
17900
- const effectiveTemplatesDir = templatesDir || path7.resolve(componentsDir, "..", "..", "..", "layout-templates");
18595
+ const effectiveTemplatesDir = templatesDir || path9.join(legacyProjectRoot, "layout-templates");
17901
18596
  await this.layoutTemplateIndexer.indexTemplates(effectiveTemplatesDir);
17902
- const effectiveGuidanceDir = guidanceDir || path7.resolve(componentsDir, "..", "..", "..", "family-guidance");
18597
+ const effectiveGuidanceDir = guidanceDir || path9.join(legacyProjectRoot, "family-guidance");
17903
18598
  await this.guidanceIndexer.indexGuidance(effectiveGuidanceDir);
17904
18599
  const componentNames = new Set(Array.from(this.index.keys()));
17905
18600
  const patternNames = new Set(this.patternIndexer.getCatalog().map((p) => p.name));
17906
18601
  this.guidanceIndexer.validateCrossReferences(componentNames, patternNames, projectRoot);
17907
18602
  if (tokenIndexDir) {
17908
- await this.tokenIndexer.indexTokens(tokenIndexDir);
18603
+ await this.tokenIndexer.indexTokens(tokenIndexDir, projectRoot, options.tierDir);
17909
18604
  }
17910
18605
  this.lastIndexTime = (/* @__PURE__ */ new Date()).toISOString();
17911
18606
  this.lastIndexTimeMs = this.computeMaxMtime();
@@ -17914,7 +18609,7 @@ var ComponentIndexer = class {
17914
18609
  computeMaxMtime() {
17915
18610
  let max = 0;
17916
18611
  for (const dir of this.dataDirs) {
17917
- if (!fs8.existsSync(dir)) continue;
18612
+ if (!fs11.existsSync(dir)) continue;
17918
18613
  this.walkMaxMtime(dir, (mtime) => {
17919
18614
  if (mtime > max) max = mtime;
17920
18615
  });
@@ -17924,41 +18619,55 @@ var ComponentIndexer = class {
17924
18619
  walkMaxMtime(dir, cb) {
17925
18620
  let entries;
17926
18621
  try {
17927
- entries = fs8.readdirSync(dir, { withFileTypes: true });
18622
+ entries = fs11.readdirSync(dir, { withFileTypes: true });
17928
18623
  } catch {
17929
18624
  return;
17930
18625
  }
17931
18626
  for (const entry of entries) {
17932
- const fullPath = path7.join(dir, entry.name);
18627
+ const fullPath = path9.join(dir, entry.name);
17933
18628
  if (entry.isDirectory()) {
17934
18629
  this.walkMaxMtime(fullPath, cb);
17935
18630
  } else {
17936
18631
  try {
17937
- cb(fs8.statSync(fullPath).mtimeMs);
18632
+ cb(fs11.statSync(fullPath).mtimeMs);
17938
18633
  } catch {
17939
18634
  }
17940
18635
  }
17941
18636
  }
17942
18637
  }
17943
18638
  /**
17944
- * Re-index a single component after file change.
18639
+ * Re-index a single component after a file change (watcher path).
18640
+ *
18641
+ * Precedence-aware (Spec 123 C3): a directory whose declared name is owned by a
18642
+ * higher-precedence source is shadowed and left out; a consumer component ADDED over a
18643
+ * package one of the same declared name replaces it. Only the entry this directory
18644
+ * produced is removed first (the pre-123 removal loop deleted an arbitrary first entry —
18645
+ * `path.basename(componentDir) === dir` was always true).
17945
18646
  */
17946
18647
  async reindexComponent(componentDir) {
17947
- const dir = path7.basename(componentDir);
17948
- const componentsDir = path7.dirname(componentDir);
17949
- const contractsPath = path7.join(componentDir, "contracts.yaml");
17950
- const contractsResult = parseContractsYaml(contractsPath);
18648
+ const dirPath = path9.resolve(componentDir);
18649
+ const rank = this.rankOf(dirPath);
18650
+ const declaredName = this.declaredNameOf(dirPath);
18651
+ const owner = this.ownerByDeclaredName.get(declaredName);
18652
+ if (owner && owner.dirPath !== dirPath && owner.rank <= rank && fs11.existsSync(owner.dirPath)) {
18653
+ return;
18654
+ }
18655
+ const oldKey = this.indexKeyByDir.get(dirPath);
18656
+ if (oldKey !== void 0) {
18657
+ this.index.delete(oldKey);
18658
+ this.keywordIndex.delete(oldKey);
18659
+ this.indexKeyByDir.delete(dirPath);
18660
+ }
18661
+ for (const [name, src] of this.ownerByDeclaredName) {
18662
+ if (src.dirPath === dirPath) this.ownerByDeclaredName.delete(name);
18663
+ }
18664
+ const contractsResult = parseContractsYaml(path9.join(dirPath, "contracts.yaml"));
17951
18665
  if (contractsResult.data) {
17952
18666
  this.contractsCache.set(contractsResult.data.component, contractsResult.data);
17953
18667
  }
17954
- for (const [name, meta] of this.index) {
17955
- if (meta.name === dir || path7.basename(componentDir) === dir) {
17956
- this.index.delete(name);
17957
- this.keywordIndex.delete(name);
17958
- break;
17959
- }
17960
- }
17961
- this.assembleComponent(componentsDir, dir);
18668
+ this.ownerByDeclaredName.set(declaredName, { dirPath, rank });
18669
+ const key = this.assembleComponent(dirPath);
18670
+ if (key) this.indexKeyByDir.set(dirPath, key);
17962
18671
  this.resolveComposedTokens();
17963
18672
  this.lastIndexTime = (/* @__PURE__ */ new Date()).toISOString();
17964
18673
  }
@@ -17980,9 +18689,19 @@ var ComponentIndexer = class {
17980
18689
  this.lastIndexTime = (/* @__PURE__ */ new Date()).toISOString();
17981
18690
  this.lastIndexTimeMs = this.computeMaxMtime();
17982
18691
  }
17983
- /** Re-index token data from the given directory. */
18692
+ /**
18693
+ * Re-index token data from the given directory (file-watcher path).
18694
+ * Anchors on `bornRoot` — the explicit anchor the last full index was given (C3
18695
+ * `projectRoot = bornRoot`) — so theme overrides resolve from the same place a full reindex
18696
+ * uses (issue 2026-09-12). Never re-derived from a component root (Spec 123 Task 1.4 (iv)).
18697
+ *
18698
+ * Spec 123 Task 1.5 (DD24): `indexTokens` re-reads `<tokenIndexDir>/meta.json` on EVERY
18699
+ * call (including this one), so a `generate` re-run that changes the recorded `tierDir`
18700
+ * is picked up here too — the theme root "follows the served index," never a stale
18701
+ * snapshot from the last full index.
18702
+ */
17984
18703
  async reindexTokens(tokenIndexDir) {
17985
- await this.tokenIndexer.indexTokens(tokenIndexDir);
18704
+ await this.tokenIndexer.indexTokens(tokenIndexDir, this.bornRoot, this.explicitTierDir);
17986
18705
  this.lastIndexTime = (/* @__PURE__ */ new Date()).toISOString();
17987
18706
  this.lastIndexTimeMs = this.computeMaxMtime();
17988
18707
  }
@@ -18043,7 +18762,7 @@ var ComponentIndexer = class {
18043
18762
  if (this.lastIndexTimeMs === 0) return [];
18044
18763
  const stale = [];
18045
18764
  for (const dir of this.dataDirs) {
18046
- if (!fs8.existsSync(dir)) continue;
18765
+ if (!fs11.existsSync(dir)) continue;
18047
18766
  this.scanForStaleFiles(dir, stale);
18048
18767
  }
18049
18768
  return stale;
@@ -18051,17 +18770,17 @@ var ComponentIndexer = class {
18051
18770
  scanForStaleFiles(dir, stale) {
18052
18771
  let entries;
18053
18772
  try {
18054
- entries = fs8.readdirSync(dir, { withFileTypes: true });
18773
+ entries = fs11.readdirSync(dir, { withFileTypes: true });
18055
18774
  } catch {
18056
18775
  return;
18057
18776
  }
18058
18777
  for (const entry of entries) {
18059
- const fullPath = path7.join(dir, entry.name);
18778
+ const fullPath = path9.join(dir, entry.name);
18060
18779
  if (entry.isDirectory()) {
18061
18780
  this.scanForStaleFiles(fullPath, stale);
18062
18781
  } else if (entry.name.endsWith(".yaml") || entry.name.endsWith(".md") || entry.name.endsWith(".ts")) {
18063
18782
  try {
18064
- if (fs8.statSync(fullPath).mtimeMs > this.lastIndexTimeMs) {
18783
+ if (fs11.statSync(fullPath).mtimeMs > this.lastIndexTimeMs) {
18065
18784
  stale.push(fullPath);
18066
18785
  }
18067
18786
  } catch {
@@ -18108,20 +18827,99 @@ var ComponentIndexer = class {
18108
18827
  // ---------------------------------------------------------------------------
18109
18828
  // Private
18110
18829
  // ---------------------------------------------------------------------------
18111
- assembleComponent(componentsDir, dir) {
18112
- const dirPath = path7.join(componentsDir, dir);
18113
- const schemaFile = fs8.readdirSync(dirPath).find((f) => f.endsWith(".schema.yaml"));
18830
+ /**
18831
+ * Collect every component directory across the root set, in precedence order.
18832
+ * Under a root, a `core/` directory that holds component directories is recognized as ONE
18833
+ * legacy level (L-D8 — the pre-123 copy layout), with a named warning on each load; its
18834
+ * components rank with that root. A legacy level that IS another root in the set (the steward
18835
+ * repo: `src/components/core` is the package root) is left to that root.
18836
+ */
18837
+ collectComponentSources(roots) {
18838
+ const sources = [];
18839
+ const rootSet = new Set(roots);
18840
+ roots.forEach((root, rank) => {
18841
+ if (!fs11.existsSync(root)) return;
18842
+ const children = fs11.readdirSync(root, { withFileTypes: true }).filter((d) => d.isDirectory()).map((d) => d.name);
18843
+ const legacyDirs = [];
18844
+ for (const dir of children) {
18845
+ const dirPath = path9.join(root, dir);
18846
+ if (dir === LEGACY_LEVEL_DIR && !rootSet.has(dirPath)) {
18847
+ const nested = fs11.readdirSync(dirPath, { withFileTypes: true }).filter((d) => d.isDirectory() && this.isComponentDir(path9.join(dirPath, d.name))).map((d) => d.name);
18848
+ if (nested.length > 0 && !this.isComponentDir(dirPath)) {
18849
+ legacyDirs.push(...nested);
18850
+ continue;
18851
+ }
18852
+ }
18853
+ if (dir === LEGACY_LEVEL_DIR && rootSet.has(dirPath)) continue;
18854
+ sources.push({ dirPath, dir, rank, declaredName: this.declaredNameOf(dirPath) });
18855
+ }
18856
+ if (legacyDirs.length > 0) {
18857
+ const legacyRoot = path9.join(root, LEGACY_LEVEL_DIR);
18858
+ this.indexWarnings.push(
18859
+ `Legacy component level: ${legacyRoot} holds ${legacyDirs.length} component(s) in the pre-123 'core/' layout \u2014 indexed as one legacy level; move them up to ${root}`
18860
+ );
18861
+ for (const dir of legacyDirs) {
18862
+ const dirPath = path9.join(legacyRoot, dir);
18863
+ sources.push({ dirPath, dir, rank, declaredName: this.declaredNameOf(dirPath) });
18864
+ }
18865
+ }
18866
+ });
18867
+ return sources;
18868
+ }
18869
+ /** A component directory holds a `*.schema.yaml` or a `contracts.yaml`. */
18870
+ isComponentDir(dirPath) {
18871
+ try {
18872
+ const files = fs11.readdirSync(dirPath);
18873
+ return files.some((f) => f.endsWith(".schema.yaml")) || files.includes("contracts.yaml");
18874
+ } catch {
18875
+ return false;
18876
+ }
18877
+ }
18878
+ /**
18879
+ * The DECLARED component name of a directory — the contracts `component` field; the schema
18880
+ * `name` when there are no contracts; the directory name only as a last resort (so the
18881
+ * assembly step still reports the directory's own warning).
18882
+ */
18883
+ declaredNameOf(dirPath) {
18884
+ const contracts = parseContractsYaml(path9.join(dirPath, "contracts.yaml")).data;
18885
+ if (contracts?.component) return contracts.component;
18886
+ try {
18887
+ const schemaFile = fs11.readdirSync(dirPath).find((f) => f.endsWith(".schema.yaml"));
18888
+ if (schemaFile) {
18889
+ const schema2 = parseSchemaYaml(path9.join(dirPath, schemaFile)).data;
18890
+ if (schema2?.name) return schema2.name;
18891
+ }
18892
+ } catch {
18893
+ }
18894
+ return path9.basename(dirPath);
18895
+ }
18896
+ /** Precedence rank of a component directory: the index of the longest root containing it. */
18897
+ rankOf(dirPath) {
18898
+ let best = -1;
18899
+ let bestLen = -1;
18900
+ this.componentRoots.forEach((root, i) => {
18901
+ if ((dirPath === root || dirPath.startsWith(root + path9.sep)) && root.length > bestLen) {
18902
+ best = i;
18903
+ bestLen = root.length;
18904
+ }
18905
+ });
18906
+ return best === -1 ? 0 : best;
18907
+ }
18908
+ /** Assemble one component directory into the index; returns its index key (schema name) or null. */
18909
+ assembleComponent(dirPath) {
18910
+ const dir = path9.basename(dirPath);
18911
+ const schemaFile = fs11.readdirSync(dirPath).find((f) => f.endsWith(".schema.yaml"));
18114
18912
  if (!schemaFile) {
18115
18913
  this.indexWarnings.push(`Component directory has no schema.yaml: ${dir}`);
18116
- return;
18914
+ return null;
18117
18915
  }
18118
- const schemaResult = parseSchemaYaml(path7.join(dirPath, schemaFile));
18916
+ const schemaResult = parseSchemaYaml(path9.join(dirPath, schemaFile));
18119
18917
  if (!schemaResult.data) {
18120
18918
  if (schemaResult.warning) this.indexWarnings.push(schemaResult.warning);
18121
- return;
18919
+ return null;
18122
18920
  }
18123
18921
  const schema2 = schemaResult.data;
18124
- const contractsResult = parseContractsYaml(path7.join(dirPath, "contracts.yaml"));
18922
+ const contractsResult = parseContractsYaml(path9.join(dirPath, "contracts.yaml"));
18125
18923
  let contracts;
18126
18924
  const warnings = [];
18127
18925
  if (contractsResult.data) {
@@ -18138,7 +18936,7 @@ var ComponentIndexer = class {
18138
18936
  if (contractsResult.warning) warnings.push(contractsResult.warning);
18139
18937
  contracts = { inheritsFrom: null, active: {}, excluded: {}, own: [], inherited: [] };
18140
18938
  }
18141
- const metaResult = parseComponentMetaYaml(path7.join(dirPath, "component-meta.yaml"));
18939
+ const metaResult = parseComponentMetaYaml(path9.join(dirPath, "component-meta.yaml"));
18142
18940
  if (schema2.omits.length > 0) {
18143
18941
  const parentName = contracts.inheritsFrom;
18144
18942
  const parentMeta = parentName ? this.index.get(parentName) : null;
@@ -18177,6 +18975,7 @@ var ComponentIndexer = class {
18177
18975
  };
18178
18976
  this.index.set(schema2.name, metadata);
18179
18977
  this.buildKeywordEntry(schema2.name, metadata);
18978
+ return schema2.name;
18180
18979
  }
18181
18980
  /**
18182
18981
  * Build the per-component keyword index entry.
@@ -18227,9 +19026,9 @@ var ComponentIndexer = class {
18227
19026
  * Design Decision 4 (Spec 086).
18228
19027
  */
18229
19028
  derivePlatformReadiness(componentDir, schemaReadiness) {
18230
- const hasSchema = fs8.readdirSync(componentDir).some((f) => f.endsWith(".schema.yaml"));
18231
- const hasContracts = fs8.existsSync(path7.join(componentDir, "contracts.yaml"));
18232
- const hasTypes = fs8.existsSync(path7.join(componentDir, "types.ts"));
19029
+ const hasSchema = fs11.readdirSync(componentDir).some((f) => f.endsWith(".schema.yaml"));
19030
+ const hasContracts = fs11.existsSync(path9.join(componentDir, "contracts.yaml"));
19031
+ const hasTypes = fs11.existsSync(path9.join(componentDir, "types.ts"));
18233
19032
  const baselineComplete = hasSchema && hasContracts && hasTypes;
18234
19033
  const platforms = [
18235
19034
  { key: "web", implPattern: /\.web\.ts$/, testPatterns: [/\.test\.ts$/] },
@@ -18245,10 +19044,10 @@ var ComponentIndexer = class {
18245
19044
  result[p.key] = { status: "not-applicable", reason: naReason, reviewed: false, hasImplementation: false, hasTests: false };
18246
19045
  continue;
18247
19046
  }
18248
- const platformDir = path7.join(componentDir, "platforms", p.key);
18249
- const hasImpl = fs8.existsSync(platformDir) && fs8.readdirSync(platformDir).some((f) => p.implPattern.test(f));
18250
- const testsDir = path7.join(componentDir, "__tests__");
18251
- const hasTests = fs8.existsSync(platformDir) && fs8.readdirSync(platformDir).some((f) => p.testPatterns.some((tp) => tp.test(f))) || fs8.existsSync(testsDir) && fs8.readdirSync(testsDir).some((f) => p.testPatterns.some((tp) => tp.test(f)));
19047
+ const platformDir = path9.join(componentDir, "platforms", p.key);
19048
+ const hasImpl = fs11.existsSync(platformDir) && fs11.readdirSync(platformDir).some((f) => p.implPattern.test(f));
19049
+ const testsDir = path9.join(componentDir, "__tests__");
19050
+ const hasTests = fs11.existsSync(platformDir) && fs11.readdirSync(platformDir).some((f) => p.testPatterns.some((tp) => tp.test(f))) || fs11.existsSync(testsDir) && fs11.readdirSync(testsDir).some((f) => p.testPatterns.some((tp) => tp.test(f)));
18252
19051
  let status;
18253
19052
  if (!hasImpl) {
18254
19053
  status = "not-started";
@@ -18712,17 +19511,17 @@ var AssemblyValidator = class {
18712
19511
  accessibility
18713
19512
  };
18714
19513
  }
18715
- walk(node, path10, errors, warnings) {
19514
+ walk(node, path11, errors, warnings) {
18716
19515
  const meta = this.indexer.getComponent(node.component);
18717
19516
  if (!meta) {
18718
- errors.push({ path: path10, component: node.component, message: `Component "${node.component}" not found in catalog` });
19517
+ errors.push({ path: path11, component: node.component, message: `Component "${node.component}" not found in catalog` });
18719
19518
  return;
18720
19519
  }
18721
19520
  const children = node.children ?? [];
18722
19521
  const index = this.indexer.getIndex();
18723
19522
  for (let i = 0; i < children.length; i++) {
18724
19523
  const child = children[i];
18725
- const childPath = `${path10}.children[${i}]`;
19524
+ const childPath = `${path11}.children[${i}]`;
18726
19525
  const result = checkComposition(meta, child.component, index, node.props);
18727
19526
  if (!result.allowed) {
18728
19527
  errors.push({ path: childPath, component: child.component, message: result.reason });
@@ -18731,31 +19530,30 @@ var AssemblyValidator = class {
18731
19530
  const childNames = children.map((c) => c.component);
18732
19531
  const req = validateRequires(meta, childNames);
18733
19532
  if (!req.complete) {
18734
- errors.push({ path: path10, component: node.component, message: `Missing required children: ${req.missing.join(", ")}` });
19533
+ errors.push({ path: path11, component: node.component, message: `Missing required children: ${req.missing.join(", ")}` });
18735
19534
  }
18736
19535
  const comp = meta.composition;
18737
19536
  if (comp?.children && children.length > 0) {
18738
19537
  if (comp.children.minCount !== void 0 && children.length < comp.children.minCount) {
18739
- errors.push({ path: path10, component: node.component, message: `Requires at least ${comp.children.minCount} children, found ${children.length}` });
19538
+ errors.push({ path: path11, component: node.component, message: `Requires at least ${comp.children.minCount} children, found ${children.length}` });
18740
19539
  }
18741
19540
  if (comp.children.maxCount !== void 0 && children.length > comp.children.maxCount) {
18742
- errors.push({ path: path10, component: node.component, message: `Allows at most ${comp.children.maxCount} children, found ${children.length}` });
19541
+ errors.push({ path: path11, component: node.component, message: `Allows at most ${comp.children.maxCount} children, found ${children.length}` });
18743
19542
  }
18744
19543
  }
18745
19544
  for (let i = 0; i < children.length; i++) {
18746
- this.walk(children[i], `${path10}.children[${i}]`, errors, warnings);
19545
+ this.walk(children[i], `${path11}.children[${i}]`, errors, warnings);
18747
19546
  }
18748
19547
  }
18749
19548
  };
18750
19549
 
18751
19550
  // application-mcp-server/src/watcher/FileWatcher.ts
18752
- var fs9 = __toESM(require("fs"));
18753
- var path8 = __toESM(require("path"));
19551
+ var fs12 = __toESM(require("fs"));
19552
+ var path10 = __toESM(require("path"));
18754
19553
  var COMPONENT_FILES = /* @__PURE__ */ new Set(["contracts.yaml", "component-meta.yaml"]);
18755
19554
  var FileWatcher = class {
18756
19555
  constructor(indexer, componentsDir, patternsDir, templatesDir, guidanceDir, tokenIndexDir, debounceMs = 100) {
18757
19556
  this.indexer = indexer;
18758
- this.componentsDir = componentsDir;
18759
19557
  this.patternsDir = patternsDir;
18760
19558
  this.templatesDir = templatesDir;
18761
19559
  this.guidanceDir = guidanceDir;
@@ -18763,20 +19561,26 @@ var FileWatcher = class {
18763
19561
  this.debounceMs = debounceMs;
18764
19562
  this.watchers = [];
18765
19563
  this.debounceTimers = /* @__PURE__ */ new Map();
19564
+ this.componentsDirs = (Array.isArray(componentsDir) ? componentsDir : [componentsDir]).filter(Boolean);
19565
+ }
19566
+ /** The component roots this watcher watches (the mutable set it was given). */
19567
+ getWatchedComponentRoots() {
19568
+ return [...this.componentsDirs];
18766
19569
  }
18767
19570
  start() {
18768
19571
  this.stop();
18769
- const configs = [
18770
- { dir: this.componentsDir, handler: (f) => this.handleComponentChange(f) }
18771
- ];
19572
+ const configs = this.componentsDirs.map((root) => ({
19573
+ dir: root,
19574
+ handler: (f) => this.handleComponentChange(root, f)
19575
+ }));
18772
19576
  if (this.patternsDir) configs.push({ dir: this.patternsDir, handler: () => this.debounceReindex("patterns", () => this.indexer.reindexPatterns(this.patternsDir)) });
18773
19577
  if (this.templatesDir) configs.push({ dir: this.templatesDir, handler: () => this.debounceReindex("templates", () => this.indexer.reindexTemplates(this.templatesDir)) });
18774
19578
  if (this.guidanceDir) configs.push({ dir: this.guidanceDir, handler: () => this.debounceReindex("guidance", () => this.indexer.reindexGuidance(this.guidanceDir)) });
18775
19579
  if (this.tokenIndexDir) configs.push({ dir: this.tokenIndexDir, handler: () => this.debounceReindex("tokens", () => this.indexer.reindexTokens(this.tokenIndexDir)) });
18776
19580
  for (const config2 of configs) {
18777
- if (!fs9.existsSync(config2.dir)) continue;
19581
+ if (!fs12.existsSync(config2.dir)) continue;
18778
19582
  try {
18779
- const watcher = fs9.watch(config2.dir, { recursive: true }, (_event, filename) => {
19583
+ const watcher = fs12.watch(config2.dir, { recursive: true }, (_event, filename) => {
18780
19584
  if (filename && filename.endsWith(".yaml")) config2.handler(filename);
18781
19585
  });
18782
19586
  watcher.on("error", (err) => console.error(`FileWatcher error (${config2.dir}): ${err.message}`));
@@ -18796,10 +19600,10 @@ var FileWatcher = class {
18796
19600
  isWatching() {
18797
19601
  return this.watchers.length > 0;
18798
19602
  }
18799
- handleComponentChange(filename) {
18800
- const base = path8.basename(filename);
19603
+ handleComponentChange(root, filename) {
19604
+ const base = path10.basename(filename);
18801
19605
  if (!base.endsWith(".schema.yaml") && !COMPONENT_FILES.has(base)) return;
18802
- const componentDir = path8.join(this.componentsDir, path8.dirname(filename));
19606
+ const componentDir = path10.join(root, path10.dirname(filename));
18803
19607
  this.debounceReindex(componentDir, () => this.indexer.reindexComponent(componentDir));
18804
19608
  }
18805
19609
  debounceReindex(key, action) {
@@ -18819,7 +19623,7 @@ var FileWatcher = class {
18819
19623
  };
18820
19624
 
18821
19625
  // application-mcp-server/src/indexer/DesignPhilosophyIndexer.ts
18822
- var fs10 = __toESM(require("fs"));
19626
+ var fs13 = __toESM(require("fs"));
18823
19627
  var DesignPhilosophyIndexer = class {
18824
19628
  constructor() {
18825
19629
  this.data = null;
@@ -18828,12 +19632,12 @@ var DesignPhilosophyIndexer = class {
18828
19632
  async index(filePath) {
18829
19633
  this.data = null;
18830
19634
  this.warnings = [];
18831
- if (!fs10.existsSync(filePath)) {
19635
+ if (!fs13.existsSync(filePath)) {
18832
19636
  this.warnings.push(`Design philosophy file not found: ${filePath}`);
18833
19637
  return;
18834
19638
  }
18835
19639
  try {
18836
- const content = fs10.readFileSync(filePath, "utf-8");
19640
+ const content = fs13.readFileSync(filePath, "utf-8");
18837
19641
  this.data = load(content);
18838
19642
  this.validate();
18839
19643
  } catch (err) {
@@ -18880,77 +19684,6 @@ var DesignPhilosophyIndexer = class {
18880
19684
  }
18881
19685
  };
18882
19686
 
18883
- // application-mcp-server/src/staleness/StalenessGate.ts
18884
- var fs11 = __toESM(require("fs"));
18885
- var path9 = __toESM(require("path"));
18886
- var StalenessGate = class {
18887
- constructor(config2) {
18888
- this.lastCheckTime = 0;
18889
- this.lastIndexTime = 0;
18890
- this.dataDirs = config2.dataDirs;
18891
- this.fileExtensions = new Set(config2.fileExtensions);
18892
- this.thresholdMs = config2.thresholdMs ?? 3e4;
18893
- this.isImmutable = config2.isImmutable ?? false;
18894
- this.onRebuild = config2.onRebuild;
18895
- }
18896
- /**
18897
- * Call before every data-returning tool.
18898
- * Returns true if a rebuild was triggered.
18899
- */
18900
- async checkAndRebuildIfNeeded() {
18901
- if (this.isImmutable) return false;
18902
- const now = Date.now();
18903
- if (now - this.lastCheckTime < this.thresholdMs) return false;
18904
- this.lastCheckTime = now;
18905
- const staleFiles = this.getStaleFiles();
18906
- if (staleFiles.length === 0) return false;
18907
- console.error("\u26A0\uFE0F Index stale \u2014 rebuilding...");
18908
- await this.onRebuild();
18909
- this.markIndexed();
18910
- return true;
18911
- }
18912
- /** Update lastIndexTime after successful index/rebuild. */
18913
- markIndexed() {
18914
- this.lastIndexTime = Date.now();
18915
- }
18916
- /** Get files newer than lastIndexTime. */
18917
- getStaleFiles() {
18918
- if (this.isImmutable) return [];
18919
- if (this.lastIndexTime === 0) return [];
18920
- const stale = [];
18921
- for (const dir of this.dataDirs) {
18922
- if (!fs11.existsSync(dir)) continue;
18923
- this.scanDir(dir, stale);
18924
- }
18925
- return stale;
18926
- }
18927
- scanDir(dir, stale) {
18928
- let entries;
18929
- try {
18930
- entries = fs11.readdirSync(dir, { withFileTypes: true });
18931
- } catch {
18932
- return;
18933
- }
18934
- for (const entry of entries) {
18935
- const fullPath = path9.join(dir, entry.name);
18936
- if (entry.isDirectory()) {
18937
- this.scanDir(fullPath, stale);
18938
- } else if (this.fileExtensions.has(path9.extname(entry.name))) {
18939
- try {
18940
- const mtime = fs11.statSync(fullPath).mtimeMs;
18941
- if (mtime > this.lastIndexTime) {
18942
- stale.push(fullPath);
18943
- }
18944
- } catch {
18945
- }
18946
- }
18947
- }
18948
- }
18949
- };
18950
- function isImmutableContext(dataPath) {
18951
- return dataPath.includes("/node_modules/");
18952
- }
18953
-
18954
19687
  // application-mcp-server/src/index.ts
18955
19688
  var SERVER_NAME = "mcp-component-server";
18956
19689
  var SERVER_VERSION = "0.1.0";
@@ -18959,11 +19692,13 @@ var DEFAULT_TOKEN_INDEX_DIR = "token-index";
18959
19692
  var tools = [
18960
19693
  {
18961
19694
  name: "get_component_catalog",
19695
+ annotations: { readOnlyHint: true },
18962
19696
  description: "Get lightweight catalog of all components with name, type, family, purpose, and readiness. ~50 tokens per component.",
18963
19697
  inputSchema: { type: "object", properties: {} }
18964
19698
  },
18965
19699
  {
18966
19700
  name: "get_component_summary",
19701
+ annotations: { readOnlyHint: true },
18967
19702
  description: "Get component summary: identity, contract categories, token count, annotations. ~200 tokens.",
18968
19703
  inputSchema: {
18969
19704
  type: "object",
@@ -18973,6 +19708,7 @@ var tools = [
18973
19708
  },
18974
19709
  {
18975
19710
  name: "get_component_full",
19711
+ annotations: { readOnlyHint: true },
18976
19712
  description: "Get complete assembled metadata including all contracts, composition rules, and token relationships.",
18977
19713
  inputSchema: {
18978
19714
  type: "object",
@@ -18982,6 +19718,7 @@ var tools = [
18982
19718
  },
18983
19719
  {
18984
19720
  name: "find_components",
19721
+ annotations: { readOnlyHint: true },
18985
19722
  description: 'Find components by category, concept, platform, purpose keyword, or usage context. Returns ApplicationSummary with promoted selection guidance (purpose, whenToUse, whenNotToUse, alternatives, contexts). All parameters optional and combinable (conjunctive). Use `keyword` for natural-language tokenized discovery (e.g. "primary action button", "login", "text input field").',
18986
19723
  inputSchema: {
18987
19724
  type: "object",
@@ -18998,6 +19735,7 @@ var tools = [
18998
19735
  },
18999
19736
  {
19000
19737
  name: "check_composition",
19738
+ annotations: { readOnlyHint: true },
19001
19739
  description: "Check if a parent component can contain a child component, with optional prop context.",
19002
19740
  inputSchema: {
19003
19741
  type: "object",
@@ -19011,21 +19749,25 @@ var tools = [
19011
19749
  },
19012
19750
  {
19013
19751
  name: "get_component_health",
19752
+ annotations: { readOnlyHint: true },
19014
19753
  description: "Get index health: status, component count, pattern count, warnings, gaps.",
19015
19754
  inputSchema: { type: "object", properties: {} }
19016
19755
  },
19017
19756
  {
19018
19757
  name: "rebuild_index",
19758
+ annotations: { readOnlyHint: false },
19019
19759
  description: "Rebuild the component index from scratch. Use when index is stale or out of sync. Returns new health status after reindex.",
19020
19760
  inputSchema: { type: "object", properties: {} }
19021
19761
  },
19022
19762
  {
19023
19763
  name: "list_experience_patterns",
19764
+ annotations: { readOnlyHint: true },
19024
19765
  description: "List all experience patterns with name, description, category, tags, step count, and component count.",
19025
19766
  inputSchema: { type: "object", properties: {} }
19026
19767
  },
19027
19768
  {
19028
19769
  name: "get_experience_pattern",
19770
+ annotations: { readOnlyHint: true },
19029
19771
  description: "Get full experience pattern by name: steps, components with roles and hints, accessibility notes, and alternatives.",
19030
19772
  inputSchema: {
19031
19773
  type: "object",
@@ -19035,11 +19777,13 @@ var tools = [
19035
19777
  },
19036
19778
  {
19037
19779
  name: "list_layout_templates",
19780
+ annotations: { readOnlyHint: true },
19038
19781
  description: "List all layout templates with name, description, category, tags, and region count.",
19039
19782
  inputSchema: { type: "object", properties: {} }
19040
19783
  },
19041
19784
  {
19042
19785
  name: "get_layout_template",
19786
+ annotations: { readOnlyHint: true },
19043
19787
  description: "Get full layout template by name: regions with grid behavior per breakpoint, stacking rules, and token references.",
19044
19788
  inputSchema: {
19045
19789
  type: "object",
@@ -19049,6 +19793,7 @@ var tools = [
19049
19793
  },
19050
19794
  {
19051
19795
  name: "validate_assembly",
19796
+ annotations: { readOnlyHint: true },
19052
19797
  description: "Validate a component tree. Checks component existence, parent-child composition rules, requires/count constraints, and assembly-level accessibility (form labels, submit actions, page headings). Returns errors, warnings, and accessibility issues with paths.",
19053
19798
  inputSchema: {
19054
19799
  type: "object",
@@ -19063,6 +19808,7 @@ var tools = [
19063
19808
  },
19064
19809
  {
19065
19810
  name: "get_prop_guidance",
19811
+ annotations: { readOnlyHint: true },
19066
19812
  description: "Get prop selection and family member guidance for a component or family. Returns whenToUse, whenNotToUse, selectionRules (scenario\u2192recommendation with optional props), accessibilityNotes, and family-scoped patterns. Query by component name (returns its family guidance) or family name.",
19067
19813
  inputSchema: {
19068
19814
  type: "object",
@@ -19076,6 +19822,7 @@ var tools = [
19076
19822
  // Token query tools (Spec 096)
19077
19823
  {
19078
19824
  name: "search_tokens",
19825
+ annotations: { readOnlyHint: true },
19079
19826
  description: "Search tokens by family, tier (primitive/semantic/component), or name. All parameters optional and combinable.",
19080
19827
  inputSchema: {
19081
19828
  type: "object",
@@ -19088,6 +19835,7 @@ var tools = [
19088
19835
  },
19089
19836
  {
19090
19837
  name: "get_token_details",
19838
+ annotations: { readOnlyHint: true },
19091
19839
  description: "Get full details for a token: value, family, tier, platform names, formula, theme-varying status, consumers.",
19092
19840
  inputSchema: {
19093
19841
  type: "object",
@@ -19099,6 +19847,7 @@ var tools = [
19099
19847
  },
19100
19848
  {
19101
19849
  name: "get_token_family",
19850
+ annotations: { readOnlyHint: true },
19102
19851
  description: "Get all tokens in a family across all tiers.",
19103
19852
  inputSchema: {
19104
19853
  type: "object",
@@ -19110,6 +19859,7 @@ var tools = [
19110
19859
  },
19111
19860
  {
19112
19861
  name: "get_token_consumers",
19862
+ annotations: { readOnlyHint: true },
19113
19863
  description: "Get all components that reference a token.",
19114
19864
  inputSchema: {
19115
19865
  type: "object",
@@ -19121,16 +19871,19 @@ var tools = [
19121
19871
  },
19122
19872
  {
19123
19873
  name: "get_design_philosophy",
19874
+ annotations: { readOnlyHint: true },
19124
19875
  description: "Get the design system's creative north star, aesthetic philosophy, and key characteristics.",
19125
19876
  inputSchema: { type: "object", properties: {} }
19126
19877
  },
19127
19878
  {
19128
19879
  name: "get_design_rules",
19880
+ annotations: { readOnlyHint: true },
19129
19881
  description: "Get named design rules as structured data (name, constraint, rationale).",
19130
19882
  inputSchema: { type: "object", properties: {} }
19131
19883
  },
19132
19884
  {
19133
19885
  name: "get_design_guidance",
19886
+ annotations: { readOnlyHint: true },
19134
19887
  description: "Get design do's and don'ts as categorized directives. Optionally filter by category.",
19135
19888
  inputSchema: {
19136
19889
  type: "object",
@@ -19141,6 +19894,7 @@ var tools = [
19141
19894
  },
19142
19895
  {
19143
19896
  name: "get_color_strategy",
19897
+ annotations: { readOnlyHint: true },
19144
19898
  description: "Get color strategy vocabulary (Restrained/Committed/Full/Drenched) with usage guidance. Optionally filter by tier.",
19145
19899
  inputSchema: {
19146
19900
  type: "object",
@@ -19154,54 +19908,52 @@ var STALENESS_EXEMPT_TOOLS = /* @__PURE__ */ new Set([
19154
19908
  "get_component_health",
19155
19909
  "rebuild_index"
19156
19910
  ]);
19157
- function createTestableServer(paths) {
19158
- const server = new ComponentMCPServer(paths);
19911
+ function createTestableServer(paths, options = {}) {
19912
+ const server = new ComponentMCPServer(paths, options);
19159
19913
  return {
19160
- initialize: () => server.indexer.indexComponents(
19161
- paths.componentsDir,
19162
- paths.patternsDir,
19163
- paths.templatesDir,
19164
- paths.guidanceDir,
19165
- paths.tokenIndexDir
19166
- ),
19167
- callTool: (name, args) => server.handleTool(name, args)
19914
+ initialize: async () => {
19915
+ await server.fullIndex();
19916
+ server.markIndexed();
19917
+ },
19918
+ callTool: (name, args) => server.handleTool(name, args),
19919
+ startWatching: () => server.startWatching(),
19920
+ stopWatching: () => server.stopWatching(),
19921
+ getWatchedDirs: () => server.getWatchedDirs()
19168
19922
  };
19169
19923
  }
19170
19924
  var ComponentMCPServer = class {
19171
- constructor(paths) {
19925
+ constructor(paths, options = {}) {
19172
19926
  this.paths = paths;
19173
19927
  this.server = new Server({ name: SERVER_NAME, version: SERVER_VERSION }, { capabilities: { tools: {} } });
19174
19928
  this.indexer = new ComponentIndexer();
19175
19929
  this.queryEngine = new ComponentQueryEngine(this.indexer);
19176
19930
  this.assemblyValidator = new AssemblyValidator(this.indexer);
19931
+ const componentRoots = Array.isArray(this.paths.componentsDir) ? this.paths.componentsDir : [this.paths.componentsDir];
19932
+ this.watchedComponentRoots = mutableComponentRoots(componentRoots);
19177
19933
  this.fileWatcher = new FileWatcher(
19178
19934
  this.indexer,
19179
- this.paths.componentsDir,
19935
+ this.watchedComponentRoots,
19180
19936
  this.paths.patternsDir,
19181
19937
  this.paths.templatesDir,
19182
19938
  this.paths.guidanceDir,
19183
19939
  this.paths.tokenIndexDir
19184
19940
  );
19185
19941
  this.philosophyIndexer = new DesignPhilosophyIndexer();
19186
- const dataDirs = [
19187
- this.paths.componentsDir,
19942
+ const otherDirs = [
19188
19943
  this.paths.patternsDir,
19189
19944
  this.paths.templatesDir,
19190
19945
  this.paths.guidanceDir,
19191
19946
  this.paths.tokenIndexDir
19192
- ].filter(Boolean);
19947
+ ].filter((d) => Boolean(d) && !isImmutableContext(d));
19948
+ this.stalenessDataDirs = [...this.watchedComponentRoots, ...otherDirs];
19193
19949
  this.stalenessGate = new StalenessGate({
19194
- dataDirs,
19950
+ dataDirs: this.stalenessDataDirs,
19195
19951
  fileExtensions: [".yaml", ".ts", ".md"],
19196
- isImmutable: isImmutableContext(this.paths.componentsDir),
19952
+ thresholdMs: options.stalenessThresholdMs,
19953
+ // Nothing mutable to scan (e.g. an unborn consumer: everything is package data) → skip all checks.
19954
+ isImmutable: this.stalenessDataDirs.length === 0,
19197
19955
  onRebuild: async () => {
19198
- await this.indexer.indexComponents(
19199
- this.paths.componentsDir,
19200
- this.paths.patternsDir,
19201
- this.paths.templatesDir,
19202
- this.paths.guidanceDir,
19203
- this.paths.tokenIndexDir
19204
- );
19956
+ await this.fullIndex();
19205
19957
  if (this.paths.designLanguagePath) {
19206
19958
  await this.philosophyIndexer.index(this.paths.designLanguagePath);
19207
19959
  }
@@ -19209,14 +19961,38 @@ var ComponentMCPServer = class {
19209
19961
  });
19210
19962
  this.registerHandlers();
19211
19963
  }
19212
- async start() {
19964
+ /** Full index over the component root set, anchored on `projectRoot` (C3 `projectRoot = bornRoot`). */
19965
+ async fullIndex() {
19213
19966
  await this.indexer.indexComponents(
19214
19967
  this.paths.componentsDir,
19215
19968
  this.paths.patternsDir,
19216
19969
  this.paths.templatesDir,
19217
19970
  this.paths.guidanceDir,
19218
- this.paths.tokenIndexDir
19971
+ this.paths.tokenIndexDir,
19972
+ { projectRoot: this.paths.projectRoot }
19219
19973
  );
19974
+ }
19975
+ /** @internal Test seam (Spec 123 Task 1.4). */
19976
+ markIndexed() {
19977
+ this.stalenessGate.markIndexed();
19978
+ }
19979
+ /** @internal Test seam (Spec 123 Task 1.4). */
19980
+ startWatching() {
19981
+ this.fileWatcher.start();
19982
+ }
19983
+ /** @internal Test seam (Spec 123 Task 1.4). */
19984
+ stopWatching() {
19985
+ this.fileWatcher.stop();
19986
+ }
19987
+ /** @internal Test seam (Spec 123 Task 1.4). */
19988
+ getWatchedDirs() {
19989
+ return {
19990
+ stalenessDataDirs: [...this.stalenessDataDirs],
19991
+ watchedComponentRoots: this.fileWatcher.getWatchedComponentRoots()
19992
+ };
19993
+ }
19994
+ async start() {
19995
+ await this.fullIndex();
19220
19996
  this.fileWatcher.start();
19221
19997
  if (this.paths.tokenIndexDir) {
19222
19998
  const th = this.indexer.getTokenIndexer().getHealth();
@@ -19224,9 +20000,6 @@ var ComponentMCPServer = class {
19224
20000
  }
19225
20001
  const health = this.indexer.getHealth();
19226
20002
  console.error(`[${SERVER_NAME}] Indexed ${health.componentsIndexed} components (${health.warnings.length} warnings)`);
19227
- if (!this.paths.tokenIndexDir) {
19228
- console.error(`[${SERVER_NAME}] Token index not available (Spec 096 pending)`);
19229
- }
19230
20003
  if (this.paths.designLanguagePath) {
19231
20004
  await this.philosophyIndexer.index(this.paths.designLanguagePath);
19232
20005
  const pw = this.philosophyIndexer.getWarnings();
@@ -19300,13 +20073,7 @@ var ComponentMCPServer = class {
19300
20073
  case "get_component_health":
19301
20074
  return this.queryEngine.getHealth();
19302
20075
  case "rebuild_index":
19303
- await this.indexer.indexComponents(
19304
- this.paths.componentsDir,
19305
- this.paths.patternsDir,
19306
- this.paths.templatesDir,
19307
- this.paths.guidanceDir,
19308
- this.paths.tokenIndexDir
19309
- );
20076
+ await this.fullIndex();
19310
20077
  if (this.paths.designLanguagePath) {
19311
20078
  await this.philosophyIndexer.index(this.paths.designLanguagePath);
19312
20079
  }
@@ -19364,6 +20131,16 @@ var ComponentMCPServer = class {
19364
20131
  });
19365
20132
  }
19366
20133
  };
20134
+ function resolveTokenIndexUnavailableMessage(reason, dsRoot, packageRoot, errorCatalog, explicitTokenIndexDirEnv) {
20135
+ switch (reason) {
20136
+ case "empty-env-value":
20137
+ return errorCatalog.explicitTokenIndexMissingMessage(explicitTokenIndexDirEnv ?? "");
20138
+ case "run-generate":
20139
+ return dsRoot.state === "package-mode" ? errorCatalog.packageModeIndexAbsentMessage() : errorCatalog.bornIndexAbsentMessage(dsRoot.root ?? packageRoot);
20140
+ case "partial":
20141
+ return dsRoot.partialCase ? errorCatalog.partialCaseMessage(dsRoot.root ?? packageRoot, dsRoot.partialCase, dsRoot.attemptedTokenSource) : `token index unavailable: partial state with no named sub-case`;
20142
+ }
20143
+ }
19367
20144
  if (require.main === module) {
19368
20145
  const logRoot = (label, root, note = "") => {
19369
20146
  console.error(`[${SERVER_NAME}] Data root ${label}: ${root.path} (source: ${root.source})${note}`);
@@ -19371,15 +20148,19 @@ if (require.main === module) {
19371
20148
  let dataPaths;
19372
20149
  try {
19373
20150
  const shared = require_mcpDataRoots();
20151
+ const bornRepo = require_bornRepo();
20152
+ const errorCatalog = require_errorCatalog();
19374
20153
  const packageRoot = shared.resolvePackageRoot(__dirname);
19375
- const components = shared.resolveConsumerOwnedRoot({
19376
- envValue: process.env.COMPONENTS_DIR,
19377
- relPath: DEFAULT_COMPONENTS_DIR,
20154
+ const dsRoot = bornRepo.findDesignSystemRoot(process.cwd());
20155
+ const componentRoots = shared.resolveComponentRoots({
20156
+ envValue: process.env.COMPONENTS_DIR || process.env.COMPONENT_DIR,
20157
+ dsRoot,
19378
20158
  packageRoot
19379
20159
  });
19380
- const tokenIndex = shared.resolveConsumerOwnedRoot({
20160
+ const projectRoot = dsRoot.root ?? packageRoot;
20161
+ const tokenIndex = shared.resolveTokenIndexRoot({
19381
20162
  envValue: process.env.TOKEN_INDEX_DIR,
19382
- relPath: DEFAULT_TOKEN_INDEX_DIR,
20163
+ dsRoot,
19383
20164
  packageRoot
19384
20165
  });
19385
20166
  const patterns = shared.resolvePackageOwnedRoot({
@@ -19407,24 +20188,42 @@ if (require.main === module) {
19407
20188
  packageRoot,
19408
20189
  relPath: "design-language/design-philosophy.yaml"
19409
20190
  });
19410
- logRoot("components", components);
19411
- logRoot(
19412
- "token-index",
19413
- tokenIndex,
19414
- tokenIndex.source === "package" ? " \u2014 package token snapshot in use; if this project customizes tokens, run 'npx designerpunk generate' to build a local token-index" : ""
20191
+ console.error(`[${SERVER_NAME}] Design-system root: ${dsRoot.state}${dsRoot.partialCase ? ` (${dsRoot.partialCase})` : ""}`);
20192
+ console.error(
20193
+ `[${SERVER_NAME}] Project root: ${projectRoot} (source: ${dsRoot.root ? dsRoot.state : "unborn \u2192 package"})`
19415
20194
  );
20195
+ componentRoots.roots.forEach((root, i) => {
20196
+ logRoot(`components[${i}]`, { path: root, source: componentRoots.sources[i] });
20197
+ });
20198
+ if (tokenIndex.ok) {
20199
+ logRoot(
20200
+ "token-index",
20201
+ { path: tokenIndex.path, source: tokenIndex.source },
20202
+ tokenIndex.tokenOrigin ? ` (tokenOrigin: ${tokenIndex.tokenOrigin})` : ""
20203
+ );
20204
+ } else {
20205
+ const tokenIndexMessage = resolveTokenIndexUnavailableMessage(
20206
+ tokenIndex.reason,
20207
+ dsRoot,
20208
+ packageRoot,
20209
+ errorCatalog,
20210
+ process.env.TOKEN_INDEX_DIR
20211
+ );
20212
+ console.error(`[${SERVER_NAME}] ${tokenIndexMessage}`);
20213
+ }
19416
20214
  logRoot("experience-patterns", patterns);
19417
20215
  logRoot("layout-templates", templates);
19418
20216
  logRoot("family-guidance", guidance);
19419
20217
  logRoot("family-registry", registry2);
19420
20218
  logRoot("design-language", designLanguage);
19421
20219
  dataPaths = {
19422
- componentsDir: components.path,
20220
+ componentsDir: componentRoots.roots,
20221
+ projectRoot,
19423
20222
  patternsDir: patterns.path,
19424
20223
  templatesDir: templates.path,
19425
20224
  guidanceDir: guidance.path,
19426
20225
  registryPath: registry2.path,
19427
- tokenIndexDir: tokenIndex.path,
20226
+ tokenIndexDir: tokenIndex.ok ? tokenIndex.path : void 0,
19428
20227
  designLanguagePath: designLanguage.path
19429
20228
  };
19430
20229
  } catch {
@@ -19449,7 +20248,9 @@ if (require.main === module) {
19449
20248
  }
19450
20249
  // Annotate the CommonJS export names for ESM import in node:
19451
20250
  0 && (module.exports = {
19452
- createTestableServer
20251
+ createTestableServer,
20252
+ resolveTokenIndexUnavailableMessage,
20253
+ tools
19453
20254
  });
19454
20255
  /*! Bundled license information:
19455
20256