@@ -31,6 +31,10 @@ import {
3131 type CommandResult ,
3232} from "../providerSnapshot.ts" ;
3333import { makeManagedServerProvider } from "../makeManagedServerProvider.ts" ;
34+ import {
35+ enrichProviderSnapshotWithVersionAdvisory ,
36+ getProviderVersionLifecycle ,
37+ } from "../providerVersionLifecycle.ts" ;
3438import { CursorProvider } from "../Services/CursorProvider.ts" ;
3539import { AcpSessionRuntime } from "../acp/AcpSessionRuntime.ts" ;
3640import { ServerSettingsService } from "../../serverSettings.ts" ;
@@ -1169,6 +1173,7 @@ export const CursorProviderLive = Layer.effect(
11691173 ) ;
11701174
11711175 return yield * makeManagedServerProvider < CursorSettings > ( {
1176+ versionLifecycle : getProviderVersionLifecycle ( PROVIDER ) ,
11721177 getSettings : serverSettings . getSettings . pipe (
11731178 Effect . map ( ( settings ) => settings . providers . cursor ) ,
11741179 Effect . orDie ,
@@ -1180,37 +1185,58 @@ export const CursorProviderLive = Layer.effect(
11801185 initialSnapshot : buildInitialCursorProviderSnapshot ,
11811186 checkProvider,
11821187 enrichSnapshot : ( { settings, snapshot, publishSnapshot } ) => {
1183- if (
1184- ! settings . enabled ||
1185- snapshot . auth . status === "unauthenticated" ||
1186- ! snapshot . models . some ( ( model ) => ! model . isCustom && ! hasCursorModelCapabilities ( model ) )
1187- ) {
1188- return Effect . void ;
1189- }
1188+ const enrichVersionAdvisory = Effect . promise ( ( ) =>
1189+ enrichProviderSnapshotWithVersionAdvisory ( snapshot ) ,
1190+ ) . pipe (
1191+ Effect . flatMap ( ( enrichedSnapshot ) =>
1192+ Equal . equals ( enrichedSnapshot , snapshot )
1193+ ? Effect . succeed ( enrichedSnapshot )
1194+ : publishSnapshot ( enrichedSnapshot ) . pipe ( Effect . as ( enrichedSnapshot ) ) ,
1195+ ) ,
1196+ Effect . catchCause ( ( cause ) =>
1197+ Effect . logWarning ( "Cursor version advisory enrichment failed" , {
1198+ cause : Cause . pretty ( cause ) ,
1199+ } ) . pipe ( Effect . as ( snapshot ) ) ,
1200+ ) ,
1201+ ) ;
11901202
1191- return discoverCursorModelCapabilitiesViaAcp ( settings , snapshot . models ) . pipe (
1192- Effect . provideService ( ChildProcessSpawner . ChildProcessSpawner , spawner ) ,
1193- Effect . flatMap ( ( discoveredModels ) => {
1194- if ( discoveredModels . length === 0 ) {
1203+ return enrichVersionAdvisory . pipe (
1204+ Effect . flatMap ( ( baseSnapshot ) => {
1205+ if (
1206+ ! settings . enabled ||
1207+ baseSnapshot . auth . status === "unauthenticated" ||
1208+ ! baseSnapshot . models . some (
1209+ ( model ) => ! model . isCustom && ! hasCursorModelCapabilities ( model ) ,
1210+ )
1211+ ) {
11951212 return Effect . void ;
11961213 }
11971214
1198- return publishSnapshot ( {
1199- ...snapshot ,
1200- models : providerModelsFromSettings (
1201- discoveredModels ,
1202- PROVIDER ,
1203- settings . customModels ,
1204- EMPTY_CAPABILITIES ,
1215+ return discoverCursorModelCapabilitiesViaAcp ( settings , baseSnapshot . models ) . pipe (
1216+ Effect . provideService ( ChildProcessSpawner . ChildProcessSpawner , spawner ) ,
1217+ Effect . flatMap ( ( discoveredModels ) => {
1218+ if ( discoveredModels . length === 0 ) {
1219+ return Effect . void ;
1220+ }
1221+
1222+ return publishSnapshot ( {
1223+ ...baseSnapshot ,
1224+ models : providerModelsFromSettings (
1225+ discoveredModels ,
1226+ PROVIDER ,
1227+ settings . customModels ,
1228+ EMPTY_CAPABILITIES ,
1229+ ) ,
1230+ } ) ;
1231+ } ) ,
1232+ Effect . catchCause ( ( cause ) =>
1233+ Effect . logWarning ( "Cursor ACP background capability enrichment failed" , {
1234+ models : baseSnapshot . models . map ( ( model ) => model . slug ) ,
1235+ cause : Cause . pretty ( cause ) ,
1236+ } ) . pipe ( Effect . asVoid ) ,
12051237 ) ,
1206- } ) ;
1238+ ) ;
12071239 } ) ,
1208- Effect . catchCause ( ( cause ) =>
1209- Effect . logWarning ( "Cursor ACP background capability enrichment failed" , {
1210- models : snapshot . models . map ( ( model ) => model . slug ) ,
1211- cause : Cause . pretty ( cause ) ,
1212- } ) . pipe ( Effect . asVoid ) ,
1213- ) ,
12141240 ) ;
12151241 } ,
12161242 refreshInterval : CURSOR_REFRESH_INTERVAL ,
0 commit comments