fluncle 0.240.0 → 0.241.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 +24 -6
  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.240.0".trim() ? "0.240.0".trim() : "0.1.0";
625
+ currentVersion = "0.241.0".trim() ? "0.241.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.240.0".trim() ? "0.240.0".trim() : "0.1.0";
2338
+ currentVersion2 = "0.241.0".trim() ? "0.241.0".trim() : "0.1.0";
2339
2339
  });
2340
2340
 
2341
2341
  // ../../packages/registry/src/index.ts
@@ -3967,7 +3967,7 @@ var init_src = __esm(() => {
3967
3967
  ],
3968
3968
  kind: "cron",
3969
3969
  name: "cron.funnel-snapshot",
3970
- operatorNotes: "23:45 UTC daily (end of the UTC day the snapshot is keyed on). A bare trigger (the reach/anchor shape): fires the AGENT-tier record_catalogue_snapshot op once — the Worker computes every stage total + queue depth + frontier count through the SAME predicates the sweeps run (lib/server/funnel.ts) and UPSERTS one idempotent row per UTC day (a same-day re-run overwrites, never doubles a bar). Zero LLM tokens; the box's agent token drives it and calls the oRPC HTTP endpoint directly (no new CLI command the pinned box CLI would lack), so no new secret. Source: docs/agents/hermes/scripts/funnel-snapshot-sweep.*. See docs/admin-shell.md.",
3970
+ operatorNotes: "23:45 UTC daily (end of the UTC day the snapshot is keyed on), with a retry slot at 23:57 UTC still inside that day. A bare trigger (the reach/anchor shape): fires the AGENT-tier record_catalogue_snapshot op once — the Worker computes every stage total + queue depth + frontier count through the SAME predicates the sweeps run (lib/server/funnel.ts) and UPSERTS one idempotent row per UTC day (a same-day re-run overwrites, never doubles a bar). A missed day cannot be recomputed later, so the tick is defended three ways: an in-tick retry ladder for a transient Worker fault, the second timer slot for a database-admission yield, and the Worker's catch-up grace window for a box that slept through the slot (it fills a missing previous day and names it as backfilledDays). Zero LLM tokens; the box's agent token drives it and calls the oRPC HTTP endpoint directly (no new CLI command the pinned box CLI would lack), so no new secret. Source: docs/agents/hermes/scripts/funnel-snapshot-sweep.*. See docs/admin-shell.md.",
3971
3971
  probeConfig: {
3972
3972
  cadenceMs: 24 * 60 * MINUTE_MS,
3973
3973
  cronName: "fluncle-funnel-snapshot",
@@ -11751,7 +11751,9 @@ var init_admin_catalogue = __esm(() => {
11751
11751
  }),
11752
11752
  labelsUndecided: number2(),
11753
11753
  seedLabels: array(string2()),
11754
- storablePending: number2()
11754
+ storablePending: number2(),
11755
+ undecidedLabelsQueued: number2(),
11756
+ unstorablePending: number2()
11755
11757
  }).meta({ id: "CrawlStatus" });
11756
11758
  crawlCatalogue = oc.route({
11757
11759
  inputStructure: "detailed",
@@ -13118,7 +13120,7 @@ var init_admin_frontier = __esm(() => {
13118
13120
  });
13119
13121
 
13120
13122
  // ../../packages/contracts/src/orpc/admin-funnel.ts
13121
- var FunnelStagesSchema, FunnelQueuesSchema, FunnelLiveQueuesSchema, PublicSurfaceCountsSchema, FunnelMetersSchema, CatalogueSnapshotRowSchema, recordCatalogueSnapshot, getFunnel, adminFunnelContract;
13123
+ var FunnelStagesSchema, FunnelQueuesSchema, FunnelLiveQueuesSchema, PublicSurfaceCountsSchema, CaptureBacklogSchema, FunnelMetersSchema, CatalogueSnapshotRowSchema, recordCatalogueSnapshot, getFunnel, adminFunnelContract;
13122
13124
  var init_admin_funnel = __esm(() => {
13123
13125
  init_dist3();
13124
13126
  init_zod();
@@ -13149,6 +13151,16 @@ var init_admin_funnel = __esm(() => {
13149
13151
  labels: number2().int(),
13150
13152
  tracks: number2().int()
13151
13153
  }).meta({ id: "PublicSurfaceCounts" });
13154
+ CaptureBacklogSchema = object({
13155
+ authorized: number2().int(),
13156
+ authorizedAnchored: number2().int(),
13157
+ budgetOpen: boolean2(),
13158
+ tiers: array(object({
13159
+ anchored: number2().int(),
13160
+ tier: number2().int(),
13161
+ unanchored: number2().int()
13162
+ }))
13163
+ }).meta({ id: "CaptureBacklog" });
13152
13164
  FunnelMetersSchema = object({
13153
13165
  anchorBackoff: number2().int(),
13154
13166
  captureBudget: object({
@@ -13187,7 +13199,11 @@ var init_admin_funnel = __esm(() => {
13187
13199
  path: "/admin/funnel/snapshot",
13188
13200
  summary: "Record today's catalogue-funnel snapshot (idempotent per UTC day)",
13189
13201
  tags: ["Admin"]
13190
- }).input(object({})).output(object({ ok: literal(true), snapshot: CatalogueSnapshotRowSchema }));
13202
+ }).input(object({})).output(object({
13203
+ backfilledDays: array(string2()),
13204
+ ok: literal(true),
13205
+ snapshot: CatalogueSnapshotRowSchema
13206
+ }));
13191
13207
  getFunnel = oc.route({
13192
13208
  method: "GET",
13193
13209
  operationId: "getFunnel",
@@ -13196,6 +13212,7 @@ var init_admin_funnel = __esm(() => {
13196
13212
  tags: ["Admin"]
13197
13213
  }).input(object({ windowDays: string2().optional() })).output(object({
13198
13214
  live: object({
13215
+ captureBacklog: CaptureBacklogSchema,
13199
13216
  meters: FunnelMetersSchema,
13200
13217
  publicSurfaces: PublicSurfaceCountsSchema,
13201
13218
  queues: FunnelLiveQueuesSchema,
@@ -22963,6 +22980,7 @@ async function runCrawlStatus(options, crawlStatusCommand) {
22963
22980
  console.log(`Catalogue: ${result.catalogueTracks} uncertified track(s); ${result.anchorsPending} awaiting a Spotify anchor.`);
22964
22981
  console.log(`Frontier: ${frontier.pending} pending, ${frontier.done} done, ${frontier.failed} failed, ${frontier.skipped} skipped (${frontierByKind.label} label, ${frontierByKind.artist} artist, ${frontierByKind.release} release).`);
22965
22982
  console.log(`Ready to write: ${result.storablePending} storable release node(s) claimable now.`);
22983
+ console.log(`Held by the storage gate: ${result.unstorablePending} claimable release node(s) \u2014 ${result.undecidedLabelsQueued} undecided label(s) hold queued work.`);
22966
22984
  console.log(`Seeds (${result.seedLabels.length}): ${result.seedLabels.join(", ") || "none enabled"}.`);
22967
22985
  console.log(`Awaiting your ruling: ${result.labelsUndecided} label(s).`);
22968
22986
  }
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.240.0"
34
+ "version": "0.241.0"
35
35
  }