AI Newsletter Digest improvements: fixed QP soft line break decoding, URL extraction, and content cleaning

This commit is contained in:
Krilly
2026-03-04 13:29:22 +00:00
parent 29a98137a7
commit 57dd294675
13706 changed files with 2114953 additions and 237629 deletions

View File

@@ -0,0 +1,73 @@
#!/usr/bin/env node
/**
* Upgrade Self-Review to V4.0
*
* Purpose: Update all cron jobs to use self-review-v4.0.md
* Backup: jobs.json.backup-v4.0-[timestamp]
*/
const fs = require('fs');
const path = require('path');
const JOBS_FILE = path.join(process.env.HOME, '.openclaw/cron/jobs.json');
// Template upgrades
const UPGRADES = [
{
from: '~/openclaw/templates/self-review.md',
to: '~/openclaw/templates/self-review-v4.0.md'
},
{
from: '~/openclaw/templates/self-review-v3.3.md',
to: '~/openclaw/templates/self-review-v4.0.md'
},
{
from: 'self-review.md',
to: 'self-review-v4.0.md'
},
{
from: 'self-review-v3.3.md',
to: 'self-review-v4.0.md'
}
];
function main() {
console.log('🔄 Upgrading to Self-Review V4.0\n');
// Load jobs
const data = JSON.parse(fs.readFileSync(JOBS_FILE, 'utf8'));
console.log(`Total jobs: ${data.jobs.length}\n`);
let updated = 0;
// Update each job
data.jobs.forEach(job => {
let modified = false;
UPGRADES.forEach(({ from, to }) => {
if (job.payload.message && job.payload.message.includes(from)) {
job.payload.message = job.payload.message.replace(new RegExp(from, 'g'), to);
modified = true;
}
});
if (modified) {
console.log(`✅ Updated: ${job.name}`);
updated++;
}
});
console.log(`\n📊 Summary: ${updated} jobs updated\n`);
// Save
if (updated > 0) {
fs.writeFileSync(JOBS_FILE, JSON.stringify(data, null, 2));
console.log('✅ Saved to:', JOBS_FILE);
console.log('\n⚠ Restart OpenClaw Gateway to apply changes:');
console.log(' openclaw gateway restart\n');
} else {
console.log(' No updates needed.\n');
}
}
main();