fluncle 0.195.0 → 0.196.0
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/bin/fluncle.mjs +32 -16
- package/package.json +1 -1
package/bin/fluncle.mjs
CHANGED
|
@@ -561,7 +561,7 @@ function parseVersion(version) {
|
|
|
561
561
|
var currentVersion;
|
|
562
562
|
var init_version = __esm(() => {
|
|
563
563
|
init_output();
|
|
564
|
-
currentVersion = "0.
|
|
564
|
+
currentVersion = "0.196.0".trim() ? "0.196.0".trim() : "0.1.0";
|
|
565
565
|
});
|
|
566
566
|
|
|
567
567
|
// src/update-notifier.ts
|
|
@@ -2443,7 +2443,7 @@ function parseVersion2(version) {
|
|
|
2443
2443
|
var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
|
|
2444
2444
|
var init_version2 = __esm(() => {
|
|
2445
2445
|
init_output();
|
|
2446
|
-
currentVersion2 = "0.
|
|
2446
|
+
currentVersion2 = "0.196.0".trim() ? "0.196.0".trim() : "0.1.0";
|
|
2447
2447
|
});
|
|
2448
2448
|
|
|
2449
2449
|
// ../../packages/registry/src/index.ts
|
|
@@ -3685,27 +3685,26 @@ var init_src = __esm(() => {
|
|
|
3685
3685
|
},
|
|
3686
3686
|
{
|
|
3687
3687
|
exposedContent: [
|
|
3688
|
-
"
|
|
3688
|
+
"poll Twitch for the live set → POST the live state that lights the cross-surface callout (--no-agent)"
|
|
3689
3689
|
],
|
|
3690
3690
|
kind: "cron",
|
|
3691
|
-
name: "cron.
|
|
3692
|
-
operatorNotes: "every
|
|
3693
|
-
probeConfig: { cadenceMs:
|
|
3694
|
-
statusDescription: "
|
|
3695
|
-
title: "
|
|
3691
|
+
name: "cron.live",
|
|
3692
|
+
operatorNotes: "every 1m, run by a rave-02 host systemd timer (docs/agents/hermes/live-timer/). Pure polling, zero LLM tokens. Mints/reuses a cached Twitch client-credentials app token, asks Helix whether the channel is streaming, and POSTs the raw state to the agent-tier record_live_state op — the Worker owns the transition detection and the crew callout. The poller is deliberately dumb and idempotent; auto-clear is READ-side (every surface treats a flag older than ~5m as offline), so a dead poller can never strand a permanent LIVE banner. Source: docs/agents/hermes/scripts/fluncle-live.sh. Probed on /status as cron.live.",
|
|
3693
|
+
probeConfig: { cadenceMs: MINUTE_MS, cronName: "fluncle-live", kind: "cron" },
|
|
3694
|
+
statusDescription: "watches for the live set",
|
|
3695
|
+
title: "Live poller",
|
|
3696
3696
|
weights: { status: "hidden" }
|
|
3697
3697
|
},
|
|
3698
3698
|
{
|
|
3699
|
-
command: "fluncle admin clips drip-pause",
|
|
3700
3699
|
exposedContent: [
|
|
3701
|
-
"
|
|
3700
|
+
"cut each pending operator-framed 9:16 clip out of its set video → ship to R2 (--no-agent, ffmpeg)"
|
|
3702
3701
|
],
|
|
3703
3702
|
kind: "cron",
|
|
3704
|
-
name: "cron.clip
|
|
3705
|
-
operatorNotes: "every
|
|
3706
|
-
probeConfig: { cadenceMs:
|
|
3707
|
-
statusDescription: "
|
|
3708
|
-
title: "
|
|
3703
|
+
name: "cron.studio-clip",
|
|
3704
|
+
operatorNotes: "every 15m. Pure-trigger, zero LLM tokens: a deterministic ffmpeg cut driven by the fluncle CLI (`admin clips list` → `admin clips cut`), agent-scoped (list_clips + the agent-tier presign_clip_upload / finalize_clip_cut). Cuts the operator-framed 9:16 clips from the /admin/studio editor (keyed by Log ID) out of the set video → ships `<clipId>/footage.mp4` to R2 for the /admin/clips library + the clip drip-feed. The box runs the standalone bun BINARY (the npm thin client can't spawn ffmpeg). Source: docs/agents/hermes/scripts/clip-sweep.sh. Probed on /status as cron.studio-clip.",
|
|
3705
|
+
probeConfig: { cadenceMs: 15 * MINUTE_MS, cronName: "fluncle-studio-clip", kind: "cron" },
|
|
3706
|
+
statusDescription: "cuts set videos into 9:16 clips",
|
|
3707
|
+
title: "Studio clips",
|
|
3709
3708
|
weights: { status: "hidden" }
|
|
3710
3709
|
},
|
|
3711
3710
|
{
|
|
@@ -3781,6 +3780,23 @@ var init_src = __esm(() => {
|
|
|
3781
3780
|
title: "Database backup",
|
|
3782
3781
|
weights: { status: "secondary" }
|
|
3783
3782
|
},
|
|
3783
|
+
{
|
|
3784
|
+
exposedContent: [
|
|
3785
|
+
"nightly hub-counts reconciliation — re-derives renderable_track_count / certified_finding_count for every label/album/artist and corrects only the rows that drifted (--no-agent)"
|
|
3786
|
+
],
|
|
3787
|
+
kind: "cron",
|
|
3788
|
+
name: "cron.reconcile-hub-counts",
|
|
3789
|
+
operatorNotes: "04:10 Amsterdam (after the 04:00 reach snapshot, before the 04:40 demand tick), a rave-02 host systemd timer (docs/agents/hermes/reconcile-hub-counts-timer/). The SELF-HEALING BACKSTOP under keystone 2's maintained hub counts: they are moved as DELTAS by every edge-writing path (recompute-from-truth measured 27,400 ms at 150k hosted vs ~200 ms for the delta form), and a maintained counter drifts silently — a missed write path, a non-atomic bulk op, or an out-of-band write (the catalogue-prune skill deletes tracks straight out of the database). Keystone 2's own rollout proved it on day one: the deploy-window skew left 44 artists / 3 albums / 1 label wrong until a manual reconcile. A bare trigger (the funnel-snapshot shape): fires the AGENT-tier reconcile_hub_counts op once and the Worker runs two statements per table — a grouped `UPDATE … FROM (… GROUP BY fk)` guarded by a counts-DIFFER predicate (so rowsAffected IS the corrected-row count) plus a zero-truth pass for an entity whose last track vanished. The artists source is PINNED to `track_artists JOIN tracks` so orphaned edges never count. Idempotent; zero LLM tokens; no new secret. The corrected-row numbers are the operator's DRIFT AUDIT — journalctl -u fluncle-reconcile-hub-counts.service | grep AUDIT. Source: docs/agents/hermes/scripts/reconcile-hub-counts.*.",
|
|
3790
|
+
probeConfig: {
|
|
3791
|
+
cadenceMs: 24 * 60 * MINUTE_MS,
|
|
3792
|
+
cronName: "fluncle-reconcile-hub-counts",
|
|
3793
|
+
kind: "cron",
|
|
3794
|
+
schedule: { time: "04:10", tz: "Europe/Amsterdam" }
|
|
3795
|
+
},
|
|
3796
|
+
statusDescription: "keeps the archive's counts adding up",
|
|
3797
|
+
title: "Count check",
|
|
3798
|
+
weights: { status: "hidden" }
|
|
3799
|
+
},
|
|
3784
3800
|
{
|
|
3785
3801
|
command: "fluncle admin reach collect",
|
|
3786
3802
|
exposedContent: [
|
|
@@ -6445,7 +6461,7 @@ ${response2.sessionKey}
|
|
|
6445
6461
|
|
|
6446
6462
|
bun run --cwd apps/web wrangler secret put LASTFM_SESSION_KEY
|
|
6447
6463
|
|
|
6448
|
-
Also store it in
|
|
6464
|
+
Also store it in your password manager alongside the API key + shared secret.`);
|
|
6449
6465
|
return;
|
|
6450
6466
|
}
|
|
6451
6467
|
const response = await adminApiGet("/api/v1/admin/lastfm/auth/start");
|
package/package.json
CHANGED