fluncle 0.146.0 → 0.148.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.
Files changed (2) hide show
  1. package/bin/fluncle.mjs +44 -2
  2. 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.146.0".trim() ? "0.146.0".trim() : "0.1.0";
564
+ currentVersion = "0.148.0".trim() ? "0.148.0".trim() : "0.1.0";
565
565
  });
566
566
 
567
567
  // src/update-notifier.ts
@@ -2189,7 +2189,7 @@ function parseVersion2(version) {
2189
2189
  var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
2190
2190
  var init_version2 = __esm(() => {
2191
2191
  init_output();
2192
- currentVersion2 = "0.146.0".trim() ? "0.146.0".trim() : "0.1.0";
2192
+ currentVersion2 = "0.148.0".trim() ? "0.148.0".trim() : "0.1.0";
2193
2193
  });
2194
2194
 
2195
2195
  // ../../packages/registry/src/index.ts
@@ -5730,6 +5730,7 @@ __export(exports_admin_catalogue, {
5730
5730
  verifyCaptureCommand: () => verifyCaptureCommand,
5731
5731
  setTrackDismissedCommand: () => setTrackDismissedCommand,
5732
5732
  listUnverifiedCapturesCommand: () => listUnverifiedCapturesCommand,
5733
+ forceCaptureCommand: () => forceCaptureCommand,
5733
5734
  flagWrongAudioCommand: () => flagWrongAudioCommand,
5734
5735
  crawlStatusCommand: () => crawlStatusCommand,
5735
5736
  crawlCatalogueCommand: () => crawlCatalogueCommand,
@@ -5756,6 +5757,11 @@ async function clearWrongAudioCommand(trackId) {
5756
5757
  trackId
5757
5758
  });
5758
5759
  }
5760
+ async function forceCaptureCommand(trackId) {
5761
+ return adminApiPost("/api/admin/catalogue/force-capture", {
5762
+ trackId
5763
+ });
5764
+ }
5759
5765
  async function flagWrongAudioCommand(trackId) {
5760
5766
  return adminApiPost("/api/admin/catalogue/wrong-audio/flag", {
5761
5767
  trackId
@@ -5800,6 +5806,18 @@ var init_admin_catalogue = __esm(() => {
5800
5806
  init_api();
5801
5807
  });
5802
5808
 
5809
+ // src/commands/admin-reach.ts
5810
+ var exports_admin_reach = {};
5811
+ __export(exports_admin_reach, {
5812
+ reachCollectCommand: () => reachCollectCommand
5813
+ });
5814
+ async function reachCollectCommand() {
5815
+ return adminApiPost("/api/admin/reach/collect", {});
5816
+ }
5817
+ var init_admin_reach = __esm(() => {
5818
+ init_api();
5819
+ });
5820
+
5803
5821
  // src/commands/admin-artists.ts
5804
5822
  var exports_admin_artists = {};
5805
5823
  __export(exports_admin_artists, {
@@ -8870,6 +8888,15 @@ function addAdminCommands(program2) {
8870
8888
  }
8871
8889
  console.log(flagged ? `Flagged ${trackId}. Its vector is out of the ranking and a fresh capture is queued (the bad bytes are hash-rejected).` : `${trackId} is not a captured finding \u2014 nothing to flag.`);
8872
8890
  });
8891
+ catalogue.command("force-capture").description("Overrule the duplicate veto on one catalogue row so it can be captured (operator)").argument("<trackId>", "The catalogue track id to capture anyway").option("--json", "Print JSON", false).action(async (trackId, options) => {
8892
+ const { forceCaptureCommand: forceCaptureCommand2 } = await Promise.resolve().then(() => (init_admin_catalogue(), exports_admin_catalogue));
8893
+ const { forced } = await forceCaptureCommand2(trackId);
8894
+ if (options.json) {
8895
+ printJson({ forced, ok: true });
8896
+ return;
8897
+ }
8898
+ console.log(forced ? `Forced ${trackId}. The duplicate veto is lifted; it re-ranks onto the capture ladder and the next open-budget tick buys it.` : `${trackId} was not vetoed as a duplicate \u2014 nothing to force.`);
8899
+ });
8873
8900
  catalogue.command("verify").description("Capture verification: the unverified worklist (--queue), or record one verdict").argument("[trackId]", "The track whose capture verdict to record (omit with --queue)").option("--queue", "List captured rows not yet verified against their preview", false).option("--verdict <verdict>", "The fingerprint verdict: match | mismatch | no-preview").option("--limit <limit>", "Worklist rows (default 50, max 200)").option("--json", "Print JSON", false).action(async (trackId, options) => {
8874
8901
  const { listUnverifiedCapturesCommand: listUnverifiedCapturesCommand2, verifyCaptureCommand: verifyCaptureCommand2 } = await Promise.resolve().then(() => (init_admin_catalogue(), exports_admin_catalogue));
8875
8902
  if (options.queue) {
@@ -8936,6 +8963,21 @@ function addAdminCommands(program2) {
8936
8963
  const { crawlStatusCommand: crawlStatusCommand2 } = await Promise.resolve().then(() => (init_admin_catalogue(), exports_admin_catalogue));
8937
8964
  await runCrawlStatus(options, crawlStatusCommand2);
8938
8965
  });
8966
+ const reach = configureCommand(admin.command("reach").description("The public /reach numbers: collect a daily snapshot"));
8967
+ reach.action(() => {
8968
+ reach.outputHelp();
8969
+ });
8970
+ reach.command("collect").description("Collect + record one daily reach snapshot across every platform").option("--json", "Print JSON", false).action(async (options) => {
8971
+ const { reachCollectCommand: reachCollectCommand2 } = await Promise.resolve().then(() => (init_admin_reach(), exports_admin_reach));
8972
+ const { collected, inserted, skipped } = await reachCollectCommand2();
8973
+ if (options.json) {
8974
+ printJson({ collected, inserted, ok: true, skipped });
8975
+ return;
8976
+ }
8977
+ const landed = collected.map((entry) => `${entry.platform} (${entry.metrics.join(", ")})`).join("; ");
8978
+ const missed = skipped.map((entry) => `${entry.platform}: ${entry.reason}`).join("; ");
8979
+ console.log(`Collected ${collected.length} platform(s), wrote ${inserted} new row(s).${landed ? ` Landed: ${landed}.` : ""}${missed ? ` Skipped: ${missed}.` : ""}`);
8980
+ });
8939
8981
  const backfill = configureCommand(admin.command("backfills").description("Backfill operator-only archives"));
8940
8982
  backfill.action(() => {
8941
8983
  backfill.outputHelp();
package/package.json CHANGED
@@ -31,5 +31,5 @@
31
31
  "url": "git+https://github.com/mauricekleine/fluncle.git"
32
32
  },
33
33
  "type": "module",
34
- "version": "0.146.0"
34
+ "version": "0.148.0"
35
35
  }