(function initCompatibilityGuidance(root, factory) {
const api = factory();
if (typeof module === 'object' && module.exports) module.exports = api;
if (root) root.chimeraCompatibilityGuidance = api;
})(typeof window !== 'undefined' ? window : null, function compatibilityGuidanceFactory() {
'use strict';
const STATES = new Set(['compatible', 'incompatible', 'workaround', 'conflict', 'unknown']);
const esc = value => String(value ?? '').replace(/[&<>"']/g, character => ({ '&': '&', '<': '<', '>': '>', '"': '"', "'": ''' })[character]);
const tr = (key, fallback) => typeof window !== 'undefined' && window.t?.(key) && window.t(key) !== key ? window.t(key) : fallback;
function normalize(value = {}) { const state = STATES.has(value.state) ? value.state : 'unknown'; return { state, blocking: value.blocking === true, rationale: Array.isArray(value.rationale) ? value.rationale : [], workarounds: Array.isArray(value.workarounds) ? value.workarounds : [] }; }
function markup(value) {
const guidance = normalize(value);
const labels = { compatible: 'Compatible', incompatible: 'Incompatible', workaround: 'Workaround available', conflict: 'Conflicting evidence', unknown: 'Compatibility unknown' };
const rationale = guidance.rationale.map(item => `
${esc(item.explanation)}${esc(item.providerId)} / ${esc(item.revision)} / ${esc(item.confidence)} confidence${esc(tr('compatibilityGuidance.inspectSource', 'Inspect source'))}`).join('');
const workarounds = guidance.workarounds.map(item => `${esc(item.explanation)} ${esc(item.providerId)} / ${esc(item.revision)}`).join('');
const detail = guidance.state === 'unknown' ? tr('compatibilityGuidance.unknownDetail', 'No applicable evidence is cached for this exact context.') : guidance.state === 'conflict' ? tr('compatibilityGuidance.conflictDetail', 'Sources disagree. Chimera does not resolve this automatically.') : guidance.blocking ? tr('compatibilityGuidance.blockingDetail', 'Blocked by critical, high-confidence, non-conflicting evidence.') : tr('compatibilityGuidance.informationalDetail', 'Guidance is informational unless the evidence meets the blocking policy.');
return `${esc(tr(`compatibilityGuidance.state.${guidance.state}`, labels[guidance.state]))}${guidance.blocking ? `${esc(tr('compatibilityGuidance.blocked', 'Blocked'))}` : ''}${esc(detail)}
${rationale ? `` : ''}${workarounds ? `${esc(tr('compatibilityGuidance.workarounds', 'Safe workaround guidance'))}
` : ''}`;
}
async function load(host, context) {
if (!host || typeof window === 'undefined') return null;
let guidance;
try { guidance = await window.pork.compatibilityGuidance(context); } catch (_) { guidance = { state: 'unknown', unknownReason: 'unavailable' }; }
host.querySelector('.compatibility-guidance')?.remove();
host.insertAdjacentHTML('beforeend', markup(guidance));
return guidance;
}
return Object.freeze({ normalize, markup, load });
});