@@ -142,6 +142,8 @@ function createNpmInstallConfig(params: {
142142 resolvedName ?: string ;
143143 resolvedSpec ?: string ;
144144 resolvedVersion ?: string ;
145+ installedAt ?: string ;
146+ resolvedAt ?: string ;
145147} ) {
146148 return {
147149 plugins : {
@@ -155,6 +157,8 @@ function createNpmInstallConfig(params: {
155157 ...( params . resolvedName ? { resolvedName : params . resolvedName } : { } ) ,
156158 ...( params . resolvedSpec ? { resolvedSpec : params . resolvedSpec } : { } ) ,
157159 ...( params . resolvedVersion ? { resolvedVersion : params . resolvedVersion } : { } ) ,
160+ ...( params . installedAt ? { installedAt : params . installedAt } : { } ) ,
161+ ...( params . resolvedAt ? { resolvedAt : params . resolvedAt } : { } ) ,
158162 } ,
159163 } ,
160164 } ,
@@ -656,6 +660,8 @@ describe("updateNpmInstalledPlugins", () => {
656660 resolvedSpec : "@openclaw/acpx@2026.5.2" ,
657661 resolvedVersion : "2026.5.2" ,
658662 integrity : "sha512-old" ,
663+ installedAt : "2026-05-01T00:00:00.000Z" ,
664+ resolvedAt : "2026-05-01T00:00:01.000Z" ,
659665 } ) ,
660666 pluginIds : [ "acpx" ] ,
661667 syncOfficialPluginInstalls : true ,
@@ -664,6 +670,8 @@ describe("updateNpmInstalledPlugins", () => {
664670 expect ( result . changed ) . toBe ( true ) ;
665671 expect ( result . outcomes [ 0 ] ?. status ) . toBe ( "unchanged" ) ;
666672 expect ( result . config . plugins ?. installs ?. acpx ?. spec ) . toBe ( "@openclaw/acpx@2026.5.2" ) ;
673+ expect ( result . config . plugins ?. installs ?. acpx ?. installedAt ) . toBe ( "2026-05-01T00:00:00.000Z" ) ;
674+ expect ( result . config . plugins ?. installs ?. acpx ?. resolvedAt ) . toBe ( "2026-05-01T00:00:01.000Z" ) ;
667675 expect ( npmInstallCall ( ) ) . toBeUndefined ( ) ;
668676 } ) ;
669677
0 commit comments