fluncle 0.226.0 → 0.227.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 +26 -6
  2. package/package.json +1 -1
package/bin/fluncle.mjs CHANGED
@@ -612,7 +612,7 @@ function parseVersion(version) {
612
612
  var currentVersion;
613
613
  var init_version = __esm(() => {
614
614
  init_output();
615
- currentVersion = "0.226.0".trim() ? "0.226.0".trim() : "0.1.0";
615
+ currentVersion = "0.227.0".trim() ? "0.227.0".trim() : "0.1.0";
616
616
  });
617
617
 
618
618
  // src/update-notifier.ts
@@ -2454,7 +2454,7 @@ function parseVersion2(version) {
2454
2454
  var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
2455
2455
  var init_version2 = __esm(() => {
2456
2456
  init_output();
2457
- currentVersion2 = "0.226.0".trim() ? "0.226.0".trim() : "0.1.0";
2457
+ currentVersion2 = "0.227.0".trim() ? "0.227.0".trim() : "0.1.0";
2458
2458
  });
2459
2459
 
2460
2460
  // ../../packages/registry/src/index.ts
@@ -3978,6 +3978,23 @@ var init_src = __esm(() => {
3978
3978
  title: "Count check",
3979
3979
  weights: { status: "hidden" }
3980
3980
  },
3981
+ {
3982
+ command: "fluncle admin projections advance --target <public_aggregates|artist_qualification> --action repair --limit 500 --max-steps 4",
3983
+ exposedContent: [
3984
+ "keep the two public projection families converged after cutover with status-gated, bounded repair (--no-agent)"
3985
+ ],
3986
+ kind: "cron",
3987
+ name: "cron.projection-maintenance",
3988
+ operatorNotes: "every 5m with per-firing jitter, run by a rave-02 host systemd timer (docs/agents/hermes/projection-maintenance-timer/). Reads bounded projection status first. A dark shared cutover issues zero repair calls; an open idle cutover also writes nothing. Each affected public family gets at most four sequential repair pages of 500 subjects, with independent failure handling. Public aggregate repair also advances the bounded anchor cursor after marker debt drains. Rebuild, audit, track/crawl repair, and every cutover mutation remain operator-only. Zero LLM tokens; no new secret.",
3989
+ probeConfig: {
3990
+ cadenceMs: 5 * MINUTE_MS,
3991
+ cronName: "fluncle-projection-maintenance",
3992
+ kind: "cron"
3993
+ },
3994
+ statusDescription: "keeps the public catalogue projections caught up",
3995
+ title: "Projection upkeep",
3996
+ weights: { status: "hidden" }
3997
+ },
3981
3998
  {
3982
3999
  command: "fluncle admin reach collect",
3983
4000
  exposedContent: [
@@ -12493,6 +12510,7 @@ var init_admin_projections = __esm(() => {
12493
12510
  tags: ["Admin"]
12494
12511
  }).input(object({
12495
12512
  action: ProjectionStepActionSchema,
12513
+ includeStatus: boolean2().default(true),
12496
12514
  limit: number2().int().min(1).max(PROJECTION_STEP_LIMIT_MAX),
12497
12515
  target: ProjectionTargetSchema
12498
12516
  })).output(object({
@@ -12501,7 +12519,7 @@ var init_admin_projections = __esm(() => {
12501
12519
  ok: literal(true),
12502
12520
  processed: CountSchema,
12503
12521
  scheduled: CountSchema,
12504
- status: ProjectionStatusSchema,
12522
+ status: ProjectionStatusSchema.optional(),
12505
12523
  target: ProjectionTargetSchema
12506
12524
  }));
12507
12525
  setProjectionCutover = oc.route({
@@ -16578,17 +16596,19 @@ async function getProjectionStatusCommand() {
16578
16596
  }
16579
16597
  async function advanceProjectionCommand(input) {
16580
16598
  const { maxSteps = 1, target, ...body } = input;
16581
- let response = await adminApiPost(`/api/v1/admin/projections/${target}/advance`, body);
16599
+ const stepBody = maxSteps > 1 ? { ...body, includeStatus: false } : body;
16600
+ let response = await adminApiPost(`/api/v1/admin/projections/${target}/advance`, stepBody);
16582
16601
  let steps = 1;
16583
16602
  let processed = response.processed;
16584
16603
  let scheduled = response.scheduled;
16585
16604
  while (!response.complete && steps < maxSteps) {
16586
- response = await adminApiPost(`/api/v1/admin/projections/${target}/advance`, body);
16605
+ response = await adminApiPost(`/api/v1/admin/projections/${target}/advance`, stepBody);
16587
16606
  steps += 1;
16588
16607
  processed += response.processed;
16589
16608
  scheduled += response.scheduled;
16590
16609
  }
16591
- return { ...response, processed, scheduled, steps };
16610
+ const status = response.status ?? (await getProjectionStatusCommand()).status;
16611
+ return { ...response, processed, scheduled, status, steps };
16592
16612
  }
16593
16613
  async function setProjectionCutoverCommand(input) {
16594
16614
  const { enabled, target } = input;
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.226.0"
34
+ "version": "0.227.0"
35
35
  }