@usefragments/core 1.5.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (64) hide show
  1. package/dist/chunk-RANPUC6C.js +72 -0
  2. package/dist/chunk-RANPUC6C.js.map +1 -0
  3. package/dist/{chunk-BAHCOAVG.js → chunk-WNMWKUYG.js} +447 -201
  4. package/dist/chunk-WNMWKUYG.js.map +1 -0
  5. package/dist/codes/index.d.ts +2 -2
  6. package/dist/codes/index.js +1 -1
  7. package/dist/compiled-types/index.d.ts +1 -1
  8. package/dist/compiled-types/index.js +8 -0
  9. package/dist/generate/index.d.ts +1 -1
  10. package/dist/{governance-pKrfh517.d.ts → governance-D9KtH-vg.d.ts} +617 -22
  11. package/dist/index.d.ts +800 -179
  12. package/dist/index.js +1003 -237
  13. package/dist/index.js.map +1 -1
  14. package/dist/react-types.d.ts +1 -1
  15. package/dist/registry.d.ts +36 -36
  16. package/dist/schemas/index.d.ts +1 -1
  17. package/dist/test-utils.d.ts +1 -1
  18. package/package.json +2 -1
  19. package/src/__tests__/policy-exclude.test.ts +180 -0
  20. package/src/agent-format.test.ts +13 -0
  21. package/src/agent-format.ts +9 -3
  22. package/src/canonical-bridge.ts +69 -1
  23. package/src/canonical-direction.test.ts +118 -0
  24. package/src/canonical-direction.ts +43 -2
  25. package/src/codes/__tests__/codes.test.ts +14 -2
  26. package/src/codes/codes.ts +41 -2
  27. package/src/compiled-types/index.ts +81 -0
  28. package/src/compiled-types/parse.test.ts +47 -0
  29. package/src/facts/builders.ts +48 -0
  30. package/src/facts/compile.ts +148 -34
  31. package/src/facts/fact-index.ts +15 -2
  32. package/src/facts/facts.test.ts +44 -3
  33. package/src/facts/index.ts +11 -6
  34. package/src/facts/types.ts +60 -9
  35. package/src/governance-integrity.test.ts +272 -4
  36. package/src/governance-integrity.ts +345 -25
  37. package/src/governance.ts +87 -1
  38. package/src/index.ts +46 -1
  39. package/src/policy-exclude.ts +113 -0
  40. package/src/rules/a11y-required-accessible-name.ts +175 -28
  41. package/src/rules/a11y-standard.ts +102 -0
  42. package/src/rules/a11y-utils.ts +7 -0
  43. package/src/rules/components-prefer-library.test.ts +75 -28
  44. package/src/rules/components-prefer-library.ts +35 -15
  45. package/src/rules/components-shadow-component.test.ts +21 -9
  46. package/src/rules/emit-gate.test.ts +74 -4
  47. package/src/rules/emit-gate.ts +24 -9
  48. package/src/rules/families.test.ts +69 -0
  49. package/src/rules/families.ts +52 -0
  50. package/src/rules/fix-availability.ts +1 -0
  51. package/src/rules/index.ts +18 -2
  52. package/src/rules/jsx-preferred-import-path.ts +29 -11
  53. package/src/rules/rules.test.ts +188 -8
  54. package/src/rules/styles-no-raw-color.ts +13 -4
  55. package/src/rules/styles-no-raw-dimensions.ts +13 -4
  56. package/src/rules/styles-no-raw-spacing.ts +12 -4
  57. package/src/rules/styles-no-raw-typography.ts +13 -4
  58. package/src/rules/tiers.ts +1 -0
  59. package/src/rules/utils.ts +39 -0
  60. package/src/tokens/design-token-parser.test.ts +131 -0
  61. package/src/tokens/design-token-parser.ts +362 -49
  62. package/src/types.ts +2 -2
  63. package/dist/chunk-BAHCOAVG.js.map +0 -1
  64. package/dist/{index-DbkPE46t.d.ts → index-hZAlYCli.d.ts} +8 -8
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/rules/fix-availability.ts","../src/codes/codes.ts","../src/facts/ids.ts","../src/facts/builders.ts","../src/package-identity-match.ts","../src/facts/fact-index.ts","../src/governance.ts","../src/facts/compile.ts","../src/codes/source-finding-bridge.ts"],"sourcesContent":["/**\n * Whether each implemented rule can emit a fix on at least one finding.\n *\n * Rule-backed FUI registry entries derive their `fixAvailable` value from this\n * map. A parity test keeps the keys in lock-step with `RULES`, so capability is\n * declared once instead of being repeated in rule and code registries.\n */\nexport const RULE_FIX_AVAILABLE = {\n \"components/unknown-prop\": false,\n \"components/forbidden-prop-value\": true,\n \"props/invalid-value\": true,\n \"imports/preferred-path\": true,\n \"components/preferred-component\": true,\n \"components/prefer-library\": true,\n \"components/shadow-component\": false,\n \"styles/no-raw-color\": true,\n \"styles/no-raw-dimensions\": true,\n \"styles/no-raw-spacing\": true,\n \"styles/no-raw-typography\": true,\n \"tailwind/arbitrary-color\": false,\n \"tailwind/arbitrary-spacing\": true,\n \"tailwind/forbidden-palette\": true,\n \"tailwind/off-scale-spacing-token\": true,\n \"tailwind/raw-color-via-token\": false,\n \"tailwind/unknown-class\": false,\n \"tokens/require-dual-fallback\": true,\n \"tokens/css-vars-must-be-defined\": false,\n \"tokens/upstream-drift\": false,\n \"theme/no-theme-coupled-literal\": false,\n \"a11y/required-accessible-name\": false,\n \"composition/cardinality\": false,\n \"composition/co-occurrence\": false,\n} as const satisfies Readonly<Record<string, boolean>>;\n\nexport type RuleWithFixAvailability = keyof typeof RULE_FIX_AVAILABLE;\n","import type { Severity } from \"../severity.js\";\nimport { RULE_FIX_AVAILABLE, type RuleWithFixAvailability } from \"../rules/fix-availability.js\";\nexport type { Severity } from \"../severity.js\";\n\nexport const EXPLAIN_URL_BASE = \"https://usefragments.com/errors/\";\n\nexport type CodeCategory =\n | \"canonical-usage\"\n | \"tokens\"\n | \"a11y\"\n | \"states\"\n | \"composition\"\n | \"props\"\n | \"performance\"\n | \"safety\"\n | \"system\";\n\nexport type CodeLifecycle = \"experimental\" | \"stable\" | \"deprecated\";\n\nexport interface FuiCode {\n code: string;\n ruleId: string;\n category: CodeCategory;\n defaultSeverity: Severity;\n title: string;\n explainUrl: string;\n lifecycle: CodeLifecycle;\n replacedBy?: string;\n fixAvailable: boolean;\n evidenceRequired: boolean;\n}\n\nfunction code(entry: Omit<FuiCode, \"explainUrl\"> & { explainUrl?: never }): FuiCode {\n return {\n ...entry,\n explainUrl: `${EXPLAIN_URL_BASE}${entry.code}`,\n };\n}\n\ntype RuleCodeEntry = Omit<FuiCode, \"explainUrl\" | \"fixAvailable\" | \"ruleId\"> & {\n ruleId: RuleWithFixAvailability;\n};\n\nfunction ruleCode(entry: RuleCodeEntry): FuiCode {\n const { evidenceRequired, ...metadata } = entry;\n return code({\n ...metadata,\n fixAvailable: RULE_FIX_AVAILABLE[entry.ruleId],\n evidenceRequired,\n });\n}\n\nexport const CODES = [\n code({\n code: \"FUI1001\",\n ruleId: \"components/non-canonical\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Component should use the canonical primitive\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1002\",\n ruleId: \"components/preferred-component\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Preferred component should be used\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1003\",\n ruleId: \"imports/preferred-path\",\n category: \"canonical-usage\",\n defaultSeverity: \"moderate\",\n title: \"Import should use the preferred path\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1004\",\n ruleId: \"components/prefer-library\",\n category: \"canonical-usage\",\n defaultSeverity: \"moderate\",\n title: \"Library component should be preferred\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI1005\",\n ruleId: \"components/allow\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Component is not in the allowed set\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI1006\",\n ruleId: \"components/deny\",\n category: \"canonical-usage\",\n defaultSeverity: \"serious\",\n title: \"Component is denied by policy\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI1007\",\n ruleId: \"components/shadow-component\",\n category: \"canonical-usage\",\n defaultSeverity: \"moderate\",\n title: \"Component shadows a canonical primitive\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI2001\",\n ruleId: \"tokens/require-design-tokens\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Design token is required\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI2002\",\n ruleId: \"tokens/allowed-prefixes\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Token prefix is not allowed\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2003\",\n ruleId: \"tokens/require-dual-fallback\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Token fallback is required\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2004\",\n ruleId: \"styles/no-raw-dimensions\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw dimension should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2005\",\n ruleId: \"styles/no-raw-color\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw color should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2006\",\n ruleId: \"styles/no-raw-spacing\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw spacing should use the scale\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2007\",\n ruleId: \"tailwind/arbitrary-color\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind arbitrary color should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2008\",\n ruleId: \"tailwind/arbitrary-spacing\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind arbitrary spacing should use the scale\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2009\",\n ruleId: \"tailwind/forbidden-palette\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind palette is forbidden\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2010\",\n ruleId: \"tailwind/raw-color-via-token\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind color should use a resolved token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2011\",\n ruleId: \"tailwind/off-scale-spacing-token\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind spacing token is off scale\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2012\",\n ruleId: \"tailwind/unknown-class\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Tailwind class is unknown\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI2013\",\n ruleId: \"brand/enforce-seeds\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Brand seed token is required\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2014\",\n ruleId: \"theme/no-theme-coupled-literal\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Theme-coupled literal should use a semantic token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2015\",\n ruleId: \"tokens/css-vars-must-be-defined\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"CSS variable is not in the contract vocabulary\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2016\",\n ruleId: \"styles/no-raw-typography\",\n category: \"tokens\",\n defaultSeverity: \"serious\",\n title: \"Raw typography should use a token\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI2017\",\n ruleId: \"tokens/upstream-drift\",\n category: \"tokens\",\n defaultSeverity: \"moderate\",\n title: \"Local token differs from its declared upstream source\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI3001\",\n ruleId: \"a11y/required-accessible-name\",\n category: \"a11y\",\n defaultSeverity: \"serious\",\n title: \"Accessible name is required\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI3002\",\n ruleId: \"a11y/standard\",\n category: \"a11y\",\n defaultSeverity: \"serious\",\n title: \"Accessibility standard failed\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI5001\",\n ruleId: \"components/required-children\",\n category: \"composition\",\n defaultSeverity: \"serious\",\n title: \"Required child component is missing\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI5002\",\n ruleId: \"components/canonical-usage\",\n category: \"composition\",\n defaultSeverity: \"serious\",\n title: \"Component should use canonical composition\",\n lifecycle: \"deprecated\",\n replacedBy: \"FUI1001\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI5003\",\n ruleId: \"composition/cardinality\",\n category: \"composition\",\n defaultSeverity: \"moderate\",\n title: \"Too many of a component in one region\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI5004\",\n ruleId: \"composition/co-occurrence\",\n category: \"composition\",\n defaultSeverity: \"moderate\",\n title: \"Required companion component is missing from the region\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI6001\",\n ruleId: \"props/unknown\",\n category: \"props\",\n defaultSeverity: \"moderate\",\n title: \"Prop is unknown\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI6002\",\n ruleId: \"props/invalid-value\",\n category: \"props\",\n defaultSeverity: \"serious\",\n title: \"Prop value is invalid\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI6003\",\n ruleId: \"props/banned-pattern\",\n category: \"props\",\n defaultSeverity: \"serious\",\n title: \"Prop pattern is banned\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI6004\",\n ruleId: \"components/forbidden-prop-value\",\n category: \"props\",\n defaultSeverity: \"serious\",\n title: \"Prop value is forbidden\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n ruleCode({\n code: \"FUI6005\",\n ruleId: \"components/unknown-prop\",\n category: \"props\",\n defaultSeverity: \"moderate\",\n title: \"Component prop is unknown\",\n lifecycle: \"experimental\",\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8001\",\n ruleId: \"safety/block-event-handlers\",\n category: \"safety\",\n defaultSeverity: \"serious\",\n title: \"Event handler prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8002\",\n ruleId: \"safety/block-dangerous-props\",\n category: \"safety\",\n defaultSeverity: \"critical\",\n title: \"Dangerous prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8003\",\n ruleId: \"safety/block-controlled-props\",\n category: \"safety\",\n defaultSeverity: \"serious\",\n title: \"Controlled prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8004\",\n ruleId: \"safety/block-function-props\",\n category: \"safety\",\n defaultSeverity: \"serious\",\n title: \"Function prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8005\",\n ruleId: \"safety/block-internal-props\",\n category: \"safety\",\n defaultSeverity: \"critical\",\n title: \"Internal prop is blocked\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI8006\",\n ruleId: \"safety/sanitize-hrefs\",\n category: \"safety\",\n defaultSeverity: \"critical\",\n title: \"Href must be sanitized\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9001\",\n ruleId: \"unused-suppression\",\n category: \"system\",\n defaultSeverity: \"minor\",\n title: \"Suppression is unused\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9002\",\n ruleId: \"expired-suppression\",\n category: \"system\",\n defaultSeverity: \"serious\",\n title: \"Suppression is expired\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9003\",\n ruleId: \"missing-expiry\",\n category: \"system\",\n defaultSeverity: \"minor\",\n title: \"Suppression expiry is missing\",\n lifecycle: \"experimental\",\n fixAvailable: true,\n evidenceRequired: true,\n }),\n code({\n code: \"FUI9004\",\n ruleId: \"config/unconsumed-key\",\n category: \"system\",\n defaultSeverity: \"moderate\",\n title: \"Config key is not consumed\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: false,\n }),\n code({\n code: \"FUI9005\",\n ruleId: \"config/orphan-scale\",\n category: \"system\",\n defaultSeverity: \"moderate\",\n title: \"Governance scale is not referenced\",\n lifecycle: \"experimental\",\n fixAvailable: false,\n evidenceRequired: false,\n }),\n] as const satisfies readonly FuiCode[];\n\nexport const byCode: ReadonlyMap<string, FuiCode> = new Map(\n CODES.map((entry) => [entry.code, entry])\n);\n\nexport const byRuleId: ReadonlyMap<string, FuiCode> = new Map(\n CODES.map((entry) => [entry.ruleId, entry])\n);\n\nexport function explainUrlForCode(code: string): string {\n return `${EXPLAIN_URL_BASE}${code}`;\n}\n","/**\n * Content-addressed fact IDs.\n *\n * A fact ID is a deterministic function of (kind, identity). Two runs over the\n * same inputs produce identical IDs; identity attribute order is irrelevant\n * because the payload is canonicalized before hashing.\n *\n * The hash is a 64-bit FNV-1a (computed as two 32-bit halves with different\n * seeds). It is not a cryptographic hash — fact IDs are integrity references\n * inside one build, not security tokens.\n */\n\nimport {\n authorOwnedImport,\n projectV1OwnedComponentId,\n projectV1OwnedImportIdentity,\n} from \"../package-identity.js\";\nimport type { ComponentId, FactId } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Canonical JSON\n// ---------------------------------------------------------------------------\n\nexport function canonicalJson(value: unknown): string {\n if (value === undefined) return \"null\";\n if (value === null || typeof value !== \"object\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n return `[${value.map(canonicalJson).join(\",\")}]`;\n }\n const entries = Object.entries(value as Record<string, unknown>)\n .filter(([, v]) => v !== undefined)\n .sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));\n return `{${entries.map(([k, v]) => `${JSON.stringify(k)}:${canonicalJson(v)}`).join(\",\")}}`;\n}\n\n// ---------------------------------------------------------------------------\n// 64-bit FNV-1a (two 32-bit halves with different seeds)\n// ---------------------------------------------------------------------------\n\nconst FNV_PRIME = 0x01000193;\nconst FNV_SEED_A = 0x811c9dc5;\nconst FNV_SEED_B = 0x9e3779b1;\n\nfunction fnv1a32(input: string, seed: number): number {\n let hash = seed >>> 0;\n for (let i = 0; i < input.length; i++) {\n const code = input.charCodeAt(i);\n hash ^= code & 0xff;\n hash = Math.imul(hash, FNV_PRIME) >>> 0;\n if (code > 0xff) {\n hash ^= (code >>> 8) & 0xff;\n hash = Math.imul(hash, FNV_PRIME) >>> 0;\n }\n }\n return hash >>> 0;\n}\n\nexport function hash64Hex(input: string): string {\n const a = fnv1a32(input, FNV_SEED_A);\n const b = fnv1a32(input, FNV_SEED_B);\n return a.toString(16).padStart(8, \"0\") + b.toString(16).padStart(8, \"0\");\n}\n\n// ---------------------------------------------------------------------------\n// IDs\n// ---------------------------------------------------------------------------\n\nexport function componentId(packageName: string, name: string): ComponentId {\n if (!packageName.length || !name.length) {\n throw new Error(\"componentId requires a non-empty packageName and name\");\n }\n return `${authorOwnedImport(packageName)}#${name}` as ComponentId;\n}\n\nexport function asComponentId(value: string): ComponentId {\n if (!value.includes(\"#\")) {\n throw new Error(`componentId must look like \"package#Name\", got \"${value}\"`);\n }\n return value as ComponentId;\n}\n\n/**\n * Compute a content-addressed fact ID. Identity is canonicalized so attribute\n * order is irrelevant.\n */\nexport function factId(kind: string, identity: Record<string, unknown>): FactId {\n const payload = canonicalJson({ k: kind, i: projectFactIdentityV1(kind, identity) });\n return `${kind}:${hash64Hex(payload)}` as FactId;\n}\n\n/**\n * Preserve the immutable v1 fact-id domain across the public package rename.\n * Projection is deliberately kind/key aware: arbitrary strings must not be\n * rewritten merely because they resemble one of our package names.\n */\nfunction projectFactIdentityV1(\n kind: string,\n identity: Record<string, unknown>\n): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(identity).map(([key, value]) => {\n if (key === \"componentId\" && typeof value === \"string\") {\n return [key, projectV1OwnedComponentId(value)];\n }\n if (\n kind === \"jsx_component_preferred\" &&\n (key === \"from\" || key === \"to\") &&\n typeof value === \"string\"\n ) {\n return [key, projectV1OwnedComponentId(value)];\n }\n if (\n kind === \"jsx_import_path_preferred\" &&\n (key === \"from\" || key === \"to\") &&\n typeof value === \"string\"\n ) {\n return [key, projectV1OwnedImportIdentity(value)];\n }\n if (kind === \"usage_import\" && key === \"source\" && typeof value === \"string\") {\n return [key, projectV1OwnedImportIdentity(value)];\n }\n return [key, value];\n })\n );\n}\n","/**\n * Fact builders — factory functions that compute the content-addressed ID\n * from each fact's identity attributes. Use these everywhere instead of hand-\n * rolling fact objects so the identity contract stays consistent.\n *\n * The \"identity\" of a fact is the subset of attributes that determines its\n * ID. Other attributes (e.g., `because`, `description`) can change without\n * changing the ID — same logical fact, refined payload.\n */\n\nimport type { GovernanceSeverity } from \"../governance.js\";\nimport { asComponentId, factId } from \"./ids.js\";\nimport type {\n A11yNameRequiredFact,\n CanonicalCandidateFact,\n CanonicalMappingFact,\n CanonicalReplacementFact,\n ClassNameDynamicFact,\n ClassNameDynamicReason,\n ClassNameLiteralFact,\n ClassNameOrigin,\n ComponentCapabilityFact,\n ComponentDefinitionFact,\n ComponentId,\n ComponentIdentityFact,\n ComponentMetadataFact,\n FactLocation,\n GovernanceRuleConfigFact,\n JsxComponentPreferredFact,\n JsxImportPathPreferredFact,\n JsxInlineStyleForbiddenRawFact,\n ContractTokenFact,\n JsxUnknownPropsForbiddenFact,\n PropMetadataFact,\n PropValueAvoidedFact,\n PropValueForbiddenFact,\n ScaleFact,\n ScaleValueFact,\n StructuralConfidenceFact,\n StyleCssVarsMustBeDefinedFact,\n StyleDeclarationFact,\n StyleFontSizeScaleFact,\n StylePropertyScaleFact,\n StyleRawColorForbiddenFact,\n StyleRawDimensionForbiddenFact,\n StyleUnsupportedFact,\n UnsupportedStyleReason,\n TailwindPaletteAllowFact,\n TailwindPaletteDenyFact,\n TailwindUnknownClassEnabledFact,\n TailwindClassFact,\n TailwindModifier,\n TailwindResolvedValue,\n TailwindTokenResolvedFact,\n TailwindValue,\n ThemeDeclarationFact,\n TokenDefinitionFact,\n UsageComponentFact,\n UsageImportFact,\n UsageInlineStyleFact,\n UsageNodeFact,\n UsagePropResolvedFact,\n UsageTextChildFact,\n FactId,\n} from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Component facts\n// ---------------------------------------------------------------------------\n\nexport function makeComponentMetadataFact(input: {\n componentId: ComponentId;\n name: string;\n description?: string;\n category?: string;\n filePath?: string;\n}): ComponentMetadataFact {\n return {\n id: factId(\"component\", { componentId: input.componentId }),\n kind: \"component\",\n componentId: input.componentId,\n name: input.name,\n description: input.description,\n category: input.category,\n filePath: input.filePath,\n };\n}\n\nexport function makeComponentCapabilityFact(input: {\n componentId: ComponentId;\n capability: string;\n}): ComponentCapabilityFact {\n return {\n id: factId(\"component_capability\", {\n componentId: input.componentId,\n capability: input.capability,\n }),\n kind: \"component_capability\",\n componentId: input.componentId,\n capability: input.capability,\n };\n}\n\nexport function makeComponentDefinitionFact(input: {\n file: string;\n exportName: string;\n exported?: boolean;\n componentKey: string;\n renderRoot: ComponentDefinitionFact[\"renderRoot\"];\n propSurface: string[];\n stylingChannel?: ComponentDefinitionFact[\"stylingChannel\"];\n}): ComponentDefinitionFact {\n return {\n id: factId(\"component_definition\", { componentKey: input.componentKey }),\n kind: \"component_definition\",\n componentId: asComponentId(input.componentKey),\n file: input.file,\n exportName: input.exportName,\n exported: input.exported ?? false,\n componentKey: input.componentKey,\n renderRoot: input.renderRoot,\n propSurface: [...input.propSurface],\n ...(input.stylingChannel ? { stylingChannel: { ...input.stylingChannel } } : {}),\n };\n}\n\nexport function makeComponentIdentityFact(input: {\n componentKey: string;\n state: ComponentIdentityFact[\"state\"];\n confidence: ComponentIdentityFact[\"confidence\"];\n canonicalTarget?: string;\n decisionId?: string;\n evidence: FactId[];\n}): ComponentIdentityFact {\n return {\n id: factId(\"component_identity\", { componentKey: input.componentKey }),\n kind: \"component_identity\",\n componentId: asComponentId(input.componentKey),\n componentKey: input.componentKey,\n state: input.state,\n confidence: input.confidence,\n ...(input.canonicalTarget ? { canonicalTarget: input.canonicalTarget } : {}),\n ...(input.decisionId ? { decisionId: input.decisionId } : {}),\n evidence: [...input.evidence],\n };\n}\n\n// ---------------------------------------------------------------------------\n// Classifier facts\n// ---------------------------------------------------------------------------\n\nexport function makeCanonicalCandidateFact(input: {\n componentId: ComponentId;\n canonical: string;\n confidence: number;\n band: CanonicalCandidateFact[\"band\"];\n location?: FactLocation;\n classifierVersion: string;\n vocabVersion: string;\n evidence: unknown[];\n userConfirmed?: boolean;\n}): CanonicalCandidateFact {\n return {\n id: factId(\"canonical_candidate\", {\n componentId: input.componentId,\n canonical: input.canonical,\n classifierVersion: input.classifierVersion,\n vocabVersion: input.vocabVersion,\n }),\n kind: \"canonical_candidate\",\n componentId: input.componentId,\n canonical: input.canonical,\n confidence: input.confidence,\n band: input.band,\n location: input.location,\n classifierVersion: input.classifierVersion,\n vocabVersion: input.vocabVersion,\n evidence: input.evidence,\n userConfirmed: input.userConfirmed,\n };\n}\n\nexport function makeCanonicalMappingFact(input: {\n componentId: ComponentId;\n canonical: string;\n status: CanonicalMappingFact[\"status\"];\n confidence: number;\n location?: FactLocation;\n}): CanonicalMappingFact {\n return {\n id: factId(\"canonical_mapping\", {\n componentId: input.componentId,\n canonical: input.canonical,\n }),\n kind: \"canonical_mapping\",\n componentId: input.componentId,\n canonical: input.canonical,\n status: input.status,\n confidence: input.confidence,\n location: input.location,\n };\n}\n\nexport function makeStructuralConfidenceFact(input: {\n componentId: ComponentId;\n canonical: string;\n confidence: number;\n signalCount: number;\n location?: FactLocation;\n}): StructuralConfidenceFact {\n return {\n id: factId(\"structural_confidence\", {\n componentId: input.componentId,\n canonical: input.canonical,\n }),\n kind: \"structural_confidence\",\n componentId: input.componentId,\n canonical: input.canonical,\n confidence: input.confidence,\n signalCount: input.signalCount,\n location: input.location,\n };\n}\n\nexport function makeCanonicalReplacementFact(input: {\n componentId: ComponentId;\n canonical: string;\n importPath?: string;\n componentName?: string;\n confidence: number;\n location?: FactLocation;\n}): CanonicalReplacementFact {\n return {\n id: factId(\"canonical_replacement\", {\n componentId: input.componentId,\n canonical: input.canonical,\n }),\n kind: \"canonical_replacement\",\n componentId: input.componentId,\n canonical: input.canonical,\n importPath: input.importPath,\n componentName: input.componentName,\n confidence: input.confidence,\n location: input.location,\n };\n}\n\nexport function makePropMetadataFact(input: {\n componentId: ComponentId;\n prop: string;\n type: string;\n values?: string[];\n required: boolean;\n default?: unknown;\n description?: string;\n}): PropMetadataFact {\n return {\n id: factId(\"prop_metadata\", {\n componentId: input.componentId,\n prop: input.prop,\n }),\n kind: \"prop_metadata\",\n componentId: input.componentId,\n prop: input.prop,\n type: input.type,\n values: input.values,\n required: input.required,\n default: input.default,\n description: input.description,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Component-scoped policy facts\n// ---------------------------------------------------------------------------\n\nexport function makePropValueAvoidedFact(input: {\n componentId: ComponentId;\n prop: string;\n value: unknown;\n because: string;\n suggest?: string;\n severity: GovernanceSeverity;\n}): PropValueAvoidedFact {\n return {\n id: factId(\"prop_value_avoided\", {\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n }),\n kind: \"prop_value_avoided\",\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n because: input.because,\n suggest: input.suggest,\n severity: input.severity,\n };\n}\n\nexport function makePropValueForbiddenFact(input: {\n componentId: ComponentId;\n prop: string;\n value: unknown;\n pathPattern?: string;\n because: string;\n replaceWith?: unknown;\n severity: GovernanceSeverity;\n}): PropValueForbiddenFact {\n return {\n id: factId(\"prop_value_forbidden\", {\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n pathPattern: input.pathPattern,\n }),\n kind: \"prop_value_forbidden\",\n componentId: input.componentId,\n prop: input.prop,\n value: input.value,\n pathPattern: input.pathPattern,\n because: input.because,\n replaceWith: input.replaceWith,\n severity: input.severity,\n };\n}\n\nexport function makeA11yNameRequiredFact(input: {\n componentId: ComponentId;\n because: string;\n severity: GovernanceSeverity;\n}): A11yNameRequiredFact {\n return {\n id: factId(\"a11y_name_required\", { componentId: input.componentId }),\n kind: \"a11y_name_required\",\n componentId: input.componentId,\n because: input.because,\n severity: input.severity,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Global policy facts\n// ---------------------------------------------------------------------------\n\nexport function makeScaleFact(input: {\n name: string;\n unit: \"px\" | \"rem\";\n rootFontSizePx?: number;\n emBasePx?: number;\n}): ScaleFact {\n return {\n id: factId(\"scale\", { name: input.name }),\n kind: \"scale\",\n name: input.name,\n unit: input.unit,\n ...(input.rootFontSizePx === undefined ? {} : { rootFontSizePx: input.rootFontSizePx }),\n ...(input.emBasePx === undefined ? {} : { emBasePx: input.emBasePx }),\n };\n}\n\nexport function makeScaleValueFact(input: { scale: string; value: number }): ScaleValueFact {\n return {\n id: factId(\"scale_value\", { scale: input.scale, value: input.value }),\n kind: \"scale_value\",\n scale: input.scale,\n value: input.value,\n };\n}\n\nexport function makeStyleRawColorForbiddenFact(input: {\n except: string[];\n prefer: \"token\" | \"css-variable\";\n severity: GovernanceSeverity;\n}): StyleRawColorForbiddenFact {\n return {\n id: factId(\"style_raw_color_forbidden\", {}),\n kind: \"style_raw_color_forbidden\",\n except: [...input.except],\n prefer: input.prefer,\n severity: input.severity,\n };\n}\n\nexport function makeStyleRawDimensionForbiddenFact(input: {\n appliesTo: string[];\n prefer: \"token\" | \"css-variable\";\n severity: GovernanceSeverity;\n}): StyleRawDimensionForbiddenFact {\n return {\n id: factId(\"style_raw_dimension_forbidden\", {}),\n kind: \"style_raw_dimension_forbidden\",\n appliesTo: [...input.appliesTo],\n prefer: input.prefer,\n severity: input.severity,\n };\n}\n\nexport function makeStylePropertyScaleFact(input: {\n property: string;\n scale: string;\n severity: GovernanceSeverity;\n}): StylePropertyScaleFact {\n return {\n id: factId(\"style_property_scale\", { property: input.property }),\n kind: \"style_property_scale\",\n property: input.property,\n scale: input.scale,\n severity: input.severity,\n };\n}\n\nexport function makeStyleFontSizeScaleFact(input: {\n scale: string;\n severity: GovernanceSeverity;\n}): StyleFontSizeScaleFact {\n return {\n id: factId(\"style_font_size_scale\", {}),\n kind: \"style_font_size_scale\",\n scale: input.scale,\n severity: input.severity,\n };\n}\n\nexport function makeStyleCssVarsMustBeDefinedFact(input: {\n severity: GovernanceSeverity;\n}): StyleCssVarsMustBeDefinedFact {\n return {\n id: factId(\"style_css_vars_must_be_defined\", {}),\n kind: \"style_css_vars_must_be_defined\",\n severity: input.severity,\n };\n}\n\nexport function makeContractTokenFact(input: { name: string }): ContractTokenFact {\n const name = input.name.startsWith(\"--\") ? input.name : `--${input.name}`;\n return {\n id: factId(\"contract_token\", { name }),\n kind: \"contract_token\",\n name,\n };\n}\n\nexport function makeJsxUnknownPropsForbiddenFact(input: {\n severity: GovernanceSeverity;\n}): JsxUnknownPropsForbiddenFact {\n return {\n id: factId(\"jsx_unknown_props_forbidden\", {}),\n kind: \"jsx_unknown_props_forbidden\",\n severity: input.severity,\n };\n}\n\nexport function makeJsxInlineStyleForbiddenRawFact(input: {\n property: string;\n severity: GovernanceSeverity;\n}): JsxInlineStyleForbiddenRawFact {\n return {\n id: factId(\"jsx_inline_style_forbidden_raw\", { property: input.property }),\n kind: \"jsx_inline_style_forbidden_raw\",\n property: input.property,\n severity: input.severity,\n };\n}\n\nexport function makeJsxImportPathPreferredFact(input: {\n from: string;\n to: string;\n imported?: string;\n because?: string;\n severity: GovernanceSeverity;\n bridge?: JsxImportPathPreferredFact[\"bridge\"];\n}): JsxImportPathPreferredFact {\n return {\n id: factId(\"jsx_import_path_preferred\", {\n from: input.from,\n to: input.to,\n imported: input.imported,\n bridge: input.bridge,\n }),\n kind: \"jsx_import_path_preferred\",\n from: input.from,\n to: input.to,\n imported: input.imported,\n because: input.because,\n severity: input.severity,\n ...(input.bridge\n ? {\n bridge: {\n ...input.bridge,\n implementationFiles: [...input.bridge.implementationFiles],\n },\n }\n : {}),\n };\n}\n\nexport function makeJsxComponentPreferredFact(input: {\n from: ComponentId;\n to: ComponentId;\n because?: string;\n severity: GovernanceSeverity;\n}): JsxComponentPreferredFact {\n return {\n id: factId(\"jsx_component_preferred\", {\n from: input.from,\n to: input.to,\n }),\n kind: \"jsx_component_preferred\",\n from: input.from,\n to: input.to,\n because: input.because,\n severity: input.severity,\n };\n}\n\nexport function makeTokenDefinitionFact(input: {\n name: string;\n value: string;\n location?: TokenDefinitionFact[\"location\"];\n category?: TokenDefinitionFact[\"category\"];\n referenceFormat?: TokenDefinitionFact[\"referenceFormat\"];\n sourceNames?: TokenDefinitionFact[\"sourceNames\"];\n role?: TokenDefinitionFact[\"role\"];\n authority?: TokenDefinitionFact[\"authority\"];\n sourceIdentity?: TokenDefinitionFact[\"sourceIdentity\"];\n upstreamName?: TokenDefinitionFact[\"upstreamName\"];\n}): TokenDefinitionFact {\n const authorityIdentity =\n input.role || input.sourceIdentity\n ? { role: input.role ?? \"local\", sourceIdentity: input.sourceIdentity ?? \"\" }\n : {};\n return {\n id: factId(\"token_definition\", { name: input.name, ...authorityIdentity }),\n kind: \"token_definition\",\n name: input.name,\n value: input.value,\n ...(input.location ? { location: input.location } : {}),\n category: input.category,\n referenceFormat: input.referenceFormat,\n ...(input.sourceNames?.length ? { sourceNames: [...input.sourceNames] } : {}),\n ...(input.role ? { role: input.role } : {}),\n ...(input.authority ? { authority: input.authority } : {}),\n ...(input.sourceIdentity ? { sourceIdentity: input.sourceIdentity } : {}),\n ...(input.upstreamName ? { upstreamName: input.upstreamName } : {}),\n };\n}\n\nexport function makeTailwindPaletteAllowFact(input: {\n patterns: string[];\n severity: GovernanceSeverity;\n}): TailwindPaletteAllowFact {\n return {\n id: factId(\"tailwind_palette_allow\", {}),\n kind: \"tailwind_palette_allow\",\n patterns: [...input.patterns],\n severity: input.severity,\n };\n}\n\nexport function makeTailwindPaletteDenyFact(input: {\n patterns: string[];\n severity: GovernanceSeverity;\n}): TailwindPaletteDenyFact {\n return {\n id: factId(\"tailwind_palette_deny\", {}),\n kind: \"tailwind_palette_deny\",\n patterns: [...input.patterns],\n severity: input.severity,\n };\n}\n\nexport function makeTailwindUnknownClassEnabledFact(input: {\n severity: GovernanceSeverity;\n}): TailwindUnknownClassEnabledFact {\n return {\n id: factId(\"tailwind_unknown_class_enabled\", {}),\n kind: \"tailwind_unknown_class_enabled\",\n severity: input.severity,\n };\n}\n\nexport function makeGovernanceRuleConfigFact(input: {\n ruleId: string;\n enabled: boolean;\n severity?: GovernanceSeverity;\n options?: Record<string, unknown>;\n}): GovernanceRuleConfigFact {\n return {\n id: factId(\"governance_rule_config\", { ruleId: input.ruleId }),\n kind: \"governance_rule_config\",\n ruleId: input.ruleId,\n enabled: input.enabled,\n severity: input.severity,\n options: input.options,\n };\n}\n\n// ---------------------------------------------------------------------------\n// Usage facts\n// ---------------------------------------------------------------------------\n\nexport function makeUsageNodeFact(input: {\n file: string;\n nodePath: string;\n element: string;\n role?: string;\n interactive?: boolean;\n location: FactLocation;\n}): UsageNodeFact {\n return {\n // Identity is structural (file + nodePath + element) only — the normalized\n // semantics (role/interactive) are evidence carried on the fact, never part\n // of its ID, so adding them never perturbs existing fact identities.\n id: factId(\"usage_node\", {\n file: input.file,\n nodePath: input.nodePath,\n element: input.element,\n }),\n kind: \"usage_node\",\n file: input.file,\n nodePath: input.nodePath,\n element: input.element,\n ...(input.role !== undefined ? { role: input.role } : {}),\n ...(input.interactive ? { interactive: true } : {}),\n location: input.location,\n };\n}\n\nexport function makeUsageComponentFact(input: {\n nodeId: FactId;\n componentId: ComponentId;\n}): UsageComponentFact {\n return {\n id: factId(\"usage_component\", {\n nodeId: input.nodeId,\n componentId: input.componentId,\n }),\n kind: \"usage_component\",\n nodeId: input.nodeId,\n componentId: input.componentId,\n };\n}\n\nexport function makeUsageImportFact(input: {\n file: string;\n local: string;\n imported: string;\n source: string;\n namespace?: boolean;\n location: FactLocation;\n}): UsageImportFact {\n return {\n id: factId(\"usage_import\", {\n file: input.file,\n local: input.local,\n imported: input.imported,\n source: input.source,\n }),\n kind: \"usage_import\",\n file: input.file,\n local: input.local,\n imported: input.imported,\n source: input.source,\n namespace: input.namespace,\n location: input.location,\n };\n}\n\nexport function makeUsagePropResolvedFact(input: {\n nodeId: FactId;\n prop: string;\n resolution: \"static\" | \"dynamic\" | \"spread\" | \"jsx\";\n value?: unknown;\n location?: FactLocation;\n}): UsagePropResolvedFact {\n return {\n id: factId(\"usage_prop_resolved\", { nodeId: input.nodeId, prop: input.prop }),\n kind: \"usage_prop_resolved\",\n nodeId: input.nodeId,\n prop: input.prop,\n resolution: input.resolution,\n value: input.value,\n location: input.location,\n };\n}\n\nexport function makeUsageInlineStyleFact(input: {\n nodeId: FactId;\n property: string;\n valueKind: \"static\" | \"number\" | \"css-variable\" | \"dynamic-raw\";\n value: string;\n}): UsageInlineStyleFact {\n return {\n id: factId(\"usage_inline_style\", {\n nodeId: input.nodeId,\n property: input.property,\n }),\n kind: \"usage_inline_style\",\n nodeId: input.nodeId,\n property: input.property,\n valueKind: input.valueKind,\n value: input.value,\n };\n}\n\nexport function makeUsageTextChildFact(input: {\n nodeId: FactId;\n text: string;\n index: number;\n}): UsageTextChildFact {\n return {\n id: factId(\"usage_text_child\", { nodeId: input.nodeId, index: input.index }),\n kind: \"usage_text_child\",\n nodeId: input.nodeId,\n text: input.text,\n index: input.index,\n };\n}\n\nexport function makeClassNameLiteralFact(input: {\n file: string;\n nodeId: FactId;\n attr: string;\n classes: string[];\n origin: ClassNameOrigin;\n originPath: string;\n location: FactLocation;\n}): ClassNameLiteralFact {\n return {\n id: factId(\"classname_literal\", {\n nodeId: input.nodeId,\n attr: input.attr,\n origin: input.origin,\n originPath: input.originPath,\n }),\n kind: \"classname_literal\",\n file: input.file,\n nodeId: input.nodeId,\n attr: input.attr,\n classes: [...input.classes],\n origin: input.origin,\n originPath: input.originPath,\n location: input.location,\n };\n}\n\nexport function makeClassNameDynamicFact(input: {\n file: string;\n nodeId: FactId;\n attr: string;\n reason: ClassNameDynamicReason;\n snippet: string;\n originPath: string;\n location: FactLocation;\n}): ClassNameDynamicFact {\n return {\n id: factId(\"classname_dynamic\", {\n nodeId: input.nodeId,\n attr: input.attr,\n reason: input.reason,\n originPath: input.originPath,\n }),\n kind: \"classname_dynamic\",\n file: input.file,\n nodeId: input.nodeId,\n attr: input.attr,\n reason: input.reason,\n snippet: input.snippet,\n originPath: input.originPath,\n location: input.location,\n };\n}\n\nexport function makeTailwindClassFact(input: {\n file: string;\n nodeId: FactId;\n raw: string;\n originPath: string;\n prefix: string | null;\n modifiers: TailwindModifier[];\n important: boolean;\n negative: boolean;\n utility: string;\n value: TailwindValue;\n location: FactLocation;\n}): TailwindClassFact {\n return {\n id: factId(\"tailwind_class\", {\n nodeId: input.nodeId,\n originPath: input.originPath,\n }),\n kind: \"tailwind_class\",\n file: input.file,\n nodeId: input.nodeId,\n raw: input.raw,\n originPath: input.originPath,\n prefix: input.prefix,\n modifiers: input.modifiers.map((m) => ({ ...m })),\n important: input.important,\n negative: input.negative,\n utility: input.utility,\n value: { ...input.value },\n location: input.location,\n };\n}\n\nexport function makeThemeDeclarationFact(input: {\n file: string;\n name: string;\n value: string;\n declarationPath: string;\n inline: boolean;\n flavor: ThemeDeclarationFact[\"flavor\"];\n location: FactLocation;\n}): ThemeDeclarationFact {\n return {\n id: factId(\"theme_declaration\", {\n file: input.file,\n name: input.name,\n declarationPath: input.declarationPath,\n }),\n kind: \"theme_declaration\",\n file: input.file,\n name: input.name,\n value: input.value,\n declarationPath: input.declarationPath,\n inline: input.inline,\n flavor: input.flavor,\n location: input.location,\n };\n}\n\nexport function makeTailwindTokenResolvedFact(input: {\n utility: string;\n token: string;\n resolved: TailwindResolvedValue;\n}): TailwindTokenResolvedFact {\n return {\n id: factId(\"tailwind_token_resolved\", {\n utility: input.utility,\n token: input.token,\n }),\n kind: \"tailwind_token_resolved\",\n utility: input.utility,\n token: input.token,\n resolved: { ...input.resolved },\n };\n}\n\nexport function makeStyleDeclarationFact(input: {\n file: string;\n selector: string;\n declarationPath: string;\n property: string;\n value: string;\n location: FactLocation;\n declaredTokenSource?: boolean;\n}): StyleDeclarationFact {\n return {\n id: factId(\"style_declaration\", {\n file: input.file,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property,\n }),\n kind: \"style_declaration\",\n file: input.file,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property,\n value: input.value,\n location: input.location,\n ...(input.declaredTokenSource ? { declaredTokenSource: true } : {}),\n };\n}\n\nexport function makeStyleUnsupportedFact(input: {\n file: string;\n source: \"css-in-js\";\n syntax: string;\n selector: string;\n declarationPath: string;\n property?: string;\n reason: UnsupportedStyleReason;\n location: FactLocation;\n}): StyleUnsupportedFact {\n return {\n id: factId(\"style_unsupported\", {\n file: input.file,\n source: input.source,\n syntax: input.syntax,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property ?? \"\",\n }),\n kind: \"style_unsupported\",\n file: input.file,\n source: input.source,\n syntax: input.syntax,\n selector: input.selector,\n declarationPath: input.declarationPath,\n property: input.property,\n reason: input.reason,\n location: input.location,\n };\n}\n","import {\n canonicalizeOwnedComponentId,\n canonicalizeOwnedImport,\n ownedImportEquivalents,\n} from \"./package-identity.js\";\n\n/** Equality for typed npm import fields; arbitrary strings remain exact. */\nexport function ownedImportsEqual(left: string, right: string): boolean {\n if (left === right) return true;\n if (ownedImportEquivalents(left).includes(right)) return true;\n return canonicalizeOwnedImport(left) === canonicalizeOwnedImport(right);\n}\n\n/**\n * Match an import against a configured package root/subpath while accepting\n * every signed legacy/current spelling of that root.\n */\nexport function ownedImportMatchesRoot(imported: string, configuredRoot: string): boolean {\n for (const equivalent of ownedImportEquivalents(configuredRoot)) {\n if (imported === equivalent || imported.startsWith(`${equivalent}/`)) {\n return true;\n }\n }\n\n const canonicalImported = canonicalizeOwnedImport(imported);\n const canonicalRoot = canonicalizeOwnedImport(configuredRoot);\n return canonicalImported === canonicalRoot || canonicalImported.startsWith(`${canonicalRoot}/`);\n}\n\n/** Equality for the package-name half of typed `package#Component` ids. */\nexport function ownedComponentIdsEqual(left: string, right: string): boolean {\n return canonicalizeOwnedComponentId(left) === canonicalizeOwnedComponentId(right);\n}\n","/**\n * In-memory index over Fact records.\n *\n * Rules consume the index, never raw fact arrays. The query surface is\n * intentionally narrow: components.byId / propsOf / propOf / capabilitiesOf,\n * and policy.<predicate>(componentId, opts?). This keeps Phase 5 rules pure\n * and content-addressed.\n */\n\nimport type {\n A11yNameRequiredFact,\n ComponentCapabilityFact,\n ComponentId,\n ComponentMetadataFact,\n Fact,\n FactId,\n FactKind,\n FactOfKind,\n GovernanceRuleConfigFact,\n JsxComponentPreferredFact,\n JsxImportPathPreferredFact,\n JsxInlineStyleForbiddenRawFact,\n JsxUnknownPropsForbiddenFact,\n PropMetadataFact,\n PropValueAvoidedFact,\n PropValueForbiddenFact,\n ScaleFact,\n ScaleValueFact,\n StyleCssVarsMustBeDefinedFact,\n StyleFontSizeScaleFact,\n StylePropertyScaleFact,\n StyleRawColorForbiddenFact,\n StyleRawDimensionForbiddenFact,\n TailwindPaletteAllowFact,\n TailwindPaletteDenyFact,\n TailwindUnknownClassEnabledFact,\n TokenDefinitionFact,\n} from \"./types.js\";\nimport { canonicalJson } from \"./ids.js\";\nimport { canonicalizeOwnedComponentId, canonicalizeOwnedImport } from \"../package-identity.js\";\nimport { ownedComponentIdsEqual, ownedImportsEqual } from \"../package-identity-match.js\";\n\nexport interface FactEvidence {\n factId: FactId;\n fact: Fact;\n}\n\nexport interface FactIndexOptions {\n /** Optional internal diagnostic route. Product output is quiet by default. */\n onConflict?: (message: string) => void;\n}\n\ninterface FactWithComponent {\n componentId: ComponentId;\n}\n\nfunction hasComponentId(fact: Fact): fact is Fact & FactWithComponent {\n return \"componentId\" in fact && typeof (fact as FactWithComponent).componentId === \"string\";\n}\n\nfunction logicalComponentId(componentId: ComponentId): ComponentId {\n return canonicalizeOwnedComponentId(componentId) as ComponentId;\n}\n\nfunction logicalFactForComparison(fact: Fact): Record<string, unknown> {\n if (fact.kind === \"token_definition\") {\n const { location: _location, sourceNames: _sourceNames, ...logicalFact } = fact;\n return logicalFact;\n }\n if (fact.kind === \"jsx_import_path_preferred\") {\n return {\n ...fact,\n from: canonicalizeOwnedImport(fact.from),\n to: canonicalizeOwnedImport(fact.to),\n };\n }\n if (fact.kind === \"jsx_component_preferred\") {\n return {\n ...fact,\n from: logicalComponentId(fact.from),\n to: logicalComponentId(fact.to),\n };\n }\n if (fact.kind === \"usage_import\") {\n return { ...fact, source: canonicalizeOwnedImport(fact.source) };\n }\n if (hasComponentId(fact)) {\n return { ...fact, componentId: logicalComponentId(fact.componentId) };\n }\n return { ...fact };\n}\n\nfunction uniqueByLogicalIdentity<T>(items: readonly T[], keyOf: (item: T) => string): T[] {\n const seen = new Set<string>();\n return items.filter((item) => {\n const key = keyOf(item);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\n/**\n * Match a literal path against a simple glob pattern. `*` matches any run of\n * non-separator characters; `**` matches any run of characters including\n * separators.\n */\nexport function matchesGlob(path: string, pattern: string): boolean {\n const escaped = pattern.replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\");\n const expanded = escaped\n .replace(/\\*\\*/g, \"::DOUBLE::\")\n .replace(/\\*/g, \"[^/]*\")\n .replace(/::DOUBLE::/g, \".*\");\n return new RegExp(`^${expanded}$`).test(path);\n}\n\nexport class FactIndex {\n private readonly facts = new Map<FactId, Fact>();\n private readonly idsByKind = new Map<FactKind, Set<FactId>>();\n private readonly idsByComponent = new Map<ComponentId, Set<FactId>>();\n private readonly tokenBySymbol = new Map<string, TokenDefinitionFact>();\n\n constructor(private readonly options: FactIndexOptions = {}) {}\n\n add(fact: Fact): void {\n if (fact.kind === \"token_definition\") {\n this.indexTokenSymbols(fact);\n }\n const existing = this.facts.get(fact.id);\n if (existing) {\n if (\n canonicalJson(logicalFactForComparison(existing)) !==\n canonicalJson(logicalFactForComparison(fact))\n ) {\n this.options.onConflict?.(\n `FactIndex: conflicting facts for id ${fact.id} — keeping ${describeFactForConflict(existing)}, skipping ${describeFactForConflict(fact)}`\n );\n }\n return;\n }\n this.facts.set(fact.id, fact);\n\n let byKind = this.idsByKind.get(fact.kind);\n if (!byKind) {\n byKind = new Set();\n this.idsByKind.set(fact.kind, byKind);\n }\n byKind.add(fact.id);\n\n if (hasComponentId(fact)) {\n const componentId = logicalComponentId(fact.componentId);\n let byComponent = this.idsByComponent.get(componentId);\n if (!byComponent) {\n byComponent = new Set();\n this.idsByComponent.set(componentId, byComponent);\n }\n byComponent.add(fact.id);\n }\n }\n\n addMany(facts: Iterable<Fact>): void {\n for (const fact of facts) this.add(fact);\n }\n\n get(id: FactId): Fact | undefined {\n return this.facts.get(id);\n }\n\n has(id: FactId): boolean {\n return this.facts.has(id);\n }\n\n size(): number {\n return this.facts.size;\n }\n\n all(): Fact[] {\n return [...this.facts.values()];\n }\n\n byKind<K extends FactKind>(kind: K): Array<FactOfKind<K>> {\n const ids = this.idsByKind.get(kind);\n if (!ids) return [];\n const out: FactOfKind<K>[] = [];\n for (const id of ids) {\n const fact = this.facts.get(id);\n if (fact && fact.kind === kind) out.push(fact as FactOfKind<K>);\n }\n return out;\n }\n\n /**\n * Resolve evidence for a list of fact IDs. Throws if any ID is missing —\n * findings must never reference facts that aren't in the index.\n */\n evidence(ids: readonly FactId[]): FactEvidence[] {\n const missing: FactId[] = [];\n const out: FactEvidence[] = [];\n for (const id of ids) {\n const fact = this.facts.get(id);\n if (!fact) {\n missing.push(id);\n continue;\n }\n out.push({ factId: id, fact });\n }\n if (missing.length) {\n throw new Error(`FactIndex.evidence: missing facts in index: ${missing.join(\", \")}`);\n }\n return out;\n }\n\n // ---------------------------------------------------------------------\n // Component queries\n // ---------------------------------------------------------------------\n\n components = {\n list: (): ComponentMetadataFact[] =>\n uniqueByLogicalIdentity(this.byKind(\"component\"), (fact) =>\n canonicalJson({\n ...logicalFactForComparison(fact),\n id: undefined,\n })\n ),\n byId: (componentId: ComponentId): ComponentMetadataFact | undefined =>\n this.byComponentOfKind<ComponentMetadataFact>(componentId, \"component\")[0],\n propsOf: (componentId: ComponentId): PropMetadataFact[] =>\n this.byComponentOfKind<PropMetadataFact>(componentId, \"prop_metadata\"),\n propOf: (componentId: ComponentId, prop: string): PropMetadataFact | undefined =>\n this.components.propsOf(componentId).find((p) => p.prop === prop),\n capabilitiesOf: (componentId: ComponentId): ComponentCapabilityFact[] =>\n this.byComponentOfKind<ComponentCapabilityFact>(componentId, \"component_capability\"),\n };\n\n // ---------------------------------------------------------------------\n // Policy queries\n // ---------------------------------------------------------------------\n\n policy = {\n forbiddenPropValues: (\n componentId: ComponentId,\n opts: { prop?: string; path?: string; value?: unknown } = {}\n ): PropValueForbiddenFact[] => {\n const all = this.byComponentOfKind<PropValueForbiddenFact>(\n componentId,\n \"prop_value_forbidden\"\n );\n return all.filter((fact) => {\n if (opts.prop !== undefined && fact.prop !== opts.prop) return false;\n if (opts.value !== undefined && fact.value !== opts.value) return false;\n if (opts.path !== undefined && fact.pathPattern) {\n if (!matchesGlob(opts.path, fact.pathPattern)) return false;\n }\n return true;\n });\n },\n\n avoidedPropValues: (\n componentId: ComponentId,\n opts: { prop?: string; value?: unknown } = {}\n ): PropValueAvoidedFact[] => {\n const all = this.byComponentOfKind<PropValueAvoidedFact>(componentId, \"prop_value_avoided\");\n return all.filter((fact) => {\n if (opts.prop !== undefined && fact.prop !== opts.prop) return false;\n if (opts.value !== undefined && fact.value !== opts.value) return false;\n return true;\n });\n },\n\n a11yNameRequired: (componentId: ComponentId): A11yNameRequiredFact | undefined =>\n this.byComponentOfKind<A11yNameRequiredFact>(componentId, \"a11y_name_required\")[0],\n\n scales: (): ScaleFact[] => this.byKind(\"scale\"),\n\n scale: (name: string): ScaleFact | undefined =>\n this.byKind(\"scale\").find((s) => s.name === name),\n\n scaleValues: (name: string): ScaleValueFact[] =>\n this.byKind(\"scale_value\").filter((v) => v.scale === name),\n\n rawColorPolicy: (): StyleRawColorForbiddenFact | undefined =>\n this.byKind(\"style_raw_color_forbidden\")[0],\n\n rawDimensionPolicy: (): StyleRawDimensionForbiddenFact | undefined =>\n this.byKind(\"style_raw_dimension_forbidden\")[0],\n\n propertyScale: (property: string): StylePropertyScaleFact | undefined =>\n this.byKind(\"style_property_scale\").find((p) => p.property === property),\n\n fontSizeScale: (): StyleFontSizeScaleFact | undefined =>\n this.byKind(\"style_font_size_scale\")[0],\n\n cssVarsMustBeDefined: (): StyleCssVarsMustBeDefinedFact | undefined =>\n this.byKind(\"style_css_vars_must_be_defined\")[0],\n\n tailwindPaletteAllow: (): TailwindPaletteAllowFact | undefined =>\n this.byKind(\"tailwind_palette_allow\")[0],\n\n tailwindPaletteDeny: (): TailwindPaletteDenyFact | undefined =>\n this.byKind(\"tailwind_palette_deny\")[0],\n\n tailwindUnknownClassEnabled: (): TailwindUnknownClassEnabledFact | undefined =>\n this.byKind(\"tailwind_unknown_class_enabled\")[0],\n\n ruleConfig: (ruleId: string): GovernanceRuleConfigFact | undefined =>\n this.byKind(\"governance_rule_config\").find((fact) => fact.ruleId === ruleId),\n\n jsxUnknownPropsForbidden: (): JsxUnknownPropsForbiddenFact | undefined =>\n this.byKind(\"jsx_unknown_props_forbidden\")[0],\n\n jsxInlineStyleForbiddenRaw: (\n opts: { property?: string } = {}\n ): JsxInlineStyleForbiddenRawFact[] => {\n const all = this.byKind(\"jsx_inline_style_forbidden_raw\");\n return opts.property === undefined ? all : all.filter((f) => f.property === opts.property);\n },\n\n jsxImportPathPreferred: (\n opts: { from?: string; imported?: string } = {}\n ): JsxImportPathPreferredFact[] => {\n const all = uniqueByLogicalIdentity(this.byKind(\"jsx_import_path_preferred\"), (fact) =>\n canonicalJson({\n from: canonicalizeOwnedImport(fact.from),\n to: canonicalizeOwnedImport(fact.to),\n imported: fact.imported,\n because: fact.because,\n severity: fact.severity,\n })\n );\n return all.filter((fact) => {\n if (opts.from !== undefined && !ownedImportsEqual(fact.from, opts.from)) return false;\n if (opts.imported !== undefined && fact.imported !== opts.imported) return false;\n return true;\n });\n },\n\n jsxComponentPreferred: (opts: { from?: ComponentId } = {}): JsxComponentPreferredFact[] => {\n const all = uniqueByLogicalIdentity(this.byKind(\"jsx_component_preferred\"), (fact) =>\n canonicalJson({\n from: canonicalizeOwnedComponentId(fact.from),\n to: canonicalizeOwnedComponentId(fact.to),\n because: fact.because,\n severity: fact.severity,\n })\n );\n return opts.from === undefined\n ? all\n : all.filter((fact) => ownedComponentIdsEqual(fact.from, opts.from!));\n },\n };\n\n // ---------------------------------------------------------------------\n // Token registry queries\n // ---------------------------------------------------------------------\n\n tokens = {\n list: (): TokenDefinitionFact[] => this.byKind(\"token_definition\"),\n byCategory: (category: TokenDefinitionFact[\"category\"]): TokenDefinitionFact[] =>\n this.byKind(\"token_definition\").filter((t) => t.category === category),\n symbolExists: (name: string): boolean => this.tokenBySymbol.has(name),\n definitionForSymbol: (name: string): TokenDefinitionFact | undefined =>\n this.tokenBySymbol.get(name),\n };\n\n // ---------------------------------------------------------------------\n // Internals\n // ---------------------------------------------------------------------\n\n private indexTokenSymbols(fact: TokenDefinitionFact): void {\n // Upstream definitions are comparison evidence, not local replacement\n // candidates. Keeping them out of the reverse symbol index also prevents a\n // known-drift upstream value from making the local token look safe.\n if (fact.role === \"upstream\") return;\n const legacyScssAlias =\n fact.referenceFormat === \"scss-var\" && fact.name.startsWith(\"--\")\n ? `$${fact.name.slice(2)}`\n : fact.referenceFormat === \"scss-var\" && fact.name.startsWith(\"$\")\n ? `--${fact.name.slice(1)}`\n : undefined;\n for (const symbol of [fact.name, ...(fact.sourceNames ?? []), legacyScssAlias]) {\n if (!symbol) continue;\n if (!this.tokenBySymbol.has(symbol)) this.tokenBySymbol.set(symbol, fact);\n }\n }\n\n private byComponentOfKind<F extends Fact>(componentId: ComponentId, kind: FactKind): F[] {\n const ids = this.idsByComponent.get(logicalComponentId(componentId));\n if (!ids) return [];\n const out: F[] = [];\n const seen = new Set<string>();\n for (const id of ids) {\n const fact = this.facts.get(id);\n if (fact && fact.kind === kind) {\n const logicalFact = hasComponentId(fact)\n ? {\n ...fact,\n id: undefined,\n componentId: logicalComponentId(fact.componentId),\n }\n : { ...fact, id: undefined };\n const key = canonicalJson(logicalFact);\n if (seen.has(key)) continue;\n seen.add(key);\n out.push(fact as F);\n }\n }\n return out;\n }\n}\n\nfunction describeFactForConflict(fact: Fact): string {\n const parts = [`kind=${fact.kind}`];\n const maybeLocation = \"location\" in fact ? fact.location : undefined;\n if (maybeLocation && typeof maybeLocation === \"object\") {\n const loc = maybeLocation as { file?: unknown; line?: unknown; column?: unknown };\n if (typeof loc.file === \"string\") {\n const line = typeof loc.line === \"number\" ? `:${loc.line}` : \"\";\n const column = typeof loc.column === \"number\" ? `:${loc.column}` : \"\";\n parts.push(`location=${loc.file}${line}${column}`);\n }\n }\n if (\"nodePath\" in fact && typeof fact.nodePath === \"string\") {\n parts.push(`nodePath=${fact.nodePath}`);\n }\n if (\"element\" in fact && typeof fact.element === \"string\") {\n parts.push(`element=${fact.element}`);\n }\n return parts.join(\" \");\n}\n","import { z } from \"zod\";\nimport type {\n ComponentRelation,\n FragmentComponent,\n FragmentContract,\n FragmentExample,\n FragmentGuidance,\n FragmentMeta,\n FragmentProvenance,\n PropDefinition,\n} from \"./types.js\";\nimport { portableRepoPathError } from \"./config-paths.js\";\n\nexport const governanceSeveritySchema = z.enum([\"error\", \"warn\", \"info\"]);\nexport type GovernanceSeverity = z.infer<typeof governanceSeveritySchema>;\n\nexport const scaleGovernanceRecordSchema = z.object({\n kind: z.literal(\"scale\").default(\"scale\"),\n name: z.string().min(1).optional(),\n unit: z.enum([\"px\", \"rem\"]),\n values: z.array(z.number()),\n rootFontSizePx: z.number().positive().optional(),\n emBasePx: z.number().positive().optional(),\n});\n\nconst styleRawColorsForbidRecordSchema = z.object({\n kind: z.literal(\"style.rawColors.forbid\"),\n except: z.array(z.string()),\n prefer: z.enum([\"token\", \"css-variable\"]),\n severity: governanceSeveritySchema,\n});\n\nconst styleRawDimensionsForbidRecordSchema = z.object({\n kind: z.literal(\"style.rawDimensions.forbid\"),\n appliesTo: z.array(z.string().min(1)),\n prefer: z.enum([\"token\", \"css-variable\"]),\n severity: governanceSeveritySchema,\n});\n\nconst styleRawSpacingMustMatchScaleRecordSchema = z.object({\n kind: z.literal(\"style.rawSpacing.mustMatchScale\"),\n scale: z.string().min(1),\n appliesTo: z.array(z.string().min(1)),\n severity: governanceSeveritySchema,\n});\n\nconst styleFontSizeMustMatchScaleRecordSchema = z.object({\n kind: z.literal(\"style.fontSize.mustMatchScale\"),\n scale: z.string().min(1),\n severity: governanceSeveritySchema,\n});\n\nconst styleCssVarsMustBeDefinedRecordSchema = z.object({\n kind: z.literal(\"style.cssVars.mustBeDefined\"),\n severity: governanceSeveritySchema,\n});\n\nexport const globalStyleGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n styleRawColorsForbidRecordSchema,\n styleRawDimensionsForbidRecordSchema,\n styleRawSpacingMustMatchScaleRecordSchema,\n styleFontSizeMustMatchScaleRecordSchema,\n styleCssVarsMustBeDefinedRecordSchema,\n]);\n\nconst jsxUnknownPropsForbidRecordSchema = z.object({\n kind: z.literal(\"jsx.unknownProps.forbid\"),\n severity: governanceSeveritySchema,\n});\n\nconst jsxInlineStyleForbidRawRecordSchema = z.object({\n kind: z.literal(\"jsx.inlineStyle.forbidRaw\"),\n properties: z.array(z.string().min(1)),\n severity: governanceSeveritySchema,\n});\n\nconst jsxImportPathPreferRecordSchema = z.object({\n kind: z.literal(\"jsx.importPath.prefer\"),\n from: z.string().min(1),\n to: z.string().min(1),\n imported: z.string().min(1).optional(),\n because: z.string().optional(),\n severity: governanceSeveritySchema,\n});\n\nconst jsxComponentPreferRecordSchema = z.object({\n kind: z.literal(\"jsx.component.prefer\"),\n from: z.string().min(1),\n to: z.string().min(1),\n because: z.string().optional(),\n severity: governanceSeveritySchema,\n});\n\nexport const globalJsxGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n jsxUnknownPropsForbidRecordSchema,\n jsxInlineStyleForbidRawRecordSchema,\n jsxImportPathPreferRecordSchema,\n jsxComponentPreferRecordSchema,\n]);\n\nexport const globalGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n scaleGovernanceRecordSchema,\n styleRawColorsForbidRecordSchema,\n styleRawDimensionsForbidRecordSchema,\n styleRawSpacingMustMatchScaleRecordSchema,\n styleFontSizeMustMatchScaleRecordSchema,\n styleCssVarsMustBeDefinedRecordSchema,\n jsxUnknownPropsForbidRecordSchema,\n jsxInlineStyleForbidRawRecordSchema,\n jsxImportPathPreferRecordSchema,\n jsxComponentPreferRecordSchema,\n]);\n\nconst componentCapabilityRecordSchema = z.object({\n kind: z.literal(\"capability\"),\n capability: z.string().min(1),\n});\n\nconst propValueAvoidRecordSchema = z.object({\n kind: z.literal(\"prop.value.avoid\"),\n prop: z.string().min(1),\n value: z.unknown(),\n because: z.string(),\n suggest: z.string().optional(),\n severity: governanceSeveritySchema,\n});\n\nconst propValueForbidRecordSchema = z.object({\n kind: z.literal(\"prop.value.forbid\"),\n prop: z.string().min(1),\n value: z.unknown(),\n when: z.object({ path: z.string().min(1).optional() }).optional(),\n because: z.string(),\n fix: z.object({ replaceWith: z.unknown() }).optional(),\n severity: governanceSeveritySchema,\n});\n\nconst a11yRequireNameRecordSchema = z.object({\n kind: z.literal(\"a11y.requireName\"),\n because: z.string(),\n severity: governanceSeveritySchema,\n});\n\nexport const componentGovernanceRecordSchema = z.discriminatedUnion(\"kind\", [\n componentCapabilityRecordSchema,\n propValueAvoidRecordSchema,\n propValueForbidRecordSchema,\n a11yRequireNameRecordSchema,\n]);\n\nexport const componentGovernanceRecordsSchema = z.array(componentGovernanceRecordSchema);\n\nconst componentPolicyMatchSchema = z\n .object({\n componentKey: z.string().min(1).optional(),\n componentId: z.string().min(1).optional(),\n publicRef: z.string().min(1).optional(),\n importPath: z.string().min(1).optional(),\n sourcePath: z.string().min(1).optional(),\n path: z.string().min(1).optional(),\n exportName: z.string().min(1).optional(),\n export: z.string().min(1).optional(),\n name: z.string().min(1).optional(),\n scope: z.enum([\"one\", \"all\"]).optional(),\n })\n .strict();\n\nconst componentPolicyRecordSchema = z\n .object({\n rules: componentGovernanceRecordsSchema,\n status: z.enum([\"active\", \"draft\", \"disabled\"]).optional(),\n })\n .strict();\n\nconst componentPolicyOverrideSchema = z\n .object({\n match: componentPolicyMatchSchema,\n rules: componentGovernanceRecordsSchema,\n status: z.enum([\"active\", \"draft\", \"disabled\"]).optional(),\n })\n .strict();\n\nconst canonicalSourcePathSchema = z\n .string()\n .min(1)\n .superRefine((value, ctx) => {\n const error = portableRepoPathError(value);\n if (error) {\n ctx.addIssue({ code: z.ZodIssueCode.custom, message: error });\n }\n });\n\nconst canonicalSourceRegistryHashSchema = z.string().regex(/^[0-9a-f]{64}$/);\n\nconst canonicalBridgeModuleSpecifierSchema = z\n .string()\n .min(1)\n .superRefine((value, ctx) => {\n const normalized = value.replace(/\\\\/gu, \"/\");\n if (normalized.startsWith(\"/\") || /^[A-Za-z]:\\//u.test(normalized)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Canonical bridge moduleSpecifier must be a portable import specifier\",\n });\n }\n if (normalized.split(\"/\").includes(\"..\")) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: \"Canonical bridge moduleSpecifier must not traverse outside the project\",\n });\n }\n });\n\nexport const canonicalBridgeV1Schema = z\n .object({\n underlying: z\n .object({\n packageName: z.string().min(1),\n exportName: z.string().min(1),\n })\n .strict(),\n local: z\n .object({\n componentKey: z.string().min(1),\n moduleSpecifier: canonicalBridgeModuleSpecifierSchema,\n exportName: z.string().min(1),\n implementationFiles: z.array(canonicalSourcePathSchema).min(1),\n })\n .strict(),\n decision: z\n .object({\n state: z.literal(\"confirmed\"),\n source: z.enum([\"authored\", \"migration\"]),\n })\n .strict(),\n })\n .strict();\n\nconst canonicalBridgesV1Schema = z.array(canonicalBridgeV1Schema).superRefine((bridges, ctx) => {\n const underlying = new Map<string, number>();\n const componentKeys = new Map<string, number>();\n for (const [index, bridge] of bridges.entries()) {\n const underlyingKey = `${bridge.underlying.packageName}\\u0000${bridge.underlying.exportName}`;\n const previousUnderlying = underlying.get(underlyingKey);\n if (previousUnderlying !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Duplicate confirmed bridge target for ${bridge.underlying.packageName}#${bridge.underlying.exportName} (also at canonicalBridges.${previousUnderlying})`,\n path: [index, \"underlying\"],\n });\n } else {\n underlying.set(underlyingKey, index);\n }\n\n const previousComponent = componentKeys.get(bridge.local.componentKey);\n if (previousComponent !== undefined) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: `Local component key overlaps canonicalBridges.${previousComponent}`,\n path: [index, \"local\", \"componentKey\"],\n });\n } else {\n componentKeys.set(bridge.local.componentKey, index);\n }\n }\n});\n\nconst canonicalSourceSchema = z.discriminatedUnion(\"kind\", [\n z.object({\n kind: z.literal(\"npm\"),\n specifier: z.string().min(1),\n implementationPath: z.string().min(1).optional(),\n include: z.array(z.string().min(1)).optional(),\n exclude: z.array(z.string().min(1)).optional(),\n }),\n z.object({\n kind: z.literal(\"directory\"),\n path: z.string().min(1),\n include: z.array(z.string().min(1)).optional(),\n exclude: z.array(z.string().min(1)).optional(),\n }),\n z.object({\n kind: z.literal(\"registry\"),\n registryId: z.string().min(1),\n registryHash: canonicalSourceRegistryHashSchema.optional(),\n receiptPath: canonicalSourcePathSchema.default(\".fragments/registry-lock.json\"),\n installPath: canonicalSourcePathSchema,\n importPath: z.string().min(1).optional(),\n include: z.array(z.string().min(1)).optional(),\n exclude: z.array(z.string().min(1)).optional(),\n severity: governanceSeveritySchema.optional(),\n }),\n]);\n\nexport const governanceConfigSchema = z\n .object({\n extends: z.array(z.string()).optional(),\n severity: governanceSeveritySchema.optional(),\n rules: z.record(z.string(), z.unknown()).optional(),\n agents: z\n .record(\n z.string(),\n z\n .object({\n rules: z.record(z.string(), z.unknown()).optional(),\n })\n .passthrough()\n )\n .optional(),\n audit: z.object({}).passthrough().optional(),\n runners: z.record(z.string(), z.object({}).passthrough()).optional(),\n canonicalSources: z.array(canonicalSourceSchema).optional(),\n canonicalBridges: canonicalBridgesV1Schema.optional(),\n presets: z.array(z.string()).optional(),\n scales: z.record(z.string(), scaleGovernanceRecordSchema).optional(),\n styles: z.array(globalStyleGovernanceRecordSchema).optional(),\n jsx: z.array(globalJsxGovernanceRecordSchema).optional(),\n tailwind: z\n .object({\n palette: z\n .object({\n allow: z.array(z.string().min(1)).optional(),\n deny: z.array(z.string().min(1)).optional(),\n })\n .optional(),\n })\n .passthrough()\n .optional(),\n agent: z\n .object({\n repairOrder: z.array(z.string().min(1)).optional(),\n })\n .passthrough()\n .optional(),\n components: z.record(componentPolicyRecordSchema).optional(),\n overrides: z.array(componentPolicyOverrideSchema).optional(),\n ci: z\n .object({\n failOnWarnings: z.boolean().optional(),\n })\n .passthrough()\n .optional(),\n })\n .strict();\n\nexport type ScaleGovernanceRecord = z.infer<typeof scaleGovernanceRecordSchema>;\nexport type GlobalStyleGovernanceRecord = z.infer<typeof globalStyleGovernanceRecordSchema>;\nexport type GlobalJsxGovernanceRecord = z.infer<typeof globalJsxGovernanceRecordSchema>;\nexport type GlobalGovernanceRecord = z.infer<typeof globalGovernanceRecordSchema>;\nexport type ComponentGovernanceRecord = z.infer<typeof componentGovernanceRecordSchema>;\nexport type ComponentPolicyMatch = z.infer<typeof componentPolicyMatchSchema>;\nexport type ComponentPolicyRecord = z.infer<typeof componentPolicyRecordSchema>;\nexport type ComponentPolicyOverride = z.infer<typeof componentPolicyOverrideSchema>;\nexport type CanonicalSource = z.infer<typeof canonicalSourceSchema>;\nexport type CanonicalBridgeV1 = z.infer<typeof canonicalBridgeV1Schema>;\n\nexport interface GovernanceConfig {\n /** Shared governance config modules to extend before applying this file's declarations. */\n extends?: string[];\n\n /** Default severity for governance rules that do not declare their own severity. */\n severity?: GovernanceSeverity;\n\n /**\n * Rule-id keyed enablement and severity overrides. Only fields consumed by the named\n * rule are valid; unsupported fields are reported as inert config.\n */\n rules?: Record<string, unknown>;\n\n /** Agent-id keyed rule overrides for supported agent-specific governance policies. */\n agents?: Record<string, { rules?: Record<string, unknown> }>;\n\n /** Reserved audit compatibility object; undeclared child keys are reported as inert. */\n audit?: Record<string, unknown>;\n\n /** Reserved runner compatibility map; undeclared child keys are reported as inert. */\n runners?: Record<string, Record<string, unknown>>;\n\n /**\n * Canonical component authorities: npm packages, repository directories, or registry\n * receipts whose included exports arm canonical-component rules.\n */\n canonicalSources?: CanonicalSource[];\n\n /**\n * Confirmed mappings from an underlying library export to the approved local wrapper.\n * The wrapper's implementationFiles scope permits its direct underlying import.\n */\n canonicalBridges?: CanonicalBridgeV1[];\n\n /** Versioned governance presets to resolve before applying local rule overrides. */\n presets?: string[];\n\n /**\n * Named numeric scales. Spacing rules bind through\n * style.rawSpacing.mustMatchScale; the built-in spacing policy references `space`.\n */\n scales?: Record<string, ScaleGovernanceRecord>;\n\n /** Legacy typed style-policy records, normalized into the active rule policy. */\n styles?: GlobalStyleGovernanceRecord[];\n\n /** Legacy typed JSX-policy records, normalized into the active rule policy. */\n jsx?: GlobalJsxGovernanceRecord[];\n\n /** Tailwind palette allow/deny policy used by Tailwind governance rules. */\n tailwind?: {\n palette?: {\n allow?: string[];\n deny?: string[];\n };\n [key: string]: unknown;\n };\n\n /** Agent repair-order guidance consumed when presenting deterministic fixes. */\n agent?: {\n repairOrder?: string[];\n [key: string]: unknown;\n };\n\n /** Component-keyed governance records for canonical component metadata and prop policy. */\n components?: Record<string, ComponentPolicyRecord>;\n\n /** Ordered component-policy overrides selected by component identity fields. */\n overrides?: ComponentPolicyOverride[];\n\n /** Governance CI rendering options, including whether warnings fail the CI verdict. */\n ci?: {\n failOnWarnings?: boolean;\n [key: string]: unknown;\n };\n [key: string]: unknown;\n}\n\ntype SeverityOption = {\n severity?: GovernanceSeverity;\n};\n\ntype PropContext = {\n path?: string;\n};\n\ntype NonNullish<T> = T extends null | undefined ? never : T;\n\nexport type GovernancePropValue<T> =\n NonNullish<T> extends string\n ? string extends NonNullish<T>\n ? string\n : NonNullish<T>\n : NonNullish<T> extends number\n ? number extends NonNullish<T>\n ? number\n : NonNullish<T>\n : NonNullish<T> extends boolean\n ? boolean extends NonNullish<T>\n ? boolean\n : NonNullish<T>\n : NonNullish<T>;\n\nexport type PropKey<TProps> = Extract<keyof TProps, string>;\n\nexport interface PropGovernanceOptions<TValue> extends SeverityOption {\n because?: string;\n suggest?: string;\n when?: PropContext;\n fix?: {\n replaceWith: GovernancePropValue<TValue>;\n };\n}\n\nexport interface PropGovernanceBuilder<TValue> {\n avoid(\n value: GovernancePropValue<TValue>,\n options?: Omit<PropGovernanceOptions<TValue>, \"fix\" | \"when\">\n ): ComponentGovernanceRecord;\n forbid(\n value: GovernancePropValue<TValue>,\n options?: PropGovernanceOptions<TValue>\n ): ComponentGovernanceRecord;\n}\n\nexport interface AccessibilityGovernanceBuilder {\n requireName(options?: SeverityOption & { because?: string }): ComponentGovernanceRecord;\n}\n\nexport interface ComponentGovernanceBuilder<TProps> {\n capability(capability: string): ComponentGovernanceRecord;\n prop<TKey extends PropKey<TProps>>(prop: TKey): PropGovernanceBuilder<TProps[TKey]>;\n accessibility(): AccessibilityGovernanceBuilder;\n}\n\nexport interface GovernedFragmentDefinition<\n TProps = unknown,\n TComponent extends FragmentComponent<TProps> = FragmentComponent<TProps>,\n> {\n component: TComponent;\n meta: FragmentMeta;\n guidance: FragmentGuidance;\n props?: Record<string, PropDefinition>;\n relations?: ComponentRelation[];\n examples?: FragmentExample[];\n composition?: {\n pattern?: \"compound\" | \"simple\" | \"controlled\" | \"wrapper\";\n subComponents?: string[];\n requiredChildren?: string[];\n commonPatterns?: string[];\n };\n contract?: FragmentContract;\n _provenance?: FragmentProvenance;\n govern?: (g: ComponentGovernanceBuilder<TProps>) => ComponentGovernanceRecord[];\n governance?: ComponentGovernanceRecord[];\n}\n\nexport type ResolvedGovernedFragmentDefinition<\n TProps = unknown,\n TComponent extends FragmentComponent<TProps> = FragmentComponent<TProps>,\n> = GovernedFragmentDefinition<TProps, TComponent> & {\n governance: ComponentGovernanceRecord[];\n};\n\nexport function createComponentGovernanceBuilder<TProps>(): ComponentGovernanceBuilder<TProps> {\n return {\n capability(capability) {\n return { kind: \"capability\", capability };\n },\n prop(prop) {\n return {\n avoid(value, options = {}) {\n return {\n kind: \"prop.value.avoid\",\n prop,\n value,\n because: options.because ?? \"\",\n suggest: options.suggest,\n severity: options.severity ?? \"warn\",\n };\n },\n forbid(value, options = {}) {\n return {\n kind: \"prop.value.forbid\",\n prop,\n value,\n when: options.when,\n because: options.because ?? \"\",\n fix: options.fix,\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n accessibility() {\n return {\n requireName(options = {}) {\n return {\n kind: \"a11y.requireName\",\n because: options.because ?? \"\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n };\n}\n\nexport function resolveComponentGovernance<TProps>(\n definition: GovernedFragmentDefinition<TProps>\n): ComponentGovernanceRecord[] {\n const builder = createComponentGovernanceBuilder<TProps>();\n const records = definition.govern ? definition.govern(builder) : (definition.governance ?? []);\n return componentGovernanceRecordsSchema.parse(records);\n}\n\nexport function normalizeGovernanceConfig<TConfig extends { govern?: GovernanceConfig }>(\n config: TConfig\n): TConfig {\n if (!config.govern?.scales) {\n return config;\n }\n\n const scales = Object.fromEntries(\n Object.entries(config.govern.scales).map(([name, scale]) => {\n if (!scale || typeof scale !== \"object\") {\n return [name, scale];\n }\n\n return [name, { ...scale, name: scale.name ?? name }];\n })\n );\n\n return {\n ...config,\n govern: {\n ...config.govern,\n scales,\n },\n };\n}\n\nexport const g = {\n scale: {\n px(values: readonly number[]): ScaleGovernanceRecord {\n return { kind: \"scale\", unit: \"px\", values: [...values] };\n },\n rem(values: readonly number[]): ScaleGovernanceRecord {\n return { kind: \"scale\", unit: \"rem\", values: [...values] };\n },\n },\n styles: {\n rawColors() {\n return {\n forbid(\n options: {\n except?: string[];\n prefer?: \"token\" | \"css-variable\";\n severity?: GovernanceSeverity;\n } = {}\n ): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.rawColors.forbid\",\n except: options.except ?? [],\n prefer: options.prefer ?? \"token\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n rawSpacing() {\n return {\n mustMatchScale(\n scale: string,\n options: SeverityOption & { appliesTo?: string[] } = {}\n ): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.rawSpacing.mustMatchScale\",\n scale,\n appliesTo: options.appliesTo ?? [],\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n fontSize() {\n return {\n mustMatchScale(scale: string, options: SeverityOption = {}): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.fontSize.mustMatchScale\",\n scale,\n severity: options.severity ?? \"warn\",\n };\n },\n };\n },\n cssVars() {\n return {\n mustBeDefined(options: SeverityOption = {}): GlobalStyleGovernanceRecord {\n return {\n kind: \"style.cssVars.mustBeDefined\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n },\n jsx: {\n unknownProps() {\n return {\n forbid(options: SeverityOption = {}): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.unknownProps.forbid\",\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n inlineStyle() {\n return {\n forbidRaw(\n properties: readonly string[],\n options: SeverityOption = {}\n ): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.inlineStyle.forbidRaw\",\n properties: [...properties],\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n importPath() {\n return {\n prefer(\n from: string,\n to: string,\n options: SeverityOption & { imported?: string; because?: string } = {}\n ): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.importPath.prefer\",\n from,\n to,\n imported: options.imported,\n because: options.because,\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n component() {\n return {\n prefer(\n from: string,\n to: string,\n options: SeverityOption & { because?: string } = {}\n ): GlobalJsxGovernanceRecord {\n return {\n kind: \"jsx.component.prefer\",\n from,\n to,\n because: options.because,\n severity: options.severity ?? \"error\",\n };\n },\n };\n },\n },\n component: createComponentGovernanceBuilder<Record<string, unknown>>(),\n};\n","/**\n * Compile facts from the existing IR.\n *\n * Two entry points:\n * - `compileGlobalGovernanceFacts(govern)` turns a `GovernanceConfig` into\n * scale + scale_value + style_* + jsx_* policy facts.\n * - `compileComponentFacts(componentId, fragment)` turns a governed\n * fragment definition (or a compiled fragment) into component metadata,\n * prop metadata, capability, and component-scoped policy facts.\n *\n * Both functions are pure and produce arrays sorted only by source order; the\n * caller is free to add them to a `FactIndex` in any order.\n */\n\nimport type {\n ComponentGovernanceRecord,\n GovernanceConfig,\n GovernedFragmentDefinition,\n ResolvedGovernedFragmentDefinition,\n} from \"../governance.js\";\nimport { resolveComponentGovernance } from \"../governance.js\";\nimport type { CompiledFragment, PropDefinition } from \"../compiled-types/index.js\";\nimport { asComponentId } from \"./ids.js\";\nimport {\n makeA11yNameRequiredFact,\n makeComponentCapabilityFact,\n makeComponentMetadataFact,\n makeGovernanceRuleConfigFact,\n makeJsxComponentPreferredFact,\n makeJsxInlineStyleForbiddenRawFact,\n makeJsxImportPathPreferredFact,\n makeJsxUnknownPropsForbiddenFact,\n makePropMetadataFact,\n makePropValueAvoidedFact,\n makePropValueForbiddenFact,\n makeScaleFact,\n makeScaleValueFact,\n makeStyleCssVarsMustBeDefinedFact,\n makeStyleFontSizeScaleFact,\n makeStylePropertyScaleFact,\n makeStyleRawColorForbiddenFact,\n makeStyleRawDimensionForbiddenFact,\n makeTailwindPaletteAllowFact,\n makeTailwindPaletteDenyFact,\n makeTailwindUnknownClassEnabledFact,\n} from \"./builders.js\";\nimport type { ComponentId, Fact, PolicyFact } from \"./types.js\";\n\n// ---------------------------------------------------------------------------\n// Global governance → facts\n// ---------------------------------------------------------------------------\n\nexport function compileGlobalGovernanceFacts(govern: GovernanceConfig | undefined): PolicyFact[] {\n if (!govern) return [];\n const out: PolicyFact[] = [];\n\n if (govern.scales) {\n for (const [name, scale] of Object.entries(govern.scales)) {\n out.push(\n makeScaleFact({\n name,\n unit: scale.unit,\n rootFontSizePx: scale.rootFontSizePx,\n emBasePx: scale.emBasePx,\n })\n );\n for (const value of scale.values) {\n out.push(makeScaleValueFact({ scale: name, value }));\n }\n }\n }\n\n if (govern.styles) {\n for (const style of govern.styles) {\n switch (style.kind) {\n case \"style.rawColors.forbid\":\n out.push(\n makeStyleRawColorForbiddenFact({\n except: style.except,\n prefer: style.prefer,\n severity: style.severity,\n })\n );\n break;\n case \"style.rawDimensions.forbid\":\n out.push(\n makeStyleRawDimensionForbiddenFact({\n appliesTo: style.appliesTo,\n prefer: style.prefer,\n severity: style.severity,\n })\n );\n break;\n case \"style.rawSpacing.mustMatchScale\":\n for (const property of style.appliesTo) {\n out.push(\n makeStylePropertyScaleFact({\n property,\n scale: style.scale,\n severity: style.severity,\n })\n );\n }\n break;\n case \"style.fontSize.mustMatchScale\":\n out.push(makeStyleFontSizeScaleFact({ scale: style.scale, severity: style.severity }));\n break;\n case \"style.cssVars.mustBeDefined\":\n out.push(makeStyleCssVarsMustBeDefinedFact({ severity: style.severity }));\n break;\n }\n }\n }\n\n if (govern.jsx) {\n for (const jsx of govern.jsx) {\n switch (jsx.kind) {\n case \"jsx.unknownProps.forbid\":\n out.push(makeJsxUnknownPropsForbiddenFact({ severity: jsx.severity }));\n break;\n case \"jsx.inlineStyle.forbidRaw\":\n for (const property of jsx.properties) {\n out.push(\n makeJsxInlineStyleForbiddenRawFact({\n property,\n severity: jsx.severity,\n })\n );\n }\n break;\n case \"jsx.importPath.prefer\":\n out.push(\n makeJsxImportPathPreferredFact({\n from: jsx.from,\n to: jsx.to,\n imported: jsx.imported,\n because: jsx.because,\n severity: jsx.severity,\n })\n );\n break;\n case \"jsx.component.prefer\":\n out.push(\n makeJsxComponentPreferredFact({\n from: asComponentId(jsx.from) as ComponentId,\n to: asComponentId(jsx.to) as ComponentId,\n because: jsx.because,\n severity: jsx.severity,\n })\n );\n break;\n }\n }\n }\n\n for (const bridge of govern.canonicalBridges ?? []) {\n out.push(\n makeJsxImportPathPreferredFact({\n from: bridge.underlying.packageName,\n to: bridge.local.moduleSpecifier,\n imported: bridge.underlying.exportName,\n because: `Use the confirmed local ${bridge.local.exportName} wrapper`,\n severity: ruleSeverity(govern.rules?.[\"imports/preferred-path\"], govern.severity ?? \"warn\"),\n bridge: {\n componentKey: bridge.local.componentKey,\n localExportName: bridge.local.exportName,\n underlyingExportName: bridge.underlying.exportName,\n implementationFiles: [...bridge.local.implementationFiles],\n decisionSource: bridge.decision.source,\n },\n })\n );\n }\n\n const tailwindPalette = govern.tailwind?.palette;\n const forbiddenPaletteSeverity = ruleSeverity(\n govern.rules?.[\"tailwind/forbidden-palette\"],\n govern.severity ?? \"warn\"\n );\n if (tailwindPalette?.allow?.length) {\n out.push(\n makeTailwindPaletteAllowFact({\n patterns: tailwindPalette.allow,\n severity: forbiddenPaletteSeverity,\n })\n );\n }\n if (tailwindPalette?.deny?.length) {\n out.push(\n makeTailwindPaletteDenyFact({\n patterns: tailwindPalette.deny,\n severity: forbiddenPaletteSeverity,\n })\n );\n }\n\n const unknownClassSeverity = enabledRuleSeverity(\n govern.rules?.[\"tailwind/unknown-class\"],\n \"info\"\n );\n if (unknownClassSeverity) {\n out.push(makeTailwindUnknownClassEnabledFact({ severity: unknownClassSeverity }));\n }\n\n out.push(...compileRuleConfigFacts(govern));\n\n return out;\n}\n\nconst RULE_FAMILY_MEMBERS: Record<string, readonly string[]> = {\n \"tokens/hardcoded-values\": [\n \"styles/no-raw-color\",\n \"styles/no-raw-spacing\",\n \"tokens/require-dual-fallback\",\n \"theme/no-theme-coupled-literal\",\n ],\n \"components/usage\": [\n \"components/forbidden-prop-value\",\n \"components/preferred-component\",\n \"components/unknown-prop\",\n \"props/invalid-value\",\n ],\n \"a11y/wcag\": [\"a11y/required-accessible-name\"],\n};\n\nfunction compileRuleConfigFacts(govern: GovernanceConfig): PolicyFact[] {\n const rules = govern.rules;\n if (!rules && !govern.canonicalSources?.length) return [];\n\n const configs = new Map<string, ReturnType<typeof ruleConfigFromValue>>();\n for (const [ruleId, value] of Object.entries(rules ?? {})) {\n const family = RULE_FAMILY_MEMBERS[ruleId];\n if (!family) continue;\n const config = ruleConfigFromValue(value, govern.severity ?? \"warn\");\n for (const memberRuleId of family) configs.set(memberRuleId, config);\n }\n\n for (const [ruleId, value] of Object.entries(rules ?? {})) {\n configs.set(ruleId, ruleConfigFromValue(value, govern.severity ?? \"warn\"));\n }\n\n if (\n govern.canonicalSources?.length &&\n configs.get(\"components/prefer-library\")?.enabled !== false\n ) {\n const existing = configs.get(\"components/prefer-library\");\n configs.set(\"components/prefer-library\", {\n enabled: true,\n severity: existing?.severity ?? govern.severity ?? \"warn\",\n options: {\n ...existing?.options,\n canonicalSources: existing?.options?.canonicalSources ?? govern.canonicalSources,\n },\n });\n }\n\n return [...configs.entries()].map(([ruleId, config]) =>\n makeGovernanceRuleConfigFact({\n ruleId,\n enabled: config.enabled,\n severity: config.severity,\n options: config.options,\n })\n );\n}\n\nfunction ruleConfigFromValue(\n value: unknown,\n fallbackSeverity: \"error\" | \"warn\" | \"info\"\n): { enabled: boolean; severity?: \"error\" | \"warn\" | \"info\"; options?: Record<string, unknown> } {\n if (value === false) return { enabled: false };\n if (value === true) return { enabled: true, severity: fallbackSeverity };\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return { enabled: true, severity: fallbackSeverity };\n }\n const record = value as {\n enabled?: unknown;\n severity?: unknown;\n options?: unknown;\n };\n const options =\n record.options && typeof record.options === \"object\" && !Array.isArray(record.options)\n ? (record.options as Record<string, unknown>)\n : undefined;\n return {\n enabled: record.enabled !== false,\n severity: parseSeverity(record.severity) ?? fallbackSeverity,\n options,\n };\n}\n\nfunction enabledRuleSeverity(\n value: unknown,\n fallback: \"error\" | \"warn\" | \"info\"\n): \"error\" | \"warn\" | \"info\" | null {\n if (value === true) return fallback;\n if (!value || typeof value !== \"object\") return null;\n const record = value as { enabled?: unknown; severity?: unknown };\n if (record.enabled === false) return null;\n if (record.enabled !== true) return null;\n return parseSeverity(record.severity) ?? fallback;\n}\n\nfunction ruleSeverity(\n value: unknown,\n fallback: \"error\" | \"warn\" | \"info\"\n): \"error\" | \"warn\" | \"info\" {\n if (!value || typeof value !== \"object\") return fallback;\n return parseSeverity((value as { severity?: unknown }).severity) ?? fallback;\n}\n\nfunction parseSeverity(value: unknown): \"error\" | \"warn\" | \"info\" | undefined {\n if (value === \"warning\") return \"warn\";\n return value === \"error\" || value === \"warn\" || value === \"info\" ? value : undefined;\n}\n\n// ---------------------------------------------------------------------------\n// Component → facts\n// ---------------------------------------------------------------------------\n\ninterface ComponentFactSource {\n meta: { name: string; description?: string; category?: string };\n guidance?: { when?: string[]; whenNot?: string[] };\n props?: Record<string, PropDefinition>;\n governance?: ComponentGovernanceRecord[];\n filePath?: string;\n}\n\nfunction isResolvedGovernedDefinition(value: unknown): value is ResolvedGovernedFragmentDefinition {\n if (!value || typeof value !== \"object\") return false;\n return \"governance\" in value && Array.isArray((value as { governance: unknown }).governance);\n}\n\nfunction isGovernedDefinition(value: unknown): value is GovernedFragmentDefinition {\n if (!value || typeof value !== \"object\") return false;\n return \"govern\" in value || \"governance\" in value;\n}\n\nfunction toComponentFactSource(input: ComponentFactInput): ComponentFactSource {\n if (isResolvedGovernedDefinition(input)) {\n return {\n meta: input.meta,\n guidance: input.guidance,\n props: (input.props ?? {}) as Record<string, PropDefinition>,\n governance: input.governance,\n };\n }\n if (isGovernedDefinition(input)) {\n return {\n meta: input.meta,\n guidance: input.guidance,\n props: (input.props ?? {}) as Record<string, PropDefinition>,\n governance: resolveComponentGovernance(input),\n };\n }\n // CompiledFragment\n return {\n meta: input.meta,\n guidance: input.guidance ?? input.usage,\n props: input.props,\n governance: input.governance,\n filePath: input.filePath,\n };\n}\n\nexport type ComponentFactInput =\n | CompiledFragment\n | GovernedFragmentDefinition\n | ResolvedGovernedFragmentDefinition;\n\nexport function compileComponentFacts(componentId: ComponentId, input: ComponentFactInput): Fact[] {\n const source = toComponentFactSource(input);\n const facts: Fact[] = [];\n\n facts.push(\n makeComponentMetadataFact({\n componentId,\n name: source.meta.name,\n description: source.meta.description,\n category: source.meta.category,\n filePath: source.filePath,\n })\n );\n\n for (const [propName, prop] of Object.entries(source.props ?? {})) {\n facts.push(\n makePropMetadataFact({\n componentId,\n prop: propName,\n type: prop.type,\n values: prop.values ? [...prop.values] : undefined,\n required: prop.required ?? false,\n default: prop.default,\n description: prop.description,\n })\n );\n }\n\n for (const record of source.governance ?? []) {\n const fact = compileComponentGovernanceRecord(componentId, record);\n if (fact) facts.push(fact);\n }\n\n return facts;\n}\n\nfunction compileComponentGovernanceRecord(\n componentId: ComponentId,\n record: ComponentGovernanceRecord\n): Fact | undefined {\n switch (record.kind) {\n case \"capability\":\n return makeComponentCapabilityFact({ componentId, capability: record.capability });\n case \"prop.value.avoid\":\n return makePropValueAvoidedFact({\n componentId,\n prop: record.prop,\n value: record.value,\n because: record.because,\n suggest: record.suggest,\n severity: record.severity,\n });\n case \"prop.value.forbid\":\n return makePropValueForbiddenFact({\n componentId,\n prop: record.prop,\n value: record.value,\n pathPattern: record.when?.path,\n because: record.because,\n replaceWith: record.fix?.replaceWith,\n severity: record.severity,\n });\n case \"a11y.requireName\":\n return makeA11yNameRequiredFact({\n componentId,\n because: record.because,\n severity: record.severity,\n });\n }\n}\n","import {\n canonicalJson,\n hash64Hex,\n type FactLocation,\n} from \"../facts/index.js\";\nimport {\n normalizeFinding,\n normalizeViolation,\n type Finding,\n type Violation,\n} from \"../schemas/index.js\";\nimport { byRuleId } from \"./codes.js\";\n\nexport interface BridgeViolationInput {\n violation: Violation;\n canonicalRuleId?: string;\n validator?: string;\n attributes?: Record<string, unknown>;\n}\n\nexport function bridgeSourceViolation(input: BridgeViolationInput): {\n violation: Violation;\n finding: Finding;\n} {\n const ruleId = input.canonicalRuleId ?? input.violation.rule;\n const code = byRuleId.get(ruleId);\n const violation = normalizeViolation({\n ...input.violation,\n code: input.violation.code ?? code?.code,\n helpUrl: input.violation.helpUrl ?? code?.explainUrl,\n });\n const location = locationFromViolation(violation);\n const fingerprint = hash64Hex(\n canonicalJson({\n ruleId,\n legacyRule: violation.rule,\n nodeId: violation.nodeId,\n nodeType: violation.nodeType,\n prop: violation.prop,\n path: violation.path,\n filePath: violation.filePath,\n line: violation.line,\n column: violation.column,\n rawValue: violation.rawValue,\n message: violation.message,\n }),\n );\n\n return {\n violation,\n finding: normalizeFinding({\n ruleId,\n ruleVersion: \"1.0.0\",\n severity: violation.severity,\n level: violation.level,\n code: code?.code,\n helpUrl: code?.explainUrl,\n message: violation.message,\n fingerprint,\n location,\n evidence: [\n {\n factId: [\n \"source\",\n input.validator ?? \"validator\",\n ruleId,\n violation.filePath ?? violation.nodeId,\n violation.line ?? 0,\n violation.column ?? 0,\n violation.prop ?? violation.path ?? \"\",\n ].join(\":\"),\n fact: {\n kind: \"source_violation\",\n location,\n },\n },\n ],\n attributes: {\n source: \"source-validator\",\n validator: input.validator,\n legacyRule: violation.rule === ruleId ? undefined : violation.rule,\n nodeId: violation.nodeId,\n nodeType: violation.nodeType,\n prop: violation.prop,\n path: violation.path,\n rawValue: violation.rawValue,\n legacySuggestion: violation.suggestion,\n ...input.attributes,\n },\n }),\n };\n}\n\nexport function bridgeSourceViolations(\n violations: Violation[],\n options: Omit<BridgeViolationInput, \"violation\"> = {},\n): { violations: Violation[]; findings: Finding[] } {\n const bridged = violations.map((violation) =>\n bridgeSourceViolation({ ...options, violation }),\n );\n return {\n violations: bridged.map((entry) => entry.violation),\n findings: bridged.map((entry) => entry.finding),\n };\n}\n\nfunction locationFromViolation(violation: Violation): FactLocation {\n return {\n file: violation.filePath ?? \"<source>\",\n line: violation.line ?? 0,\n column: violation.column ?? 0,\n };\n}\n"],"mappings":"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","names":["code","code","componentId","componentId","code"]}
@@ -2537,12 +2537,12 @@ declare const agentFormatSchema: z.ZodUnion<[z.ZodObject<{
2537
2537
  maxIterations: number;
2538
2538
  scoreDelta: number;
2539
2539
  };
2540
- status?: undefined;
2541
2540
  verdict?: {
2542
2541
  reasons: string[];
2543
2542
  exitCode: 0 | 1;
2544
2543
  gatingFindingCount: number;
2545
2544
  } | undefined;
2545
+ status?: undefined;
2546
2546
  findings?: {
2547
2547
  message: string;
2548
2548
  location: {
@@ -2680,12 +2680,12 @@ declare const agentFormatSchema: z.ZodUnion<[z.ZodObject<{
2680
2680
  maxIterations: number;
2681
2681
  scoreDelta: number;
2682
2682
  };
2683
- status?: undefined;
2684
2683
  verdict?: {
2685
2684
  reasons: string[];
2686
2685
  exitCode: 0 | 1;
2687
2686
  gatingFindingCount: number;
2688
2687
  } | undefined;
2688
+ status?: undefined;
2689
2689
  findings?: {
2690
2690
  message: string;
2691
2691
  location: {
@@ -4077,12 +4077,12 @@ declare const agentFormatSchema: z.ZodUnion<[z.ZodObject<{
4077
4077
  gatingFindingCount: number;
4078
4078
  }>;
4079
4079
  }, "strip", z.ZodTypeAny, {
4080
- status: "indeterminate";
4081
4080
  verdict: {
4082
4081
  reasons: string[];
4083
4082
  exitCode: 0;
4084
4083
  gatingFindingCount: number;
4085
4084
  };
4085
+ status: "indeterminate";
4086
4086
  passed: true;
4087
4087
  reasons: ["zero_rules_loaded"];
4088
4088
  schemaVersion: "typestyle.agent.v2";
@@ -4220,12 +4220,12 @@ declare const agentFormatSchema: z.ZodUnion<[z.ZodObject<{
4220
4220
  expiresOn?: string | undefined;
4221
4221
  }[] | undefined;
4222
4222
  }, {
4223
- status: "indeterminate";
4224
4223
  verdict: {
4225
4224
  reasons: string[];
4226
4225
  exitCode: 0;
4227
4226
  gatingFindingCount: number;
4228
4227
  };
4228
+ status: "indeterminate";
4229
4229
  passed: true;
4230
4230
  reasons: ["zero_rules_loaded"];
4231
4231
  schemaVersion: "typestyle.agent.v2";
@@ -5058,12 +5058,12 @@ declare const agentOutputSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
5058
5058
  maxIterations: number;
5059
5059
  scoreDelta: number;
5060
5060
  };
5061
- status?: undefined;
5062
5061
  verdict?: {
5063
5062
  reasons: string[];
5064
5063
  exitCode: 0 | 1;
5065
5064
  gatingFindingCount: number;
5066
5065
  } | undefined;
5066
+ status?: undefined;
5067
5067
  findings?: {
5068
5068
  message: string;
5069
5069
  location: {
@@ -5201,12 +5201,12 @@ declare const agentOutputSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
5201
5201
  maxIterations: number;
5202
5202
  scoreDelta: number;
5203
5203
  };
5204
- status?: undefined;
5205
5204
  verdict?: {
5206
5205
  reasons: string[];
5207
5206
  exitCode: 0 | 1;
5208
5207
  gatingFindingCount: number;
5209
5208
  } | undefined;
5209
+ status?: undefined;
5210
5210
  findings?: {
5211
5211
  message: string;
5212
5212
  location: {
@@ -6598,12 +6598,12 @@ declare const agentOutputSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
6598
6598
  gatingFindingCount: number;
6599
6599
  }>;
6600
6600
  }, "strip", z.ZodTypeAny, {
6601
- status: "indeterminate";
6602
6601
  verdict: {
6603
6602
  reasons: string[];
6604
6603
  exitCode: 0;
6605
6604
  gatingFindingCount: number;
6606
6605
  };
6606
+ status: "indeterminate";
6607
6607
  passed: true;
6608
6608
  reasons: ["zero_rules_loaded"];
6609
6609
  schemaVersion: "typestyle.agent.v2";
@@ -6741,12 +6741,12 @@ declare const agentOutputSchema: z.ZodUnion<[z.ZodUnion<[z.ZodObject<{
6741
6741
  expiresOn?: string | undefined;
6742
6742
  }[] | undefined;
6743
6743
  }, {
6744
- status: "indeterminate";
6745
6744
  verdict: {
6746
6745
  reasons: string[];
6747
6746
  exitCode: 0;
6748
6747
  gatingFindingCount: number;
6749
6748
  };
6749
+ status: "indeterminate";
6750
6750
  passed: true;
6751
6751
  reasons: ["zero_rules_loaded"];
6752
6752
  schemaVersion: "typestyle.agent.v2";