@3fn/core 14.0.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.
- package/.kiro/steering/AI-Collaboration-Principles.md +9 -3
- package/.kiro/steering/Agent-Directory.md +31 -7
- package/.kiro/steering/Civitas-System-Overview.md +5 -14
- package/.kiro/steering/DesignerPunk-Systems-Overview.md +3 -3
- package/.kiro/steering/Spec-Feedback-Protocol.md +2 -11
- package/.kiro/steering/Task-Completion-Protocol.md +17 -16
- package/.kiro/steering/start-up-tasks.md +15 -7
- package/CHANGELOG.md +74 -0
- package/README.md +26 -21
- package/application-mcp-server/src/__tests__/consumerRootLiveReindex.test.ts +118 -0
- package/application-mcp-server/src/__tests__/errorCatalogWiring.test.ts +73 -0
- package/application-mcp-server/src/__tests__/mcpDataRootsDeclaration.test.ts +107 -0
- package/application-mcp-server/src/__tests__/tool-boundary.contract.test.ts +55 -0
- package/application-mcp-server/src/index.ts +249 -59
- package/application-mcp-server/src/indexer/ComponentIndexer.ts +273 -46
- package/application-mcp-server/src/indexer/ModeClassifier.ts +23 -16
- package/application-mcp-server/src/indexer/SemanticOverrideReader.ts +113 -0
- package/application-mcp-server/src/indexer/TokenIndexer.ts +195 -3
- package/application-mcp-server/src/indexer/__tests__/MultiRootIndexing.test.ts +134 -0
- package/application-mcp-server/src/indexer/__tests__/ThemeResolution.test.ts +241 -0
- package/application-mcp-server/src/indexer/__tests__/ThemeRootFollowsIndex.test.ts +216 -0
- package/application-mcp-server/src/indexer/__tests__/fixtures/consumerFixture.ts +84 -0
- package/application-mcp-server/src/indexer/resolveThemeTierRoot.ts +61 -0
- package/application-mcp-server/src/watcher/FileWatcher.ts +20 -7
- package/dist/ComponentTokens.android.kt +12 -12
- package/dist/ComponentTokens.ios.swift +12 -12
- package/dist/ComponentTokens.web.css +3 -3
- package/dist/DesignTokens.android.kt +1 -5
- package/dist/DesignTokens.dtcg.json +388 -122
- package/dist/DesignTokens.figma.json +281 -941
- package/dist/DesignTokens.ios.swift +1 -5
- package/dist/DesignTokens.web.css +5 -5
- package/dist/browser/designerpunk.esm.js +174 -103
- package/dist/browser/designerpunk.esm.min.js +58 -55
- package/dist/browser/designerpunk.umd.js +174 -103
- package/dist/browser/designerpunk.umd.min.js +58 -55
- package/dist/browser/tokens.css +7 -7
- package/dist/build/platforms/AndroidMotionTokenFormatter.d.ts +101 -0
- package/dist/build/platforms/AndroidMotionTokenFormatter.js +220 -0
- package/dist/build/platforms/WebMotionTokenFormatter.d.ts +85 -0
- package/dist/build/platforms/WebMotionTokenFormatter.js +167 -0
- package/dist/build/platforms/iOSMotionTokenFormatter.d.ts +99 -0
- package/dist/build/platforms/iOSMotionTokenFormatter.js +221 -0
- package/dist/build/tokens/defineComponentTokens.d.ts +10 -0
- package/dist/build/tokens/defineComponentTokens.js +26 -0
- package/dist/build/validation/index.d.ts +0 -4
- package/dist/build/validation/index.js +1 -8
- package/dist/cli/attach.d.ts +153 -0
- package/dist/cli/attach.js +423 -0
- package/dist/cli/designerpunk.d.ts +46 -0
- package/dist/cli/designerpunk.js +171 -34
- package/dist/cli/figma-extract.js +10 -1
- package/dist/cli/figma-push.js +11 -2
- package/dist/cli/init.d.ts +36 -5
- package/dist/cli/init.js +348 -143
- package/dist/cli/loadComponentTokens.d.ts +25 -0
- package/dist/cli/loadComponentTokens.js +87 -8
- package/dist/cli/shared/bornRepo.d.ts +50 -0
- package/dist/cli/shared/bornRepo.js +199 -0
- package/dist/cli/shared/errorCatalog.d.ts +130 -0
- package/dist/cli/shared/errorCatalog.js +148 -0
- package/dist/cli/shared/mcpConfig/cc.d.ts +25 -0
- package/dist/cli/shared/mcpConfig/cc.js +156 -0
- package/dist/cli/shared/mcpConfig/kiro.d.ts +53 -0
- package/dist/cli/shared/mcpConfig/kiro.js +140 -0
- package/dist/cli/shared/mcpDataRoots.d.ts +88 -1
- package/dist/cli/shared/mcpDataRoots.js +76 -2
- package/dist/cli/shared/transforms.d.ts +64 -0
- package/dist/cli/shared/transforms.js +138 -0
- package/dist/cli/shared/vocabulary.d.ts +50 -0
- package/dist/cli/shared/vocabulary.js +62 -0
- package/dist/cli/sync/Applier.d.ts +25 -26
- package/dist/cli/sync/Applier.js +37 -73
- package/dist/cli/sync/Classifier.d.ts +70 -6
- package/dist/cli/sync/Classifier.js +123 -84
- package/dist/cli/sync/FileScanner.d.ts +19 -10
- package/dist/cli/sync/FileScanner.js +33 -25
- package/dist/cli/sync/KeyGrain.d.ts +106 -0
- package/dist/cli/sync/KeyGrain.js +301 -0
- package/dist/cli/sync/Manifest.d.ts +147 -12
- package/dist/cli/sync/Manifest.js +276 -21
- package/dist/cli/sync/Migration.d.ts +271 -0
- package/dist/cli/sync/Migration.js +764 -0
- package/dist/cli/sync/NameContract.d.ts +169 -0
- package/dist/cli/sync/NameContract.js +246 -0
- package/dist/cli/sync/RegionGrain.d.ts +118 -0
- package/dist/cli/sync/RegionGrain.js +167 -0
- package/dist/cli/sync/Reporter.d.ts +33 -4
- package/dist/cli/sync/Reporter.js +112 -53
- package/dist/cli/sync/SteeringDirCheck.d.ts +32 -4
- package/dist/cli/sync/SteeringDirCheck.js +62 -14
- package/dist/cli/sync/index.d.ts +125 -6
- package/dist/cli/sync/index.js +716 -66
- package/dist/color/OklchValidator.d.ts +43 -3
- package/dist/color/OklchValidator.js +46 -8
- package/dist/components/core/Avatar-Base/avatar.tokens.d.ts +21 -26
- package/dist/components/core/Avatar-Base/avatar.tokens.js +31 -34
- package/dist/components/core/Avatar-Base/index.d.ts +1 -1
- package/dist/components/core/Avatar-Base/index.js +2 -2
- package/dist/components/core/Button-CTA/Button-CTA.refs.d.ts +83 -0
- package/dist/components/core/Button-CTA/Button-CTA.refs.js +86 -0
- package/dist/components/core/Button-CTA/Button-CTA.tokens.d.ts +20 -10
- package/dist/components/core/Button-CTA/Button-CTA.tokens.js +21 -10
- package/dist/components/core/Button-CTA/index.d.ts +2 -2
- package/dist/components/core/Button-CTA/index.js +3 -3
- package/dist/components/core/Button-Icon/buttonIcon.tokens.d.ts +28 -14
- package/dist/components/core/Button-Icon/buttonIcon.tokens.js +35 -20
- package/dist/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.d.ts +11 -30
- package/dist/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.js +16 -49
- package/dist/components/core/Container-Base/Container-Base.refs.d.ts +181 -0
- package/dist/components/core/Container-Base/Container-Base.refs.js +223 -0
- package/dist/components/core/Container-Base/index.d.ts +2 -2
- package/dist/components/core/Container-Base/index.js +10 -10
- package/dist/components/core/Container-Base/platforms/web/ContainerBase.web.js +1 -1
- package/dist/components/core/Container-Base/platforms/web/token-mapping.d.ts +27 -9
- package/dist/components/core/Container-Base/platforms/web/token-mapping.js +50 -22
- package/dist/components/core/Container-Card-Base/Container-Card-Base.refs.d.ts +149 -0
- package/dist/components/core/Container-Card-Base/Container-Card-Base.refs.js +207 -0
- package/dist/components/core/Container-Card-Base/index.d.ts +1 -1
- package/dist/components/core/Container-Card-Base/index.js +19 -19
- package/dist/components/core/Container-Card-Base/platforms/web/ContainerCardBase.web.js +7 -6
- package/dist/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.d.ts +15 -0
- package/dist/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.js +41 -1
- package/dist/components/core/Input-Text-Base/Input-Text-Base.refs.d.ts +331 -0
- package/dist/components/core/Input-Text-Base/Input-Text-Base.refs.js +164 -0
- package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.web.js +1 -1
- package/dist/components/core/Input-Text-Email/Input-Text-Email.refs.d.ts +20 -0
- package/dist/components/core/Input-Text-Email/Input-Text-Email.refs.js +34 -0
- package/dist/components/core/Input-Text-Password/Input-Text-Password.refs.d.ts +20 -0
- package/dist/components/core/Input-Text-Password/Input-Text-Password.refs.js +34 -0
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.d.ts +30 -0
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.js +72 -3
- package/dist/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.refs.d.ts +20 -0
- package/dist/components/core/Input-Text-PhoneNumber/Input-Text-PhoneNumber.refs.js +34 -0
- package/dist/consumer-canonical/agents/ada.md +331 -0
- package/dist/consumer-canonical/agents/data.md +429 -0
- package/dist/consumer-canonical/agents/kenya.md +400 -0
- package/dist/consumer-canonical/agents/leonardo.md +524 -0
- package/dist/consumer-canonical/agents/lina.md +501 -0
- package/dist/consumer-canonical/agents/sparky.md +395 -0
- package/dist/consumer-canonical/agents/stacy.md +515 -0
- package/dist/consumer-canonical/agents/thurgood.md +463 -0
- package/dist/consumer-canonical/always-set/agent-directory.dispositions.yaml +21 -0
- package/dist/consumer-canonical/always-set/agent-directory.overlay.md +51 -0
- package/dist/consumer-canonical/always-set/ai-collaboration-principles.dispositions.yaml +15 -0
- package/dist/consumer-canonical/always-set/ai-collaboration-principles.overlay.md +26 -0
- package/dist/consumer-canonical/always-set/civitas-system-overview.dispositions.yaml +15 -0
- package/dist/consumer-canonical/always-set/civitas-system-overview.overlay.md +70 -0
- package/dist/consumer-canonical/always-set/core-goals.dispositions.yaml +9 -0
- package/dist/consumer-canonical/always-set/core-goals.overlay.md +74 -0
- package/dist/consumer-canonical/always-set/designerpunk-systems-overview.dispositions.yaml +16 -0
- package/dist/consumer-canonical/always-set/designerpunk-systems-overview.overlay.md +44 -0
- package/dist/consumer-canonical/always-set/spec-feedback-protocol.dispositions.yaml +21 -0
- package/dist/consumer-canonical/always-set/spec-feedback-protocol.overlay.md +44 -0
- package/dist/consumer-canonical/always-set/start-up-tasks.dispositions.yaml +15 -0
- package/dist/consumer-canonical/always-set/start-up-tasks.overlay.md +25 -0
- package/dist/consumer-canonical/always-set/task-completion-protocol.dispositions.yaml +19 -0
- package/dist/consumer-canonical/always-set/task-completion-protocol.overlay.md +116 -0
- package/dist/consumer-canonical/consumer-profile.yaml +9 -0
- package/dist/consumer-canonical/shared/always-set.yaml +113 -0
- package/dist/consumer-canonical/shared/field-dispositions.yaml +85 -0
- package/dist/consumer-canonical/shared/shared-catalog.yaml +19 -0
- package/dist/consumer-canonical/shared/skills-map.yaml +33 -0
- package/dist/consumer-canonical/skills/adaptive/SKILL.md +301 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +238 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +168 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +329 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
- package/dist/consumer-canonical/skills/adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/dist/consumer-canonical/skills/edge-to-edge/SKILL.md +426 -0
- package/dist/consumer-canonical/skills/impeccable/SKILL.md +237 -0
- package/dist/consumer-canonical/skills/impeccable/detector-exclusions.md +42 -0
- package/dist/consumer-canonical/skills/impeccable/reference/adapt.md +190 -0
- package/dist/consumer-canonical/skills/impeccable/reference/animate.md +194 -0
- package/dist/consumer-canonical/skills/impeccable/reference/audit.md +150 -0
- package/dist/consumer-canonical/skills/impeccable/reference/bolder.md +113 -0
- package/dist/consumer-canonical/skills/impeccable/reference/brand-dp.md +103 -0
- package/dist/consumer-canonical/skills/impeccable/reference/clarify.md +174 -0
- package/dist/consumer-canonical/skills/impeccable/reference/codex.md +105 -0
- package/dist/consumer-canonical/skills/impeccable/reference/cognitive-load.md +106 -0
- package/dist/consumer-canonical/skills/impeccable/reference/color-and-contrast.md +122 -0
- package/dist/consumer-canonical/skills/impeccable/reference/colorize.md +155 -0
- package/dist/consumer-canonical/skills/impeccable/reference/craft.md +123 -0
- package/dist/consumer-canonical/skills/impeccable/reference/critique.md +245 -0
- package/dist/consumer-canonical/skills/impeccable/reference/delight.md +302 -0
- package/dist/consumer-canonical/skills/impeccable/reference/distill.md +111 -0
- package/dist/consumer-canonical/skills/impeccable/reference/extract-dp.md +43 -0
- package/dist/consumer-canonical/skills/impeccable/reference/harden.md +347 -0
- package/dist/consumer-canonical/skills/impeccable/reference/heuristics-scoring.md +234 -0
- package/dist/consumer-canonical/skills/impeccable/reference/interaction-design.md +195 -0
- package/dist/consumer-canonical/skills/impeccable/reference/layout.md +141 -0
- package/dist/consumer-canonical/skills/impeccable/reference/live.md +622 -0
- package/dist/consumer-canonical/skills/impeccable/reference/motion-design.md +109 -0
- package/dist/consumer-canonical/skills/impeccable/reference/onboard.md +234 -0
- package/dist/consumer-canonical/skills/impeccable/reference/optimize.md +258 -0
- package/dist/consumer-canonical/skills/impeccable/reference/overdrive.md +130 -0
- package/dist/consumer-canonical/skills/impeccable/reference/personas.md +179 -0
- package/dist/consumer-canonical/skills/impeccable/reference/polish.md +242 -0
- package/dist/consumer-canonical/skills/impeccable/reference/product-dp.md +79 -0
- package/dist/consumer-canonical/skills/impeccable/reference/quieter.md +99 -0
- package/dist/consumer-canonical/skills/impeccable/reference/responsive-design.md +114 -0
- package/dist/consumer-canonical/skills/impeccable/reference/shape.md +165 -0
- package/dist/consumer-canonical/skills/impeccable/reference/spatial-design.md +100 -0
- package/dist/consumer-canonical/skills/impeccable/reference/typeset.md +126 -0
- package/dist/consumer-canonical/skills/impeccable/reference/typography.md +159 -0
- package/dist/consumer-canonical/skills/impeccable/reference/ux-writing.md +107 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detect.mjs +21 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/browser/injected/index.mjs +1725 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/cli/main.mjs +244 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +4567 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/detect-antipatterns.mjs +43 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +252 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +535 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +986 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +208 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/engines/visual/screenshot-contrast.mjs +189 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/findings.mjs +12 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/node/file-system.mjs +198 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/profile/profiler.mjs +166 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/registry/antipatterns.mjs +419 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/rules/checks.mjs +2316 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/color.mjs +156 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/constants.mjs +101 -0
- package/dist/consumer-canonical/skills/impeccable/scripts/detector/shared/page.mjs +7 -0
- package/dist/consumer-canonical/skills/navigation-3/SKILL.md +110 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/index.md +38 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +498 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-advanced.md +155 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-basic.md +744 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +436 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +272 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
- package/dist/consumer-canonical/skills/navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
- package/dist/consumer-canonical/skills/theming-styles/SKILL.md +220 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/fundamentals.md +420 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
- package/dist/consumer-canonical/skills/theming-styles/references/android/develop/ui/compose/styles/theming.md +257 -0
- package/dist/generator/consumer-entry.js +5939 -0
- package/dist/generators/DTCGFormatGenerator.d.ts +14 -4
- package/dist/generators/DTCGFormatGenerator.js +35 -18
- package/dist/generators/TokenFileGenerator.js +20 -15
- package/dist/generators/generateTokenIndex.d.ts +14 -0
- package/dist/generators/generateTokenIndex.js +23 -0
- package/dist/generators/transformers/FigmaTransformer.d.ts +35 -0
- package/dist/generators/transformers/FigmaTransformer.js +101 -13
- package/dist/generators/types/DTCGTypes.d.ts +10 -0
- package/dist/mcp/application-mcp.js +1062 -261
- package/dist/mcp/docs-mcp.js +93 -13
- package/dist/mcp/product-mcp.js +539 -41
- package/dist/mcp/tool-manifest.json +184 -0
- package/dist/name-contract.json +4283 -0
- package/dist/tokens/BlurTokens.d.ts +3 -1
- package/dist/tokens/BlurTokens.js +6 -4
- package/dist/tokens/ShadowOffsetTokens.js +14 -14
- package/dist/tokens/SizingTokens.js +3 -3
- package/dist/tokens/TapAreaTokens.d.ts +13 -2
- package/dist/tokens/TapAreaTokens.js +19 -8
- package/dist/tokens/component/progress.d.ts +65 -5
- package/dist/tokens/component/progress.js +79 -18
- package/dist/tokens/semantic/ColorTokens.js +50 -5
- package/dist/tokens/semantic/TypographyTokens.js +10 -10
- package/dist/tokens/themes/dark/SemanticOverrides.js +21 -4
- package/dist/tools/integrity/Invariants.d.ts +23 -8
- package/dist/tools/integrity/Invariants.js +27 -8
- package/dist/tools/integrity/cli/run-audit.js +1 -1
- package/dist/types/PrimitiveToken.d.ts +15 -1
- package/dist/types/generated/TokenTypes.d.ts +1 -1
- package/dist/types/generated/TokenTypes.js +1 -1
- package/dist/types/index.d.ts +1 -0
- package/governance/AI-Collaboration-Framework.md +19 -10
- package/governance/BUILD-SYSTEM-SETUP.md +1 -2
- package/governance/Component-Development-Guide.md +1 -1
- package/governance/Component-Development-Standards.md +19 -18
- package/governance/Component-Family-Avatar.md +6 -6
- package/governance/Component-Family-Badge.md +19 -19
- package/governance/Component-Family-Button.md +26 -26
- package/governance/Component-Family-Chip.md +14 -14
- package/governance/Component-Family-Container.md +12 -12
- package/governance/Component-Family-Form-Inputs.md +61 -61
- package/governance/Component-Family-Icon.md +8 -8
- package/governance/Component-Family-Navigation.md +3 -3
- package/governance/Component-Inheritance-Structures.md +29 -28
- package/governance/Component-Readiness-Status.md +6 -7
- package/governance/Component-Templates.md +26 -26
- package/governance/Contract-System-Reference.md +1 -1
- package/governance/DTCG-Integration-Guide.md +63 -36
- package/governance/DesignerPunk-Integration-Guide.md +57 -61
- package/governance/Figma-Workflow-Guide.md +15 -8
- package/governance/Process-Development-Workflow.md +4 -4
- package/governance/Process-File-Organization.md +1 -4
- package/governance/Process-Hook-Operations.md +6 -7
- package/governance/Process-Integration-Methodology.md +5 -5
- package/governance/Process-Spec-Planning.md +187 -68
- package/governance/Product-Handoff-Protocol.md +27 -2
- package/governance/Rosetta-System-Architecture.md +7 -5
- package/governance/Test-Behavioral-Contract-Validation.md +5 -0
- package/governance/Test-Development-Standards.md +4 -4
- package/governance/Token-Family-Accessibility.md +18 -14
- package/governance/Token-Family-Blend.md +5 -4
- package/governance/Token-Family-Blur.md +8 -8
- package/governance/Token-Family-Color.md +40 -22
- package/governance/Token-Family-Glow.md +26 -24
- package/governance/Token-Family-Layering.md +1 -0
- package/governance/Token-Family-Motion.md +22 -13
- package/governance/Token-Family-Opacity.md +20 -34
- package/governance/Token-Family-Radius.md +4 -2
- package/governance/Token-Family-Responsive.md +4 -4
- package/governance/Token-Family-Shadow.md +69 -46
- package/governance/Token-Family-Spacing.md +22 -12
- package/governance/Token-Family-Typography.md +86 -85
- package/governance/Token-Governance.md +5 -1
- package/governance/Token-Quick-Reference.md +97 -80
- package/governance/Transformer-Development-Guide.md +5 -4
- package/governance/Web-Authoring-Standards.md +1 -1
- package/governance/classification-map.md +706 -10
- package/governance/completion-documentation-guide.md +298 -33
- package/governance/platform-implementation-guidelines.md +3 -3
- package/governance/release-management-system.md +28 -63
- package/mcp-server/src/index.ts +16 -12
- package/mcp-server/src/relocation-integrity-gate/__tests__/relocation-integrity-gate.test.ts +3 -3
- package/mcp-server/src/relocation-integrity-gate/relocation-integrity-gate.ts +70 -49
- package/mcp-server/src/tools/find-docs.ts +1 -0
- package/mcp-server/src/tools/get-document-full.ts +1 -0
- package/mcp-server/src/tools/get-document-summary.ts +1 -0
- package/mcp-server/src/tools/get-index-health.ts +1 -0
- package/mcp-server/src/tools/get-section.ts +1 -0
- package/mcp-server/src/tools/list-cross-references.ts +1 -0
- package/mcp-server/src/tools/rebuild-index.ts +1 -0
- package/mcp-server/src/tools/validate-metadata.ts +1 -0
- package/package.json +76 -16
- package/src/build/tokens/defineComponentTokens.ts +43 -1
- package/src/cli/templates/mcp-config.json.template +15 -20
- package/src/components/core/Avatar-Base/platforms/android/AvatarPreview.kt +9 -2
- package/src/components/core/Container-Base/Container-Base.schema.yaml +9 -11
- package/src/components/core/Container-Base/platforms/android/ContainerBase.android.kt +5 -5
- package/src/components/core/Container-Base/platforms/ios/ContainerBase.ios.swift +5 -5
- package/src/components/core/Container-Card-Base/platforms/android/ContainerCardBase.android.kt +3 -3
- package/src/components/core/Container-Card-Base/platforms/ios/ContainerCardBase.ios.swift +2 -2
- package/src/components/core/Nav-Header-App/contracts.yaml +1 -1
- package/src/components/core/Nav-Header-Base/component-meta.yaml +0 -1
- package/src/components/core/Nav-Header-Base/contracts.yaml +1 -1
- package/src/components/core/Nav-Header-Page/contracts.yaml +1 -1
- package/src/components/core/Nav-TabBar-Base/contracts.yaml +1 -1
- package/src/components/core/Progress-Bar-Base/contracts.yaml +1 -1
- package/src/tokens/BlurTokens.ts +6 -4
- package/src/tokens/ShadowOffsetTokens.ts +14 -14
- package/src/tokens/SizingTokens.ts +3 -3
- package/src/tokens/TapAreaTokens.ts +20 -8
- package/src/tokens/__tests__/BaselineGridAlignmentFlag.test.ts +116 -0
- package/src/tokens/__tests__/BlurTokens.test.ts +10 -2
- package/src/tokens/__tests__/ProgressTokenCompliance.test.ts +5 -3
- package/src/tokens/__tests__/ProgressTokenFormulas.test.ts +11 -11
- package/src/tokens/__tests__/ProgressTokenTranslation.test.ts +22 -20
- package/src/tokens/__tests__/SemanticColorContrast.test.ts +339 -0
- package/src/tokens/__tests__/ShadowOffsetTokens.test.ts +8 -7
- package/src/tokens/__tests__/SizingTokens.test.ts +10 -2
- package/src/tokens/__tests__/TokenCategories.test.ts +1 -1
- package/src/tokens/__tests__/neutral-partition.test.ts +28 -0
- package/src/tokens/component/progress.ts +83 -21
- package/src/tokens/semantic/AccessibilityTokens.README.md +2 -2
- package/src/tokens/semantic/ColorTokens.ts +50 -5
- package/src/tokens/semantic/TypographyTokens.ts +10 -10
- package/src/tokens/semantic/__tests__/ColorTokens.test.ts +8 -4
- package/src/tokens/themes/dark/SemanticOverrides.ts +23 -4
- package/src/types/PrimitiveToken.ts +15 -1
- package/token-index/components.yaml +8 -8
- package/token-index/meta.json +3 -0
- package/token-index/semantics.yaml +21 -15
- package/.kiro/agents/ada-prompt.md +0 -213
- package/.kiro/agents/ada-prompt.md.attribution.json +0 -45
- package/.kiro/agents/ada.json +0 -72
- package/.kiro/agents/ada.json.attribution.json +0 -13
- package/.kiro/agents/data-prompt.md +0 -324
- package/.kiro/agents/data-prompt.md.attribution.json +0 -53
- package/.kiro/agents/data.json +0 -51
- package/.kiro/agents/data.json.attribution.json +0 -13
- package/.kiro/agents/kenya-prompt.md +0 -309
- package/.kiro/agents/kenya-prompt.md.attribution.json +0 -53
- package/.kiro/agents/kenya.json +0 -46
- package/.kiro/agents/kenya.json.attribution.json +0 -13
- package/.kiro/agents/leonardo-prompt.md +0 -359
- package/.kiro/agents/leonardo-prompt.md.attribution.json +0 -45
- package/.kiro/agents/leonardo.json +0 -47
- package/.kiro/agents/leonardo.json.attribution.json +0 -13
- package/.kiro/agents/lina-prompt.md +0 -344
- package/.kiro/agents/lina-prompt.md.attribution.json +0 -53
- package/.kiro/agents/lina.json +0 -64
- package/.kiro/agents/lina.json.attribution.json +0 -13
- package/.kiro/agents/sparky-prompt.md +0 -312
- package/.kiro/agents/sparky-prompt.md.attribution.json +0 -53
- package/.kiro/agents/sparky.json +0 -56
- package/.kiro/agents/sparky.json.attribution.json +0 -13
- package/.kiro/agents/stacy-prompt.md +0 -304
- package/.kiro/agents/stacy-prompt.md.attribution.json +0 -45
- package/.kiro/agents/stacy.json +0 -46
- package/.kiro/agents/stacy.json.attribution.json +0 -13
- package/.kiro/agents/thurgood-prompt.md +0 -363
- package/.kiro/agents/thurgood-prompt.md.attribution.json +0 -45
- package/.kiro/agents/thurgood.json +0 -47
- package/.kiro/agents/thurgood.json.attribution.json +0 -13
- package/.kiro/steering/personal-note.md +0 -35
- package/designerpunk.config.ts +0 -27
- package/dist/android/DesignTokens.android.kt +0 -695
- package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.d.ts +0 -26
- package/dist/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.js +0 -224
- package/dist/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.d.ts +0 -30
- package/dist/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.js +0 -254
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.d.ts +0 -44
- package/dist/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.js +0 -376
- package/dist/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.d.ts +0 -38
- package/dist/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.js +0 -328
- package/dist/ios/DesignTokens.ios.swift +0 -697
- package/dist/web/DesignTokens.web.css +0 -929
- package/product-template/agents/README.md +0 -73
- package/product-template/agents/ada-prompt.md +0 -83
- package/product-template/agents/data-prompt.md +0 -74
- package/product-template/agents/kenya-prompt.md +0 -74
- package/product-template/agents/leonardo-prompt.md +0 -99
- package/product-template/agents/lina-prompt.md +0 -61
- package/product-template/agents/sparky-prompt.md +0 -66
- package/product-template/agents/stacy-prompt.md +0 -51
- package/product-template/agents/thurgood-prompt.md +0 -64
- package/src/TokenEngine.ts +0 -628
- package/src/__tests__/BuildSystemIntegration.test.ts +0 -485
- package/src/__tests__/ProductMCPIntegration.test.ts +0 -204
- package/src/__tests__/__mocks__/styleMock.js +0 -18
- package/src/__tests__/browser-distribution/build-error-handling.test.ts +0 -143
- package/src/__tests__/browser-distribution/bundle-loading.test.ts +0 -353
- package/src/__tests__/browser-distribution/bundler-resolution.test.ts +0 -223
- package/src/__tests__/browser-distribution/component-registration.test.ts +0 -217
- package/src/__tests__/browser-distribution/css-bundling.test.ts +0 -233
- package/src/__tests__/browser-distribution/demo-system.test.ts +0 -588
- package/src/__tests__/browser-distribution/mcp-format-compliance.property.test.ts +0 -379
- package/src/__tests__/browser-distribution/mcp-queryability.test.ts +0 -342
- package/src/__tests__/browser-distribution/minification-effectiveness.property.test.ts +0 -188
- package/src/__tests__/browser-distribution/registration-idempotency.property.test.ts +0 -372
- package/src/__tests__/browser-distribution/soft-ceiling-warning.test.ts +0 -161
- package/src/__tests__/browser-distribution/token-completeness.property.test.ts +0 -412
- package/src/__tests__/browser-distribution/token-loading.test.ts +0 -344
- package/src/__tests__/browser-distribution/umd-bundle-loading.test.ts +0 -169
- package/src/__tests__/console-allowlist.json +0 -14
- package/src/__tests__/console-fail-setup.ts +0 -169
- package/src/__tests__/examples/improved-test-example.test.ts +0 -120
- package/src/__tests__/expected-exports.json +0 -66
- package/src/__tests__/export-contracts.test.ts +0 -83
- package/src/__tests__/fixtures/acknowledged-differences.json +0 -127
- package/src/__tests__/fixtures/acknowledged-differences.schema.json +0 -113
- package/src/__tests__/fixtures/acknowledged-differences.types.ts +0 -230
- package/src/__tests__/fixtures/tokenFixtures.ts +0 -248
- package/src/__tests__/helpers/configModuleLoader.ts +0 -20
- package/src/__tests__/helpers/tsModuleLoader.ts +0 -24
- package/src/__tests__/helpers/web-component-test-utils.ts +0 -39
- package/src/__tests__/integration/BlendCrossPlatformConsistency.test.ts +0 -505
- package/src/__tests__/integration/BuildSystemCompatibility.test.ts +0 -551
- package/src/__tests__/integration/CrossPlatformConsistency.test.ts +0 -855
- package/src/__tests__/integration/EndToEndWorkflow.test.ts +0 -601
- package/src/__tests__/integration/ErrorHandling.test.ts +0 -459
- package/src/__tests__/integration/OpacityPlatformTranslation.test.ts +0 -364
- package/src/__tests__/integration/PerformanceValidation.test.ts +0 -887
- package/src/__tests__/integration/SemanticTokenGeneration.test.ts +0 -451
- package/src/__tests__/integration/Spec107-DesignLanguageContext.test.ts +0 -139
- package/src/__tests__/integration/TokenSystemIntegration.test.ts +0 -890
- package/src/__tests__/integration/ValidationPipeline.test.ts +0 -404
- package/src/__tests__/package-drift-validation.test.ts +0 -249
- package/src/__tests__/performance/GenerationPerformance.test.ts +0 -409
- package/src/__tests__/performance/OptimizationValidation.test.ts +0 -509
- package/src/__tests__/platform-parity/ProgressPlatformParity.test.ts +0 -546
- package/src/__tests__/spec073-opacity-architecture.test.ts +0 -344
- package/src/__tests__/stemma-system/behavioral-contract-validation.test.ts +0 -520
- package/src/__tests__/stemma-system/composition-compliance-validation.test.ts +0 -162
- package/src/__tests__/stemma-system/contract-catalog-name-validation.test.ts +0 -184
- package/src/__tests__/stemma-system/contract-existence-validation.test.ts +0 -43
- package/src/__tests__/stemma-system/contract-test-reporter.ts +0 -269
- package/src/__tests__/stemma-system/cross-platform-consistency.test.ts +0 -564
- package/src/__tests__/stemma-system/form-inputs-contracts.test.ts +0 -710
- package/src/__tests__/stemma-system/input-text-native-base-call-alignment.test.ts +0 -298
- package/src/__tests__/stemma-system/mcp-component-integration.test.ts +0 -445
- package/src/analytics/PrimitiveTokenFallbackTracker.ts +0 -228
- package/src/analytics/SemanticTokenUsageTracker.ts +0 -193
- package/src/analytics/StrategicFlexibilityTracker.ts +0 -226
- package/src/analytics/TokenUsageTracker.ts +0 -177
- package/src/analytics/UsagePatternAnalyzer.ts +0 -177
- package/src/analytics/__tests__/UsageTracking.test.ts +0 -647
- package/src/analytics/index.ts +0 -42
- package/src/assets/fonts/__tests__/androidFontLoadingValidation.test.ts +0 -600
- package/src/assets/fonts/__tests__/fontLoading.test.ts +0 -341
- package/src/assets/fonts/__tests__/iosFontConfiguration.test.ts +0 -256
- package/src/assets/fonts/__tests__/iosFontLoadingValidation.test.ts +0 -465
- package/src/assets/fonts/inter/Inter-Bold.ttf +0 -0
- package/src/assets/fonts/inter/Inter-Bold.woff2 +0 -0
- package/src/assets/fonts/inter/Inter-Medium.ttf +0 -0
- package/src/assets/fonts/inter/Inter-Medium.woff2 +0 -0
- package/src/assets/fonts/inter/Inter-Regular.ttf +0 -0
- package/src/assets/fonts/inter/Inter-Regular.woff2 +0 -0
- package/src/assets/fonts/inter/Inter-SemiBold.ttf +0 -0
- package/src/assets/fonts/inter/Inter-SemiBold.woff2 +0 -0
- package/src/assets/fonts/inter/inter.css +0 -49
- package/src/blend/BlendCalculator.ts +0 -120
- package/src/blend/ColorSpaceUtils.ts +0 -325
- package/src/blend/OklchBlendCalculator.ts +0 -82
- package/src/blend/ThemeAwareBlendUtilities.web.ts +0 -323
- package/src/blend/__tests__/BlendCalculator.test.ts +0 -393
- package/src/blend/__tests__/BlendUtilities.property.test.ts +0 -600
- package/src/blend/__tests__/ColorSpaceUtils.test.ts +0 -885
- package/src/blend/__tests__/InteractionStateAudit.test.ts +0 -238
- package/src/blend/__tests__/OklchBlendCalculator.test.ts +0 -134
- package/src/blend/__tests__/ThemeAwareBlendUtilities.test.ts +0 -200
- package/src/blend/__tests__/ThemeSwitching.test.ts +0 -508
- package/src/blend/index.ts +0 -37
- package/src/browser-entry.ts +0 -270
- package/src/build/.gitkeep +0 -1
- package/src/build/BuildOrchestrator.ts +0 -663
- package/src/build/__tests__/AndroidBuildIntegration.test.ts +0 -437
- package/src/build/__tests__/AndroidMotionTokenGeneration.test.ts +0 -256
- package/src/build/__tests__/BuildOrchestrator.test.ts +0 -562
- package/src/build/__tests__/MotionTokenCrossPlatformIntegration.test.ts +0 -424
- package/src/build/__tests__/WebCSSTokenGeneration.test.ts +0 -271
- package/src/build/__tests__/WebMotionTokenGeneration.test.ts +0 -305
- package/src/build/__tests__/WebNPMPackageStructure.test.ts +0 -447
- package/src/build/__tests__/iOSMotionTokenGeneration.test.ts +0 -298
- package/src/build/errors/BuildError.ts +0 -140
- package/src/build/errors/ErrorDocumentation.ts +0 -638
- package/src/build/errors/ErrorHandler.ts +0 -406
- package/src/build/errors/ErrorReporter.ts +0 -573
- package/src/build/errors/PlatformGenerationError.ts +0 -201
- package/src/build/errors/README.md +0 -486
- package/src/build/errors/RecoveryStrategy.ts +0 -393
- package/src/build/errors/TokenGenerationError.ts +0 -196
- package/src/build/errors/TokenReferenceError.ts +0 -204
- package/src/build/errors/__tests__/BuildError.test.ts +0 -212
- package/src/build/errors/__tests__/ErrorDocumentation.example.ts +0 -272
- package/src/build/errors/__tests__/ErrorDocumentation.test.ts +0 -458
- package/src/build/errors/__tests__/ErrorHandler.integration.test.ts +0 -303
- package/src/build/errors/__tests__/ErrorHandler.test.ts +0 -502
- package/src/build/errors/__tests__/ErrorReporter.test.ts +0 -581
- package/src/build/errors/__tests__/MotionTokenErrors.test.ts +0 -392
- package/src/build/errors/__tests__/RecoveryStrategy.test.ts +0 -643
- package/src/build/errors/index.ts +0 -90
- package/src/build/index.ts +0 -73
- package/src/build/orchestration/IncrementalBuilder.ts +0 -532
- package/src/build/orchestration/ParallelExecutor.ts +0 -336
- package/src/build/orchestration/ProgressTracker.ts +0 -582
- package/src/build/orchestration/SequentialExecutor.ts +0 -305
- package/src/build/orchestration/__tests__/IncrementalBuilder.test.ts +0 -354
- package/src/build/orchestration/__tests__/ParallelExecutor.integration.test.ts +0 -295
- package/src/build/orchestration/__tests__/ParallelExecutor.test.ts +0 -493
- package/src/build/orchestration/__tests__/ProgressTracker.test.ts +0 -529
- package/src/build/orchestration/__tests__/SequentialExecutor.integration.test.ts +0 -202
- package/src/build/orchestration/__tests__/SequentialExecutor.test.ts +0 -232
- package/src/build/orchestration/index.ts +0 -35
- package/src/build/platforms/.gitkeep +0 -1
- package/src/build/platforms/AndroidBuilder.ts +0 -1366
- package/src/build/platforms/AndroidShadowGenerator.ts +0 -394
- package/src/build/platforms/IOSShadowGenerator.ts +0 -324
- package/src/build/platforms/PlatformBuilder.ts +0 -131
- package/src/build/platforms/WebBuilder.ts +0 -1414
- package/src/build/platforms/WebShadowGenerator.ts +0 -288
- package/src/build/platforms/__tests__/AndroidBuilder.tokenGeneration.test.ts +0 -146
- package/src/build/platforms/__tests__/AndroidShadowGenerator.test.ts +0 -195
- package/src/build/platforms/__tests__/IOSShadowGenerator.test.ts +0 -156
- package/src/build/platforms/__tests__/WebShadowGenerator.test.ts +0 -123
- package/src/build/platforms/__tests__/iOSBuilder.test.ts +0 -1599
- package/src/build/platforms/iOSBuilder.ts +0 -1746
- package/src/build/platforms/index.ts +0 -9
- package/src/build/product/ProductTokenGenerator.ts +0 -162
- package/src/build/product/TokenIndexReader.ts +0 -78
- package/src/build/product/__tests__/KotlinEmitter.test.ts +0 -109
- package/src/build/product/__tests__/ProductTokenGenerator.test.ts +0 -135
- package/src/build/product/__tests__/SwiftEmitter.test.ts +0 -90
- package/src/build/product/__tests__/TokenIndexReader.test.ts +0 -85
- package/src/build/product/__tests__/WebEmitter.test.ts +0 -111
- package/src/build/product/__tests__/fixtures/tokens/layout.yaml +0 -21
- package/src/build/product/__tests__/fixtures/tokens/motion.yaml +0 -11
- package/src/build/product/__tests__/fixtures/tokens/visualization.yaml +0 -8
- package/src/build/product/emitters/KotlinEmitter.ts +0 -83
- package/src/build/product/emitters/SwiftEmitter.ts +0 -95
- package/src/build/product/emitters/WebEmitter.ts +0 -69
- package/src/build/tokens/.gitkeep +0 -1
- package/src/build/tokens/__tests__/ClassInvariantGuard.test.ts +0 -167
- package/src/build/tokens/__tests__/ComponentTokenGenerator.test.ts +0 -285
- package/src/build/tokens/__tests__/TokenIntegrator.test.ts +0 -319
- package/src/build/tokens/__tests__/TokenSelector.test.ts +0 -264
- package/src/build/tokens/__tests__/UnitConverter.applyScaleWithRounding.test.ts +0 -160
- package/src/build/tokens/__tests__/UnitConverter.test.ts +0 -331
- package/src/build/tokens/__tests__/brand-dual-instance.test.ts +0 -135
- package/src/build/tokens/__tests__/defineComponentTokens.test.ts +0 -440
- package/src/build/types/.gitkeep +0 -1
- package/src/build/types/BuildConfig.ts +0 -123
- package/src/build/types/BuildOrchestrator.ts +0 -114
- package/src/build/types/BuildResult.ts +0 -125
- package/src/build/types/index.ts +0 -39
- package/src/build/validation/.gitkeep +0 -1
- package/src/build/validation/AndroidBuildValidator.ts +0 -630
- package/src/build/validation/CrossPlatformValidationReporter.ts +0 -1267
- package/src/build/validation/InterfaceContractValidator.ts +0 -417
- package/src/build/validation/InterfaceValidator.ts +0 -326
- package/src/build/validation/MathematicalConsistencyValidator.ts +0 -874
- package/src/build/validation/MethodSignatureValidator.ts +0 -374
- package/src/build/validation/PropertyTypeValidator.ts +0 -312
- package/src/build/validation/TokenComparator.ts +0 -796
- package/src/build/validation/ValidationReporter.example.ts +0 -310
- package/src/build/validation/ValidationReporter.ts +0 -745
- package/src/build/validation/WebBuildValidator.ts +0 -583
- package/src/build/validation/__tests__/AndroidBuildValidator.test.ts +0 -522
- package/src/build/validation/__tests__/CrossPlatformValidationReporter.test.ts +0 -593
- package/src/build/validation/__tests__/InterfaceContractValidator.test.ts +0 -647
- package/src/build/validation/__tests__/InterfaceValidation.functional.test.ts +0 -360
- package/src/build/validation/__tests__/InterfaceValidator.test.ts +0 -318
- package/src/build/validation/__tests__/MethodSignatureValidator.test.ts +0 -625
- package/src/build/validation/__tests__/MotionTokenCrossPlatformValidation.test.ts +0 -305
- package/src/build/validation/__tests__/MotionTokenValidation.test.ts +0 -309
- package/src/build/validation/__tests__/PropertyTypeValidator.test.ts +0 -557
- package/src/build/validation/__tests__/TokenComparator.test.ts +0 -358
- package/src/build/validation/__tests__/ValidationReporter.integration.test.ts +0 -424
- package/src/build/validation/__tests__/ValidationReporter.test.ts +0 -793
- package/src/build/validation/__tests__/WebBuildValidator.test.ts +0 -495
- package/src/build/validation/iOSBuildValidator.ts +0 -783
- package/src/build/validation/index.ts +0 -74
- package/src/build/validation/types/InterfaceDefinition.ts +0 -101
- package/src/build/validation/types/ValidationResult.ts +0 -114
- package/src/build/workflow/BuildMode.ts +0 -336
- package/src/build/workflow/CICDIntegration.ts +0 -503
- package/src/build/workflow/ConfigHelpers.example.ts +0 -317
- package/src/build/workflow/ConfigHelpers.ts +0 -834
- package/src/build/workflow/README.md +0 -327
- package/src/build/workflow/SourceMapGenerator.ts +0 -362
- package/src/build/workflow/__tests__/BuildMode.test.ts +0 -544
- package/src/build/workflow/__tests__/CICDIntegration.test.ts +0 -602
- package/src/build/workflow/__tests__/ConfigHelpers.test.ts +0 -559
- package/src/build/workflow/__tests__/SourceMapGenerator.test.ts +0 -421
- package/src/build/workflow/index.ts +0 -42
- package/src/cli/__tests__/Applier.test.ts +0 -202
- package/src/cli/__tests__/Classifier.test.ts +0 -187
- package/src/cli/__tests__/FileScanner.test.ts +0 -108
- package/src/cli/__tests__/IgnoreFilter.test.ts +0 -92
- package/src/cli/__tests__/Manifest.test.ts +0 -107
- package/src/cli/__tests__/PackageResolver.test.ts +0 -66
- package/src/cli/__tests__/Prompter.test.ts +0 -165
- package/src/cli/__tests__/Reporter.test.ts +0 -128
- package/src/cli/__tests__/backward-compat.test.ts +0 -142
- package/src/cli/__tests__/figma-extract.test.ts +0 -342
- package/src/cli/__tests__/figma-push.test.ts +0 -350
- package/src/cli/__tests__/init.test.ts +0 -293
- package/src/cli/__tests__/loadComponentTokens.test.ts +0 -187
- package/src/cli/__tests__/pipeline-independence.test.ts +0 -127
- package/src/cli/__tests__/product-only.test.ts +0 -130
- package/src/cli/__tests__/resolveTokens.test.ts +0 -88
- package/src/cli/__tests__/staleness.test.ts +0 -132
- package/src/cli/__tests__/sync.test.ts +0 -199
- package/src/cli/__tests__/validate.test.ts +0 -69
- package/src/cli/designerpunk.ts +0 -410
- package/src/cli/figma-extract.ts +0 -331
- package/src/cli/figma-push.ts +0 -288
- package/src/cli/generateProductTokens.ts +0 -69
- package/src/cli/init.ts +0 -481
- package/src/cli/loadComponentTokens.ts +0 -145
- package/src/cli/resolveTokens.ts +0 -123
- package/src/cli/shared/mcpDataRoots.ts +0 -122
- package/src/cli/shared/resolvePackageRoot.ts +0 -58
- package/src/cli/shared/transforms.ts +0 -18
- package/src/cli/staleness.ts +0 -81
- package/src/cli/sync/Applier.ts +0 -128
- package/src/cli/sync/Classifier.ts +0 -130
- package/src/cli/sync/FileScanner.ts +0 -64
- package/src/cli/sync/IgnoreFilter.ts +0 -44
- package/src/cli/sync/Manifest.ts +0 -64
- package/src/cli/sync/PackageResolver.ts +0 -40
- package/src/cli/sync/Prompter.ts +0 -173
- package/src/cli/sync/Reporter.ts +0 -78
- package/src/cli/sync/SteeringDirCheck.ts +0 -166
- package/src/cli/sync/index.ts +0 -115
- package/src/cli/validate.ts +0 -135
- package/src/cli/validateProductTokens.ts +0 -55
- package/src/color/OklchConverter.ts +0 -284
- package/src/color/OklchValidator.ts +0 -186
- package/src/color/__tests__/OklchConverter.test.ts +0 -232
- package/src/color/__tests__/OklchRegression.test.ts +0 -101
- package/src/color/__tests__/OklchValidator.test.ts +0 -199
- package/src/color/__tests__/WcagContrast.test.ts +0 -76
- package/src/components/__tests__/BlendTokenUsageValidation.test.ts +0 -726
- package/src/components/__tests__/DynamicImportGuard.test.ts +0 -226
- package/src/components/__tests__/ExtensionLintPolicy.test.ts +0 -113
- package/src/components/__tests__/TokenCompliance.test.ts +0 -921
- package/src/components/__tests__/colorInheritanceValidation.test.ts +0 -267
- package/src/components/__tests__/componentTypographyInheritance.test.ts +0 -326
- package/src/components/core/Avatar-Base/README.md +0 -366
- package/src/components/core/Avatar-Base/__tests__/.gitkeep +0 -3
- package/src/components/core/Avatar-Base/__tests__/Avatar.accessibility.test.ts +0 -597
- package/src/components/core/Avatar-Base/__tests__/Avatar.icon-integration.test.ts +0 -656
- package/src/components/core/Avatar-Base/__tests__/Avatar.image.test.ts +0 -396
- package/src/components/core/Avatar-Base/__tests__/Avatar.lifecycle.test.ts +0 -545
- package/src/components/core/Avatar-Base/__tests__/Avatar.rendering.test.ts +0 -505
- package/src/components/core/Avatar-Base/__tests__/Avatar.test.ts +0 -701
- package/src/components/core/Avatar-Base/avatar.tokens.ts +0 -376
- package/src/components/core/Avatar-Base/index.ts +0 -25
- package/src/components/core/Avatar-Base/platforms/ios/.gitkeep +0 -3
- package/src/components/core/Avatar-Base/platforms/web/.gitkeep +0 -3
- package/src/components/core/Avatar-Base/platforms/web/Avatar.styles.css +0 -595
- package/src/components/core/Avatar-Base/platforms/web/Avatar.web.ts +0 -892
- package/src/components/core/Avatar-Base/platforms/web/hexagon-clip.svg +0 -87
- package/src/components/core/Avatar-Base/tokens/.gitkeep +0 -4
- package/src/components/core/Avatar-Base/types.ts +0 -86
- package/src/components/core/Badge-Count-Base/README.md +0 -323
- package/src/components/core/Badge-Count-Base/__tests__/BadgeCountBase.stemma.test.ts +0 -548
- package/src/components/core/Badge-Count-Base/__tests__/BadgeCountBase.test.ts +0 -452
- package/src/components/core/Badge-Count-Base/__tests__/test-utils.ts +0 -244
- package/src/components/core/Badge-Count-Base/index.ts +0 -37
- package/src/components/core/Badge-Count-Base/platforms/ios/.gitkeep +0 -1
- package/src/components/core/Badge-Count-Base/platforms/web/BadgeCountBase.styles.css +0 -148
- package/src/components/core/Badge-Count-Base/platforms/web/BadgeCountBase.web.ts +0 -363
- package/src/components/core/Badge-Count-Base/types.ts +0 -150
- package/src/components/core/Badge-Count-Notification/README.md +0 -396
- package/src/components/core/Badge-Count-Notification/__tests__/BadgeCountNotification.stemma.test.ts +0 -571
- package/src/components/core/Badge-Count-Notification/__tests__/BadgeCountNotification.test.ts +0 -490
- package/src/components/core/Badge-Count-Notification/__tests__/test-utils.ts +0 -256
- package/src/components/core/Badge-Count-Notification/index.ts +0 -60
- package/src/components/core/Badge-Count-Notification/platforms/web/BadgeCountNotification.styles.css +0 -182
- package/src/components/core/Badge-Count-Notification/platforms/web/BadgeCountNotification.web.ts +0 -401
- package/src/components/core/Badge-Count-Notification/tokens.ts +0 -124
- package/src/components/core/Badge-Count-Notification/types.ts +0 -119
- package/src/components/core/Badge-Label-Base/README.md +0 -251
- package/src/components/core/Badge-Label-Base/__tests__/BadgeLabelBase.stemma.test.ts +0 -549
- package/src/components/core/Badge-Label-Base/__tests__/BadgeLabelBase.test.ts +0 -439
- package/src/components/core/Badge-Label-Base/__tests__/test-utils.ts +0 -269
- package/src/components/core/Badge-Label-Base/__tests__/tokens.test.ts +0 -88
- package/src/components/core/Badge-Label-Base/index.ts +0 -41
- package/src/components/core/Badge-Label-Base/platforms/web/BadgeLabelBase.styles.css +0 -166
- package/src/components/core/Badge-Label-Base/platforms/web/BadgeLabelBase.web.ts +0 -340
- package/src/components/core/Badge-Label-Base/tokens.ts +0 -80
- package/src/components/core/Badge-Label-Base/types.ts +0 -148
- package/src/components/core/Button-CTA/Button-CTA.tokens.ts +0 -79
- package/src/components/core/Button-CTA/README.md +0 -293
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.alignment.test.ts +0 -355
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.test.ts +0 -698
- package/src/components/core/Button-CTA/__tests__/ButtonCTA.tokens.test.ts +0 -89
- package/src/components/core/Button-CTA/__tests__/setup.test.ts +0 -209
- package/src/components/core/Button-CTA/__tests__/test-utils.ts +0 -185
- package/src/components/core/Button-CTA/examples/BasicUsage.html +0 -133
- package/src/components/core/Button-CTA/examples/BasicUsage.tsx +0 -219
- package/src/components/core/Button-CTA/examples/Variants.html +0 -263
- package/src/components/core/Button-CTA/examples/WithIcon.html +0 -166
- package/src/components/core/Button-CTA/index.ts +0 -20
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.css +0 -395
- package/src/components/core/Button-CTA/platforms/web/ButtonCTA.web.ts +0 -644
- package/src/components/core/Button-CTA/platforms/web/__tests__/ButtonCTA.icon-integration.test.ts +0 -476
- package/src/components/core/Button-CTA/types.ts +0 -239
- package/src/components/core/Button-Icon/README.md +0 -371
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.alignment.test.ts +0 -358
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.properties-8-13.test.ts +0 -953
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.properties.test.ts +0 -920
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.stemma.test.ts +0 -622
- package/src/components/core/Button-Icon/__tests__/ButtonIcon.unit.test.ts +0 -560
- package/src/components/core/Button-Icon/__tests__/setup.test.ts +0 -361
- package/src/components/core/Button-Icon/__tests__/test-utils.ts +0 -248
- package/src/components/core/Button-Icon/buttonIcon.tokens.ts +0 -202
- package/src/components/core/Button-Icon/platforms/web/.gitkeep +0 -4
- package/src/components/core/Button-Icon/platforms/web/ButtonIcon.web.css +0 -600
- package/src/components/core/Button-Icon/platforms/web/ButtonIcon.web.ts +0 -625
- package/src/components/core/Button-Icon/types.ts +0 -186
- package/src/components/core/Button-VerticalList-Item/Button-VerticalList-Item.tokens.ts +0 -112
- package/src/components/core/Button-VerticalList-Item/README.md +0 -450
- package/src/components/core/Button-VerticalList-Item/__tests__/.gitkeep +0 -2
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.alignment.test.ts +0 -271
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.failLoudly.test.ts +0 -106
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.integration.test.ts +0 -480
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.properties.test.ts +0 -634
- package/src/components/core/Button-VerticalList-Item/__tests__/ButtonVerticalListItem.unit.test.ts +0 -746
- package/src/components/core/Button-VerticalList-Item/__tests__/rtlSupport.test.ts +0 -206
- package/src/components/core/Button-VerticalList-Item/__tests__/test-utils.ts +0 -297
- package/src/components/core/Button-VerticalList-Item/__tests__/visualStateMapping.test.ts +0 -419
- package/src/components/core/Button-VerticalList-Item/index.ts +0 -49
- package/src/components/core/Button-VerticalList-Item/platforms/android/VerticalListButtonItemTest.kt +0 -1109
- package/src/components/core/Button-VerticalList-Item/platforms/ios/.gitkeep +0 -2
- package/src/components/core/Button-VerticalList-Item/platforms/ios/VerticalListButtonItemTests.swift +0 -794
- package/src/components/core/Button-VerticalList-Item/platforms/web/.gitkeep +0 -2
- package/src/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.styles.css +0 -459
- package/src/components/core/Button-VerticalList-Item/platforms/web/ButtonVerticalListItem.web.ts +0 -1030
- package/src/components/core/Button-VerticalList-Item/platforms/web/visualStateMapping.ts +0 -411
- package/src/components/core/Button-VerticalList-Item/types.ts +0 -338
- package/src/components/core/Button-VerticalList-Set/README.md +0 -578
- package/src/components/core/Button-VerticalList-Set/__tests__/.gitkeep +0 -5
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.integration.test.ts +0 -676
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.property.test.ts +0 -786
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.property2.test.ts +0 -1109
- package/src/components/core/Button-VerticalList-Set/__tests__/ButtonVerticalListSet.unit.test.ts +0 -924
- package/src/components/core/Button-VerticalList-Set/__tests__/animationTiming.test.ts +0 -182
- package/src/components/core/Button-VerticalList-Set/__tests__/crossPlatformConsistency.test.ts +0 -685
- package/src/components/core/Button-VerticalList-Set/__tests__/deriveItemStates.test.ts +0 -179
- package/src/components/core/Button-VerticalList-Set/__tests__/validation.test.ts +0 -275
- package/src/components/core/Button-VerticalList-Set/index.ts +0 -32
- package/src/components/core/Button-VerticalList-Set/platforms/android/ButtonVerticalListSetTest.kt +0 -961
- package/src/components/core/Button-VerticalList-Set/platforms/ios/.gitkeep +0 -0
- package/src/components/core/Button-VerticalList-Set/platforms/ios/ButtonVerticalListSetTests.swift +0 -475
- package/src/components/core/Button-VerticalList-Set/platforms/web/.gitkeep +0 -4
- package/src/components/core/Button-VerticalList-Set/platforms/web/Button-VerticalList-Set.styles.css +0 -167
- package/src/components/core/Button-VerticalList-Set/platforms/web/ButtonVerticalListSet.web.ts +0 -1446
- package/src/components/core/Button-VerticalList-Set/types.ts +0 -788
- package/src/components/core/Chip-Base/__tests__/ChipBase.test.ts +0 -534
- package/src/components/core/Chip-Base/index.ts +0 -40
- package/src/components/core/Chip-Base/platforms/ios/.gitkeep +0 -3
- package/src/components/core/Chip-Base/platforms/web/.gitkeep +0 -5
- package/src/components/core/Chip-Base/platforms/web/ChipBase.styles.css +0 -280
- package/src/components/core/Chip-Base/platforms/web/ChipBase.web.ts +0 -480
- package/src/components/core/Chip-Base/types.ts +0 -189
- package/src/components/core/Chip-Filter/__tests__/ChipFilter.test.ts +0 -592
- package/src/components/core/Chip-Filter/index.ts +0 -34
- package/src/components/core/Chip-Filter/platforms/web/ChipFilter.styles.css +0 -105
- package/src/components/core/Chip-Filter/platforms/web/ChipFilter.web.ts +0 -539
- package/src/components/core/Chip-Filter/types.ts +0 -47
- package/src/components/core/Chip-Input/__tests__/ChipInput.test.ts +0 -472
- package/src/components/core/Chip-Input/index.ts +0 -35
- package/src/components/core/Chip-Input/platforms/ios/.gitkeep +0 -3
- package/src/components/core/Chip-Input/platforms/web/ChipInput.styles.css +0 -99
- package/src/components/core/Chip-Input/platforms/web/ChipInput.web.ts +0 -485
- package/src/components/core/Chip-Input/types.ts +0 -35
- package/src/components/core/Container-Base/README.md +0 -450
- package/src/components/core/Container-Base/__tests__/ContainerBase.test.ts +0 -712
- package/src/components/core/Container-Base/index.ts +0 -47
- package/src/components/core/Container-Base/platforms/web/ContainerBase.web.ts +0 -405
- package/src/components/core/Container-Base/platforms/web/styles.css +0 -198
- package/src/components/core/Container-Base/platforms/web/token-mapping.ts +0 -573
- package/src/components/core/Container-Base/tokens.ts +0 -241
- package/src/components/core/Container-Base/types.ts +0 -307
- package/src/components/core/Container-Card-Base/README.md +0 -506
- package/src/components/core/Container-Card-Base/__tests__/ContainerCardBase.composition.test.ts +0 -167
- package/src/components/core/Container-Card-Base/__tests__/ContainerCardBase.test.ts +0 -646
- package/src/components/core/Container-Card-Base/index.ts +0 -64
- package/src/components/core/Container-Card-Base/platforms/web/ContainerCardBase.web.ts +0 -373
- package/src/components/core/Container-Card-Base/tokens.ts +0 -224
- package/src/components/core/Container-Card-Base/types.ts +0 -332
- package/src/components/core/Icon-Base/README.md +0 -168
- package/src/components/core/Icon-Base/__tests__/IconBase.test.ts +0 -192
- package/src/components/core/Icon-Base/index.ts +0 -34
- package/src/components/core/Icon-Base/platforms/ios/ASSET_CATALOG_SETUP.md +0 -239
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Contents.json +0 -6
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/Contents.json +0 -9
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/alert-circle.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/alert-circle.imageset/alert-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-down.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-down.imageset/arrow-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-left.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-left.imageset/arrow-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-right.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-right.imageset/arrow-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-up.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/arrow-up.imageset/arrow-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/award.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/award.imageset/award.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/bell.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/bell.imageset/bell.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/briefcase.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/briefcase.imageset/briefcase.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/calendar.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/calendar.imageset/calendar.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check-circle.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check-circle.imageset/check-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/check.imageset/check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-down.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-down.imageset/chevron-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-left.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-left.imageset/chevron-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-right.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/chevron-right.imageset/chevron-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/circle.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/circle.imageset/circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/clock.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/clock.imageset/clock.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/credit-card.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/credit-card.imageset/credit-card.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/dollar-sign.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/dollar-sign.imageset/dollar-sign.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/external-link.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/external-link.imageset/external-link.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye-off.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye-off.imageset/eye-off.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/eye.imageset/eye.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/file-text.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/file-text.imageset/file-text.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/filter.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/filter.imageset/filter.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/globe.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/globe.imageset/globe.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/heart.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/heart.imageset/heart.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/info.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/info.imageset/info.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/mail.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/mail.imageset/mail.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/map-pin.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/map-pin.imageset/map-pin.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/minus.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/minus.imageset/minus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-horizontal.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-horizontal.imageset/more-horizontal.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-vertical.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/more-vertical.imageset/more-vertical.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/phone.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/phone.imageset/phone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/plus.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/plus.imageset/plus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/refresh-cw.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/refresh-cw.imageset/refresh-cw.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/save.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/save.imageset/save.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/search.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/search.imageset/search.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/settings.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/settings.imageset/settings.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share-2.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share-2.imageset/share-2.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/share.imageset/share.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/shield.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/shield.imageset/shield.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smartphone.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smartphone.imageset/smartphone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smile.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/smile.imageset/smile.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/star.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/star.imageset/star.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/trending-up.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/trending-up.imageset/trending-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-check.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-check.imageset/user-check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-x.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user-x.imageset/user-x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/user.imageset/user.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/users.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/users.imageset/users.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/wifi.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/wifi.imageset/wifi.svg +0 -1
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/x.imageset/Contents.json +0 -15
- package/src/components/core/Icon-Base/platforms/ios/Icons.xcassets/Icons/x.imageset/x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/IconBase.web.ts +0 -553
- package/src/components/core/Icon-Base/platforms/web/assets/alert-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/arrow-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/award.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/bell.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/briefcase.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/calendar.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/check-circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/chevron-down.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/chevron-left.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/chevron-right.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/circle.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/clock.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/credit-card.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/dollar-sign.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/external-link.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/eye-off.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/eye.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/file-text.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/filter.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/globe.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/heart.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/info.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/mail.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/map-pin.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/minus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/more-horizontal.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/more-vertical.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/phone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/plus.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/refresh-cw.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/save.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/search.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/settings.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/share-2.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/share.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/shield.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/smartphone.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/smile.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/star.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/trending-up.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/user-check.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/user-x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/user.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/users.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/wifi.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/assets/x.svg +0 -1
- package/src/components/core/Icon-Base/platforms/web/styles.css +0 -203
- package/src/components/core/Icon-Base/types.ts +0 -338
- package/src/components/core/Input-Checkbox-Base/README.md +0 -390
- package/src/components/core/Input-Checkbox-Base/__tests__/InputCheckboxBase.stemma.test.ts +0 -552
- package/src/components/core/Input-Checkbox-Base/__tests__/InputCheckboxBase.test.ts +0 -878
- package/src/components/core/Input-Checkbox-Base/checkbox-sizing.tokens.ts +0 -37
- package/src/components/core/Input-Checkbox-Base/platforms/web/InputCheckboxBase.web.css +0 -477
- package/src/components/core/Input-Checkbox-Base/platforms/web/InputCheckboxBase.web.ts +0 -561
- package/src/components/core/Input-Checkbox-Base/types.ts +0 -399
- package/src/components/core/Input-Checkbox-Legal/README.md +0 -554
- package/src/components/core/Input-Checkbox-Legal/__tests__/InputCheckboxLegal.test.ts +0 -727
- package/src/components/core/Input-Checkbox-Legal/platforms/ios/.gitkeep +0 -2
- package/src/components/core/Input-Checkbox-Legal/platforms/web/InputCheckboxLegal.web.css +0 -112
- package/src/components/core/Input-Checkbox-Legal/platforms/web/InputCheckboxLegal.web.ts +0 -505
- package/src/components/core/Input-Checkbox-Legal/types.ts +0 -348
- package/src/components/core/Input-Radio-Base/.gitkeep +0 -2
- package/src/components/core/Input-Radio-Base/README.md +0 -427
- package/src/components/core/Input-Radio-Base/__tests__/.gitkeep +0 -1
- package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.form.test.ts +0 -299
- package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.stemma.test.ts +0 -543
- package/src/components/core/Input-Radio-Base/__tests__/InputRadioBase.test.ts +0 -429
- package/src/components/core/Input-Radio-Base/platforms/ios/.gitkeep +0 -1
- package/src/components/core/Input-Radio-Base/platforms/web/.gitkeep +0 -1
- package/src/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.css +0 -504
- package/src/components/core/Input-Radio-Base/platforms/web/InputRadioBase.web.ts +0 -648
- package/src/components/core/Input-Radio-Base/radio-sizing.tokens.ts +0 -37
- package/src/components/core/Input-Radio-Base/types.ts +0 -362
- package/src/components/core/Input-Radio-Set/README.md +0 -373
- package/src/components/core/Input-Radio-Set/__tests__/.gitkeep +0 -0
- package/src/components/core/Input-Radio-Set/__tests__/InputRadioSet.stemma.test.ts +0 -493
- package/src/components/core/Input-Radio-Set/__tests__/InputRadioSet.test.ts +0 -499
- package/src/components/core/Input-Radio-Set/platforms/web/InputRadioSet.web.css +0 -99
- package/src/components/core/Input-Radio-Set/platforms/web/InputRadioSet.web.ts +0 -790
- package/src/components/core/Input-Radio-Set/types.ts +0 -301
- package/src/components/core/Input-Text-Base/README.md +0 -258
- package/src/components/core/Input-Text-Base/__tests__/focusIndicators.test.ts +0 -311
- package/src/components/core/Input-Text-Base/__tests__/keyboardNavigation.test.ts +0 -444
- package/src/components/core/Input-Text-Base/__tests__/labelAssociation.test.ts +0 -418
- package/src/components/core/Input-Text-Base/__tests__/screenReaderSupport.test.ts +0 -405
- package/src/components/core/Input-Text-Base/__tests__/setup.ts +0 -17
- package/src/components/core/Input-Text-Base/__tests__/stateManagement.test.ts +0 -718
- package/src/components/core/Input-Text-Base/__tests__/test-utils.ts +0 -81
- package/src/components/core/Input-Text-Base/__tests__/touchTargetSizing.test.ts +0 -319
- package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.browser.ts +0 -241
- package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.web.css +0 -293
- package/src/components/core/Input-Text-Base/platforms/web/InputTextBase.web.ts +0 -448
- package/src/components/core/Input-Text-Base/stateManagement.ts +0 -267
- package/src/components/core/Input-Text-Base/tokens.ts +0 -210
- package/src/components/core/Input-Text-Base/types.ts +0 -114
- package/src/components/core/Input-Text-Email/README.md +0 -252
- package/src/components/core/Input-Text-Email/__tests__/validation.test.ts +0 -127
- package/src/components/core/Input-Text-Email/platforms/web/InputTextEmail.browser.ts +0 -276
- package/src/components/core/Input-Text-Email/platforms/web/InputTextEmail.web.ts +0 -319
- package/src/components/core/Input-Text-Email/stateManagement.ts +0 -160
- package/src/components/core/Input-Text-Email/tokens.ts +0 -33
- package/src/components/core/Input-Text-Email/types.ts +0 -72
- package/src/components/core/Input-Text-Email/validation.ts +0 -130
- package/src/components/core/Input-Text-Password/README.md +0 -360
- package/src/components/core/Input-Text-Password/__tests__/validation.test.ts +0 -362
- package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.browser.ts +0 -434
- package/src/components/core/Input-Text-Password/platforms/web/InputTextPassword.web.ts +0 -512
- package/src/components/core/Input-Text-Password/stateManagement.ts +0 -244
- package/src/components/core/Input-Text-Password/tokens.ts +0 -32
- package/src/components/core/Input-Text-Password/types.ts +0 -177
- package/src/components/core/Input-Text-Password/validation.ts +0 -207
- package/src/components/core/Input-Text-PhoneNumber/README.md +0 -276
- package/src/components/core/Input-Text-PhoneNumber/__tests__/validation.test.ts +0 -301
- package/src/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.browser.ts +0 -370
- package/src/components/core/Input-Text-PhoneNumber/platforms/web/InputTextPhoneNumber.web.ts +0 -393
- package/src/components/core/Input-Text-PhoneNumber/stateManagement.ts +0 -250
- package/src/components/core/Input-Text-PhoneNumber/tokens.ts +0 -33
- package/src/components/core/Input-Text-PhoneNumber/types.ts +0 -135
- package/src/components/core/Input-Text-PhoneNumber/validation.ts +0 -302
- package/src/components/core/Nav-Header-App/README.md +0 -29
- package/src/components/core/Nav-Header-App/index.ts +0 -5
- package/src/components/core/Nav-Header-App/platforms/web/NavHeaderApp.web.ts +0 -37
- package/src/components/core/Nav-Header-App/types.ts +0 -32
- package/src/components/core/Nav-Header-Base/README.md +0 -21
- package/src/components/core/Nav-Header-Base/index.ts +0 -12
- package/src/components/core/Nav-Header-Base/platforms/web/NavHeaderBase.styles.css +0 -75
- package/src/components/core/Nav-Header-Base/platforms/web/NavHeaderBase.web.ts +0 -120
- package/src/components/core/Nav-Header-Base/types.ts +0 -63
- package/src/components/core/Nav-Header-Page/README.md +0 -34
- package/src/components/core/Nav-Header-Page/__tests__/NavHeaderPage.test.ts +0 -250
- package/src/components/core/Nav-Header-Page/index.ts +0 -12
- package/src/components/core/Nav-Header-Page/platforms/web/NavHeaderPage.styles.css +0 -90
- package/src/components/core/Nav-Header-Page/platforms/web/NavHeaderPage.web.ts +0 -169
- package/src/components/core/Nav-Header-Page/types.ts +0 -55
- package/src/components/core/Nav-SegmentedChoice-Base/README.md +0 -327
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.android.test.ts +0 -218
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.interaction.test.ts +0 -419
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.ios.test.ts +0 -207
- package/src/components/core/Nav-SegmentedChoice-Base/__tests__/NavSegmentedChoiceBase.visual.test.ts +0 -371
- package/src/components/core/Nav-SegmentedChoice-Base/index.ts +0 -38
- package/src/components/core/Nav-SegmentedChoice-Base/platforms/web/NavSegmentedChoiceBase.styles.css +0 -160
- package/src/components/core/Nav-SegmentedChoice-Base/platforms/web/NavSegmentedChoiceBase.web.ts +0 -477
- package/src/components/core/Nav-SegmentedChoice-Base/types.ts +0 -65
- package/src/components/core/Nav-TabBar-Base/README.md +0 -264
- package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.android.test.ts +0 -270
- package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.ios.test.ts +0 -221
- package/src/components/core/Nav-TabBar-Base/__tests__/NavTabBarBase.test.ts +0 -421
- package/src/components/core/Nav-TabBar-Base/examples/BasicUsage.html +0 -2
- package/src/components/core/Nav-TabBar-Base/examples/BasicUsage.tsx +0 -2
- package/src/components/core/Nav-TabBar-Base/index.ts +0 -20
- package/src/components/core/Nav-TabBar-Base/platforms/web/NavTabBarBase.styles.css +0 -281
- package/src/components/core/Nav-TabBar-Base/platforms/web/NavTabBarBase.web.ts +0 -420
- package/src/components/core/Nav-TabBar-Base/types.ts +0 -43
- package/src/components/core/Progress-Bar-Base/README.md +0 -31
- package/src/components/core/Progress-Bar-Base/__tests__/ProgressBarBase.test.ts +0 -202
- package/src/components/core/Progress-Bar-Base/index.ts +0 -6
- package/src/components/core/Progress-Bar-Base/platforms/web/ProgressBarBase.styles.css +0 -52
- package/src/components/core/Progress-Bar-Base/platforms/web/ProgressBarBase.web.ts +0 -135
- package/src/components/core/Progress-Bar-Base/types.ts +0 -46
- package/src/components/core/Progress-Indicator-Connector-Base/README.md +0 -169
- package/src/components/core/Progress-Indicator-Connector-Base/index.ts +0 -33
- package/src/components/core/Progress-Indicator-Connector-Base/platforms/web/ProgressIndicatorConnectorBase.styles.css +0 -50
- package/src/components/core/Progress-Indicator-Connector-Base/platforms/web/ProgressIndicatorConnectorBase.web.ts +0 -141
- package/src/components/core/Progress-Indicator-Connector-Base/types.ts +0 -67
- package/src/components/core/Progress-Indicator-Label-Base/README.md +0 -191
- package/src/components/core/Progress-Indicator-Label-Base/index.ts +0 -28
- package/src/components/core/Progress-Indicator-Label-Base/platforms/web/ProgressIndicatorLabelBase.styles.css +0 -81
- package/src/components/core/Progress-Indicator-Label-Base/platforms/web/ProgressIndicatorLabelBase.web.ts +0 -174
- package/src/components/core/Progress-Indicator-Label-Base/types.ts +0 -64
- package/src/components/core/Progress-Indicator-Node-Base/README.md +0 -206
- package/src/components/core/Progress-Indicator-Node-Base/__tests__/VisualStates.test.ts +0 -259
- package/src/components/core/Progress-Indicator-Node-Base/index.ts +0 -36
- package/src/components/core/Progress-Indicator-Node-Base/platforms/web/ProgressIndicatorNodeBase.styles.css +0 -193
- package/src/components/core/Progress-Indicator-Node-Base/platforms/web/ProgressIndicatorNodeBase.web.ts +0 -226
- package/src/components/core/Progress-Indicator-Node-Base/types.ts +0 -142
- package/src/components/core/Progress-Pagination-Base/README.md +0 -290
- package/src/components/core/Progress-Pagination-Base/__tests__/PaginationBase.test.ts +0 -290
- package/src/components/core/Progress-Pagination-Base/index.ts +0 -40
- package/src/components/core/Progress-Pagination-Base/platforms/web/ProgressPaginationBase.styles.css +0 -80
- package/src/components/core/Progress-Pagination-Base/platforms/web/ProgressPaginationBase.web.ts +0 -293
- package/src/components/core/Progress-Pagination-Base/types.ts +0 -112
- package/src/components/core/Progress-Stepper-Base/README.md +0 -311
- package/src/components/core/Progress-Stepper-Base/__tests__/StepperBase.test.ts +0 -345
- package/src/components/core/Progress-Stepper-Base/index.ts +0 -43
- package/src/components/core/Progress-Stepper-Base/platforms/web/ProgressStepperBase.styles.css +0 -49
- package/src/components/core/Progress-Stepper-Base/platforms/web/ProgressStepperBase.web.ts +0 -288
- package/src/components/core/Progress-Stepper-Base/types.ts +0 -175
- package/src/components/core/Progress-Stepper-Detailed/README.md +0 -401
- package/src/components/core/Progress-Stepper-Detailed/__tests__/StepperDetailed.test.ts +0 -481
- package/src/components/core/Progress-Stepper-Detailed/index.ts +0 -48
- package/src/components/core/Progress-Stepper-Detailed/platforms/web/ProgressStepperDetailed.styles.css +0 -106
- package/src/components/core/Progress-Stepper-Detailed/platforms/web/ProgressStepperDetailed.web.ts +0 -336
- package/src/components/core/Progress-Stepper-Detailed/types.ts +0 -195
- package/src/composition/BlendComposition.ts +0 -46
- package/src/composition/BlendCompositionParser.ts +0 -215
- package/src/composition/OpacityComposition.ts +0 -62
- package/src/composition/OpacityCompositionParser.ts +0 -308
- package/src/composition/__tests__/BlendCompositionParser.test.ts +0 -431
- package/src/composition/__tests__/OpacityCompositionParser.test.ts +0 -539
- package/src/composition/index.ts +0 -20
- package/src/config/ConfigLoader.ts +0 -143
- package/src/config/__resolution-matrix__/README.md +0 -76
- package/src/config/__resolution-matrix__/fixtures/faithful-cjs/compiled/defineConfig.js +0 -9
- package/src/config/__resolution-matrix__/fixtures/faithful-cjs/designerpunk.config.ts +0 -20
- package/src/config/__resolution-matrix__/fixtures/faithful-cjs/my-overrides.ts +0 -8
- package/src/config/__resolution-matrix__/fixtures/faithful-esm/compiled/defineConfig.js +0 -11
- package/src/config/__resolution-matrix__/fixtures/faithful-esm/designerpunk.config.ts +0 -23
- package/src/config/__resolution-matrix__/fixtures/faithful-esm/my-overrides.ts +0 -6
- package/src/config/__resolution-matrix__/fixtures/source-dir-cjs/designerpunk.config.ts +0 -11
- package/src/config/__resolution-matrix__/fixtures/source-dir-cjs/src/config/index.ts +0 -15
- package/src/config/__resolution-matrix__/fixtures/source-dir-esm/designerpunk.config.ts +0 -15
- package/src/config/__resolution-matrix__/fixtures/source-dir-esm/src/config/index.ts +0 -13
- package/src/config/__resolution-matrix__/run-matrix.js +0 -107
- package/src/config/__resolution-matrix__/runner.js +0 -153
- package/src/config/__resolution-matrix__/verify-real-loadconfig.js +0 -122
- package/src/config/__tests__/ConfigLoader.test.ts +0 -115
- package/src/config/defineConfig.ts +0 -71
- package/src/config/index.ts +0 -7
- package/src/config/scopedTsRequire.ts +0 -62
- package/src/constants/BaselineGrid.ts +0 -41
- package/src/constants/SpacingTokens.ts +0 -55
- package/src/figma/ComponentAnalysis.ts +0 -292
- package/src/figma/ComponentAnalysisGenerator.ts +0 -444
- package/src/figma/ConsoleMCPClient.ts +0 -168
- package/src/figma/ConsoleMCPClientImpl.ts +0 -1034
- package/src/figma/DesignExtractor.ts +0 -3620
- package/src/figma/TokenSyncWorkflow.ts +0 -915
- package/src/figma/TokenTranslator.ts +0 -891
- package/src/figma/VariantAnalyzer.ts +0 -712
- package/src/figma/__tests__/ComponentAnalysisGenerator.json.test.ts +0 -429
- package/src/figma/__tests__/ComponentAnalysisGenerator.markdown.test.ts +0 -428
- package/src/figma/__tests__/ConsoleMCPClient.bugfix.test.ts +0 -261
- package/src/figma/__tests__/ConsoleMCPClient.preservation.test.ts +0 -395
- package/src/figma/__tests__/ConsoleMCPClient.test.ts +0 -375
- package/src/figma/__tests__/DesignExtractor.boundVariableResolution.test.ts +0 -580
- package/src/figma/__tests__/DesignExtractor.buildNodeTree.test.ts +0 -535
- package/src/figma/__tests__/DesignExtractor.captureComponentScreenshot.test.ts +0 -176
- package/src/figma/__tests__/DesignExtractor.detectBehavioralContracts.test.ts +0 -263
- package/src/figma/__tests__/DesignExtractor.detectComponentTokenDecisions.test.ts +0 -379
- package/src/figma/__tests__/DesignExtractor.detectCompositionPatterns.test.ts +0 -507
- package/src/figma/__tests__/DesignExtractor.detectPlatformParity.test.ts +0 -406
- package/src/figma/__tests__/DesignExtractor.queryContext.test.ts +0 -214
- package/src/figma/__tests__/DesignExtractor.readFigmaComponent.test.ts +0 -431
- package/src/figma/__tests__/DesignExtractor.readStyles.test.ts +0 -204
- package/src/figma/__tests__/DesignExtractor.readTokenBindings.test.ts +0 -268
- package/src/figma/__tests__/DesignExtractor.reconstructCompositeTokens.test.ts +0 -403
- package/src/figma/__tests__/DesignExtractor.resolveUnknownVariableIds.test.ts +0 -259
- package/src/figma/__tests__/DesignExtractor.translateTokens.test.ts +0 -433
- package/src/figma/__tests__/DesignExtractor.validateModes.test.ts +0 -350
- package/src/figma/__tests__/TokenSyncWorkflow.batch.test.ts +0 -277
- package/src/figma/__tests__/TokenSyncWorkflow.drift.test.ts +0 -187
- package/src/figma/__tests__/TokenSyncWorkflow.preservation.test.ts +0 -544
- package/src/figma/__tests__/TokenSyncWorkflow.styles.test.ts +0 -245
- package/src/figma/__tests__/TokenSyncWorkflow.sync.test.ts +0 -217
- package/src/figma/__tests__/TokenTranslator.test.ts +0 -757
- package/src/figma/__tests__/VariantAnalyzer.detectConflicts.test.ts +0 -126
- package/src/figma/__tests__/VariantAnalyzer.test.ts +0 -633
- package/src/figma/__tests__/error-reporting.test.ts +0 -254
- package/src/figma/__tests__/preflight.test.ts +0 -94
- package/src/figma/error-reporting.ts +0 -260
- package/src/figma/index.ts +0 -98
- package/src/figma/portCleanup.ts +0 -86
- package/src/figma/preflight.ts +0 -120
- package/src/generators/BlendUtilityGenerator.ts +0 -847
- package/src/generators/BlendValueGenerator.ts +0 -198
- package/src/generators/DTCGFormatGenerator.ts +0 -1355
- package/src/generators/DTCGGeneratorConfig.ts +0 -46
- package/src/generators/ModeResolvedTokens.ts +0 -58
- package/src/generators/ResponsiveGridGenerator.ts +0 -273
- package/src/generators/TokenFileGenerator.ts +0 -2070
- package/src/generators/__tests__/AccessibilityTokenGeneration.test.ts +0 -350
- package/src/generators/__tests__/BlendUtilityGenerator.test.ts +0 -829
- package/src/generators/__tests__/BlendValueGenerator.test.ts +0 -200
- package/src/generators/__tests__/BreakpointTokenGeneration.test.ts +0 -172
- package/src/generators/__tests__/CSSThemeScoping.test.ts +0 -153
- package/src/generators/__tests__/DTCGConfigOptions.test.ts +0 -271
- package/src/generators/__tests__/DTCGErrorHandling.test.ts +0 -139
- package/src/generators/__tests__/DTCGFormatGenerator.integration.test.ts +0 -346
- package/src/generators/__tests__/DTCGFormatGenerator.property.test.ts +0 -497
- package/src/generators/__tests__/DTCGFormatGenerator.test.ts +0 -469
- package/src/generators/__tests__/FigmaTransformer.styles.test.ts +0 -398
- package/src/generators/__tests__/FigmaTransformer.variables.test.ts +0 -540
- package/src/generators/__tests__/GridSpacingTokenGeneration.test.ts +0 -254
- package/src/generators/__tests__/IconTokenGeneration.test.ts +0 -452
- package/src/generators/__tests__/KotlinThemeTypes.test.ts +0 -110
- package/src/generators/__tests__/ModeAwareGeneration.test.ts +0 -160
- package/src/generators/__tests__/NativeOklchOutput.test.ts +0 -56
- package/src/generators/__tests__/OklchExport.test.ts +0 -71
- package/src/generators/__tests__/ProductRepoSimulation.test.ts +0 -91
- package/src/generators/__tests__/ResponsiveGridGeneration.test.ts +0 -291
- package/src/generators/__tests__/Spec076TokenMigration.test.ts +0 -106
- package/src/generators/__tests__/Spec077ModesVerification.test.ts +0 -52
- package/src/generators/__tests__/SwiftThemeTypes.test.ts +0 -122
- package/src/generators/__tests__/TokenFileGenerator.test.ts +0 -914
- package/src/generators/__tests__/TransformerRegistry.test.ts +0 -118
- package/src/generators/__tests__/WcagValueExportSupport.test.ts +0 -84
- package/src/generators/__tests__/WcagValueInfrastructure.test.ts +0 -122
- package/src/generators/__tests__/WebOklchOutput.test.ts +0 -72
- package/src/generators/__tests__/generateTokenIndex.test.ts +0 -204
- package/src/generators/__tests__/helpers/defaultSemanticOptions.ts +0 -24
- package/src/generators/generateTokenFiles.ts +0 -337
- package/src/generators/generateTokenIndex.ts +0 -258
- package/src/generators/oklch/OklchExportUtils.ts +0 -57
- package/src/generators/oklch/OklchTokenIndexMetadata.ts +0 -30
- package/src/generators/transformers/FigmaTransformer.ts +0 -912
- package/src/generators/transformers/ITokenTransformer.ts +0 -56
- package/src/generators/transformers/TransformerRegistry.ts +0 -63
- package/src/generators/transformers/index.ts +0 -52
- package/src/generators/types/DTCGTypes.ts +0 -101
- package/src/integration/BuildErrorHandler.ts +0 -440
- package/src/integration/BuildSystemInterface.ts +0 -338
- package/src/integration/PlatformFileSelector.ts +0 -288
- package/src/integration/RegistryCoordinator.ts +0 -404
- package/src/integration/TranslationCoordinator.ts +0 -458
- package/src/integration/TreeShakingOptimizer.ts +0 -350
- package/src/integration/ValidationCoordinator.ts +0 -780
- package/src/integration/__tests__/ComponentTokenValidation.test.ts +0 -762
- package/src/integration/__tests__/ValidationCoordinator.test.ts +0 -609
- package/src/integration/__tests__/performance/ComponentTokenValidationPerformance.test.ts +0 -161
- package/src/integration/index.ts +0 -55
- package/src/naming/NamingConventionManager.ts +0 -318
- package/src/naming/PlatformNamingRules.ts +0 -278
- package/src/naming/__tests__/NamingConventions.test.ts +0 -224
- package/src/naming/index.ts +0 -23
- package/src/parent-completion.md +0 -1
- package/src/performance/CachingStrategy.ts +0 -426
- package/src/performance/FileGenerationOptimizer.ts +0 -294
- package/src/performance/PerformanceMonitor.ts +0 -185
- package/src/performance/PerformanceOptimizer.ts +0 -348
- package/src/performance/index.ts +0 -30
- package/src/providers/AndroidFileOrganizer.ts +0 -241
- package/src/providers/AndroidFormatGenerator.ts +0 -750
- package/src/providers/AndroidUnitConverter.ts +0 -177
- package/src/providers/FormatProvider.ts +0 -187
- package/src/providers/PathProvider.ts +0 -197
- package/src/providers/UnitProvider.ts +0 -106
- package/src/providers/WebFileOrganizer.ts +0 -121
- package/src/providers/WebFormatGenerator.ts +0 -611
- package/src/providers/WebUnitConverter.ts +0 -116
- package/src/providers/__tests__/AndroidAccessibilityTokens.test.ts +0 -86
- package/src/providers/__tests__/AndroidFormatGenerator-semantic.test.ts +0 -494
- package/src/providers/__tests__/FormatProviders.test.ts +0 -828
- package/src/providers/__tests__/InsetTokenGeneration.test.ts +0 -627
- package/src/providers/__tests__/PathProviders.test.ts +0 -512
- package/src/providers/__tests__/PlatformOutputFormat.test.ts +0 -252
- package/src/providers/__tests__/UnitProviders.test.ts +0 -721
- package/src/providers/__tests__/WebFormatGenerator-semantic.test.ts +0 -293
- package/src/providers/__tests__/iOSFormatGenerator-semantic.test.ts +0 -410
- package/src/providers/iOSFileOrganizer.ts +0 -162
- package/src/providers/iOSFormatGenerator.ts +0 -599
- package/src/providers/iOSUnitConverter.ts +0 -125
- package/src/providers/index.ts +0 -26
- package/src/registries/ComponentTokenRegistry.ts +0 -292
- package/src/registries/IRegistry.ts +0 -170
- package/src/registries/__tests__/ComponentTokenRegistry.test.ts +0 -446
- package/src/registries/__tests__/IRegistry.test.ts +0 -250
- package/src/registries/__tests__/PrimitiveTokenRegistry.test.ts +0 -342
- package/src/registries/__tests__/SemanticTokenRegistry.test.ts +0 -444
- package/src/resolvers/AndroidColorResolver.ts +0 -333
- package/src/resolvers/ModeThemeResolver.ts +0 -152
- package/src/resolvers/SemanticOverrideResolver.ts +0 -155
- package/src/resolvers/SemanticValueResolver.ts +0 -133
- package/src/resolvers/WebColorResolver.ts +0 -240
- package/src/resolvers/__tests__/AndroidColorResolver.test.ts +0 -507
- package/src/resolvers/__tests__/ModeThemeResolver.test.ts +0 -411
- package/src/resolvers/__tests__/SemanticOverrideResolver.test.ts +0 -186
- package/src/resolvers/__tests__/WebColorResolver.test.ts +0 -405
- package/src/resolvers/__tests__/iOSColorResolver.test.ts +0 -432
- package/src/resolvers/iOSColorResolver.ts +0 -224
- package/src/resolvers/index.ts +0 -11
- package/src/security/AIAgentRestrictions.ts +0 -298
- package/src/security/ContaminationAuditor.ts +0 -393
- package/src/security/ContaminationPrevention.ts +0 -275
- package/src/security/DocumentationGuard.ts +0 -258
- package/src/security/FlexibilityTokenGuard.ts +0 -256
- package/src/security/HumanApprovalWorkflow.ts +0 -319
- package/src/security/__tests__/AIAgentRestrictions.test.ts +0 -482
- package/src/security/__tests__/ContaminationPrevention.test.ts +0 -424
- package/src/security/__tests__/SecurityIntegration.test.ts +0 -505
- package/src/security/index.ts +0 -48
- package/src/testing/__tests__/utilities.test.ts +0 -175
- package/src/testing/index.ts +0 -154
- package/src/testing/jest-preset.ts +0 -62
- package/src/testing/style-mock.ts +0 -7
- package/src/testing/validators.ts +0 -10
- package/src/themes/ResolvedThemeSet.ts +0 -22
- package/src/themes/ThemeRegistry.ts +0 -97
- package/src/themes/__tests__/ThemeRegistry.test.ts +0 -162
- package/src/tools/ThemeFileGenerator.ts +0 -109
- package/src/tools/integrity/DiskFreshGenerator.ts +0 -36
- package/src/tools/integrity/GenerationIntegrityCheck.ts +0 -132
- package/src/tools/integrity/Invariants.ts +0 -228
- package/src/tools/integrity/Normalizer.ts +0 -94
- package/src/tools/integrity/SemanticComparator.ts +0 -127
- package/src/tools/integrity/__tests__/GenerationIntegrityCheck.test.ts +0 -132
- package/src/tools/integrity/__tests__/Invariants.test.ts +0 -142
- package/src/tools/integrity/__tests__/Normalizer.test.ts +0 -65
- package/src/tools/integrity/__tests__/SemanticComparator.test.ts +0 -62
- package/src/tools/integrity/__tests__/consumer-package-mode.test.ts +0 -205
- package/src/tools/integrity/cli/run-audit.ts +0 -150
- package/src/tools/integrity/inventory.ts +0 -51
- package/src/tools/integrity/manifest.ts +0 -56
- package/src/tools/integrity/types/index.ts +0 -183
- package/src/tools/release/__tests__/ChangeClassifier.test.ts +0 -133
- package/src/tools/release/__tests__/ChangeExtractor.test.ts +0 -222
- package/src/tools/release/__tests__/GitHubPublisher.test.ts +0 -240
- package/src/tools/release/__tests__/NotesRenderer.test.ts +0 -142
- package/src/tools/release/__tests__/NpmPublisher.test.ts +0 -289
- package/src/tools/release/__tests__/PipelineIntegration.test.ts +0 -188
- package/src/tools/release/__tests__/ReleasePipeline.test.ts +0 -192
- package/src/tools/release/__tests__/SemanticVersionValidator.test.ts +0 -49
- package/src/tools/release/__tests__/SummaryScanner.test.ts +0 -141
- package/src/tools/release/__tests__/TagResolver.test.ts +0 -91
- package/src/tools/release/__tests__/VersionCalculator.test.ts +0 -270
- package/src/tools/release/__tests__/helpers/NpmMockHelper.ts +0 -80
- package/src/tools/release/cli/ReleasePipeline.ts +0 -165
- package/src/tools/release/cli/release-tool.ts +0 -107
- package/src/tools/release/pipeline/ChangeClassifier.ts +0 -61
- package/src/tools/release/pipeline/ChangeExtractor.ts +0 -87
- package/src/tools/release/pipeline/NotesRenderer.ts +0 -66
- package/src/tools/release/pipeline/SummaryScanner.ts +0 -70
- package/src/tools/release/pipeline/TagResolver.ts +0 -40
- package/src/tools/release/pipeline/VersionCalculator.ts +0 -375
- package/src/tools/release/publishers/GitHubPublisher.ts +0 -228
- package/src/tools/release/publishers/NpmPublisher.ts +0 -196
- package/src/tools/release/release-config.json +0 -5
- package/src/tools/release/types/index.ts +0 -282
- package/src/tools/release/validators/SemanticVersionValidator.ts +0 -67
- package/src/types/ComponentTypes.ts +0 -76
- package/src/types/TranslationOutput.ts +0 -105
- package/src/types/ValidationResult.ts +0 -74
- package/src/types/__tests__/ComponentTypes.test.ts +0 -73
- package/src/types/css.d.ts +0 -35
- package/src/types/generated/TokenTypes.ts +0 -142
- package/src/types/index.ts +0 -42
- package/src/validators/BaselineGridValidator.ts +0 -119
- package/src/validators/CompositionPatternValidator.ts +0 -259
- package/src/validators/CrossPlatformConsistencyValidator.ts +0 -498
- package/src/validators/ErrorValidator.ts +0 -998
- package/src/validators/IValidator.ts +0 -273
- package/src/validators/MathematicalRelationshipParser.ts +0 -434
- package/src/validators/ModeParity.ts +0 -123
- package/src/validators/PassValidator.ts +0 -533
- package/src/validators/PlatformConstraintHandler.ts +0 -453
- package/src/validators/PrimitiveReferenceValidator.ts +0 -284
- package/src/validators/SemanticTokenValidator.ts +0 -496
- package/src/validators/StemmaComponentNamingValidator.ts +0 -524
- package/src/validators/StemmaErrorGuidanceSystem.ts +0 -1600
- package/src/validators/StemmaPropertyAccessibilityValidator.ts +0 -823
- package/src/validators/StemmaTokenUsageValidator.ts +0 -651
- package/src/validators/SyntaxValidator.ts +0 -537
- package/src/validators/ThreeTierValidator.ts +0 -822
- package/src/validators/ToleranceCalculator.ts +0 -324
- package/src/validators/ValidationReasoning.ts +0 -464
- package/src/validators/WCAGValidator.ts +0 -219
- package/src/validators/WarningValidator.ts +0 -626
- package/src/validators/__tests__/BaselineGridValidator.test.ts +0 -292
- package/src/validators/__tests__/BorderWidthValidation.test.ts +0 -595
- package/src/validators/__tests__/CompositionPatterns.test.ts +0 -463
- package/src/validators/__tests__/CrossPlatformConsistency.test.ts +0 -834
- package/src/validators/__tests__/IValidator.test.ts +0 -258
- package/src/validators/__tests__/MathematicalRelationshipParser.test.ts +0 -465
- package/src/validators/__tests__/PlatformConstraints.test.ts +0 -486
- package/src/validators/__tests__/SemanticTokenValidator.test.ts +0 -723
- package/src/validators/__tests__/StemmaComponentNamingValidator.test.ts +0 -597
- package/src/validators/__tests__/StemmaErrorGuidanceSystem.test.ts +0 -717
- package/src/validators/__tests__/StemmaPropertyAccessibilityValidator.test.ts +0 -349
- package/src/validators/__tests__/StemmaTokenUsageValidator.test.ts +0 -432
- package/src/validators/__tests__/SyntaxValidator.test.ts +0 -360
- package/src/validators/__tests__/ThreeTierValidator.test.ts +0 -906
- package/src/validators/__tests__/ValidationReasoning.test.ts +0 -636
- package/src/validators/__tests__/WCAGValidator.test.ts +0 -243
- package/src/validators/buildValidation.ts +0 -170
- package/src/validators/index.ts +0 -144
- package/src/workflows/ConsistencyValidator.ts +0 -339
- package/src/workflows/TokenGenerationWorkflow.ts +0 -460
- package/src/workflows/ValidationPipeline.ts +0 -284
- 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 =
|
|
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
|
|
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(
|
|
3231
|
-
let input =
|
|
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 [
|
|
3484
|
-
wsComponent.path =
|
|
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
|
|
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:
|
|
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,
|
|
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,
|
|
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
|
|
6927
|
-
var
|
|
6926
|
+
var path11 = __toESM2(require("path"));
|
|
6927
|
+
var fs14 = __toESM2(require("fs"));
|
|
6928
6928
|
function resolvePackageRoot2(fromDir) {
|
|
6929
|
-
const fromCli =
|
|
6930
|
-
if (
|
|
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
|
|
6980
|
-
var
|
|
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:
|
|
6987
|
+
return { path: path11.resolve(opts.envValue), source: "env" };
|
|
6985
6988
|
}
|
|
6986
|
-
return { path:
|
|
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:
|
|
6993
|
+
return { path: path11.resolve(opts.envValue), source: "env" };
|
|
6991
6994
|
}
|
|
6992
|
-
const cwdPath =
|
|
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:
|
|
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 =
|
|
7006
|
+
const stat = fs14.statSync(p);
|
|
7004
7007
|
if (stat.isDirectory()) {
|
|
7005
|
-
return
|
|
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,
|
|
7218
|
-
if (!
|
|
7618
|
+
function getElementAtPath(obj, path11) {
|
|
7619
|
+
if (!path11)
|
|
7219
7620
|
return obj;
|
|
7220
|
-
return
|
|
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(
|
|
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(
|
|
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((
|
|
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((
|
|
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
|
-
|
|
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((
|
|
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(
|
|
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((
|
|
14494
|
+
return new Promise((resolve5) => {
|
|
14094
14495
|
const json2 = serializeMessage(message);
|
|
14095
14496
|
if (this._stdout.write(json2)) {
|
|
14096
|
-
|
|
14497
|
+
resolve5();
|
|
14097
14498
|
} else {
|
|
14098
|
-
this._stdout.once("drain",
|
|
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
|
|
14106
|
-
var
|
|
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
|
|
17515
|
-
var
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
17666
|
-
this.loadTier(
|
|
17667
|
-
this.loadTier(
|
|
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
|
-
|
|
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 (!
|
|
18308
|
+
if (!fs8.existsSync(filePath)) return;
|
|
17742
18309
|
try {
|
|
17743
|
-
const content =
|
|
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
|
|
17783
|
-
var
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
|
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 (!
|
|
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
|
|
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
|
-
|
|
17879
|
-
|
|
17880
|
-
|
|
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
|
|
17885
|
-
for (const
|
|
17886
|
-
const
|
|
17887
|
-
|
|
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
|
-
|
|
17893
|
-
|
|
17894
|
-
|
|
17895
|
-
this.
|
|
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 ||
|
|
18593
|
+
const effectivePatternsDir = patternsDir || path9.join(legacyProjectRoot, "experience-patterns");
|
|
17899
18594
|
await this.patternIndexer.indexPatterns(effectivePatternsDir);
|
|
17900
|
-
const effectiveTemplatesDir = templatesDir ||
|
|
18595
|
+
const effectiveTemplatesDir = templatesDir || path9.join(legacyProjectRoot, "layout-templates");
|
|
17901
18596
|
await this.layoutTemplateIndexer.indexTemplates(effectiveTemplatesDir);
|
|
17902
|
-
const effectiveGuidanceDir = guidanceDir ||
|
|
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 (!
|
|
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 =
|
|
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 =
|
|
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(
|
|
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
|
|
17948
|
-
const
|
|
17949
|
-
const
|
|
17950
|
-
const
|
|
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
|
-
|
|
17955
|
-
|
|
17956
|
-
|
|
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
|
-
/**
|
|
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 (!
|
|
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 =
|
|
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 =
|
|
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 (
|
|
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
|
-
|
|
18112
|
-
|
|
18113
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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 =
|
|
18231
|
-
const hasContracts =
|
|
18232
|
-
const hasTypes =
|
|
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 =
|
|
18249
|
-
const hasImpl =
|
|
18250
|
-
const testsDir =
|
|
18251
|
-
const hasTests =
|
|
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,
|
|
19514
|
+
walk(node, path11, errors, warnings) {
|
|
18716
19515
|
const meta = this.indexer.getComponent(node.component);
|
|
18717
19516
|
if (!meta) {
|
|
18718
|
-
errors.push({ path:
|
|
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 = `${
|
|
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:
|
|
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:
|
|
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:
|
|
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], `${
|
|
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
|
|
18753
|
-
var
|
|
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
|
-
|
|
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 (!
|
|
19581
|
+
if (!fs12.existsSync(config2.dir)) continue;
|
|
18778
19582
|
try {
|
|
18779
|
-
const watcher =
|
|
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 =
|
|
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 =
|
|
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
|
|
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 (!
|
|
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 =
|
|
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: () =>
|
|
19161
|
-
|
|
19162
|
-
|
|
19163
|
-
|
|
19164
|
-
|
|
19165
|
-
|
|
19166
|
-
),
|
|
19167
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
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.
|
|
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
|
|
19376
|
-
|
|
19377
|
-
|
|
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
|
|
20160
|
+
const projectRoot = dsRoot.root ?? packageRoot;
|
|
20161
|
+
const tokenIndex = shared.resolveTokenIndexRoot({
|
|
19381
20162
|
envValue: process.env.TOKEN_INDEX_DIR,
|
|
19382
|
-
|
|
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
|
-
|
|
19411
|
-
|
|
19412
|
-
"
|
|
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:
|
|
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
|
|