@m13v/s4l 1.7.1-rc.5 → 1.7.1-rc.7
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/mcp/dist/onboarding.js
CHANGED
|
@@ -10,19 +10,11 @@ import { createRequire } from "node:module";
|
|
|
10
10
|
import { repoDir, run } from "./repo.js";
|
|
11
11
|
import { resolvePython } from "./runtime.js";
|
|
12
12
|
const require = createRequire(import.meta.url);
|
|
13
|
-
export const ONBOARDING_MILESTONES = [
|
|
14
|
-
"environment_checked",
|
|
15
|
-
"runtime_ready",
|
|
16
|
-
"x_connected",
|
|
17
|
-
"x_verified",
|
|
18
|
-
"profile_scanned",
|
|
19
|
-
"mode_chosen",
|
|
20
|
-
"project_ready",
|
|
21
|
-
"topics_seeded",
|
|
22
|
-
"tasks_scheduled",
|
|
23
|
-
];
|
|
24
13
|
const ledgerApi = require("../shared/onboarding-ledger.cjs");
|
|
25
14
|
const doctorApi = require("../shared/doctor.cjs");
|
|
15
|
+
// Re-export of the ONE runtime array (see the comment above the imports): this
|
|
16
|
+
// is not a second list, just a typed alias for ledgerApi.MILESTONES.
|
|
17
|
+
export const ONBOARDING_MILESTONES = ledgerApi.MILESTONES;
|
|
26
18
|
export function onboardingSnapshot() {
|
|
27
19
|
return ledgerApi.publicSnapshot();
|
|
28
20
|
}
|
package/mcp/dist/version.json
CHANGED
package/mcp/manifest.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"dxt_version": "0.1",
|
|
3
3
|
"name": "social-autoposter",
|
|
4
4
|
"display_name": "S4L",
|
|
5
|
-
"version": "1.7.1-rc.
|
|
5
|
+
"version": "1.7.1-rc.7",
|
|
6
6
|
"description": "Draft, review, approve, and autopilot X/Twitter posts.",
|
|
7
7
|
"long_description": "## **⚠️ The disclaimer above is generic Claude boilerplate.** Anthropic shows the same warning on every plugin regardless of what it does; any plugin has the same level of access as any app you download from the internet.\n\nS4L is an open source product developed by Mediar.ai Incorporated, a VC-backed San Francisco-based startup.\n\nTo get started:\n\n1\\. Copy this prompt: **Set me up on S4L plugin end to end**\n\n2\\. Quit with CMD+Q, reopen Claude, paste into a new chat.\n\nWhat happens next:\n\n* About every 5 minutes S4L scans X for posts that match your topics and drafts replies in your voice.\n* Drafts show up as review cards, usually the first within a few minutes. Nothing is posted automatically; you approve each one.\n* Posting autopilot stays off until you explicitly turn it on.",
|
|
8
8
|
"author": {
|
package/mcp/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@m13v/s4l-mcp",
|
|
3
|
-
"version": "1.7.1-rc.
|
|
3
|
+
"version": "1.7.1-rc.7",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Desktop MCP client for social-autoposter (X/Twitter rail): manual draft/review/approve loop, autopilot control, and stats. Thin wrapper over the existing pipeline scripts.",
|
|
6
6
|
"license": "MIT",
|
package/package.json
CHANGED
|
@@ -17,9 +17,12 @@
|
|
|
17
17
|
# disturbing the rest of the environment.
|
|
18
18
|
# --deep FULL NUKE — the plugin reset above PLUS the shared layer it touches:
|
|
19
19
|
# per-agent Chrome profiles + cookies (reddit/linkedin/twitter), the
|
|
20
|
-
# browser-harness backend,
|
|
21
|
-
# cache, Chromium ~1.7G)
|
|
22
|
-
#
|
|
20
|
+
# browser-harness backend, the packaged toolchain (uv binary + uv
|
|
21
|
+
# data/cache, Chromium ~1.7G), the uv PATH shim in your shell rc, the
|
|
22
|
+
# real Google Chrome.app the provisioner installs, and Google's
|
|
23
|
+
# Keystone updater. Reproduces a genuinely bare-metal box (as if S4L
|
|
24
|
+
# had never run). Other tools that rely on uv/Chrome/Chromium
|
|
25
|
+
# re-provision afterward — intended for DEDICATED test machines.
|
|
23
26
|
#
|
|
24
27
|
# Usage:
|
|
25
28
|
# scripts/reset-test-machine.sh # dry run: print what the plugin reset WOULD remove
|
|
@@ -205,6 +208,27 @@ echo "[1] MCP state dir (uv-owned python, venv, materialized repo, runtime.json,
|
|
|
205
208
|
rm_path "$HOME_DIR/.social-autoposter-mcp" "state"
|
|
206
209
|
echo
|
|
207
210
|
|
|
211
|
+
# ---- 1a. compat symlink ~/social-autoposter -> materialized repo -----------
|
|
212
|
+
# The .mcpb provisioner plants ~/social-autoposter as a symlink INTO the state
|
|
213
|
+
# dir (so the pipeline's hardcoded $HOME/social-autoposter paths resolve). The
|
|
214
|
+
# state-dir wipe in [1] leaves it DANGLING. Remove it — but ONLY when it is a
|
|
215
|
+
# symlink resolving into .social-autoposter-mcp, so a developer's real clone (or
|
|
216
|
+
# their own ~/social-autoposter symlink to a working tree) is never touched.
|
|
217
|
+
echo "[1a] compat symlink ~/social-autoposter (plugin-planted)"
|
|
218
|
+
SA_LINK="$HOME_DIR/social-autoposter"
|
|
219
|
+
if [ -L "$SA_LINK" ]; then
|
|
220
|
+
SA_TARGET="$(readlink "$SA_LINK" 2>/dev/null || true)"
|
|
221
|
+
case "$SA_TARGET" in
|
|
222
|
+
*.social-autoposter-mcp/*|*.social-autoposter-mcp) rm_path "$SA_LINK" "compat-symlink" ;;
|
|
223
|
+
*) echo " (leaving $SA_LINK -> $SA_TARGET — not a plugin-planted symlink)" ;;
|
|
224
|
+
esac
|
|
225
|
+
elif [ -e "$SA_LINK" ]; then
|
|
226
|
+
echo " (leaving $SA_LINK — a real directory/clone, not a plugin-planted symlink)"
|
|
227
|
+
else
|
|
228
|
+
echo " (no ~/social-autoposter symlink)"
|
|
229
|
+
fi
|
|
230
|
+
echo
|
|
231
|
+
|
|
208
232
|
# ---- 1b. Claude Desktop .mcpb extension -----------------------------------
|
|
209
233
|
# A .mcpb (Desktop) install scatters THREE artifacts under ~/Library/Application
|
|
210
234
|
# Support/Claude/, NONE of which live in the state dir removed in [1]: the
|
|
@@ -532,6 +556,23 @@ if [ "$DEEP" -eq 1 ]; then
|
|
|
532
556
|
rm_path "$HOME_DIR/.local/bin/uv" "uv-bin"
|
|
533
557
|
rm_path "$HOME_DIR/.local/bin/uvx" "uvx-bin"
|
|
534
558
|
rm_path "$HOME_DIR/.cache/uv" "uv-cache"
|
|
559
|
+
# uv's DATA dir (installed standalone Pythons + tool venvs) and its PATH shim
|
|
560
|
+
# survive the bin removal — a bare box has neither. The uv installer also
|
|
561
|
+
# appends `. "$HOME/.local/bin/env"` to the shell rc files; strip that exact
|
|
562
|
+
# line so no uv PATH shim lingers.
|
|
563
|
+
rm_path "$HOME_DIR/.local/share/uv" "uv-data"
|
|
564
|
+
rm_path "$HOME_DIR/.local/bin/env" "uv-env-script"
|
|
565
|
+
for rc in "$HOME_DIR/.zshrc" "$HOME_DIR/.zprofile" "$HOME_DIR/.profile" \
|
|
566
|
+
"$HOME_DIR/.bash_profile" "$HOME_DIR/.bashrc"; do
|
|
567
|
+
[ -f "$rc" ] || continue
|
|
568
|
+
if grep -q '\.local/bin/env' "$rc" 2>/dev/null; then
|
|
569
|
+
echo " edit strip uv env-shim line from $rc"
|
|
570
|
+
if [ "$DRY" -eq 0 ]; then
|
|
571
|
+
cp "$rc" "$rc.bak" 2>/dev/null || true
|
|
572
|
+
grep -v '\.local/bin/env' "$rc" > "$rc.tmp" 2>/dev/null && mv "$rc.tmp" "$rc"
|
|
573
|
+
fi
|
|
574
|
+
fi
|
|
575
|
+
done
|
|
535
576
|
echo " WARN --deep removed uv + ms-playwright; other tools on this machine that rely on them will re-provision."
|
|
536
577
|
else
|
|
537
578
|
echo " (left uv + ~/Library/Caches/ms-playwright + ~/.cache/uv in place)"
|
|
@@ -539,6 +580,47 @@ fi
|
|
|
539
580
|
fi
|
|
540
581
|
echo
|
|
541
582
|
|
|
583
|
+
# ---- 6b. DEEP: packaged Google Chrome + its Keystone updater ----------------
|
|
584
|
+
# The provisioner installs a REAL Google Chrome.app (runtime.ts Step 7) — the
|
|
585
|
+
# browser the scanner drives over CDP — that NO other reset step removes, plus
|
|
586
|
+
# installing it drops Google's Keystone auto-updater (LaunchAgents + support
|
|
587
|
+
# dirs). A bare box had none of this. --deep removes all of it so the Chrome
|
|
588
|
+
# install step is exercised fresh. NOTE: this touches the machine's Google Chrome
|
|
589
|
+
# globally, not just S4L — hence --deep / test-box only.
|
|
590
|
+
if [ "$PLUGIN_ONLY" -eq 1 ]; then
|
|
591
|
+
echo "[6b] packaged Google Chrome + Keystone updater — skipped (plugin reset; pass --deep to remove)"
|
|
592
|
+
else
|
|
593
|
+
echo "[6b] packaged Google Chrome + Keystone updater — $([ "$DEEP" -eq 1 ] && echo ENABLED || echo 'skipped (pass --deep)')"
|
|
594
|
+
if [ "$DEEP" -eq 1 ]; then
|
|
595
|
+
# Stop Chrome + unload the Keystone/updater agents before deleting their plists.
|
|
596
|
+
if [ "$DRY" -eq 0 ]; then
|
|
597
|
+
pkill -f 'Google Chrome' 2>/dev/null || true
|
|
598
|
+
for lbl in com.google.keystone.agent com.google.keystone.xpcservice com.google.GoogleUpdater.wake; do
|
|
599
|
+
launchctl bootout "gui/$(id -u)/$lbl" 2>/dev/null || true
|
|
600
|
+
done
|
|
601
|
+
fi
|
|
602
|
+
rm_path "/Applications/Google Chrome.app" "google-chrome"
|
|
603
|
+
rm_path "$HOME_DIR/Applications/Google Chrome.app" "google-chrome-user"
|
|
604
|
+
for p in \
|
|
605
|
+
"$HOME_DIR/Library/Application Support/Google" \
|
|
606
|
+
"$HOME_DIR/Library/Google" \
|
|
607
|
+
"$HOME_DIR/Library/Caches/Google" \
|
|
608
|
+
"$HOME_DIR/Library/Caches/com.google.Chrome" \
|
|
609
|
+
"$HOME_DIR/Library/Caches/com.google.Keystone" \
|
|
610
|
+
"$HOME_DIR/Library/LaunchAgents/com.google.keystone.agent.plist" \
|
|
611
|
+
"$HOME_DIR/Library/LaunchAgents/com.google.keystone.xpcservice.plist" \
|
|
612
|
+
"$HOME_DIR/Library/LaunchAgents/com.google.GoogleUpdater.wake.plist" \
|
|
613
|
+
"$HOME_DIR/Library/LaunchAgents/com.google.GoogleUpdater.plist"; do
|
|
614
|
+
rm_path "$p" "google"
|
|
615
|
+
done
|
|
616
|
+
for f in "$HOME_DIR"/Library/Preferences/com.google.Chrome*.plist; do
|
|
617
|
+
[ -e "$f" ] && rm_path "$f" "google-pref"
|
|
618
|
+
done
|
|
619
|
+
echo " WARN --deep removed Google Chrome + Keystone updater machine-wide."
|
|
620
|
+
fi
|
|
621
|
+
fi
|
|
622
|
+
echo
|
|
623
|
+
|
|
542
624
|
# ---- 7. settle & verify (defeat Claude auto-relaunch resurrection) ---------
|
|
543
625
|
# Claude Desktop can RELAUNCH after step [0] — on auto-update (ShipIt), a macOS
|
|
544
626
|
# re-open, or a login item — and a relaunched host re-materializes a skeleton
|