recappi 0.1.56 → 0.1.57

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.
package/dist/index.js CHANGED
@@ -19933,6 +19933,184 @@ function runMacOpen(args, deps) {
19933
19933
  });
19934
19934
  }
19935
19935
 
19936
+ // src/commandMetadata.ts
19937
+ var COMMON_TASKS = [
19938
+ { label: "Record audio + live captions", command: "recappi record --live" },
19939
+ { label: "Transcribe a local file", command: "recappi upload <file> --transcribe --wait" },
19940
+ { label: "Re-transcribe a recording", command: "recappi recordings retranscribe <recordingId> --wait" },
19941
+ { label: "List / find recordings", command: "recappi recordings list" },
19942
+ { label: "Read a transcript", command: "recappi transcript get <transcriptId>" },
19943
+ { label: "Download / open audio", command: "recappi audio <recordingId> --open" },
19944
+ { label: "Check a transcription job", command: "recappi jobs wait <jobId>" },
19945
+ { label: "Account \xB7 quota \xB7 usage", command: "recappi account status" },
19946
+ { label: "Sign in", command: "recappi auth login" },
19947
+ { label: "Diagnose auth / audio setup", command: "recappi doctor" }
19948
+ ];
19949
+ var COMMAND_METADATA = {
19950
+ "auth import-macos": {
19951
+ capabilities: ["Reuse the macOS app's signed-in session for the CLI"],
19952
+ examples: [
19953
+ { description: "Copy the macOS app session into CLI config", command: "recappi auth import-macos" }
19954
+ ],
19955
+ relatedCommands: ["auth login", "auth status"]
19956
+ },
19957
+ "auth login": {
19958
+ capabilities: ["Authenticate the CLI via device-code OAuth"],
19959
+ examples: [
19960
+ { description: "Start device-code sign-in", command: "recappi auth login" },
19961
+ { description: "Print the login URL without opening a browser", command: "recappi auth login --no-open" }
19962
+ ],
19963
+ relatedCommands: ["auth status", "auth import-macos"]
19964
+ },
19965
+ "auth logout": {
19966
+ capabilities: ["Sign the CLI out and clear stored token"],
19967
+ examples: [{ description: "Remove the local CLI token", command: "recappi auth logout" }],
19968
+ relatedCommands: ["auth status", "auth login"]
19969
+ },
19970
+ "auth status": {
19971
+ capabilities: ["Check whether the CLI is signed in, and as whom"],
19972
+ examples: [{ description: "Show sign-in status", command: "recappi auth status" }],
19973
+ relatedCommands: ["auth login", "doctor"]
19974
+ },
19975
+ "account status": {
19976
+ capabilities: ["Show account plan, minutes/storage quota, and usage"],
19977
+ examples: [{ description: "Show account, quota, and local state", command: "recappi account status" }],
19978
+ relatedCommands: ["auth status", "dashboard stats"]
19979
+ },
19980
+ doctor: {
19981
+ capabilities: ["Diagnose auth, cloud connectivity, local audio/TCC permissions"],
19982
+ examples: [{ description: "Check setup health", command: "recappi doctor" }],
19983
+ relatedCommands: ["auth status", "record"]
19984
+ },
19985
+ upload: {
19986
+ capabilities: [
19987
+ "Upload a local audio file or directory",
19988
+ "Transcribe uploaded audio",
19989
+ "Wait for transcription to finish"
19990
+ ],
19991
+ examples: [
19992
+ {
19993
+ description: "Upload a local audio file and wait for transcription",
19994
+ command: "recappi upload talk.m4a --transcribe --wait"
19995
+ },
19996
+ {
19997
+ description: "Upload and transcribe a directory of audio files",
19998
+ command: "recappi upload ./recordings --transcribe"
19999
+ },
20000
+ {
20001
+ description: "Transcribe with title and language hints",
20002
+ command: 'recappi upload talk.m4a --transcribe --language en --title "Team sync"'
20003
+ }
20004
+ ],
20005
+ relatedCommands: ["jobs wait", "recordings list", "transcript get"]
20006
+ },
20007
+ record: {
20008
+ capabilities: [
20009
+ "Record system audio and/or mic",
20010
+ "Live captions while recording",
20011
+ "Auto upload+transcribe+summarize on stop"
20012
+ ],
20013
+ examples: [
20014
+ { description: "Record with live captions", command: "recappi record --live" },
20015
+ { description: "Record a microphone-only voice note", command: 'recappi record --no-system-audio --title "Voice note"' },
20016
+ { description: "Record with live caption translation", command: "recappi record --live --translation-language en" }
20017
+ ],
20018
+ relatedCommands: ["recordings list", "transcript get"]
20019
+ },
20020
+ audio: {
20021
+ capabilities: ["Download audio", "Open in default player", "Reveal in Finder"],
20022
+ examples: [
20023
+ { description: "Download and open audio", command: "recappi audio <recordingId> --open" },
20024
+ { description: "Download audio and print the local path", command: "recappi audio <recordingId> --download" },
20025
+ { description: "Reveal downloaded audio in Finder", command: "recappi audio <recordingId> --reveal" }
20026
+ ],
20027
+ relatedCommands: ["recordings list", "recordings get"]
20028
+ },
20029
+ schema: {
20030
+ capabilities: ["Print the full machine-readable CLI contract for agents"],
20031
+ examples: [
20032
+ { description: "Read the full machine-readable command contract", command: "recappi schema --json --compact" }
20033
+ ]
20034
+ },
20035
+ "dashboard stats": {
20036
+ capabilities: ["Fetch aggregate dashboard counters/stats"],
20037
+ examples: [{ description: "Fetch dashboard counters", command: "recappi dashboard stats --json --compact" }],
20038
+ relatedCommands: ["account status", "recordings list"]
20039
+ },
20040
+ "recordings get": {
20041
+ capabilities: ["Fetch one recording's metadata and status by id"],
20042
+ examples: [{ description: "Fetch one recording", command: "recappi recordings get <recordingId>" }],
20043
+ relatedCommands: ["recordings list", "transcript get", "audio"]
20044
+ },
20045
+ "recordings list": {
20046
+ capabilities: ["List recent recordings", "Search recordings and transcripts", "Find a recordingId"],
20047
+ examples: [
20048
+ { description: "List recent recordings", command: "recappi recordings list" },
20049
+ { description: "Search recordings and transcripts", command: "recappi recordings list --search <query>" }
20050
+ ],
20051
+ relatedCommands: ["recordings get", "audio", "transcript get"]
20052
+ },
20053
+ "recordings retranscribe": {
20054
+ capabilities: ["Re-transcribe an existing recording", "Re-transcribe with new language/prompt/scene/model"],
20055
+ examples: [
20056
+ {
20057
+ description: "Start a fresh transcription for an existing cloud recording",
20058
+ command: "recappi recordings retranscribe <recordingId> --wait"
20059
+ },
20060
+ {
20061
+ description: "Re-transcribe with language and prompt hints",
20062
+ command: 'recappi recordings retranscribe <recordingId> --language en --prompt "medical terms" --wait'
20063
+ }
20064
+ ],
20065
+ relatedCommands: ["jobs wait", "transcript get"]
20066
+ },
20067
+ "transcript get": {
20068
+ capabilities: ["Fetch a finished transcript by id"],
20069
+ examples: [{ description: "Fetch an existing transcript", command: "recappi transcript get <transcriptId>" }],
20070
+ relatedCommands: ["recordings get", "jobs wait"]
20071
+ },
20072
+ "jobs list": {
20073
+ capabilities: ["List transcription jobs", "Filter by status"],
20074
+ examples: [
20075
+ { description: "List active transcription jobs", command: "recappi jobs list --status active" },
20076
+ { description: "List recent jobs across statuses", command: "recappi jobs list --status all --limit 20" }
20077
+ ],
20078
+ relatedCommands: ["jobs wait", "recordings retranscribe"]
20079
+ },
20080
+ "jobs wait": {
20081
+ capabilities: ["Block until a transcription job reaches a terminal state"],
20082
+ examples: [
20083
+ { description: "Wait for a transcription job", command: "recappi jobs wait <jobId>" }
20084
+ ],
20085
+ relatedCommands: ["jobs list", "transcript get"]
20086
+ }
20087
+ };
20088
+ function commonTasksHelpText() {
20089
+ return [
20090
+ "Common tasks:",
20091
+ ...COMMON_TASKS.map((task) => ` ${task.label.padEnd(30)} ${task.command}`)
20092
+ ].join("\n");
20093
+ }
20094
+ function commandMetadataHelpText(commandName) {
20095
+ const metadata = COMMAND_METADATA[commandName];
20096
+ if (!metadata) return "";
20097
+ const lines = [];
20098
+ if (metadata.examples.length > 0) {
20099
+ lines.push("Examples:");
20100
+ for (const example of metadata.examples) {
20101
+ lines.push(` ${example.command}`);
20102
+ lines.push(` ${example.description}`);
20103
+ }
20104
+ }
20105
+ if (metadata.relatedCommands && metadata.relatedCommands.length > 0) {
20106
+ lines.push("Related:");
20107
+ lines.push(` ${metadata.relatedCommands.join(" \xB7 ")}`);
20108
+ }
20109
+ return lines.length > 0 ? `
20110
+ ${lines.join("\n")}
20111
+ ` : "";
20112
+ }
20113
+
19936
20114
  // src/render.ts
19937
20115
  function createHumanProgressState(interactive) {
19938
20116
  return {
@@ -20289,6 +20467,19 @@ Next:
20289
20467
  const summary = typeof entry.summary === "string" ? ` \u2014 ${entry.summary}` : "";
20290
20468
  opts.stdout(` ${entry.name}${summary}
20291
20469
  `);
20470
+ if (Array.isArray(entry.capabilities) && entry.capabilities.length > 0) {
20471
+ opts.stdout(` capabilities: ${entry.capabilities.join(", ")}
20472
+ `);
20473
+ }
20474
+ if (Array.isArray(entry.examples) && entry.examples.length > 0) {
20475
+ const first = entry.examples.find(
20476
+ (example) => isRecord4(example) && typeof example.command === "string"
20477
+ );
20478
+ if (isRecord4(first) && typeof first.command === "string") {
20479
+ opts.stdout(` example: ${first.command}
20480
+ `);
20481
+ }
20482
+ }
20292
20483
  }
20293
20484
  const errorCount = Array.isArray(data.errorCodes) ? data.errorCodes.length : 0;
20294
20485
  opts.stdout(`
@@ -20556,6 +20747,7 @@ var COMMON_OPTION_LONGS = /* @__PURE__ */ new Set([
20556
20747
  "--human",
20557
20748
  "--fields",
20558
20749
  "--compact",
20750
+ "--verbose",
20559
20751
  "--origin"
20560
20752
  ]);
20561
20753
  var EXIT_CODE_LEGEND = {
@@ -20594,11 +20786,18 @@ function walkCommands(command, path6, out) {
20594
20786
  }
20595
20787
  function leafCommandDoc(command, fullName) {
20596
20788
  const dataSchema = COMMAND_DATA_SCHEMAS[fullName];
20789
+ const metadata = COMMAND_METADATA[fullName] ?? {
20790
+ capabilities: [],
20791
+ examples: []
20792
+ };
20597
20793
  return {
20598
20794
  name: fullName,
20599
20795
  summary: command.description(),
20796
+ capabilities: metadata.capabilities,
20600
20797
  arguments: argumentDocs(command),
20601
20798
  options: optionDocs(command).filter((opt) => !isCommonOption(opt)),
20799
+ examples: metadata.examples,
20800
+ ...metadata.relatedCommands ? { relatedCommands: metadata.relatedCommands } : {},
20602
20801
  ...dataSchema ? { data: toJsonSchema(dataSchema) } : {}
20603
20802
  };
20604
20803
  }
@@ -22370,15 +22569,24 @@ function buildProgram({ onHelpOutput, onSelect }) {
22370
22569
  }).addHelpText(
22371
22570
  "after",
22372
22571
  `
22572
+ ${commonTasksHelpText()}
22573
+
22574
+ Transcribe:
22575
+ Local audio file recappi upload <file> --transcribe --wait
22576
+ Existing cloud recording recappi recordings retranscribe <recordingId> --wait
22577
+ (the "transcript" command only fetches an existing transcript by id.)
22578
+
22373
22579
  Agent mode:
22374
22580
  Non-TTY stdout defaults to JSON. Progress and human diagnostics go to stderr.
22375
22581
  Use --json for a single envelope or --jsonl for a terminal event stream.
22582
+ Use recappi schema --json --compact to probe commands, capabilities, examples,
22583
+ related commands, output schemas, error codes, and JSONL events.
22376
22584
  `
22377
22585
  );
22378
22586
  addCommonOptions(program);
22379
- const auth = program.command("auth").description("Authentication commands");
22587
+ const auth = program.command("auth").description("Sign in/out and check Recappi Cloud auth");
22380
22588
  addCommonOptions(auth);
22381
- const authLogin = auth.command("login").description("Sign in to Recappi Cloud with a device code").option("--no-open", "print the device URL without opening a browser");
22589
+ const authLogin = auth.command("login").description("Sign in to Recappi Cloud with a device code").option("--no-open", "print the device URL without opening a browser").addHelpText("after", commandMetadataHelpText("auth login"));
22382
22590
  addCommonOptions(authLogin);
22383
22591
  authLogin.action((opts, command) => {
22384
22592
  onSelect({
@@ -22388,7 +22596,7 @@ Agent mode:
22388
22596
  ...opts.open === false ? { noOpen: true } : {}
22389
22597
  });
22390
22598
  });
22391
- const authLogout = auth.command("logout").description("Remove the Recappi CLI sign-in token");
22599
+ const authLogout = auth.command("logout").description("Remove the Recappi CLI sign-in token").addHelpText("after", commandMetadataHelpText("auth logout"));
22392
22600
  addCommonOptions(authLogout);
22393
22601
  authLogout.action((_options, command) => {
22394
22602
  onSelect({
@@ -22397,7 +22605,7 @@ Agent mode:
22397
22605
  commandName: "auth logout"
22398
22606
  });
22399
22607
  });
22400
- const authImportMacOS = auth.command("import-macos").description("Copy the Recappi Mini macOS app session into CLI config");
22608
+ const authImportMacOS = auth.command("import-macos").description("Copy the Recappi Mini macOS app session into CLI config").addHelpText("after", commandMetadataHelpText("auth import-macos"));
22401
22609
  addCommonOptions(authImportMacOS);
22402
22610
  authImportMacOS.action((_options, command) => {
22403
22611
  onSelect({
@@ -22406,7 +22614,7 @@ Agent mode:
22406
22614
  commandName: "auth import-macos"
22407
22615
  });
22408
22616
  });
22409
- const authStatus = auth.command("status").description("Show Recappi Cloud sign-in status");
22617
+ const authStatus = auth.command("status").description("Show Recappi Cloud sign-in status").addHelpText("after", commandMetadataHelpText("auth status"));
22410
22618
  addCommonOptions(authStatus);
22411
22619
  authStatus.action((_options, command) => {
22412
22620
  onSelect({
@@ -22415,7 +22623,7 @@ Agent mode:
22415
22623
  commandName: "auth status"
22416
22624
  });
22417
22625
  });
22418
- const doctor = program.command("doctor").description("Check Recappi auth, cloud connectivity, and local audio support");
22626
+ const doctor = program.command("doctor").description("Check Recappi auth, cloud connectivity, and local audio support").addHelpText("after", commandMetadataHelpText("doctor"));
22419
22627
  addCommonOptions(doctor);
22420
22628
  doctor.action((_options, command) => {
22421
22629
  onSelect({
@@ -22424,9 +22632,9 @@ Agent mode:
22424
22632
  commandName: "doctor"
22425
22633
  });
22426
22634
  });
22427
- const account = program.command("account").description("Account and quota commands");
22635
+ const account = program.command("account").description("Show account status, quota, and usage");
22428
22636
  addCommonOptions(account);
22429
- const accountStatus = account.command("status").description("Show account, quota, and local state");
22637
+ const accountStatus = account.command("status").description("Show account, quota, and local state").addHelpText("after", commandMetadataHelpText("account status"));
22430
22638
  addCommonOptions(accountStatus);
22431
22639
  accountStatus.action((_options, command) => {
22432
22640
  onSelect({
@@ -22435,7 +22643,7 @@ Agent mode:
22435
22643
  commandName: "account status"
22436
22644
  });
22437
22645
  });
22438
- const upload = program.command("upload <file-or-dir>").description("Upload an audio file or directory to Recappi Cloud").option("--title <title>", "recording title", parseStringOption("--title")).option("--transcribe", "start transcription after upload").option("--wait", "wait for the transcription job to reach a terminal state").option("--language <lang>", "transcription language hint", parseStringOption("--language")).option("--provider <name>", "transcription provider", parseStringOption("--provider")).option("--prompt <text>", "transcription prompt/context", parseStringOption("--prompt")).option("--force", "force upload if a conflict is retryable");
22646
+ const upload = program.command("upload <file-or-dir>").description("Upload a local audio file or directory (optionally transcribe)").option("--title <title>", "recording title", parseStringOption("--title")).option("--transcribe", "start transcription after upload").option("--wait", "wait for the transcription job to reach a terminal state").option("--language <lang>", "transcription language hint", parseStringOption("--language")).option("--provider <name>", "transcription provider", parseStringOption("--provider")).option("--prompt <text>", "transcription prompt/context", parseStringOption("--prompt")).option("--force", "force upload if a conflict is retryable").addHelpText("after", commandMetadataHelpText("upload"));
22439
22647
  addCommonOptions(upload);
22440
22648
  upload.action((inputPath, opts, command) => {
22441
22649
  onSelect({
@@ -22452,7 +22660,7 @@ Agent mode:
22452
22660
  ...opts.force === true ? { force: true } : {}
22453
22661
  });
22454
22662
  });
22455
- const record2 = program.command("record").description("Start a Recappi Mini sidecar recording").option("--title <title>", "recording title", parseStringOption("--title")).option("--live", "show live captions while recording").option("--no-system-audio", "record microphone only").option("--no-microphone", "record system audio only").option(
22663
+ const record2 = program.command("record").description("Record system/mic audio via the Recappi Mini sidecar").option("--title <title>", "recording title", parseStringOption("--title")).option("--live", "show live captions while recording").option("--no-system-audio", "record microphone only").option("--no-microphone", "record system audio only").option(
22456
22664
  "--translation-language <lang>",
22457
22665
  "live caption translation language",
22458
22666
  parseStringOption("--translation-language")
@@ -22464,7 +22672,7 @@ Agent mode:
22464
22672
  "--sidecar-command <path>",
22465
22673
  "Recappi Mini sidecar executable",
22466
22674
  parseStringOption("--sidecar-command")
22467
- );
22675
+ ).addHelpText("after", commandMetadataHelpText("record"));
22468
22676
  addCommonOptions(record2);
22469
22677
  record2.action((opts, command) => {
22470
22678
  if (opts.systemAudio === false && opts.microphone === false) {
@@ -22485,11 +22693,11 @@ Agent mode:
22485
22693
  ...typeof opts.sidecarCommand === "string" ? { sidecarCommand: opts.sidecarCommand } : {}
22486
22694
  });
22487
22695
  });
22488
- const audio = program.command("audio").description("Download or open a recording audio file").argument("<recording-id>", "recording id").option("--download", "download audio and print the local path").option("--open", "download if needed, then open the audio file").option("--reveal", "download if needed, then reveal the audio file in Finder").option(
22696
+ const audio = program.command("audio").description("Download, open, or reveal a recording's audio file").argument("<recording-id>", "recording id").option("--download", "download audio and print the local path").option("--open", "download if needed, then open the audio file").option("--reveal", "download if needed, then reveal the audio file in Finder").option(
22489
22697
  "--output-dir <dir>",
22490
22698
  "directory for downloaded audio",
22491
22699
  parseStringOption("--output-dir")
22492
- );
22700
+ ).addHelpText("after", commandMetadataHelpText("audio"));
22493
22701
  addCommonOptions(audio);
22494
22702
  audio.action((recordingId, opts, command) => {
22495
22703
  onSelect({
@@ -22501,7 +22709,7 @@ Agent mode:
22501
22709
  ...opts.outputDir ? { outputDir: opts.outputDir } : {}
22502
22710
  });
22503
22711
  });
22504
- const schema = program.command("schema").description("Print the machine-readable CLI contract (commands, error codes, JSON Schemas)");
22712
+ const schema = program.command("schema").description("Print the machine-readable CLI contract (commands, error codes, JSON Schemas)").addHelpText("after", commandMetadataHelpText("schema"));
22505
22713
  addCommonOptions(schema);
22506
22714
  schema.action((_options, command) => {
22507
22715
  onSelect({
@@ -22511,9 +22719,9 @@ Agent mode:
22511
22719
  document: buildSchemaDocument(program)
22512
22720
  });
22513
22721
  });
22514
- const dashboard = program.command("dashboard").description("Dashboard data commands");
22722
+ const dashboard = program.command("dashboard").description("Fetch dashboard counters and stats");
22515
22723
  addCommonOptions(dashboard);
22516
- const dashboardStats = dashboard.command("stats").description("Fetch dashboard counters");
22724
+ const dashboardStats = dashboard.command("stats").description("Fetch dashboard counters").addHelpText("after", commandMetadataHelpText("dashboard stats"));
22517
22725
  addCommonOptions(dashboardStats);
22518
22726
  dashboardStats.action((_options, command) => {
22519
22727
  onSelect({
@@ -22522,9 +22730,9 @@ Agent mode:
22522
22730
  commandName: "dashboard stats"
22523
22731
  });
22524
22732
  });
22525
- const recordings = program.command("recordings").description("Recording commands");
22733
+ const recordings = program.command("recordings").description("List, fetch, and re-transcribe recordings");
22526
22734
  addCommonOptions(recordings);
22527
- const recordingsList = recordings.command("list").description("List recent recordings").option("--limit <n>", "number of recordings to show", parseLimitOption("--limit", 1, 100), 20).option("--cursor <cursor>", "pagination cursor", parseStringOption("--cursor")).option("--search <query>", "search recordings and transcripts", parseStringOption("--search"));
22735
+ const recordingsList = recordings.command("list").description("List recent recordings").option("--limit <n>", "number of recordings to show", parseLimitOption("--limit", 1, 100), 20).option("--cursor <cursor>", "pagination cursor", parseStringOption("--cursor")).option("--search <query>", "search recordings and transcripts", parseStringOption("--search")).addHelpText("after", commandMetadataHelpText("recordings list"));
22528
22736
  addCommonOptions(recordingsList);
22529
22737
  recordingsList.action((_options, command) => {
22530
22738
  const opts = command.opts();
@@ -22537,7 +22745,7 @@ Agent mode:
22537
22745
  ...typeof opts.search === "string" ? { search: opts.search } : {}
22538
22746
  });
22539
22747
  });
22540
- const recordingsGet = recordings.command("get <recordingId>").description("Fetch a recording by recording id");
22748
+ const recordingsGet = recordings.command("get <recordingId>").description("Fetch a recording by recording id").addHelpText("after", commandMetadataHelpText("recordings get"));
22541
22749
  addCommonOptions(recordingsGet);
22542
22750
  recordingsGet.action(
22543
22751
  (recordingId, _options, command) => {
@@ -22549,7 +22757,7 @@ Agent mode:
22549
22757
  });
22550
22758
  }
22551
22759
  );
22552
- const recordingsRetranscribe = recordings.command("retranscribe <recordingId>").description("Start a fresh transcription job for an existing recording").option("--language <lang>", "transcription language hint", parseStringOption("--language")).option("--provider <name>", "transcription provider", parseStringOption("--provider")).option("--model <name>", "transcription model", parseStringOption("--model")).option("--prompt <text>", "custom transcription prompt/context", parseStringOption("--prompt")).option("--scene <id>", "transcription scene preset", parseStringOption("--scene")).option("--wait", "wait for the transcription job to reach a terminal state");
22760
+ const recordingsRetranscribe = recordings.command("retranscribe <recordingId>").description("Start a fresh transcription job for an existing recording").option("--language <lang>", "transcription language hint", parseStringOption("--language")).option("--provider <name>", "transcription provider", parseStringOption("--provider")).option("--model <name>", "transcription model", parseStringOption("--model")).option("--prompt <text>", "custom transcription prompt/context", parseStringOption("--prompt")).option("--scene <id>", "transcription scene preset", parseStringOption("--scene")).option("--wait", "wait for the transcription job to reach a terminal state").addHelpText("after", commandMetadataHelpText("recordings retranscribe"));
22553
22761
  addCommonOptions(recordingsRetranscribe);
22554
22762
  recordingsRetranscribe.action(
22555
22763
  (recordingId, _options, command) => {
@@ -22568,9 +22776,16 @@ Agent mode:
22568
22776
  });
22569
22777
  }
22570
22778
  );
22571
- const transcript = program.command("transcript").description("Transcript commands");
22779
+ const transcript = program.command("transcript").description("Read transcripts (create via upload --transcribe or recordings retranscribe)").addHelpText(
22780
+ "after",
22781
+ `
22782
+ To create a transcript (not here):
22783
+ Local audio file recappi upload <file> --transcribe --wait
22784
+ Existing cloud recording recappi recordings retranscribe <recordingId> --wait
22785
+ `
22786
+ );
22572
22787
  addCommonOptions(transcript);
22573
- const transcriptGet = transcript.command("get <transcriptId>").description("Fetch a transcript by transcript id");
22788
+ const transcriptGet = transcript.command("get <transcriptId>").description("Fetch a transcript by transcript id").addHelpText("after", commandMetadataHelpText("transcript get"));
22574
22789
  addCommonOptions(transcriptGet);
22575
22790
  transcriptGet.action(
22576
22791
  (transcriptId, _options, command) => {
@@ -22582,7 +22797,7 @@ Agent mode:
22582
22797
  });
22583
22798
  }
22584
22799
  );
22585
- const jobs = program.command("jobs").description("Transcription job commands");
22800
+ const jobs = program.command("jobs").description("List transcription jobs and wait for one to finish");
22586
22801
  addCommonOptions(jobs);
22587
22802
  const jobsList = jobs.command("list").description("List recent transcription jobs").option(
22588
22803
  "--status <status>",
@@ -22590,6 +22805,7 @@ Agent mode:
22590
22805
  parseJobStatusOption,
22591
22806
  "all"
22592
22807
  ).option("--limit <n>", "number of jobs to show", parseLimitOption("--limit", 1, 50), 10);
22808
+ jobsList.addHelpText("after", commandMetadataHelpText("jobs list"));
22593
22809
  addCommonOptions(jobsList);
22594
22810
  jobsList.action((_options, command) => {
22595
22811
  const opts = command.opts();
@@ -22601,7 +22817,7 @@ Agent mode:
22601
22817
  limit: opts.limit ?? 10
22602
22818
  });
22603
22819
  });
22604
- const jobsWait = jobs.command("wait <jobId>").description("Wait for an existing transcription job to finish");
22820
+ const jobsWait = jobs.command("wait <jobId>").description("Wait for an existing transcription job to finish").addHelpText("after", commandMetadataHelpText("jobs wait"));
22605
22821
  addCommonOptions(jobsWait);
22606
22822
  jobsWait.action((jobId, _options, command) => {
22607
22823
  onSelect({