This is a scratch of the Routines Extension, extracted from the template of the Covenants Frontend, which can be found here.
This version just implements an owner-based logic where there is a hostwallet that rules the writable functions (e.g. to set new operations).
The constructor cannot be used to link the extension to the Routines contract (because the extension address is needed to create it). However, Covenant farming contracts support a lazy initialization approach which allows for the passing of ABI-encoded method payload during Farming Contract creation. E.g., this template reports the optionalinit(address host) method to specify initialization arguments.
The only mandatory functions are function active() public view returns (bool), function receiveTokens(address[] memory tokenAddresses, uint256[] memory transferAmounts, uint256[] memory amountsToMint) public and function deactivationByFailure() public because their method signatures are used in the Routines Contract, but of course their bodies can be changed to follow your logic.