@usefragments/core 1.0.0 → 1.2.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 (42) hide show
  1. package/dist/{chunk-R3X7UBHU.js → chunk-BQQTMGLA.js} +24 -2
  2. package/dist/chunk-BQQTMGLA.js.map +1 -0
  3. package/dist/{chunk-243QYRUF.js → chunk-DBVTSUMT.js} +71 -44
  4. package/dist/chunk-DBVTSUMT.js.map +1 -0
  5. package/dist/codes/index.d.ts +1 -1
  6. package/dist/codes/index.js +2 -2
  7. package/dist/compiled-types/index.d.ts +1 -1
  8. package/dist/generate/index.d.ts +1 -1
  9. package/dist/{governance-BOa3KyiJ.d.ts → governance-DYSirwJu.d.ts} +22 -1
  10. package/dist/index.d.ts +8 -6
  11. package/dist/index.js +156 -19
  12. package/dist/index.js.map +1 -1
  13. package/dist/react-types.d.ts +1 -1
  14. package/dist/schemas/index.d.ts +797 -4
  15. package/dist/schemas/index.js +9 -1
  16. package/dist/test-utils.d.ts +1 -1
  17. package/package.json +1 -1
  18. package/src/agent-format.test.ts +72 -2
  19. package/src/agent-format.ts +10 -5
  20. package/src/codes/__tests__/codes.test.ts +57 -7
  21. package/src/codes/codes.ts +44 -42
  22. package/src/conform-prove.ts +4 -8
  23. package/src/contract/index.ts +3 -0
  24. package/src/contract/preimage.test.ts +50 -0
  25. package/src/contract/preimage.ts +56 -0
  26. package/src/facts/builders.ts +2 -0
  27. package/src/facts/fact-index.ts +4 -0
  28. package/src/facts/facts.test.ts +49 -0
  29. package/src/facts/types.ts +1 -0
  30. package/src/governance-integrity.test.ts +2 -0
  31. package/src/governance-integrity.ts +7 -1
  32. package/src/index.ts +9 -0
  33. package/src/rules/components-prefer-library.ts +165 -7
  34. package/src/rules/emit-gate.test.ts +24 -2
  35. package/src/rules/emit-gate.ts +15 -7
  36. package/src/rules/fix-availability.ts +33 -0
  37. package/src/rules/rules.test.ts +178 -23
  38. package/src/rules/taxonomy.test.ts +6 -3
  39. package/src/rules/tiers.ts +1 -1
  40. package/src/schemas/index.ts +25 -1
  41. package/dist/chunk-243QYRUF.js.map +0 -1
  42. package/dist/chunk-R3X7UBHU.js.map +0 -1
@@ -0,0 +1 @@
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 \"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 \"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 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: \"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] 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 { 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 ComponentId,\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\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}): JsxImportPathPreferredFact {\n return {\n id: factId(\"jsx_import_path_preferred\", {\n from: input.from,\n to: input.to,\n imported: input.imported,\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 };\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}): TokenDefinitionFact {\n return {\n id: factId(\"token_definition\", { name: input.name }),\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 };\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\";\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\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, ...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\n add(fact: Fact): void {\n const existing = this.facts.get(fact.id);\n if (existing) {\n if (\n canonicalJson(logicalFactForComparison(existing)) !==\n canonicalJson(logicalFactForComparison(fact))\n ) {\n console.warn(\n `FactIndex: conflicting facts for id ${fact.id} — keeping first fact, 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 };\n\n // ---------------------------------------------------------------------\n // Internals\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 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 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>;\n\nexport interface GovernanceConfig {\n extends?: string[];\n severity?: GovernanceSeverity;\n rules?: Record<string, unknown>;\n agents?: Record<string, { rules?: Record<string, unknown> }>;\n audit?: Record<string, unknown>;\n runners?: Record<string, Record<string, unknown>>;\n canonicalSources?: CanonicalSource[];\n presets?: string[];\n scales?: Record<string, ScaleGovernanceRecord>;\n styles?: GlobalStyleGovernanceRecord[];\n jsx?: GlobalJsxGovernanceRecord[];\n tailwind?: {\n palette?: {\n allow?: string[];\n deny?: string[];\n };\n [key: string]: unknown;\n };\n agent?: {\n repairOrder?: string[];\n [key: string]: unknown;\n };\n components?: Record<string, ComponentPolicyRecord>;\n overrides?: ComponentPolicyOverride[];\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 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:\n 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"]}
@@ -17,7 +17,7 @@ interface FuiCode {
17
17
  fixAvailable: boolean;
18
18
  evidenceRequired: boolean;
19
19
  }
20
- declare const CODES: readonly [FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode];
20
+ declare const CODES: readonly [FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode, FuiCode];
21
21
  declare const byCode: ReadonlyMap<string, FuiCode>;
22
22
  declare const byRuleId: ReadonlyMap<string, FuiCode>;
23
23
  declare function explainUrlForCode(code: string): string;
@@ -6,8 +6,8 @@ import {
6
6
  byCode,
7
7
  byRuleId,
8
8
  explainUrlForCode
9
- } from "../chunk-243QYRUF.js";
10
- import "../chunk-R3X7UBHU.js";
9
+ } from "../chunk-DBVTSUMT.js";
10
+ import "../chunk-BQQTMGLA.js";
11
11
  import "../chunk-JNBFJ34I.js";
12
12
  import "../chunk-EIYNNS77.js";
13
13
  import "../chunk-V4VQB57N.js";
@@ -1,5 +1,5 @@
1
1
  import '../types-xJ2xyp_G.js';
2
- export { aV as AIMetadata, C as CompiledBlock, b as CompiledFragment, y as CompiledFragmentsFile, D as CompiledTokenData, E as CompiledTokenEntry, aW as ComponentRelation, aX as FragmentContract, aY as FragmentGenerated, aZ as FragmentMeta, a_ as FragmentUsage, a$ as ImportEntry, af as ObservedComponentUsage, ag as ObservedUsageProp, b0 as PerformanceData, b1 as PerformanceSummary, b2 as PropDefinition, b3 as Theme, b4 as VerifyResult } from '../governance-BOa3KyiJ.js';
2
+ export { aY as AIMetadata, C as CompiledBlock, b as CompiledFragment, z as CompiledFragmentsFile, E as CompiledTokenData, H as CompiledTokenEntry, aZ as ComponentRelation, a_ as FragmentContract, a$ as FragmentGenerated, b0 as FragmentMeta, b1 as FragmentUsage, b2 as ImportEntry, ah as ObservedComponentUsage, ai as ObservedUsageProp, b3 as PerformanceData, b4 as PerformanceSummary, b5 as PropDefinition, b6 as Theme, b7 as VerifyResult } from '../governance-DYSirwJu.js';
3
3
  import 'zod';
4
4
  import 'react';
5
5
  import '../topology/index.js';
@@ -1,4 +1,4 @@
1
- import { b as CompiledFragment, C as CompiledBlock } from '../governance-BOa3KyiJ.js';
1
+ import { b as CompiledFragment, C as CompiledBlock } from '../governance-DYSirwJu.js';
2
2
  import 'zod';
3
3
  import 'react';
4
4
  import '../topology/index.js';
@@ -119,6 +119,8 @@ interface ContractCatalogInput {
119
119
  policy?: ContractPolicyInput | null;
120
120
  }
121
121
  declare const CONTRACT_PREIMAGE_SCHEMA: "fcid-preimage:v1";
122
+ /** Request header used by clients that can verify and consume this preimage. */
123
+ declare const CONTRACT_PREIMAGE_CAPABILITY_HEADER: "X-Fragments-Contract-Preimage";
122
124
  /**
123
125
  * The hashed identity record: four domain sub-hashes plus the projection schema
124
126
  * version (so an intentional projection change mints a new fcid). The fcid is
@@ -128,6 +130,25 @@ interface ContractPreimage {
128
130
  schema: typeof CONTRACT_PREIMAGE_SCHEMA;
129
131
  domains: Record<ContractDomain, string>;
130
132
  }
133
+ /**
134
+ * Wire-compatible identity pin carried by Cloud policy responses. Older
135
+ * contract rows may omit the schema/domains, so every field except the FCID is
136
+ * intentionally nullable at this boundary.
137
+ */
138
+ interface ContractIdentityPin {
139
+ contractHash: string;
140
+ preimageSchema?: string | null;
141
+ domainHashes?: Readonly<Record<string, string>> | null;
142
+ }
143
+ /**
144
+ * Reconstruct and verify the canonical preimage behind a published FCID.
145
+ *
146
+ * This is the only supported bridge from the additive ledger/wire shape
147
+ * (`preimageSchema` + `domainHashes`) back to the hash input. Consumers must
148
+ * not trust `enforcedIdentityComparable` on its own: a malformed, partial, or
149
+ * internally inconsistent pin returns `null` and therefore fails closed.
150
+ */
151
+ declare function verifiedContractPreimageFromPin(pin: ContractIdentityPin): ContractPreimage | null;
131
152
  /**
132
153
  * Project a catalog onto the contract preimage: four enforced-only domain
133
154
  * bodies, each hashed independently. `contractHash(projectContractPreimage(x))`
@@ -3276,4 +3297,4 @@ declare const g: {
3276
3297
  component: ComponentGovernanceBuilder<Record<string, unknown>>;
3277
3298
  };
3278
3299
 
3279
- export { type FragmentContract as $, type AIMetadata as A, type BlockDefinition as B, type CompiledBlock as C, type CompiledTokenData as D, type CompiledTokenEntry as E, type FragmentDefinition as F, type GovernanceSeverity as G, type ComponentGovernanceBuilder as H, type ComponentGovernanceRecord as I, type ComponentRef as J, type ComponentRelation as K, type CompositionMetadata as L, type ContractCanonicalMappingInput as M, type ContractComponentInput as N, type ContractPolicyInput as O, type ContractPreimage as P, type ContractPropMappingInput as Q, type ResolvedGovernedFragmentDefinition as R, type StorybookFilterConfig as S, type TokenConfig as T, type ContractTokenInput as U, type VariantRenderOptions as V, type ContractWaiverInput as W, type ControlType as X, type DesignSystemConfig as Y, type DiffResult as Z, type FigmaPropMapping as _, type FragmentDefinitionV2 as a, type ImportEntry as a$, type FragmentExample as a0, type FragmentGenerated as a1, type FragmentGuidance as a2, type FragmentMeta as a3, type FragmentProvenance as a4, type FragmentUsage as a5, type FragmentVariant as a6, type GlobalGovernanceRecord as a7, type GlobalJsxGovernanceRecord as a8, type GlobalStyleGovernanceRecord as a9, type TokenSourceConfig as aA, type TokenSourceFormat as aB, type VerifyRequest as aC, type VerifyResult as aD, type Viewport as aE, componentGovernanceRecordSchema as aF, componentGovernanceRecordsSchema as aG, contractComponentsFromFragments as aH, contractPolicyFromGovernanceConfig as aI, diffContractDomains as aJ, g as aK, globalGovernanceRecordSchema as aL, globalJsxGovernanceRecordSchema as aM, globalStyleGovernanceRecordSchema as aN, governanceConfigSchema as aO, governanceConfigWithLocalCanonical as aP, governanceSeveritySchema as aQ, localCanonicalContractMappings as aR, normalizeGovernanceConfig as aS, projectContractPreimage as aT, scaleGovernanceRecordSchema as aU, type AIMetadata$1 as aV, type ComponentRelation$1 as aW, type FragmentContract$1 as aX, type FragmentGenerated$1 as aY, type FragmentMeta$1 as aZ, type FragmentUsage$1 as a_, type GovernancePropValue as aa, type InspectConfig as ab, type LocalCanonicalDeclaration as ac, type LocalCanonicalResolveRule as ad, type Manifest as ae, type ObservedComponentUsage as af, type ObservedUsageProp as ag, type PlayFunction as ah, type PlayFunctionContext as ai, type PropDefinition as aj, type PropGovernanceBuilder as ak, type PropGovernanceOptions as al, type PropKey as am, type PropType as an, type RecipeDefinition as ao, type RegistryOptions as ap, type RepoRelativePath as aq, type ScaleGovernanceRecord as ar, type Screenshot as as, type ScreenshotConfig as at, type ScreenshotMetadata as au, type ServiceConfig as av, type SnapshotConfig as aw, type SnippetPolicyConfig as ax, type Theme as ay, type ThemeSeeds as az, type CompiledFragment as b, type PerformanceData as b0, type PerformanceSummary as b1, type PropDefinition$1 as b2, type Theme$1 as b3, type VerifyResult$1 as b4, type ContractDomain as c, type ContractCatalogInput as d, type GovernedFragmentDefinition as e, type GovernanceConfig as f, type FragmentsConfig as g, type FragmentComponent as h, type FigmaStringMapping as i, type FigmaBooleanMapping as j, type FigmaEnumMapping as k, type FigmaInstanceMapping as l, type FigmaChildrenMapping as m, type FigmaTextContentMapping as n, type RelationshipType as o, type VariantLoader as p, type CanonicalSource as q, type AccessibilityGovernanceBuilder as r, type AppConfig as s, type BaselineInfo as t, type BoundingBox as u, CONTRACT_DOMAINS as v, CONTRACT_PREIMAGE_SCHEMA as w, type CanonicalMappingStatus as x, type CompiledFragmentsFile as y, type CompiledRecipe as z };
3300
+ export { type DiffResult as $, type AIMetadata as A, type BlockDefinition as B, type CompiledBlock as C, type CompiledRecipe as D, type CompiledTokenData as E, type FragmentDefinition as F, type GovernanceSeverity as G, type CompiledTokenEntry as H, type ComponentGovernanceBuilder as I, type ComponentGovernanceRecord as J, type ComponentRef as K, type ComponentRelation as L, type CompositionMetadata as M, type ContractCanonicalMappingInput as N, type ContractComponentInput as O, type ContractIdentityPin as P, type ContractPolicyInput as Q, type ResolvedGovernedFragmentDefinition as R, type StorybookFilterConfig as S, type TokenConfig as T, type ContractPreimage as U, type VariantRenderOptions as V, type ContractPropMappingInput as W, type ContractTokenInput as X, type ContractWaiverInput as Y, type ControlType as Z, type DesignSystemConfig as _, type FragmentDefinitionV2 as a, type FragmentGenerated$1 as a$, type FigmaPropMapping as a0, type FragmentContract as a1, type FragmentExample as a2, type FragmentGenerated as a3, type FragmentGuidance as a4, type FragmentMeta as a5, type FragmentProvenance as a6, type FragmentUsage as a7, type FragmentVariant as a8, type GlobalGovernanceRecord as a9, type Theme as aA, type ThemeSeeds as aB, type TokenSourceConfig as aC, type TokenSourceFormat as aD, type VerifyRequest as aE, type VerifyResult as aF, type Viewport as aG, componentGovernanceRecordSchema as aH, componentGovernanceRecordsSchema as aI, contractComponentsFromFragments as aJ, contractPolicyFromGovernanceConfig as aK, diffContractDomains as aL, g as aM, globalGovernanceRecordSchema as aN, globalJsxGovernanceRecordSchema as aO, globalStyleGovernanceRecordSchema as aP, governanceConfigSchema as aQ, governanceConfigWithLocalCanonical as aR, governanceSeveritySchema as aS, localCanonicalContractMappings as aT, normalizeGovernanceConfig as aU, projectContractPreimage as aV, scaleGovernanceRecordSchema as aW, verifiedContractPreimageFromPin as aX, type AIMetadata$1 as aY, type ComponentRelation$1 as aZ, type FragmentContract$1 as a_, type GlobalJsxGovernanceRecord as aa, type GlobalStyleGovernanceRecord as ab, type GovernancePropValue as ac, type InspectConfig as ad, type LocalCanonicalDeclaration as ae, type LocalCanonicalResolveRule as af, type Manifest as ag, type ObservedComponentUsage as ah, type ObservedUsageProp as ai, type PlayFunction as aj, type PlayFunctionContext as ak, type PropDefinition as al, type PropGovernanceBuilder as am, type PropGovernanceOptions as an, type PropKey as ao, type PropType as ap, type RecipeDefinition as aq, type RegistryOptions as ar, type RepoRelativePath as as, type ScaleGovernanceRecord as at, type Screenshot as au, type ScreenshotConfig as av, type ScreenshotMetadata as aw, type ServiceConfig as ax, type SnapshotConfig as ay, type SnippetPolicyConfig as az, type CompiledFragment as b, type FragmentMeta$1 as b0, type FragmentUsage$1 as b1, type ImportEntry as b2, type PerformanceData as b3, type PerformanceSummary as b4, type PropDefinition$1 as b5, type Theme$1 as b6, type VerifyResult$1 as b7, type ContractDomain as c, type ContractCatalogInput as d, type GovernedFragmentDefinition as e, type GovernanceConfig as f, type FragmentsConfig as g, type FragmentComponent as h, type FigmaStringMapping as i, type FigmaBooleanMapping as j, type FigmaEnumMapping as k, type FigmaInstanceMapping as l, type FigmaChildrenMapping as m, type FigmaTextContentMapping as n, type RelationshipType as o, type VariantLoader as p, type CanonicalSource as q, type AccessibilityGovernanceBuilder as r, type AppConfig as s, type BaselineInfo as t, type BoundingBox as u, CONTRACT_DOMAINS as v, CONTRACT_PREIMAGE_CAPABILITY_HEADER as w, CONTRACT_PREIMAGE_SCHEMA as x, type CanonicalMappingStatus as y, type CompiledFragmentsFile as z };
package/dist/index.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  import { Severity } from './severity.js';
2
2
  export { SEVERITIES, SEVERITY_RANK, SEVERITY_WEIGHTS, SeverityLevel, compareSeverity, maxSeverity, severityLevel, severitySchema, sortBySeverity } from './severity.js';
3
3
  import { Finding, AgentFormat, FindingFix } from './schemas/index.js';
4
- export { GovernanceVerdict as CanonicalGovernanceVerdict, FindingReplaceClassTokenFix, FindingReplaceComponentFix, FindingReplaceImportFix, FindingReplacePropValueFix, FindingReplaceStyleValueFix, Fix, GovernanceVerdictMetadata, SuppressionDirective, ValidatorResult, Violation, agentFormatSchema, factEvidenceSchema, factLocationSchema, findingFixSchema, findingReplaceClassTokenFixSchema, findingReplaceComponentFixSchema, findingReplaceImportFixSchema, findingReplacePropValueFixSchema, findingReplaceStyleValueFixSchema, findingSchema, fixSchema, governanceVerdictMetadataSchema, governanceVerdictSchema, normalizeFinding, normalizeSeverity, normalizeViolation, suppressionDirectiveSchema, validatorResultSchema, violationSchema } from './schemas/index.js';
4
+ export { AGENT_FORMAT_SCHEMA_VERSION, AgentErrorEnvelope, AgentOutput, GovernanceVerdict as CanonicalGovernanceVerdict, FindingReplaceClassTokenFix, FindingReplaceComponentFix, FindingReplaceImportFix, FindingReplacePropValueFix, FindingReplaceStyleValueFix, Fix, GovernanceVerdictMetadata, SuppressionDirective, ValidatorResult, Violation, agentErrorEnvelopeSchema, agentFormatSchema, agentIntegritySchema, agentOutputSchema, factEvidenceSchema, factLocationSchema, findingFixSchema, findingReplaceClassTokenFixSchema, findingReplaceComponentFixSchema, findingReplaceImportFixSchema, findingReplacePropValueFixSchema, findingReplaceStyleValueFixSchema, findingSchema, fixSchema, governanceVerdictMetadataSchema, governanceVerdictSchema, normalizeFinding, normalizeSeverity, normalizeViolation, suppressionDirectiveSchema, validatorResultSchema, violationSchema } from './schemas/index.js';
5
5
  export { BridgeViolationInput, CODES, CodeCategory, CodeLifecycle, EXPLAIN_URL_BASE, FuiCode, bridgeSourceViolation, bridgeSourceViolations, byCode, byRuleId, explainUrlForCode } from './codes/index.js';
6
- import { c as ContractDomain, d as ContractCatalogInput, G as GovernanceSeverity, b as CompiledFragment, e as GovernedFragmentDefinition, R as ResolvedGovernedFragmentDefinition, f as GovernanceConfig, g as FragmentsConfig, T as TokenConfig, h as FragmentComponent, B as BlockDefinition, C as CompiledBlock, F as FragmentDefinition, a as FragmentDefinitionV2, S as StorybookFilterConfig, i as FigmaStringMapping, j as FigmaBooleanMapping, k as FigmaEnumMapping, l as FigmaInstanceMapping, m as FigmaChildrenMapping, n as FigmaTextContentMapping, o as RelationshipType, V as VariantRenderOptions, p as VariantLoader, q as CanonicalSource } from './governance-BOa3KyiJ.js';
7
- export { A as AIMetadata, r as AccessibilityGovernanceBuilder, s as AppConfig, t as BaselineInfo, u as BoundingBox, v as CONTRACT_DOMAINS, w as CONTRACT_PREIMAGE_SCHEMA, x as CanonicalMappingStatus, y as CompiledFragmentsFile, z as CompiledRecipe, D as CompiledTokenData, E as CompiledTokenEntry, H as ComponentGovernanceBuilder, I as ComponentGovernanceRecord, J as ComponentRef, K as ComponentRelation, L as CompositionMetadata, M as ContractCanonicalMappingInput, N as ContractComponentInput, O as ContractPolicyInput, P as ContractPreimage, Q as ContractPropMappingInput, U as ContractTokenInput, W as ContractWaiverInput, X as ControlType, Y as DesignSystemConfig, Z as DiffResult, _ as FigmaPropMapping, $ as FragmentContract, a0 as FragmentExample, a1 as FragmentGenerated, a2 as FragmentGuidance, a3 as FragmentMeta, a4 as FragmentProvenance, a5 as FragmentUsage, a6 as FragmentVariant, a7 as GlobalGovernanceRecord, a8 as GlobalJsxGovernanceRecord, a9 as GlobalStyleGovernanceRecord, aa as GovernancePropValue, ab as InspectConfig, ac as LocalCanonicalDeclaration, ad as LocalCanonicalResolveRule, ae as Manifest, af as ObservedComponentUsage, ag as ObservedUsageProp, ah as PlayFunction, ai as PlayFunctionContext, aj as PropDefinition, ak as PropGovernanceBuilder, al as PropGovernanceOptions, am as PropKey, an as PropType, ao as RecipeDefinition, ap as RegistryOptions, aq as RepoRelativePath, ar as ScaleGovernanceRecord, as as Screenshot, at as ScreenshotConfig, au as ScreenshotMetadata, av as ServiceConfig, aw as SnapshotConfig, ax as SnippetPolicyConfig, ay as Theme, az as ThemeSeeds, aA as TokenSourceConfig, aB as TokenSourceFormat, aC as VerifyRequest, aD as VerifyResult, aE as Viewport, aF as componentGovernanceRecordSchema, aG as componentGovernanceRecordsSchema, aH as contractComponentsFromFragments, aI as contractPolicyFromGovernanceConfig, aJ as diffContractDomains, aK as g, aL as globalGovernanceRecordSchema, aM as globalJsxGovernanceRecordSchema, aN as globalStyleGovernanceRecordSchema, aO as governanceConfigSchema, aP as governanceConfigWithLocalCanonical, aQ as governanceSeveritySchema, aR as localCanonicalContractMappings, aS as normalizeGovernanceConfig, aT as projectContractPreimage, aU as scaleGovernanceRecordSchema } from './governance-BOa3KyiJ.js';
6
+ import { c as ContractDomain, d as ContractCatalogInput, G as GovernanceSeverity, b as CompiledFragment, e as GovernedFragmentDefinition, R as ResolvedGovernedFragmentDefinition, f as GovernanceConfig, g as FragmentsConfig, T as TokenConfig, h as FragmentComponent, B as BlockDefinition, C as CompiledBlock, F as FragmentDefinition, a as FragmentDefinitionV2, S as StorybookFilterConfig, i as FigmaStringMapping, j as FigmaBooleanMapping, k as FigmaEnumMapping, l as FigmaInstanceMapping, m as FigmaChildrenMapping, n as FigmaTextContentMapping, o as RelationshipType, V as VariantRenderOptions, p as VariantLoader, q as CanonicalSource } from './governance-DYSirwJu.js';
7
+ export { A as AIMetadata, r as AccessibilityGovernanceBuilder, s as AppConfig, t as BaselineInfo, u as BoundingBox, v as CONTRACT_DOMAINS, w as CONTRACT_PREIMAGE_CAPABILITY_HEADER, x as CONTRACT_PREIMAGE_SCHEMA, y as CanonicalMappingStatus, z as CompiledFragmentsFile, D as CompiledRecipe, E as CompiledTokenData, H as CompiledTokenEntry, I as ComponentGovernanceBuilder, J as ComponentGovernanceRecord, K as ComponentRef, L as ComponentRelation, M as CompositionMetadata, N as ContractCanonicalMappingInput, O as ContractComponentInput, P as ContractIdentityPin, Q as ContractPolicyInput, U as ContractPreimage, W as ContractPropMappingInput, X as ContractTokenInput, Y as ContractWaiverInput, Z as ControlType, _ as DesignSystemConfig, $ as DiffResult, a0 as FigmaPropMapping, a1 as FragmentContract, a2 as FragmentExample, a3 as FragmentGenerated, a4 as FragmentGuidance, a5 as FragmentMeta, a6 as FragmentProvenance, a7 as FragmentUsage, a8 as FragmentVariant, a9 as GlobalGovernanceRecord, aa as GlobalJsxGovernanceRecord, ab as GlobalStyleGovernanceRecord, ac as GovernancePropValue, ad as InspectConfig, ae as LocalCanonicalDeclaration, af as LocalCanonicalResolveRule, ag as Manifest, ah as ObservedComponentUsage, ai as ObservedUsageProp, aj as PlayFunction, ak as PlayFunctionContext, al as PropDefinition, am as PropGovernanceBuilder, an as PropGovernanceOptions, ao as PropKey, ap as PropType, aq as RecipeDefinition, ar as RegistryOptions, as as RepoRelativePath, at as ScaleGovernanceRecord, au as Screenshot, av as ScreenshotConfig, aw as ScreenshotMetadata, ax as ServiceConfig, ay as SnapshotConfig, az as SnippetPolicyConfig, aA as Theme, aB as ThemeSeeds, aC as TokenSourceConfig, aD as TokenSourceFormat, aE as VerifyRequest, aF as VerifyResult, aG as Viewport, aH as componentGovernanceRecordSchema, aI as componentGovernanceRecordsSchema, aJ as contractComponentsFromFragments, aK as contractPolicyFromGovernanceConfig, aL as diffContractDomains, aM as g, aN as globalGovernanceRecordSchema, aO as globalJsxGovernanceRecordSchema, aP as globalStyleGovernanceRecordSchema, aQ as governanceConfigSchema, aR as governanceConfigWithLocalCanonical, aS as governanceSeveritySchema, aT as localCanonicalContractMappings, aU as normalizeGovernanceConfig, aV as projectContractPreimage, aW as scaleGovernanceRecordSchema, aX as verifiedContractPreimageFromPin } from './governance-DYSirwJu.js';
8
8
  import { z } from 'zod';
9
9
  import { RegistryArtifact, RegistryDependency, RegistryInstallReceipt } from './registry.js';
10
10
  export { REGISTRY_ARTIFACT_SCHEMA_VERSION, REGISTRY_INSTALL_RECEIPT_SCHEMA_VERSION, REGISTRY_MANIFEST_SCHEMA_VERSION, RegistryArtifactInput, RegistryComponent, RegistryComponentExport, RegistryDependencyType, RegistryEntrypoint, RegistryFile, RegistryFileContent, RegistryFileInput, RegistryFileRole, RegistryInstallProfile, RegistryInstallReceiptComponent, RegistryInstallReceiptFile, RegistryManifest, RegistryManifestDraft, RegistrySource, assertValidRegistryArtifact, buildRegistryArtifact, buildRegistryFile, computeRegistryHash, finalizeRegistryManifest, hashRegistryFileContent, registryArtifactDigest, registryArtifactSchema, registryComponentExportSchema, registryComponentSchema, registryDependencySchema, registryDependencyTypeSchema, registryEntrypointSchema, registryFileContentSchema, registryFileRoleSchema, registryFileSchema, registryFileSize, registryInstallProfileSchema, registryInstallReceiptComponentSchema, registryInstallReceiptFileSchema, registryInstallReceiptSchema, registryManifestCanonicalPreimage, registryManifestDraftSchema, registryManifestSchema, registrySourceSchema } from './registry.js';
@@ -260,8 +260,7 @@ interface DesignSystemContext {
260
260
  *
261
261
  * Determinism (architecture §6.3): the sampler receives `(seq, codeHashAtRequest)`
262
262
  * so a durable-replay layer can key recorded sampler output on the exact code it
263
- * was asked to repair, and hard-invalidate on a hash mismatch — instead of the
264
- * pass-index-only key the standalone MCP tool uses.
263
+ * was asked to repair and hard-invalidate on a hash mismatch.
265
264
  *
266
265
  * Browser-safe: depends only on the conform contract types + the pure SHA-256
267
266
  * in this package. No Node APIs.
@@ -729,6 +728,7 @@ interface JsxComponentPreferredFact extends BaseFact {
729
728
  */
730
729
  interface TokenDefinitionFact extends BaseFact {
731
730
  kind: "token_definition";
731
+ location?: FactLocation;
732
732
  /** Token identifier, e.g., "fui-color-accent" or "--fui-color-accent". */
733
733
  name: string;
734
734
  /** Resolved value, e.g., "#2563eb". */
@@ -1176,6 +1176,7 @@ declare function makeJsxComponentPreferredFact(input: {
1176
1176
  declare function makeTokenDefinitionFact(input: {
1177
1177
  name: string;
1178
1178
  value: string;
1179
+ location?: TokenDefinitionFact["location"];
1179
1180
  category?: TokenDefinitionFact["category"];
1180
1181
  referenceFormat?: TokenDefinitionFact["referenceFormat"];
1181
1182
  }): TokenDefinitionFact;
@@ -1398,6 +1399,7 @@ declare function compileComponentFacts(componentId: ComponentId, input: Componen
1398
1399
  interface BuildAgentFormatInput {
1399
1400
  findings: readonly Finding[];
1400
1401
  filesScanned: number;
1402
+ integrity: AgentFormat["integrity"];
1401
1403
  passed?: boolean;
1402
1404
  suppressions?: readonly SuppressionDirectiveFact[];
1403
1405
  iteration?: number;
@@ -10557,7 +10559,7 @@ declare const BLOCKING_RULE_ALLOWLIST: ReadonlySet<string>;
10557
10559
  * this set is what makes a local/emit deny imply a CI failure.
10558
10560
  */
10559
10561
  declare function gatesCi(finding: Finding, failOnWarnings: boolean): boolean;
10560
- /** A finding may deny iff it is allowlisted, gates CI, and is not a flagged-heuristic fix. */
10562
+ /** A finding may deny iff it is allowlisted, gates CI, and is not heuristic. */
10561
10563
  declare function isDenyEligible(finding: Finding, failOnWarnings: boolean): boolean;
10562
10564
 
10563
10565
  /**