recappi 0.1.55 → 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 +260 -26
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -1802,7 +1802,7 @@ function RecordFrame({
|
|
|
1802
1802
|
] })
|
|
1803
1803
|
] }),
|
|
1804
1804
|
/* @__PURE__ */ jsx18(Text16, { dimColor: true, children: "\u2500".repeat(innerWidth) }),
|
|
1805
|
-
/* @__PURE__ */ jsx18(Text16, { dimColor: true, children: `q stop & save \xB7 c captions (${captionMode}) \xB7 \u2191\u2193 scroll \xB7 G live \xB7 T re-transcribe \xB7 1 overview 2 jobs 3 account` })
|
|
1805
|
+
/* @__PURE__ */ jsx18(Text16, { dimColor: true, children: recording ? `q stop & save \xB7 c captions (${captionMode}) \xB7 \u2191\u2193 scroll \xB7 G live` : `\u23CE open \xB7 T re-transcribe \xB7 c captions (${captionMode}) \xB7 \u2191\u2193 scroll \xB7 1 overview 2 jobs 3 account` })
|
|
1806
1806
|
] });
|
|
1807
1807
|
}
|
|
1808
1808
|
var trimLead2, wrappedRows2;
|
|
@@ -2540,6 +2540,11 @@ function AppShell({
|
|
|
2540
2540
|
setNotice(void 0);
|
|
2541
2541
|
};
|
|
2542
2542
|
const back = () => setStack((st) => st.length > 1 ? st.slice(0, -1) : st);
|
|
2543
|
+
const hasCurrentRecord = liveRecord?.kind === "starting" || liveRecord?.kind === "live" || liveRecord?.kind === "stopping" || liveRecord?.kind === "stopped";
|
|
2544
|
+
const openCurrentRecord = () => {
|
|
2545
|
+
setStack((st) => st[st.length - 1]?.kind === "record" ? st : [...st, { kind: "record" }]);
|
|
2546
|
+
setNotice(void 0);
|
|
2547
|
+
};
|
|
2543
2548
|
useInput8((input, key) => {
|
|
2544
2549
|
setNotice(void 0);
|
|
2545
2550
|
if (screen.kind === "recordSetup") {
|
|
@@ -2567,7 +2572,16 @@ function AppShell({
|
|
|
2567
2572
|
void stopLiveRecord();
|
|
2568
2573
|
return;
|
|
2569
2574
|
}
|
|
2570
|
-
if (
|
|
2575
|
+
if (liveRecord?.kind === "stopped" && input === "1") return goTab("overview");
|
|
2576
|
+
if (liveRecord?.kind === "stopped" && input === "2") return goTab("jobs");
|
|
2577
|
+
if (liveRecord?.kind === "stopped" && input === "3") return goTab("account");
|
|
2578
|
+
if (input === "q") {
|
|
2579
|
+
void stopLiveRecord();
|
|
2580
|
+
return;
|
|
2581
|
+
}
|
|
2582
|
+
if ((liveRecord?.kind === "stopped" || liveRecord?.kind === "error") && (key.escape || key.leftArrow)) {
|
|
2583
|
+
void stopLiveRecord();
|
|
2584
|
+
}
|
|
2571
2585
|
return;
|
|
2572
2586
|
}
|
|
2573
2587
|
if (input === "q") return exit();
|
|
@@ -2576,6 +2590,10 @@ function AppShell({
|
|
|
2576
2590
|
if (input === "2") return goTab("jobs");
|
|
2577
2591
|
if (input === "3") return goTab("account");
|
|
2578
2592
|
if (input === "n") {
|
|
2593
|
+
if (hasCurrentRecord) {
|
|
2594
|
+
openCurrentRecord();
|
|
2595
|
+
return;
|
|
2596
|
+
}
|
|
2579
2597
|
setStack((st) => [...st, { kind: "recordSetup" }]);
|
|
2580
2598
|
if (fetchRecordSetup) {
|
|
2581
2599
|
fetchRecordSetup().then((model) => {
|
|
@@ -19915,6 +19933,184 @@ function runMacOpen(args, deps) {
|
|
|
19915
19933
|
});
|
|
19916
19934
|
}
|
|
19917
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
|
+
|
|
19918
20114
|
// src/render.ts
|
|
19919
20115
|
function createHumanProgressState(interactive) {
|
|
19920
20116
|
return {
|
|
@@ -20271,6 +20467,19 @@ Next:
|
|
|
20271
20467
|
const summary = typeof entry.summary === "string" ? ` \u2014 ${entry.summary}` : "";
|
|
20272
20468
|
opts.stdout(` ${entry.name}${summary}
|
|
20273
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
|
+
}
|
|
20274
20483
|
}
|
|
20275
20484
|
const errorCount = Array.isArray(data.errorCodes) ? data.errorCodes.length : 0;
|
|
20276
20485
|
opts.stdout(`
|
|
@@ -20538,6 +20747,7 @@ var COMMON_OPTION_LONGS = /* @__PURE__ */ new Set([
|
|
|
20538
20747
|
"--human",
|
|
20539
20748
|
"--fields",
|
|
20540
20749
|
"--compact",
|
|
20750
|
+
"--verbose",
|
|
20541
20751
|
"--origin"
|
|
20542
20752
|
]);
|
|
20543
20753
|
var EXIT_CODE_LEGEND = {
|
|
@@ -20576,11 +20786,18 @@ function walkCommands(command, path6, out) {
|
|
|
20576
20786
|
}
|
|
20577
20787
|
function leafCommandDoc(command, fullName) {
|
|
20578
20788
|
const dataSchema = COMMAND_DATA_SCHEMAS[fullName];
|
|
20789
|
+
const metadata = COMMAND_METADATA[fullName] ?? {
|
|
20790
|
+
capabilities: [],
|
|
20791
|
+
examples: []
|
|
20792
|
+
};
|
|
20579
20793
|
return {
|
|
20580
20794
|
name: fullName,
|
|
20581
20795
|
summary: command.description(),
|
|
20796
|
+
capabilities: metadata.capabilities,
|
|
20582
20797
|
arguments: argumentDocs(command),
|
|
20583
20798
|
options: optionDocs(command).filter((opt) => !isCommonOption(opt)),
|
|
20799
|
+
examples: metadata.examples,
|
|
20800
|
+
...metadata.relatedCommands ? { relatedCommands: metadata.relatedCommands } : {},
|
|
20584
20801
|
...dataSchema ? { data: toJsonSchema(dataSchema) } : {}
|
|
20585
20802
|
};
|
|
20586
20803
|
}
|
|
@@ -22352,15 +22569,24 @@ function buildProgram({ onHelpOutput, onSelect }) {
|
|
|
22352
22569
|
}).addHelpText(
|
|
22353
22570
|
"after",
|
|
22354
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
|
+
|
|
22355
22579
|
Agent mode:
|
|
22356
22580
|
Non-TTY stdout defaults to JSON. Progress and human diagnostics go to stderr.
|
|
22357
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.
|
|
22358
22584
|
`
|
|
22359
22585
|
);
|
|
22360
22586
|
addCommonOptions(program);
|
|
22361
|
-
const auth = program.command("auth").description("
|
|
22587
|
+
const auth = program.command("auth").description("Sign in/out and check Recappi Cloud auth");
|
|
22362
22588
|
addCommonOptions(auth);
|
|
22363
|
-
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"));
|
|
22364
22590
|
addCommonOptions(authLogin);
|
|
22365
22591
|
authLogin.action((opts, command) => {
|
|
22366
22592
|
onSelect({
|
|
@@ -22370,7 +22596,7 @@ Agent mode:
|
|
|
22370
22596
|
...opts.open === false ? { noOpen: true } : {}
|
|
22371
22597
|
});
|
|
22372
22598
|
});
|
|
22373
|
-
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"));
|
|
22374
22600
|
addCommonOptions(authLogout);
|
|
22375
22601
|
authLogout.action((_options, command) => {
|
|
22376
22602
|
onSelect({
|
|
@@ -22379,7 +22605,7 @@ Agent mode:
|
|
|
22379
22605
|
commandName: "auth logout"
|
|
22380
22606
|
});
|
|
22381
22607
|
});
|
|
22382
|
-
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"));
|
|
22383
22609
|
addCommonOptions(authImportMacOS);
|
|
22384
22610
|
authImportMacOS.action((_options, command) => {
|
|
22385
22611
|
onSelect({
|
|
@@ -22388,7 +22614,7 @@ Agent mode:
|
|
|
22388
22614
|
commandName: "auth import-macos"
|
|
22389
22615
|
});
|
|
22390
22616
|
});
|
|
22391
|
-
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"));
|
|
22392
22618
|
addCommonOptions(authStatus);
|
|
22393
22619
|
authStatus.action((_options, command) => {
|
|
22394
22620
|
onSelect({
|
|
@@ -22397,7 +22623,7 @@ Agent mode:
|
|
|
22397
22623
|
commandName: "auth status"
|
|
22398
22624
|
});
|
|
22399
22625
|
});
|
|
22400
|
-
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"));
|
|
22401
22627
|
addCommonOptions(doctor);
|
|
22402
22628
|
doctor.action((_options, command) => {
|
|
22403
22629
|
onSelect({
|
|
@@ -22406,9 +22632,9 @@ Agent mode:
|
|
|
22406
22632
|
commandName: "doctor"
|
|
22407
22633
|
});
|
|
22408
22634
|
});
|
|
22409
|
-
const account = program.command("account").description("
|
|
22635
|
+
const account = program.command("account").description("Show account status, quota, and usage");
|
|
22410
22636
|
addCommonOptions(account);
|
|
22411
|
-
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"));
|
|
22412
22638
|
addCommonOptions(accountStatus);
|
|
22413
22639
|
accountStatus.action((_options, command) => {
|
|
22414
22640
|
onSelect({
|
|
@@ -22417,7 +22643,7 @@ Agent mode:
|
|
|
22417
22643
|
commandName: "account status"
|
|
22418
22644
|
});
|
|
22419
22645
|
});
|
|
22420
|
-
const upload = program.command("upload <file-or-dir>").description("Upload
|
|
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"));
|
|
22421
22647
|
addCommonOptions(upload);
|
|
22422
22648
|
upload.action((inputPath, opts, command) => {
|
|
22423
22649
|
onSelect({
|
|
@@ -22434,7 +22660,7 @@ Agent mode:
|
|
|
22434
22660
|
...opts.force === true ? { force: true } : {}
|
|
22435
22661
|
});
|
|
22436
22662
|
});
|
|
22437
|
-
const record2 = program.command("record").description("
|
|
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(
|
|
22438
22664
|
"--translation-language <lang>",
|
|
22439
22665
|
"live caption translation language",
|
|
22440
22666
|
parseStringOption("--translation-language")
|
|
@@ -22446,7 +22672,7 @@ Agent mode:
|
|
|
22446
22672
|
"--sidecar-command <path>",
|
|
22447
22673
|
"Recappi Mini sidecar executable",
|
|
22448
22674
|
parseStringOption("--sidecar-command")
|
|
22449
|
-
);
|
|
22675
|
+
).addHelpText("after", commandMetadataHelpText("record"));
|
|
22450
22676
|
addCommonOptions(record2);
|
|
22451
22677
|
record2.action((opts, command) => {
|
|
22452
22678
|
if (opts.systemAudio === false && opts.microphone === false) {
|
|
@@ -22467,11 +22693,11 @@ Agent mode:
|
|
|
22467
22693
|
...typeof opts.sidecarCommand === "string" ? { sidecarCommand: opts.sidecarCommand } : {}
|
|
22468
22694
|
});
|
|
22469
22695
|
});
|
|
22470
|
-
const audio = program.command("audio").description("Download or
|
|
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(
|
|
22471
22697
|
"--output-dir <dir>",
|
|
22472
22698
|
"directory for downloaded audio",
|
|
22473
22699
|
parseStringOption("--output-dir")
|
|
22474
|
-
);
|
|
22700
|
+
).addHelpText("after", commandMetadataHelpText("audio"));
|
|
22475
22701
|
addCommonOptions(audio);
|
|
22476
22702
|
audio.action((recordingId, opts, command) => {
|
|
22477
22703
|
onSelect({
|
|
@@ -22483,7 +22709,7 @@ Agent mode:
|
|
|
22483
22709
|
...opts.outputDir ? { outputDir: opts.outputDir } : {}
|
|
22484
22710
|
});
|
|
22485
22711
|
});
|
|
22486
|
-
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"));
|
|
22487
22713
|
addCommonOptions(schema);
|
|
22488
22714
|
schema.action((_options, command) => {
|
|
22489
22715
|
onSelect({
|
|
@@ -22493,9 +22719,9 @@ Agent mode:
|
|
|
22493
22719
|
document: buildSchemaDocument(program)
|
|
22494
22720
|
});
|
|
22495
22721
|
});
|
|
22496
|
-
const dashboard = program.command("dashboard").description("
|
|
22722
|
+
const dashboard = program.command("dashboard").description("Fetch dashboard counters and stats");
|
|
22497
22723
|
addCommonOptions(dashboard);
|
|
22498
|
-
const dashboardStats = dashboard.command("stats").description("Fetch dashboard counters");
|
|
22724
|
+
const dashboardStats = dashboard.command("stats").description("Fetch dashboard counters").addHelpText("after", commandMetadataHelpText("dashboard stats"));
|
|
22499
22725
|
addCommonOptions(dashboardStats);
|
|
22500
22726
|
dashboardStats.action((_options, command) => {
|
|
22501
22727
|
onSelect({
|
|
@@ -22504,9 +22730,9 @@ Agent mode:
|
|
|
22504
22730
|
commandName: "dashboard stats"
|
|
22505
22731
|
});
|
|
22506
22732
|
});
|
|
22507
|
-
const recordings = program.command("recordings").description("
|
|
22733
|
+
const recordings = program.command("recordings").description("List, fetch, and re-transcribe recordings");
|
|
22508
22734
|
addCommonOptions(recordings);
|
|
22509
|
-
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"));
|
|
22510
22736
|
addCommonOptions(recordingsList);
|
|
22511
22737
|
recordingsList.action((_options, command) => {
|
|
22512
22738
|
const opts = command.opts();
|
|
@@ -22519,7 +22745,7 @@ Agent mode:
|
|
|
22519
22745
|
...typeof opts.search === "string" ? { search: opts.search } : {}
|
|
22520
22746
|
});
|
|
22521
22747
|
});
|
|
22522
|
-
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"));
|
|
22523
22749
|
addCommonOptions(recordingsGet);
|
|
22524
22750
|
recordingsGet.action(
|
|
22525
22751
|
(recordingId, _options, command) => {
|
|
@@ -22531,7 +22757,7 @@ Agent mode:
|
|
|
22531
22757
|
});
|
|
22532
22758
|
}
|
|
22533
22759
|
);
|
|
22534
|
-
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"));
|
|
22535
22761
|
addCommonOptions(recordingsRetranscribe);
|
|
22536
22762
|
recordingsRetranscribe.action(
|
|
22537
22763
|
(recordingId, _options, command) => {
|
|
@@ -22550,9 +22776,16 @@ Agent mode:
|
|
|
22550
22776
|
});
|
|
22551
22777
|
}
|
|
22552
22778
|
);
|
|
22553
|
-
const transcript = program.command("transcript").description("
|
|
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
|
+
);
|
|
22554
22787
|
addCommonOptions(transcript);
|
|
22555
|
-
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"));
|
|
22556
22789
|
addCommonOptions(transcriptGet);
|
|
22557
22790
|
transcriptGet.action(
|
|
22558
22791
|
(transcriptId, _options, command) => {
|
|
@@ -22564,7 +22797,7 @@ Agent mode:
|
|
|
22564
22797
|
});
|
|
22565
22798
|
}
|
|
22566
22799
|
);
|
|
22567
|
-
const jobs = program.command("jobs").description("
|
|
22800
|
+
const jobs = program.command("jobs").description("List transcription jobs and wait for one to finish");
|
|
22568
22801
|
addCommonOptions(jobs);
|
|
22569
22802
|
const jobsList = jobs.command("list").description("List recent transcription jobs").option(
|
|
22570
22803
|
"--status <status>",
|
|
@@ -22572,6 +22805,7 @@ Agent mode:
|
|
|
22572
22805
|
parseJobStatusOption,
|
|
22573
22806
|
"all"
|
|
22574
22807
|
).option("--limit <n>", "number of jobs to show", parseLimitOption("--limit", 1, 50), 10);
|
|
22808
|
+
jobsList.addHelpText("after", commandMetadataHelpText("jobs list"));
|
|
22575
22809
|
addCommonOptions(jobsList);
|
|
22576
22810
|
jobsList.action((_options, command) => {
|
|
22577
22811
|
const opts = command.opts();
|
|
@@ -22583,7 +22817,7 @@ Agent mode:
|
|
|
22583
22817
|
limit: opts.limit ?? 10
|
|
22584
22818
|
});
|
|
22585
22819
|
});
|
|
22586
|
-
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"));
|
|
22587
22821
|
addCommonOptions(jobsWait);
|
|
22588
22822
|
jobsWait.action((jobId, _options, command) => {
|
|
22589
22823
|
onSelect({
|