@m13v/s4l 1.7.6-rc.39 → 1.7.6-rc.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/cli.js +9 -33
- package/mcp/dist/index.js +150 -446
- package/mcp/dist/panel.html +17 -31
- package/mcp/dist/setup.js +7 -27
- package/mcp/dist/telemetry.js +7 -17
- package/mcp/dist/version.json +2 -2
- package/mcp/manifest.json +2 -10
- package/mcp/menubar/s4l_browser_foreground.py +1 -7
- package/mcp/menubar/s4l_card.py +4 -63
- package/mcp/menubar/s4l_card_canvas.py +11 -62
- package/mcp/menubar/s4l_menubar.py +128 -435
- package/mcp/menubar/s4l_state.py +153 -106
- package/mcp/package.json +1 -1
- package/package.json +1 -1
- package/scripts/account_resolver.py +14 -58
- package/scripts/amplitude_24h_signups.py +4 -7
- package/scripts/amplitude_signups.py +4 -7
- package/scripts/autopilot_stall_watch.py +1 -8
- package/scripts/cdp_ready_check.py +50 -81
- package/scripts/dm_conversation.py +12 -15
- package/scripts/draft_prompt_core.py +64 -132
- package/scripts/engage_github.py +5 -11
- package/scripts/engage_reddit.py +5 -12
- package/scripts/engagement_signal_feedback.py +4 -1
- package/scripts/engagement_styles.py +105 -144
- package/scripts/feedback_digest.py +11 -54
- package/scripts/find_threads.py +7 -9
- package/scripts/github_tools.py +10 -23
- package/scripts/learned_preferences.py +78 -112
- package/scripts/li_discovery.py +1 -4
- package/scripts/link_tail.py +1 -1
- package/scripts/merge_review_queue.py +131 -199
- package/scripts/pick_project.py +4 -7
- package/scripts/pick_thread_target.py +13 -64
- package/scripts/pick_twitter_thread_target.py +4 -7
- package/scripts/platform_strike_events.py +7 -139
- package/scripts/post_github.py +35 -376
- package/scripts/post_reddit.py +192 -202
- package/scripts/project_stats.py +4 -7
- package/scripts/reap_stale_claude_sessions.py +6 -7
- package/scripts/reddit_browser.py +19 -56
- package/scripts/reddit_chat_sync.py +11 -10
- package/scripts/reddit_tools.py +4 -20
- package/scripts/release-mcpb.sh +7 -47
- package/scripts/run_moltbook_cycle.py +5 -9
- package/scripts/s4l_ctl.sh +2 -2
- package/scripts/s4l_posting_mode.py +6 -67
- package/scripts/scan_dm_candidates.py +9 -15
- package/scripts/scan_github_replies.py +7 -9
- package/scripts/scan_moltbook_replies.py +6 -7
- package/scripts/scan_reddit_replies.py +7 -11
- package/scripts/scan_twitter_mentions_browser.py +6 -7
- package/scripts/scan_twitter_thread_followups.py +6 -7
- package/scripts/schedule_state.py +4 -8
- package/scripts/score_twitter_candidates.py +3 -8
- package/scripts/setup_twitter_auth.py +96 -20
- package/scripts/snapshot.py +0 -19
- package/scripts/stats.py +10 -12
- package/scripts/strike_alert.py +12 -165
- package/scripts/test_no_silent_fallbacks.py +0 -84
- package/scripts/test_percard_posting.py +3 -3
- package/scripts/top_performers.py +0 -24
- package/scripts/twitter_browser.py +52 -22
- package/scripts/twitter_gen_links.py +3 -3
- package/scripts/twitter_post_plan.py +4 -4
- package/setup/SKILL.md +1 -1
- package/skill/archive-old-logs.sh +0 -24
- package/skill/engage-dm-replies.sh +0 -11
- package/skill/lib/reddit-backend.sh +0 -1
- package/skill/run-draft-and-publish.sh +0 -9
- package/skill/run-reddit-search.sh +1 -10
- package/skill/run-reddit-threads.sh +0 -12
- package/skill/run-twitter-cycle.sh +88 -104
- package/scripts/browser_lifecycle.py +0 -90
- package/scripts/live_status.py +0 -151
- package/scripts/patches/browser-harness-focus-and-observability.patch +0 -130
- package/scripts/preview_reddit_card.py +0 -38
- package/scripts/reddit_ban_check.py +0 -317
- package/scripts/store_patch.py +0 -111
- package/scripts/sub_moderation_history.py +0 -129
- package/scripts/subreddit_bans_client.py +0 -157
- package/scripts/test_cross_language_parity.py +0 -185
- package/scripts/test_stall_watch_batch_progression.py +0 -99
- package/scripts/virality.py +0 -151
package/README.md
CHANGED
|
@@ -157,7 +157,7 @@ The plugin exposes MCP tools for the user-facing workflow:
|
|
|
157
157
|
- `project_config` configures projects, products, voice, topics, and X auth.
|
|
158
158
|
- `engagement_mode` chooses personal-brand and product-promotion lanes.
|
|
159
159
|
- `dashboard` opens the review dashboard.
|
|
160
|
-
- `
|
|
160
|
+
- `post_drafts` posts only the drafts the user selected.
|
|
161
161
|
- `get_stats` reads X/Twitter stats.
|
|
162
162
|
- `pause_s4l` pauses or resumes scheduled S4L jobs.
|
|
163
163
|
- `runtime` installs, updates, and diagnoses the local runtime.
|
package/bin/cli.js
CHANGED
|
@@ -434,43 +434,19 @@ function installBrowserHarness() {
|
|
|
434
434
|
// we don't control the upstream repo. If it stops applying, upstream has
|
|
435
435
|
// either merged the fix (detected; fine) or refactored (warn); never fail
|
|
436
436
|
// the install over it.
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
// only warns when the fix is genuinely absent. NEVER fail the install.
|
|
441
|
-
const vendoredPatches = [
|
|
442
|
-
{
|
|
443
|
-
file: 'browser-harness-loopback-cdp-proxy.patch',
|
|
444
|
-
sentinelFile: path.join('src', 'browser_harness', 'admin.py'),
|
|
445
|
-
sentinelStr: 'cdp_urlopen',
|
|
446
|
-
label: 'loopback-proxy',
|
|
447
|
-
absentWarn: 'CDP probes may 403 behind a system proxy',
|
|
448
|
-
},
|
|
449
|
-
{
|
|
450
|
-
// Suppress OS-focus-stealing Target.activateTarget on offscreen
|
|
451
|
-
// automation harnesses (twitter/reddit/linkedin) — the shared fix for
|
|
452
|
-
// the 2026-07 Chrome focus-pops. See helpers.py _is_offscreen_harness.
|
|
453
|
-
file: 'browser-harness-focus-and-observability.patch',
|
|
454
|
-
sentinelFile: path.join('src', 'browser_harness', 'helpers.py'),
|
|
455
|
-
sentinelStr: '_is_offscreen_harness',
|
|
456
|
-
label: 'focus-suppression + tab-event observability',
|
|
457
|
-
absentWarn: 'harness Chrome may steal OS focus on every tab switch',
|
|
458
|
-
},
|
|
459
|
-
];
|
|
460
|
-
for (const p of vendoredPatches) {
|
|
461
|
-
const patchPath = path.join(PKG_ROOT, 'scripts', 'patches', p.file);
|
|
462
|
-
if (!fs.existsSync(patchPath)) continue;
|
|
463
|
-
const chk = spawnSync('git', ['-C', harnessDir, 'apply', '--check', patchPath], { stdio: 'pipe' });
|
|
437
|
+
const harnessPatch = path.join(PKG_ROOT, 'scripts', 'patches', 'browser-harness-loopback-cdp-proxy.patch');
|
|
438
|
+
if (fs.existsSync(harnessPatch)) {
|
|
439
|
+
const chk = spawnSync('git', ['-C', harnessDir, 'apply', '--check', harnessPatch], { stdio: 'pipe' });
|
|
464
440
|
if (chk.status === 0) {
|
|
465
|
-
spawnSync('git', ['-C', harnessDir, 'apply',
|
|
466
|
-
console.log(
|
|
441
|
+
spawnSync('git', ['-C', harnessDir, 'apply', harnessPatch], { stdio: 'inherit' });
|
|
442
|
+
console.log(' applied loopback-proxy patch to browser-harness');
|
|
467
443
|
} else {
|
|
468
|
-
let
|
|
444
|
+
let fixedUpstream = false;
|
|
469
445
|
try {
|
|
470
|
-
|
|
446
|
+
fixedUpstream = fs.readFileSync(path.join(harnessDir, 'src', 'browser_harness', 'admin.py'), 'utf-8').includes('cdp_urlopen');
|
|
471
447
|
} catch { /* file moved — fall through to the warning */ }
|
|
472
|
-
if (!
|
|
473
|
-
console.warn(
|
|
448
|
+
if (!fixedUpstream) {
|
|
449
|
+
console.warn(' WARNING: browser-harness loopback-proxy patch no longer applies and the fix is absent upstream; CDP probes may 403 behind a system proxy.');
|
|
474
450
|
}
|
|
475
451
|
}
|
|
476
452
|
}
|