From 64dc5347bbc04b6c2c340d06e817b1027d51ae8a Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 19 Feb 2026 15:49:27 +0100 Subject: [PATCH 1/3] feat: observatory provider parameter for toggling openid --- cli/src/services/server/observatory.services.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/cli/src/services/server/observatory.services.ts b/cli/src/services/server/observatory.services.ts index f80070a..c001a64 100644 --- a/cli/src/services/server/observatory.services.ts +++ b/cli/src/services/server/observatory.services.ts @@ -10,6 +10,7 @@ export const toggleOpenIdMonitoring = async ({ searchParams: URLSearchParams; }) => { const action = searchParams.get('action') ?? ''; + const provider = searchParams.get('provider') ?? ''; switch (action) { case 'start': { From e481aa5d2a53e18bc85986c22ba1ca6b7a9faa73 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 19 Feb 2026 16:01:47 +0100 Subject: [PATCH 2/3] feat: provider --- .../services/server/observatory.services.ts | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/cli/src/services/server/observatory.services.ts b/cli/src/services/server/observatory.services.ts index c001a64..d2468a3 100644 --- a/cli/src/services/server/observatory.services.ts +++ b/cli/src/services/server/observatory.services.ts @@ -1,3 +1,4 @@ +import {isEmptyString} from '@dfinity/utils'; import {OBSERVATORY_CANISTER_ID} from '../../modules/observatory'; import type {CliContext} from '../../types/context'; import {getObservatoryActor} from '../actor.services'; @@ -10,7 +11,13 @@ export const toggleOpenIdMonitoring = async ({ searchParams: URLSearchParams; }) => { const action = searchParams.get('action') ?? ''; - const provider = searchParams.get('provider') ?? ''; + const providerParam = searchParams.get('provider') ?? ''; + + if (isEmptyString(providerParam)) { + throw new Error('Cannot toggle OpenId monitoring for an unknown provider'); + } + + const provider = providerParam === 'github' ? {GitHubAuth: null} : {Google: null}; switch (action) { case 'start': { @@ -21,7 +28,7 @@ export const toggleOpenIdMonitoring = async ({ } await updateRateConfig({context}); - await startOpenIdMonitoring({context}); + await startOpenIdMonitoring({context, provider}); return; } case 'stop': { @@ -31,7 +38,7 @@ export const toggleOpenIdMonitoring = async ({ return; } - await stopOpenIdMonitoring({context}); + await stopOpenIdMonitoring({context, provider}); return; } default: @@ -72,7 +79,13 @@ const isOpenIdMonitoringEnabled = async ({context}: {context: CliContext}): Prom const isOpenIdMonitoringDisabled = async (params: {context: CliContext}): Promise => !(await isOpenIdMonitoringEnabled(params)); -const startOpenIdMonitoring = async ({context}: {context: CliContext}) => { +const startOpenIdMonitoring = async ({ + context, + provider +}: { + context: CliContext; + provider: 'google' | 'github'; +}) => { const {agent} = context; const {start_openid_monitoring} = await getObservatoryActor({ @@ -80,7 +93,7 @@ const startOpenIdMonitoring = async ({context}: {context: CliContext}) => { canisterId: OBSERVATORY_CANISTER_ID }); - await start_openid_monitoring(); + await start_openid_monitoring(provider); console.log('🟢 Observatory OpenId monitoring started.'); }; @@ -92,6 +105,6 @@ const stopOpenIdMonitoring = async ({context}: {context: CliContext}) => { canisterId: OBSERVATORY_CANISTER_ID }); - await stop_openid_monitoring(); + await stop_openid_monitoring(provider); console.log('🔴 Observatory OpenId monitoring stopped.'); }; From 18c507e5594b23dc8bc4c8afb40af57f9a090ee7 Mon Sep 17 00:00:00 2001 From: David Dal Busco Date: Thu, 19 Feb 2026 16:04:51 +0100 Subject: [PATCH 3/3] feat: pass provider --- .../services/server/observatory.services.ts | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/cli/src/services/server/observatory.services.ts b/cli/src/services/server/observatory.services.ts index d2468a3..e89045e 100644 --- a/cli/src/services/server/observatory.services.ts +++ b/cli/src/services/server/observatory.services.ts @@ -1,4 +1,5 @@ import {isEmptyString} from '@dfinity/utils'; +import type {OpenIdProvider} from '../../declarations/observatory'; import {OBSERVATORY_CANISTER_ID} from '../../modules/observatory'; import type {CliContext} from '../../types/context'; import {getObservatoryActor} from '../actor.services'; @@ -17,11 +18,11 @@ export const toggleOpenIdMonitoring = async ({ throw new Error('Cannot toggle OpenId monitoring for an unknown provider'); } - const provider = providerParam === 'github' ? {GitHubAuth: null} : {Google: null}; + const provider: OpenIdProvider = providerParam === 'github' ? {GitHubAuth: null} : {Google: null}; switch (action) { case 'start': { - const alreadyEnabled = await isOpenIdMonitoringEnabled({context}); + const alreadyEnabled = await isOpenIdMonitoringEnabled({context, provider}); if (alreadyEnabled) { return; @@ -32,7 +33,7 @@ export const toggleOpenIdMonitoring = async ({ return; } case 'stop': { - const alreadyDisabled = await isOpenIdMonitoringDisabled({context}); + const alreadyDisabled = await isOpenIdMonitoringDisabled({context, provider}); if (alreadyDisabled) { return; @@ -65,7 +66,13 @@ const updateRateConfig = async ({context}: {context: CliContext}) => { console.log('Rate config applied! ✅'); }; -const isOpenIdMonitoringEnabled = async ({context}: {context: CliContext}): Promise => { +const isOpenIdMonitoringEnabled = async ({ + context, + provider +}: { + context: CliContext; + provider: OpenIdProvider; +}): Promise => { const {agent} = context; const {is_openid_monitoring_enabled} = await getObservatoryActor({ @@ -73,18 +80,20 @@ const isOpenIdMonitoringEnabled = async ({context}: {context: CliContext}): Prom canisterId: OBSERVATORY_CANISTER_ID }); - return await is_openid_monitoring_enabled(); + return await is_openid_monitoring_enabled(provider); }; -const isOpenIdMonitoringDisabled = async (params: {context: CliContext}): Promise => - !(await isOpenIdMonitoringEnabled(params)); +const isOpenIdMonitoringDisabled = async (params: { + context: CliContext; + provider: OpenIdProvider; +}): Promise => !(await isOpenIdMonitoringEnabled(params)); const startOpenIdMonitoring = async ({ context, provider }: { context: CliContext; - provider: 'google' | 'github'; + provider: OpenIdProvider; }) => { const {agent} = context; @@ -97,7 +106,13 @@ const startOpenIdMonitoring = async ({ console.log('🟢 Observatory OpenId monitoring started.'); }; -const stopOpenIdMonitoring = async ({context}: {context: CliContext}) => { +const stopOpenIdMonitoring = async ({ + context, + provider +}: { + context: CliContext; + provider: OpenIdProvider; +}) => { const {agent} = context; const {stop_openid_monitoring} = await getObservatoryActor({