@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.
Files changed (85) hide show
  1. package/README.md +1 -1
  2. package/bin/cli.js +9 -33
  3. package/mcp/dist/index.js +150 -446
  4. package/mcp/dist/panel.html +17 -31
  5. package/mcp/dist/setup.js +7 -27
  6. package/mcp/dist/telemetry.js +7 -17
  7. package/mcp/dist/version.json +2 -2
  8. package/mcp/manifest.json +2 -10
  9. package/mcp/menubar/s4l_browser_foreground.py +1 -7
  10. package/mcp/menubar/s4l_card.py +4 -63
  11. package/mcp/menubar/s4l_card_canvas.py +11 -62
  12. package/mcp/menubar/s4l_menubar.py +128 -435
  13. package/mcp/menubar/s4l_state.py +153 -106
  14. package/mcp/package.json +1 -1
  15. package/package.json +1 -1
  16. package/scripts/account_resolver.py +14 -58
  17. package/scripts/amplitude_24h_signups.py +4 -7
  18. package/scripts/amplitude_signups.py +4 -7
  19. package/scripts/autopilot_stall_watch.py +1 -8
  20. package/scripts/cdp_ready_check.py +50 -81
  21. package/scripts/dm_conversation.py +12 -15
  22. package/scripts/draft_prompt_core.py +64 -132
  23. package/scripts/engage_github.py +5 -11
  24. package/scripts/engage_reddit.py +5 -12
  25. package/scripts/engagement_signal_feedback.py +4 -1
  26. package/scripts/engagement_styles.py +105 -144
  27. package/scripts/feedback_digest.py +11 -54
  28. package/scripts/find_threads.py +7 -9
  29. package/scripts/github_tools.py +10 -23
  30. package/scripts/learned_preferences.py +78 -112
  31. package/scripts/li_discovery.py +1 -4
  32. package/scripts/link_tail.py +1 -1
  33. package/scripts/merge_review_queue.py +131 -199
  34. package/scripts/pick_project.py +4 -7
  35. package/scripts/pick_thread_target.py +13 -64
  36. package/scripts/pick_twitter_thread_target.py +4 -7
  37. package/scripts/platform_strike_events.py +7 -139
  38. package/scripts/post_github.py +35 -376
  39. package/scripts/post_reddit.py +192 -202
  40. package/scripts/project_stats.py +4 -7
  41. package/scripts/reap_stale_claude_sessions.py +6 -7
  42. package/scripts/reddit_browser.py +19 -56
  43. package/scripts/reddit_chat_sync.py +11 -10
  44. package/scripts/reddit_tools.py +4 -20
  45. package/scripts/release-mcpb.sh +7 -47
  46. package/scripts/run_moltbook_cycle.py +5 -9
  47. package/scripts/s4l_ctl.sh +2 -2
  48. package/scripts/s4l_posting_mode.py +6 -67
  49. package/scripts/scan_dm_candidates.py +9 -15
  50. package/scripts/scan_github_replies.py +7 -9
  51. package/scripts/scan_moltbook_replies.py +6 -7
  52. package/scripts/scan_reddit_replies.py +7 -11
  53. package/scripts/scan_twitter_mentions_browser.py +6 -7
  54. package/scripts/scan_twitter_thread_followups.py +6 -7
  55. package/scripts/schedule_state.py +4 -8
  56. package/scripts/score_twitter_candidates.py +3 -8
  57. package/scripts/setup_twitter_auth.py +96 -20
  58. package/scripts/snapshot.py +0 -19
  59. package/scripts/stats.py +10 -12
  60. package/scripts/strike_alert.py +12 -165
  61. package/scripts/test_no_silent_fallbacks.py +0 -84
  62. package/scripts/test_percard_posting.py +3 -3
  63. package/scripts/top_performers.py +0 -24
  64. package/scripts/twitter_browser.py +52 -22
  65. package/scripts/twitter_gen_links.py +3 -3
  66. package/scripts/twitter_post_plan.py +4 -4
  67. package/setup/SKILL.md +1 -1
  68. package/skill/archive-old-logs.sh +0 -24
  69. package/skill/engage-dm-replies.sh +0 -11
  70. package/skill/lib/reddit-backend.sh +0 -1
  71. package/skill/run-draft-and-publish.sh +0 -9
  72. package/skill/run-reddit-search.sh +1 -10
  73. package/skill/run-reddit-threads.sh +0 -12
  74. package/skill/run-twitter-cycle.sh +88 -104
  75. package/scripts/browser_lifecycle.py +0 -90
  76. package/scripts/live_status.py +0 -151
  77. package/scripts/patches/browser-harness-focus-and-observability.patch +0 -130
  78. package/scripts/preview_reddit_card.py +0 -38
  79. package/scripts/reddit_ban_check.py +0 -317
  80. package/scripts/store_patch.py +0 -111
  81. package/scripts/sub_moderation_history.py +0 -129
  82. package/scripts/subreddit_bans_client.py +0 -157
  83. package/scripts/test_cross_language_parity.py +0 -185
  84. package/scripts/test_stall_watch_batch_progression.py +0 -99
  85. 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
- - `approve_drafts` posts only the drafts the user selected.
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
- // Vendored fixes applied on top of the pin (we don't control upstream).
438
- // Each: patch file + a sentinel (file, substring) that means "already
439
- // present" (upstream merged it, or we applied it) so a non-applying patch
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', patchPath], { stdio: 'inherit' });
466
- console.log(` applied ${p.label} patch to browser-harness`);
441
+ spawnSync('git', ['-C', harnessDir, 'apply', harnessPatch], { stdio: 'inherit' });
442
+ console.log(' applied loopback-proxy patch to browser-harness');
467
443
  } else {
468
- let present = false;
444
+ let fixedUpstream = false;
469
445
  try {
470
- present = fs.readFileSync(path.join(harnessDir, p.sentinelFile), 'utf-8').includes(p.sentinelStr);
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 (!present) {
473
- console.warn(` WARNING: browser-harness ${p.label} patch no longer applies and the fix is absent upstream; ${p.absentWarn}.`);
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
  }