fluncle 0.51.0 → 0.52.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 +27 -24
  2. package/package.json +1 -1
package/bin/fluncle.mjs CHANGED
@@ -423,7 +423,7 @@ function parseVersion(version) {
423
423
  var currentVersion;
424
424
  var init_version = __esm(() => {
425
425
  init_output();
426
- currentVersion = "0.51.0".trim() ? "0.51.0".trim() : "0.1.0";
426
+ currentVersion = "0.52.0".trim() ? "0.52.0".trim() : "0.1.0";
427
427
  });
428
428
 
429
429
  // src/update-notifier.ts
@@ -1912,7 +1912,7 @@ function parseVersion2(version) {
1912
1912
  var currentVersion2, latestReleaseUrl = "https://api.github.com/repos/mauricekleine/fluncle/releases/latest";
1913
1913
  var init_version2 = __esm(() => {
1914
1914
  init_output();
1915
- currentVersion2 = "0.51.0".trim() ? "0.51.0".trim() : "0.1.0";
1915
+ currentVersion2 = "0.52.0".trim() ? "0.52.0".trim() : "0.1.0";
1916
1916
  });
1917
1917
 
1918
1918
  // src/commands/track.ts
@@ -2200,7 +2200,7 @@ async function previewArchiveUploadCommand(idOrLogId, options) {
2200
2200
  form.append("preview", Bun.file(options.file), basename(options.file));
2201
2201
  form.append("source", options.source);
2202
2202
  form.append("mime", options.mime);
2203
- return adminApiPostForm(`/api/admin/tracks/${encodeURIComponent(idOrLogId)}/preview-archive`, form);
2203
+ return adminApiPostForm(`/api/admin/tracks/${encodeURIComponent(idOrLogId)}/preview`, form);
2204
2204
  }
2205
2205
  async function previewArchiveBackfillCommand(options) {
2206
2206
  const result = {
@@ -2220,7 +2220,7 @@ async function previewArchiveBackfillCommand(options) {
2220
2220
  result.skipped.push({ reason: "no_log_id", trackId: track.trackId });
2221
2221
  continue;
2222
2222
  }
2223
- const status = await adminApiGet(`/api/admin/tracks/${encodeURIComponent(track.trackId)}/preview-archive`);
2223
+ const status = await adminApiGet(`/api/admin/tracks/${encodeURIComponent(track.trackId)}/preview`);
2224
2224
  if (status.archived) {
2225
2225
  result.skipped.push({ reason: "already_archived", trackId: track.trackId });
2226
2226
  continue;
@@ -2259,7 +2259,7 @@ async function uploadResolvedPreview(trackId, preview) {
2259
2259
  form.append("preview", new Blob([preview.bytes], { type: preview.mime }), `preview.${extension}`);
2260
2260
  form.append("source", preview.source);
2261
2261
  form.append("mime", preview.mime);
2262
- await adminApiPostForm(`/api/admin/tracks/${encodeURIComponent(trackId)}/preview-archive`, form);
2262
+ await adminApiPostForm(`/api/admin/tracks/${encodeURIComponent(trackId)}/preview`, form);
2263
2263
  }
2264
2264
  async function resolvePreview(track) {
2265
2265
  const stored = await downloadPreview(track.previewUrl, "deezer:stored");
@@ -5346,8 +5346,8 @@ function addMetaCommands(program2) {
5346
5346
  });
5347
5347
  }
5348
5348
  function addTrackCommands(program2) {
5349
- const track = configureCommand(program2.command("track", { hidden: true }).description("Public track lookups"));
5350
- track.command("get").description("Look up one finding by id or Log ID").argument("[idOrLogId]").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5349
+ const tracks = configureCommand(program2.command("tracks", { hidden: true }).alias("track").description("Public track lookups"));
5350
+ tracks.command("get").description("Look up one finding by id or Log ID").argument("[idOrLogId]").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5351
5351
  const { trackGetCommand: trackGetCommand2 } = await Promise.resolve().then(() => (init_track(), exports_track));
5352
5352
  await runTrackGet(idOrLogId, options, trackGetCommand2);
5353
5353
  });
@@ -5380,19 +5380,12 @@ function addAdminCommands(program2) {
5380
5380
  const { queueCommand: queueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5381
5381
  await runAdminQueue(options, queueCommand2);
5382
5382
  });
5383
- adminTracks.command("context-queue").description("Findings missing their field notes, oldest first (the context cron's worklist)").option("--limit <limit>", "Number of findings to show", "10").option("--json", "Print JSON", false).action(async (options) => {
5384
- const { contextQueueCommand: contextQueueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5385
- await runAdminContextQueue(options, contextQueueCommand2);
5386
- });
5387
- adminTracks.command("observe-queue").description("Findings with notes but no observation yet, oldest first (the observe cron's worklist)").option("--limit <limit>", "Number of findings to show", "10").option("--json", "Print JSON", false).action(async (options) => {
5388
- const { observeQueueCommand: observeQueueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5389
- await runAdminObserveQueue(options, observeQueueCommand2);
5390
- });
5391
- adminTracks.command("enrich-queue").description("Findings needing (re-)enrichment: pending, failed, or stuck processing").option("--limit <limit>", "Number of findings to show", "10").option("--json", "Print JSON", false).action(async (options) => {
5392
- const { enrichQueueCommand: enrichQueueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5393
- await runAdminEnrichQueue(options, enrichQueueCommand2);
5394
- });
5395
- admin.command("enrich-queue", { hidden: true }).description("Enrich queue (alias of `admin tracks enrich-queue`)").option("--limit <limit>", "Number of findings to show", "10").option("--json", "Print JSON", false).action(async (options) => {
5383
+ adminTracks.command("enrich").description("Enrichment worklist (pending, failed, or stuck processing) \u2014 use --queue").option("--queue", "Show the enrichment worklist, oldest first", false).option("--limit <limit>", "Number of findings to show with --queue", "10").option("--json", "Print JSON", false).action(async (options) => {
5384
+ if (!options.queue) {
5385
+ console.error("`tracks enrich` is a worklist view \u2014 enrichment runs on the on-box `fluncle-enrich` cron.\nUse `tracks enrich --queue` to see findings needing (re-)enrichment.");
5386
+ process.exitCode = 1;
5387
+ return;
5388
+ }
5396
5389
  const { enrichQueueCommand: enrichQueueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5397
5390
  await runAdminEnrichQueue(options, enrichQueueCommand2);
5398
5391
  });
@@ -5421,15 +5414,25 @@ function addAdminCommands(program2) {
5421
5414
  const { trackSocialShowCommand: trackSocialShowCommand2, trackSocialUpdateCommand: trackSocialUpdateCommand2 } = await Promise.resolve().then(() => (init_track(), exports_track));
5422
5415
  await runTrackSocial(idOrLogId, options, trackSocialShowCommand2, trackSocialUpdateCommand2);
5423
5416
  });
5424
- adminTrack.command("preview").alias("preview-archive").description("Store one official preview at the operator-only archive path for analysis").argument("[idOrLogId]").option("--file <file>", "Preview audio file to archive").option("--mime <mime>", "MIME type of the preview audio").option("--source <source>", "Provenance label for the archived preview").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5417
+ adminTrack.command("preview").description("Store one official preview at the operator-only archive path for analysis").argument("[idOrLogId]").option("--file <file>", "Preview audio file to archive").option("--mime <mime>", "MIME type of the preview audio").option("--source <source>", "Provenance label for the archived preview").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5425
5418
  const { previewArchiveUploadCommand: previewArchiveUploadCommand2 } = await Promise.resolve().then(() => (init_preview_archive(), exports_preview_archive));
5426
5419
  await runTrackPreviewArchive(idOrLogId, options, previewArchiveUploadCommand2);
5427
5420
  });
5428
- adminTrack.command("observe").description("Render Fluncle's spoken field observation for a track (ElevenLabs, Worker-side)").argument("[idOrLogId]").option("--script <text>", "The voice-gated observation script (the spoken text)").option("--script-file <file>", "Read the observation script from a file (e.g. observation.txt)").option("--voice-id <id>", "Override the configured ElevenLabs voice id").option("--model <model>", "TTS model (eleven_multilingual_v2 | eleven_v3)").option("--duration-ms <ms>", "Probed audio duration in ms (the agent runs ffprobe)").option("--duration-target-sec <sec>", "Target observation length in seconds (20\u201345)").option("--context-note <text>", "Pre-fetched factual context (else the Worker firecrawls)").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5421
+ adminTrack.command("observe").description("Render Fluncle's spoken field observation for a track (ElevenLabs, Worker-side)").argument("[idOrLogId]").option("--queue", "Show the observe worklist (notes but no observation yet), oldest first", false).option("--limit <limit>", "Number of findings to show with --queue", "10").option("--script <text>", "The voice-gated observation script (the spoken text)").option("--script-file <file>", "Read the observation script from a file (e.g. observation.txt)").option("--voice-id <id>", "Override the configured ElevenLabs voice id").option("--model <model>", "TTS model (eleven_multilingual_v2 | eleven_v3)").option("--duration-ms <ms>", "Probed audio duration in ms (the agent runs ffprobe)").option("--duration-target-sec <sec>", "Target observation length in seconds (20\u201345)").option("--context-note <text>", "Pre-fetched factual context (else the Worker firecrawls)").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5422
+ if (options.queue) {
5423
+ const { observeQueueCommand: observeQueueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5424
+ await runAdminObserveQueue(options, observeQueueCommand2);
5425
+ return;
5426
+ }
5429
5427
  const { trackObserveCommand: trackObserveCommand2 } = await Promise.resolve().then(() => (init_track(), exports_track));
5430
5428
  await runTrackObserve(idOrLogId, options, trackObserveCommand2);
5431
5429
  });
5432
- adminTrack.command("context").description("Gather the field notes for a finding (facts only; observe speaks from them)").argument("[idOrLogId]").option("--query <text>", "Override the fact-search query (else the Worker builds one)").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5430
+ adminTrack.command("context").description("Gather the field notes for a finding (facts only; observe speaks from them)").argument("[idOrLogId]").option("--queue", "Show the context worklist (findings missing field notes), oldest first", false).option("--limit <limit>", "Number of findings to show with --queue", "10").option("--query <text>", "Override the fact-search query (else the Worker builds one)").option("--json", "Print JSON", false).allowExcessArguments().action(async (idOrLogId, options) => {
5431
+ if (options.queue) {
5432
+ const { contextQueueCommand: contextQueueCommand2 } = await Promise.resolve().then(() => (init_admin_tracks(), exports_admin_tracks));
5433
+ await runAdminContextQueue(options, contextQueueCommand2);
5434
+ return;
5435
+ }
5433
5436
  const { trackContextCommand: trackContextCommand2 } = await Promise.resolve().then(() => (init_track(), exports_track));
5434
5437
  await runTrackContext(idOrLogId, options, trackContextCommand2);
5435
5438
  });
@@ -5800,7 +5803,7 @@ async function runTrackSocial(idOrLogId, options, trackSocialShowCommand2, track
5800
5803
  }
5801
5804
  async function runTrackGet(idOrLogId, options, trackGetCommand2) {
5802
5805
  if (!idOrLogId) {
5803
- throw new Error("Missing id. Usage: fluncle track get <track_id|log_id> [--json]");
5806
+ throw new Error("Missing id. Usage: fluncle tracks get <track_id|log_id> [--json]");
5804
5807
  }
5805
5808
  const result = await trackGetCommand2(idOrLogId);
5806
5809
  if (options.json) {
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.51.0"
34
+ "version": "0.52.0"
35
35
  }