From 3df7f9f9500417869bbefc41e1562fc4cd026647 Mon Sep 17 00:00:00 2001 From: Danny Avila Date: Sun, 7 Jun 2026 21:53:56 -0400 Subject: [PATCH] fix: add skill sync declaration return types --- .../data-schemas/src/methods/skillSync.ts | 66 +++++++++++++------ .../src/models/skillSyncCredential.ts | 5 +- .../src/models/skillSyncStatus.ts | 5 +- 3 files changed, 54 insertions(+), 22 deletions(-) diff --git a/packages/data-schemas/src/methods/skillSync.ts b/packages/data-schemas/src/methods/skillSync.ts index 98955af757..87c749f400 100644 --- a/packages/data-schemas/src/methods/skillSync.ts +++ b/packages/data-schemas/src/methods/skillSync.ts @@ -48,6 +48,48 @@ export type SkillSyncStatusInput = { deletedFileCount?: number; }; +export type SkillSyncLockInput = { + provider: SkillSyncProvider; + lockOwner: string; + leaseMs: number; + tenantId?: string; +}; + +export type SkillSyncReleaseLockInput = { + provider: SkillSyncProvider; + lockOwner: string; + tenantId?: string; +}; + +export type SkillSyncMethods = { + upsertSkillSyncCredential: ( + input: UpsertSkillSyncCredentialInput, + ) => Promise; + deleteSkillSyncCredential: ( + provider: SkillSyncProvider, + credentialKey: string, + ) => Promise<{ deleted: boolean }>; + listSkillSyncCredentials: (provider: SkillSyncProvider) => Promise; + getSkillSyncCredentialToken: ( + provider: SkillSyncProvider, + credentialKey: string, + ) => Promise; + getSkillSyncCredentialSummary: ( + provider: SkillSyncProvider, + credentialKey: string, + ) => Promise; + listSkillSyncStatuses: (provider: SkillSyncProvider) => Promise; + getSkillSyncStatus: ( + provider: SkillSyncProvider, + sourceId: string, + tenantId?: string, + ) => Promise; + upsertSkillSyncStatus: (input: SkillSyncStatusInput) => Promise; + tryAcquireSkillSyncLock: (params: SkillSyncLockInput) => Promise; + refreshSkillSyncLock: (params: SkillSyncLockInput) => Promise; + releaseSkillSyncLock: (params: SkillSyncReleaseLockInput) => Promise; +}; + function hashToken(token: string): string { return createHash('sha256').update(token).digest('hex'); } @@ -72,7 +114,7 @@ function summarizeCredential( }; } -export function createSkillSyncMethods(mongoose: typeof import('mongoose')) { +export function createSkillSyncMethods(mongoose: typeof import('mongoose')): SkillSyncMethods { async function upsertSkillSyncCredential( input: UpsertSkillSyncCredentialInput, ): Promise { @@ -217,12 +259,7 @@ export function createSkillSyncMethods(mongoose: typeof import('mongoose')) { return row; } - async function tryAcquireSkillSyncLock(params: { - provider: SkillSyncProvider; - lockOwner: string; - leaseMs: number; - tenantId?: string; - }): Promise { + async function tryAcquireSkillSyncLock(params: SkillSyncLockInput): Promise { const Status = mongoose.models.SkillSyncStatus as Model; const now = new Date(); const lockExpiresAt = new Date(now.getTime() + params.leaseMs); @@ -285,12 +322,7 @@ export function createSkillSyncMethods(mongoose: typeof import('mongoose')) { } } - async function refreshSkillSyncLock(params: { - provider: SkillSyncProvider; - lockOwner: string; - leaseMs: number; - tenantId?: string; - }): Promise { + async function refreshSkillSyncLock(params: SkillSyncLockInput): Promise { const Status = mongoose.models.SkillSyncStatus as Model; const now = new Date(); const row = await Status.findOneAndUpdate( @@ -312,11 +344,7 @@ export function createSkillSyncMethods(mongoose: typeof import('mongoose')) { return Boolean(row); } - async function releaseSkillSyncLock(params: { - provider: SkillSyncProvider; - lockOwner: string; - tenantId?: string; - }): Promise { + async function releaseSkillSyncLock(params: SkillSyncReleaseLockInput): Promise { const Status = mongoose.models.SkillSyncStatus as Model; await Status.updateOne( { @@ -352,5 +380,3 @@ export function createSkillSyncMethods(mongoose: typeof import('mongoose')) { releaseSkillSyncLock, }; } - -export type SkillSyncMethods = ReturnType; diff --git a/packages/data-schemas/src/models/skillSyncCredential.ts b/packages/data-schemas/src/models/skillSyncCredential.ts index 0cad53ca6d..4e0e636fb6 100644 --- a/packages/data-schemas/src/models/skillSyncCredential.ts +++ b/packages/data-schemas/src/models/skillSyncCredential.ts @@ -1,7 +1,10 @@ +import { Model } from 'mongoose'; import type { ISkillSyncCredentialDocument } from '~/types/skillSync'; import skillSyncCredentialSchema from '~/schema/skillSyncCredential'; -export function createSkillSyncCredentialModel(mongoose: typeof import('mongoose')) { +export function createSkillSyncCredentialModel( + mongoose: typeof import('mongoose'), +): Model { // GitHub skill sync is intentionally app-wide in v1; credentials are referenced by // admin-managed config keys and are never returned by tenant-scoped APIs. return ( diff --git a/packages/data-schemas/src/models/skillSyncStatus.ts b/packages/data-schemas/src/models/skillSyncStatus.ts index 8e5b0e2ec5..9b15c65ae6 100644 --- a/packages/data-schemas/src/models/skillSyncStatus.ts +++ b/packages/data-schemas/src/models/skillSyncStatus.ts @@ -1,7 +1,10 @@ +import { Model } from 'mongoose'; import type { ISkillSyncStatusDocument } from '~/types/skillSync'; import skillSyncStatusSchema from '~/schema/skillSyncStatus'; -export function createSkillSyncStatusModel(mongoose: typeof import('mongoose')) { +export function createSkillSyncStatusModel( + mongoose: typeof import('mongoose'), +): Model { // GitHub skill sync status supports app-wide YAML sources and tenant-scoped // resolved config sources from admin overrides. return (