diff --git a/src/core/near-intents-status.mjs b/src/core/near-intents-status.mjs index 5b99008..6b16676 100644 --- a/src/core/near-intents-status.mjs +++ b/src/core/near-intents-status.mjs @@ -188,7 +188,7 @@ function buildDecisiveReason({ } const CORE_INTENTS_SERVICE_PATTERN = /\b(1click|solver|message bus)\b/i; -const GLOBAL_INTENTS_DISRUPTION_PATTERN = /\b(1click|quoting|solver|message bus|protocol is paused|swaps are paused|all swaps)\b/i; +const GLOBAL_INTENTS_DISRUPTION_PATTERN = /\b(1click|solver|message bus|protocol is paused|swaps are paused|all swaps|all quoting)\b/i; function isRelevantIncident(incident, scope) { if (scope.unfiltered) return true; diff --git a/test/near-intents-status.test.mjs b/test/near-intents-status.test.mjs index ef4e383..50cf18e 100644 --- a/test/near-intents-status.test.mjs +++ b/test/near-intents-status.test.mjs @@ -131,6 +131,57 @@ test('scoped NEAR Intents status ignores unrelated paused destination chains', ( assert.match(normalized.decisive_reason, /BSC, TON, XML/); }); +test('scoped NEAR Intents status ignores HOT-chain quoting and partial bridge maintenance incidents', () => { + const normalized = normalizeNearIntentsStatus({ + observedAt: '2026-05-11T18:58:30.605Z', + servicesResponse, + postEnumsResponse, + trackedAssets, + postsResponse: { + posts: [ + { + id: 'PIX3ZX5', + title: 'Quoting is temporarily paused for the HOT bridge chains', + post_type: 'incident', + latest_update: { + status_id: 'PSCS3IV', + severity_id: 'P187122', + reported_at: 1778510700000, + impacts: [{ service_id: 'PNEJBRE', severity_id: 'PCIGMKW' }], + message: '
This is the list of chains we rely on the Hot Bridge: BSC, MONAD, XLAYER, PLASMA, POL, TON, OP, AVAX, STELLAR, ADI
', + }, + }, + { + id: 'PJ0GZ74', + title: 'Bridge maintenance', + post_type: 'maintenance', + latest_update: { + status_id: 'PSCS3IV', + severity_id: 'P187122', + reported_at: 1778497153000, + impacts: [{ service_id: 'PXQFSY1', severity_id: 'PCIGMKW' }], + message: 'We will perform a bridge maintenance, some of the quoting will be temporarily disabled.
', + }, + }, + ], + }, + }); + + assert.equal(normalized.status, 'operational'); + assert.equal(normalized.label, 'operational'); + assert.equal(normalized.current_incident_count, 0); + assert.equal(normalized.observed_incident_count, 2); + assert.equal(normalized.unrelated_incident_count, 2); + assert.equal(normalized.quoting_stopped, false); + assert.deepEqual(normalized.affected_services, []); + assert.deepEqual( + normalized.observed_affected_services, + ['Other Blockchains', 'Cross-Chain Bridging'], + ); + assert.match(normalized.decisive_reason, /none match this deployment scope/); + assert.match(normalized.decisive_reason, /HOT bridge chains/); +}); + test('NEAR Intents status fingerprint is stable across polls and changes on official updates', () => { const first = normalizeNearIntentsStatus({