fluncle 0.263.0 → 0.264.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 +56 -4
  2. package/package.json +1 -1
package/bin/fluncle.mjs CHANGED
@@ -622,7 +622,7 @@ function parseVersion(version) {
622
622
  var currentVersion;
623
623
  var init_version = __esm(() => {
624
624
  init_output();
625
- currentVersion = "0.263.0".trim() ? "0.263.0".trim() : "0.1.0";
625
+ currentVersion = "0.264.0".trim() ? "0.264.0".trim() : "0.1.0";
626
626
  });
627
627
 
628
628
  // src/update-notifier.ts
@@ -2335,7 +2335,7 @@ function parseVersion2(version) {
2335
2335
  var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
2336
2336
  var init_version2 = __esm(() => {
2337
2337
  init_output();
2338
- currentVersion2 = "0.263.0".trim() ? "0.263.0".trim() : "0.1.0";
2338
+ currentVersion2 = "0.264.0".trim() ? "0.264.0".trim() : "0.1.0";
2339
2339
  });
2340
2340
 
2341
2341
  // ../../packages/registry/src/index.ts
@@ -4476,6 +4476,7 @@ var init_admin_attention = __esm(() => {
4476
4476
  "attach-cues": "cues",
4477
4477
  "bio-review": "bio gate",
4478
4478
  "capture-suspect": "capture check",
4479
+ "crawl-hold": "held release",
4479
4480
  distribute: "distribute",
4480
4481
  "drip-empty": "clip drip",
4481
4482
  "label-review": "label",
@@ -10193,7 +10194,7 @@ var init_zod = __esm(() => {
10193
10194
  });
10194
10195
 
10195
10196
  // ../../packages/contracts/src/orpc/admin-catalogue.ts
10196
- var CatalogueLensSchema, CapturePriorityReasonSchema, CatalogueMatchSchema, CatalogueTrackItemSchema, CatalogueSummarySchema, listCatalogueTracks, rankCatalogue, recordDemand, clearWrongAudio, requeueUnmatchedCaptures, requeueAnchor, requeueIsrcRecovery, flagWrongAudio, forceCapture, certifyTrack, setTrackDismissed, CaptureVerifyItemSchema, listUnverifiedCaptures, verifyCapture, CrawlPassSchema, CrawlPhaseInitializationSchema, MAX_CRAWL_PREPARE_LIMIT = 6, CrawlFetchPlanSchema, SuppliedCrawlBodySchema, MAX_CRAWL_COMMIT_BATCH, CRAWL_COMMIT_TOKEN_MAX_BYTES, CRAWL_COMMIT_BATCH_MAX_TOTAL_BYTES, CrawlCommitItemSchema, CrawlCommitReceiptSchema, CrawlPhaseCapabilitiesSchema, CrawlPhaseInputSchema, CrawlPhaseOutputSchema, CrawlStatusSchema, CrawlPipelineSummarySchema, PipelineWatchBoundedCountSchema, getPipeline, crawlCatalogue, commitCrawlNodes, getCrawlStatus, ANCHOR_CANDIDATE_LIMIT = 100, ANCHOR_ARTIST_LIMIT = 20, ANCHOR_TEXT_MAX = 300, ANCHOR_ISRC_MAX = 64, ANCHOR_ID_MAX = 64, ANCHOR_URL_MAX = 2048, AnchorCandidateSchema, anchorTrack, recordAnchorFailure, DEEZER_CANDIDATE_LIMIT = 5, DEEZER_TEXT_MAX = 300, DEEZER_ISRC_MAX = 64, DEEZER_TRACK_ID_MAX = 32, DeezerIsrcCandidateSchema, AnchorResolveResultSchema, AnchorCommitResultSchema, prepareAnchor, AnchorPhaseBatchItemFailureSchema, prepareAnchorBatch, resolveAnchorCandidate, commitAnchor, commitAnchorBatch, getAnchorReceipt, getAnchorPaidToken, cancelAnchorPaidResult, resolveAnchorPaidResult, resolveAnchor, resolveAnchorReview, setAnchorSearch, setAnchorApify, CaptureBudgetStateSchema, getCaptureBudget, setCaptureBudget, AnchorApifyBudgetSchema, getAnchorApifyBudget, setAnchorApifyBudget, SpotifyAnchorBreakerStateSchema, AnchorRungFlagsSchema, getSpotifyAnchorBreaker, LabelReleasesBudgetSchema, getLabelReleasesBudget, setLabelReleasesBudget, resetSpotifyAnchorBreaker, AppleBreakerStateSchema, resetAppleBreaker, adminCatalogueContract;
10197
+ var CatalogueLensSchema, CapturePriorityReasonSchema, CatalogueMatchSchema, CatalogueTrackItemSchema, CatalogueSummarySchema, listCatalogueTracks, rankCatalogue, recordDemand, clearWrongAudio, requeueUnmatchedCaptures, requeueAnchor, requeueIsrcRecovery, flagWrongAudio, forceCapture, certifyTrack, setTrackDismissed, CaptureVerifyItemSchema, listUnverifiedCaptures, verifyCapture, CrawlPassSchema, CrawlPhaseInitializationSchema, MAX_CRAWL_PREPARE_LIMIT = 6, CrawlFetchPlanSchema, SuppliedCrawlBodySchema, MAX_CRAWL_COMMIT_BATCH, CRAWL_COMMIT_TOKEN_MAX_BYTES, CRAWL_COMMIT_BATCH_MAX_TOTAL_BYTES, CrawlCommitItemSchema, CrawlCommitReceiptSchema, CrawlPhaseCapabilitiesSchema, CrawlPhaseInputSchema, CrawlPhaseOutputSchema, CrawlStatusSchema, CrawlPipelineSummarySchema, PipelineWatchBoundedCountSchema, getPipeline, crawlCatalogue, commitCrawlNodes, getCrawlStatus, ANCHOR_CANDIDATE_LIMIT = 100, ANCHOR_ARTIST_LIMIT = 20, ANCHOR_TEXT_MAX = 300, ANCHOR_ISRC_MAX = 64, ANCHOR_ID_MAX = 64, ANCHOR_URL_MAX = 2048, AnchorCandidateSchema, anchorTrack, recordAnchorFailure, DEEZER_CANDIDATE_LIMIT = 5, DEEZER_TEXT_MAX = 300, DEEZER_ISRC_MAX = 64, DEEZER_TRACK_ID_MAX = 32, DeezerIsrcCandidateSchema, AnchorResolveResultSchema, AnchorCommitResultSchema, prepareAnchor, AnchorPhaseBatchItemFailureSchema, prepareAnchorBatch, resolveAnchorCandidate, commitAnchor, commitAnchorBatch, getAnchorReceipt, getAnchorPaidToken, cancelAnchorPaidResult, resolveAnchorPaidResult, resolveAnchor, resolveAnchorReview, CrawlHoldReasonSchema, CrawlHoldStateSchema, CrawlHoldSchema, listCrawlHolds, resolveCrawlHold, setAnchorSearch, setAnchorApify, CaptureBudgetStateSchema, getCaptureBudget, setCaptureBudget, AnchorApifyBudgetSchema, getAnchorApifyBudget, setAnchorApifyBudget, SpotifyAnchorBreakerStateSchema, AnchorRungFlagsSchema, getSpotifyAnchorBreaker, LabelReleasesBudgetSchema, getLabelReleasesBudget, setLabelReleasesBudget, resetSpotifyAnchorBreaker, AppleBreakerStateSchema, resetAppleBreaker, adminCatalogueContract;
10197
10198
  var init_admin_catalogue = __esm(() => {
10198
10199
  init_dist3();
10199
10200
  init_zod();
@@ -10222,6 +10223,7 @@ var init_admin_catalogue = __esm(() => {
10222
10223
  hasCapturedAudio: boolean2(),
10223
10224
  hasPreview: boolean2(),
10224
10225
  hiddenFromPublic: boolean2(),
10226
+ hiddenReason: _enum(["long_form", "spoken_word"]).nullable(),
10225
10227
  isrc: string2().nullable(),
10226
10228
  key: string2().nullable(),
10227
10229
  label: string2().nullable(),
@@ -10429,6 +10431,7 @@ var init_admin_catalogue = __esm(() => {
10429
10431
  seedsRearmed: number2(),
10430
10432
  tracksAllowedIn: number2().optional(),
10431
10433
  tracksFound: number2(),
10434
+ tracksHeldImplausible: number2().optional(),
10432
10435
  tracksSkipped: number2(),
10433
10436
  tracksSkippedArtistRule: number2().optional(),
10434
10437
  tracksSkippedHeld: number2().optional(),
@@ -10863,6 +10866,48 @@ var init_admin_catalogue = __esm(() => {
10863
10866
  spotifyTrackId: string2().optional()
10864
10867
  })
10865
10868
  }));
10869
+ CrawlHoldReasonSchema = _enum(["before_founding", "before_label_era"]).meta({ id: "CrawlHoldReason" });
10870
+ CrawlHoldStateSchema = _enum(["held", "kept_out", "released"]).meta({ id: "CrawlHoldState" });
10871
+ CrawlHoldSchema = object({
10872
+ artists: array(string2()),
10873
+ createdAt: string2(),
10874
+ labelId: string2(),
10875
+ labelName: string2().nullable(),
10876
+ labelSlug: string2().nullable(),
10877
+ reason: CrawlHoldReasonSchema,
10878
+ releaseDate: string2().nullable(),
10879
+ releaseMbid: string2(),
10880
+ releaseTitle: string2().nullable(),
10881
+ state: CrawlHoldStateSchema,
10882
+ thresholdYear: number2().int(),
10883
+ trackCount: number2().int()
10884
+ }).meta({ id: "CrawlHold" });
10885
+ listCrawlHolds = oc.route({
10886
+ method: "GET",
10887
+ operationId: "listCrawlHolds",
10888
+ path: "/admin/catalogue/holds",
10889
+ summary: "Releases the crawl held back because their label credit looks implausible",
10890
+ tags: ["Admin"]
10891
+ }).input(object({
10892
+ cursor: string2().min(1).max(512).optional(),
10893
+ limit: number3().int().min(1).max(100).optional(),
10894
+ state: CrawlHoldStateSchema.optional()
10895
+ })).output(object({
10896
+ holds: array(CrawlHoldSchema),
10897
+ nextCursor: string2().optional(),
10898
+ ok: literal(true),
10899
+ total: number2().int()
10900
+ }));
10901
+ resolveCrawlHold = oc.route({
10902
+ method: "POST",
10903
+ operationId: "resolveCrawlHold",
10904
+ path: "/admin/catalogue/holds/{releaseMbid}/resolve",
10905
+ summary: "Rule on a held release: store it on the next crawl tick, or keep it out (operator)",
10906
+ tags: ["Admin"]
10907
+ }).input(object({
10908
+ decision: _enum(["keep_out", "store"]),
10909
+ releaseMbid: string2().min(1)
10910
+ })).output(object({ ok: literal(true), state: CrawlHoldStateSchema }));
10866
10911
  setAnchorSearch = oc.route({
10867
10912
  method: "PUT",
10868
10913
  operationId: "setAnchorSearch",
@@ -11018,6 +11063,7 @@ var init_admin_catalogue = __esm(() => {
11018
11063
  get_pipeline: getPipeline,
11019
11064
  get_spotify_anchor_breaker: getSpotifyAnchorBreaker,
11020
11065
  list_catalogue_tracks: listCatalogueTracks,
11066
+ list_crawl_holds: listCrawlHolds,
11021
11067
  list_unverified_captures: listUnverifiedCaptures,
11022
11068
  prepare_anchor: prepareAnchor,
11023
11069
  prepare_anchor_batch: prepareAnchorBatch,
@@ -11033,6 +11079,7 @@ var init_admin_catalogue = __esm(() => {
11033
11079
  resolve_anchor_candidate: resolveAnchorCandidate,
11034
11080
  resolve_anchor_paid_result: resolveAnchorPaidResult,
11035
11081
  resolve_anchor_review: resolveAnchorReview,
11082
+ resolve_crawl_hold: resolveCrawlHold,
11036
11083
  set_anchor_apify: setAnchorApify,
11037
11084
  set_anchor_apify_budget: setAnchorApifyBudget,
11038
11085
  set_anchor_search: setAnchorSearch,
@@ -11664,6 +11711,7 @@ var init_admin_attention2 = __esm(() => {
11664
11711
  "attach-cues",
11665
11712
  "bio-review",
11666
11713
  "capture-suspect",
11714
+ "crawl-hold",
11667
11715
  "distribute",
11668
11716
  "drip-empty",
11669
11717
  "label-review",
@@ -16282,6 +16330,7 @@ var init_me_recs = __esm(() => {
16282
16330
  label: string2().optional(),
16283
16331
  logId: string2(),
16284
16332
  note: string2().optional(),
16333
+ previewable: boolean2(),
16285
16334
  similarity: number2(),
16286
16335
  spotifyUri: string2().optional(),
16287
16336
  spotifyUrl: string2().optional(),
@@ -16367,6 +16416,7 @@ var init_me_saved = __esm(() => {
16367
16416
  imageUrl: string2().optional(),
16368
16417
  logId: string2().optional(),
16369
16418
  note: string2().optional(),
16419
+ previewable: boolean2(),
16370
16420
  savedAt: string2(),
16371
16421
  title: string2(),
16372
16422
  trackId: string2()
@@ -17490,6 +17540,7 @@ async function advanceProjectionCommand(input) {
17490
17540
  let scheduled = response.scheduled;
17491
17541
  let wallStopped = false;
17492
17542
  let rebuildRowsWalked = response.rebuildRowsWalked ?? 0;
17543
+ let rebuildReported = response.rebuildStaleFamilies !== undefined;
17493
17544
  while (!response.complete && steps < maxSteps) {
17494
17545
  if (wallMs !== undefined && now() - startedAt >= wallMs) {
17495
17546
  wallStopped = true;
@@ -17500,8 +17551,9 @@ async function advanceProjectionCommand(input) {
17500
17551
  processed += response.processed;
17501
17552
  scheduled += response.scheduled;
17502
17553
  rebuildRowsWalked += response.rebuildRowsWalked ?? 0;
17554
+ rebuildReported ||= response.rebuildStaleFamilies !== undefined;
17503
17555
  }
17504
- const rebuild = response.rebuildStaleFamilies === undefined ? {} : { rebuildRowsWalked, rebuildStaleFamilies: response.rebuildStaleFamilies };
17556
+ const rebuild = rebuildReported ? { rebuildRowsWalked, rebuildStaleFamilies: response.rebuildStaleFamilies ?? 0 } : {};
17505
17557
  if (!includeTerminalStatus) {
17506
17558
  const { status: _status, ...withoutStatus } = response;
17507
17559
  return { ...withoutStatus, ...rebuild, processed, scheduled, steps, wallStopped };
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.263.0"
34
+ "version": "0.264.0"
35
35
  }