(function installLTJTLifecycleResult(root, factory) { const api = factory(); if (typeof module !== 'undefined' && module.exports) module.exports = api; if (root) root.LTJTLifecycleResult = api; }(typeof self !== 'undefined' ? self : globalThis, () => { const EVIDENCE_KEYS = [ 'resolved_refs', 'before_snapshot', 'preflight', 'native_request', 'server_response', 'requery', 'side_effects', 'manual_review_required' ]; function emptyLifecycleEvidence() { return { resolved_refs: {}, before_snapshot: null, preflight: null, native_request: null, server_response: null, requery: null, side_effects: [], manual_review_required: false }; } function lifecycleResult(status, data = {}) { return { status: String(status || 'blocked'), ...emptyLifecycleEvidence(), ...data, side_effects: Array.isArray(data.side_effects) ? data.side_effects : [], manual_review_required: data.manual_review_required === true }; } function hasServerResponse(result) { const response = result?.server_response; return Boolean(response && typeof response === 'object' && response.completed === true && Number.isInteger(response.http_status) && response.http_status >= 200 && response.http_status < 300); } function hasVerifiedRequery(result) { return Boolean(result && result.requery && result.requery.matched === true); } function isVerifiedResult(result) { return result?.status === 'lifecycle_completed' && hasServerResponse(result) && hasVerifiedRequery(result) && result.manual_review_required !== true; } function hasFrozenSourceArtifacts(result) { return Array.isArray(result?.artifacts) && result.artifacts.length > 0 && result.artifacts.every((artifact) => artifact && artifact.ok === true && Number.isInteger(artifact.http_status) && artifact.http_status >= 200 && artifact.http_status < 300 && Number.isInteger(artifact.bytes) && artifact.bytes > 0 && typeof artifact.content_type === 'string' && artifact.content_type.trim().length > 0 && /^[a-f0-9]{64}$/i.test(String(artifact.sha256 || '')) && artifact.login_timeout !== true && artifact.permission_error !== true && artifact.downloaded === false && artifact.converted === false && artifact.scheduled === false && artifact.sent === false); } function isVerifiedExportResult(result) { return result?.status === 'export_source_completed' && result.no_erp_write === true && result.write_attempted === false && hasServerResponse(result) && hasVerifiedRequery(result) && result.requery?.hashes_frozen === true && hasFrozenSourceArtifacts(result) && result.downloaded === false && result.converted === false && result.scheduled === false && result.sent === false && result.manual_review_required !== true; } return { EVIDENCE_KEYS, emptyLifecycleEvidence, hasFrozenSourceArtifacts, hasServerResponse, hasVerifiedRequery, isVerifiedExportResult, isVerifiedResult, lifecycleResult }; }));