@bland-ai/cli 0.1.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.
- package/dist/commands/agent.d.ts +3 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +143 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/alarm.d.ts +3 -0
- package/dist/commands/alarm.d.ts.map +1 -0
- package/dist/commands/alarm.js +92 -0
- package/dist/commands/alarm.js.map +1 -0
- package/dist/commands/audio.d.ts +3 -0
- package/dist/commands/audio.d.ts.map +1 -0
- package/dist/commands/audio.js +77 -0
- package/dist/commands/audio.js.map +1 -0
- package/dist/commands/auth.d.ts +3 -0
- package/dist/commands/auth.d.ts.map +1 -0
- package/dist/commands/auth.js +199 -0
- package/dist/commands/auth.js.map +1 -0
- package/dist/commands/batch.d.ts +3 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +108 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/call.d.ts +3 -0
- package/dist/commands/call.d.ts.map +1 -0
- package/dist/commands/call.js +348 -0
- package/dist/commands/call.js.map +1 -0
- package/dist/commands/eval.d.ts +3 -0
- package/dist/commands/eval.d.ts.map +1 -0
- package/dist/commands/eval.js +66 -0
- package/dist/commands/eval.js.map +1 -0
- package/dist/commands/guard.d.ts +3 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +100 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/knowledge.d.ts +3 -0
- package/dist/commands/knowledge.d.ts.map +1 -0
- package/dist/commands/knowledge.js +136 -0
- package/dist/commands/knowledge.js.map +1 -0
- package/dist/commands/listen.d.ts +3 -0
- package/dist/commands/listen.d.ts.map +1 -0
- package/dist/commands/listen.js +98 -0
- package/dist/commands/listen.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +22 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/number.d.ts +3 -0
- package/dist/commands/number.d.ts.map +1 -0
- package/dist/commands/number.js +225 -0
- package/dist/commands/number.js.map +1 -0
- package/dist/commands/pathway.d.ts +3 -0
- package/dist/commands/pathway.d.ts.map +1 -0
- package/dist/commands/pathway.js +977 -0
- package/dist/commands/pathway.js.map +1 -0
- package/dist/commands/persona.d.ts +3 -0
- package/dist/commands/persona.d.ts.map +1 -0
- package/dist/commands/persona.js +234 -0
- package/dist/commands/persona.js.map +1 -0
- package/dist/commands/release.d.ts +3 -0
- package/dist/commands/release.d.ts.map +1 -0
- package/dist/commands/release.js +67 -0
- package/dist/commands/release.js.map +1 -0
- package/dist/commands/secret.d.ts +3 -0
- package/dist/commands/secret.d.ts.map +1 -0
- package/dist/commands/secret.js +57 -0
- package/dist/commands/secret.js.map +1 -0
- package/dist/commands/sip.d.ts +3 -0
- package/dist/commands/sip.d.ts.map +1 -0
- package/dist/commands/sip.js +45 -0
- package/dist/commands/sip.js.map +1 -0
- package/dist/commands/sms.d.ts +3 -0
- package/dist/commands/sms.d.ts.map +1 -0
- package/dist/commands/sms.js +83 -0
- package/dist/commands/sms.js.map +1 -0
- package/dist/commands/tool.d.ts +3 -0
- package/dist/commands/tool.d.ts.map +1 -0
- package/dist/commands/tool.js +200 -0
- package/dist/commands/tool.js.map +1 -0
- package/dist/commands/voice.d.ts +3 -0
- package/dist/commands/voice.d.ts.map +1 -0
- package/dist/commands/voice.js +95 -0
- package/dist/commands/voice.js.map +1 -0
- package/dist/commands/widget.d.ts +3 -0
- package/dist/commands/widget.d.ts.map +1 -0
- package/dist/commands/widget.js +77 -0
- package/dist/commands/widget.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +52 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/api.d.ts +17 -0
- package/dist/lib/api.d.ts.map +1 -0
- package/dist/lib/api.js +89 -0
- package/dist/lib/api.js.map +1 -0
- package/dist/lib/config.d.ts +16 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +117 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +15 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +43 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/output.d.ts +30 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +131 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/lib/pathway-file.d.ts +31 -0
- package/dist/lib/pathway-file.d.ts.map +1 -0
- package/dist/lib/pathway-file.js +236 -0
- package/dist/lib/pathway-file.js.map +1 -0
- package/dist/mcp/server.d.ts +2 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +375 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/types/api.d.ts +302 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +2 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +14 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +2 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/pathway.d.ts +55 -0
- package/dist/types/pathway.d.ts.map +1 -0
- package/dist/types/pathway.js +2 -0
- package/dist/types/pathway.js.map +1 -0
- package/package.json +51 -0
- package/templates/pathway.yaml +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiH3D"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { input, confirm } from "@inquirer/prompts";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { api } from "../lib/api.js";
|
|
5
|
+
import * as output from "../lib/output.js";
|
|
6
|
+
import { handleError } from "../lib/errors.js";
|
|
7
|
+
export function registerAgentCommand(program) {
|
|
8
|
+
const agent = program
|
|
9
|
+
.command("agent")
|
|
10
|
+
.description("Manage web agents");
|
|
11
|
+
agent.command("list")
|
|
12
|
+
.description("List agents")
|
|
13
|
+
.option("--json", "Output as JSON")
|
|
14
|
+
.action(async (opts) => {
|
|
15
|
+
try {
|
|
16
|
+
const spinner = ora("Fetching agents...").start();
|
|
17
|
+
const agents = await api.get("/v1/agents");
|
|
18
|
+
spinner.stop();
|
|
19
|
+
if (opts.json) {
|
|
20
|
+
output.json(agents);
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
output.table((agents || []).map((a) => ({
|
|
24
|
+
...a,
|
|
25
|
+
voice_display: a.voice || chalk.dim("default"),
|
|
26
|
+
model_display: a.model || "base",
|
|
27
|
+
})), [
|
|
28
|
+
{ key: "agent_id", header: "ID", width: 38 },
|
|
29
|
+
{ key: "voice_display", header: "Voice", width: 12 },
|
|
30
|
+
{ key: "model_display", header: "Model", width: 8 },
|
|
31
|
+
{ key: "language", header: "Lang", width: 6 },
|
|
32
|
+
]);
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
handleError(err);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
agent.command("get")
|
|
39
|
+
.description("Get agent details")
|
|
40
|
+
.argument("<id>", "Agent ID")
|
|
41
|
+
.option("--json", "Output as JSON")
|
|
42
|
+
.action(async (id, opts) => {
|
|
43
|
+
try {
|
|
44
|
+
const spinner = ora("Fetching agent...").start();
|
|
45
|
+
const a = await api.get(`/v1/agents/${id}`);
|
|
46
|
+
spinner.stop();
|
|
47
|
+
if (opts.json) {
|
|
48
|
+
output.json(a);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
output.detail([
|
|
52
|
+
["ID", a.agent_id],
|
|
53
|
+
["Voice", a.voice || "default"],
|
|
54
|
+
["Model", a.model || "base"],
|
|
55
|
+
["Language", a.language || "ENG"],
|
|
56
|
+
["Pathway", a.pathway_id || "—"],
|
|
57
|
+
["Webhook", a.webhook || "—"],
|
|
58
|
+
]);
|
|
59
|
+
if (a.prompt) {
|
|
60
|
+
output.header("Prompt");
|
|
61
|
+
console.log(` ${a.prompt}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
handleError(err);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
agent.command("create")
|
|
69
|
+
.description("Create a new agent")
|
|
70
|
+
.option("--prompt <text>", "Agent prompt")
|
|
71
|
+
.option("--voice <voice>", "Voice")
|
|
72
|
+
.option("--pathway <id>", "Pathway ID")
|
|
73
|
+
.option("--model <model>", "Model: base or turbo")
|
|
74
|
+
.option("--json", "Output as JSON")
|
|
75
|
+
.action(async (opts) => {
|
|
76
|
+
try {
|
|
77
|
+
const body = {};
|
|
78
|
+
if (opts.prompt)
|
|
79
|
+
body.prompt = opts.prompt;
|
|
80
|
+
else {
|
|
81
|
+
const prompt = await input({ message: "Agent prompt:" });
|
|
82
|
+
body.prompt = prompt;
|
|
83
|
+
}
|
|
84
|
+
if (opts.voice)
|
|
85
|
+
body.voice = opts.voice;
|
|
86
|
+
if (opts.pathway)
|
|
87
|
+
body.pathway_id = opts.pathway;
|
|
88
|
+
if (opts.model)
|
|
89
|
+
body.model = opts.model;
|
|
90
|
+
const spinner = ora("Creating agent...").start();
|
|
91
|
+
const result = await api.post("/v1/agents", body);
|
|
92
|
+
spinner.succeed(`Agent created ${chalk.dim(`(${result.agent_id})`)}`);
|
|
93
|
+
if (opts.json)
|
|
94
|
+
output.json(result);
|
|
95
|
+
}
|
|
96
|
+
catch (err) {
|
|
97
|
+
handleError(err);
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
agent.command("update")
|
|
101
|
+
.description("Update an agent")
|
|
102
|
+
.argument("<id>", "Agent ID")
|
|
103
|
+
.option("--prompt <text>", "New prompt")
|
|
104
|
+
.option("--voice <voice>", "New voice")
|
|
105
|
+
.option("--pathway <id>", "New pathway")
|
|
106
|
+
.option("--json", "Output as JSON")
|
|
107
|
+
.action(async (id, opts) => {
|
|
108
|
+
try {
|
|
109
|
+
const body = {};
|
|
110
|
+
if (opts.prompt)
|
|
111
|
+
body.prompt = opts.prompt;
|
|
112
|
+
if (opts.voice)
|
|
113
|
+
body.voice = opts.voice;
|
|
114
|
+
if (opts.pathway)
|
|
115
|
+
body.pathway_id = opts.pathway;
|
|
116
|
+
const spinner = ora("Updating...").start();
|
|
117
|
+
const result = await api.post(`/v1/agents/${id}`, body);
|
|
118
|
+
spinner.succeed("Agent updated.");
|
|
119
|
+
if (opts.json)
|
|
120
|
+
output.json(result);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
handleError(err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
agent.command("delete")
|
|
127
|
+
.description("Delete an agent")
|
|
128
|
+
.argument("<id>", "Agent ID")
|
|
129
|
+
.action(async (id) => {
|
|
130
|
+
try {
|
|
131
|
+
const proceed = await confirm({ message: `Delete agent ${id}?` });
|
|
132
|
+
if (!proceed)
|
|
133
|
+
return;
|
|
134
|
+
const spinner = ora("Deleting...").start();
|
|
135
|
+
await api.delete(`/v1/agents/${id}`);
|
|
136
|
+
spinner.succeed("Agent deleted.");
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
handleError(err);
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alarm.d.ts","sourceRoot":"","sources":["../../src/commands/alarm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4E3D"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { select, input, confirm } from "@inquirer/prompts";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { api } from "../lib/api.js";
|
|
5
|
+
import * as output from "../lib/output.js";
|
|
6
|
+
import { handleError } from "../lib/errors.js";
|
|
7
|
+
export function registerAlarmCommand(program) {
|
|
8
|
+
const alarm = program.command("alarm").description("Manage monitoring alarms");
|
|
9
|
+
alarm.command("list")
|
|
10
|
+
.description("List alarms")
|
|
11
|
+
.option("--json", "Output as JSON")
|
|
12
|
+
.action(async (opts) => {
|
|
13
|
+
try {
|
|
14
|
+
const spinner = ora("Fetching...").start();
|
|
15
|
+
const alarms = await api.get("/v1/alarms");
|
|
16
|
+
spinner.stop();
|
|
17
|
+
if (opts.json) {
|
|
18
|
+
output.json(alarms);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
output.table((alarms || []).map((a) => ({
|
|
22
|
+
...a,
|
|
23
|
+
enabled_display: a.enabled ? chalk.green("enabled") : chalk.dim("disabled"),
|
|
24
|
+
})), [
|
|
25
|
+
{ key: "id", header: "ID", width: 38 },
|
|
26
|
+
{ key: "metric_type", header: "Metric", width: 15 },
|
|
27
|
+
{ key: "threshold", header: "Threshold", width: 10 },
|
|
28
|
+
{ key: "enabled_display", header: "Status", width: 10 },
|
|
29
|
+
]);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
handleError(err);
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
alarm.command("create")
|
|
36
|
+
.description("Create an alarm")
|
|
37
|
+
.option("--metric <type>", "Metric: latency, api_errors, call_length")
|
|
38
|
+
.option("--threshold <n>", "Threshold value")
|
|
39
|
+
.option("--webhook <url>", "Webhook URL for notifications")
|
|
40
|
+
.option("--email <addr>", "Email for notifications")
|
|
41
|
+
.option("--sms <number>", "SMS number for notifications")
|
|
42
|
+
.option("--json", "Output as JSON")
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
try {
|
|
45
|
+
const body = {};
|
|
46
|
+
body.metric_type = opts.metric || await select({
|
|
47
|
+
message: "Metric to monitor:",
|
|
48
|
+
choices: [
|
|
49
|
+
{ name: "Latency", value: "latency" },
|
|
50
|
+
{ name: "API Errors", value: "api_errors" },
|
|
51
|
+
{ name: "Call Length", value: "call_length" },
|
|
52
|
+
],
|
|
53
|
+
});
|
|
54
|
+
const threshold = opts.threshold || await input({
|
|
55
|
+
message: "Threshold (0.5=sensitive, 1.0=normal, 2.0=relaxed):",
|
|
56
|
+
default: "1.0",
|
|
57
|
+
});
|
|
58
|
+
body.threshold = parseFloat(threshold);
|
|
59
|
+
if (opts.webhook)
|
|
60
|
+
body.webhook_config = { url: opts.webhook };
|
|
61
|
+
if (opts.email)
|
|
62
|
+
body.email_addresses = [opts.email];
|
|
63
|
+
if (opts.sms)
|
|
64
|
+
body.sms_numbers = [opts.sms];
|
|
65
|
+
const spinner = ora("Creating alarm...").start();
|
|
66
|
+
const result = await api.post("/v1/alarms", body);
|
|
67
|
+
spinner.succeed(`Alarm created ${chalk.dim(`(${result.id})`)}`);
|
|
68
|
+
if (opts.json)
|
|
69
|
+
output.json(result);
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
handleError(err);
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
alarm.command("delete")
|
|
76
|
+
.description("Delete an alarm")
|
|
77
|
+
.argument("<id>", "Alarm ID")
|
|
78
|
+
.action(async (id) => {
|
|
79
|
+
try {
|
|
80
|
+
const proceed = await confirm({ message: `Delete alarm ${id}?` });
|
|
81
|
+
if (!proceed)
|
|
82
|
+
return;
|
|
83
|
+
const spinner = ora("Deleting...").start();
|
|
84
|
+
await api.delete(`/v1/alarms/${id}`);
|
|
85
|
+
spinner.succeed("Alarm deleted.");
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
handleError(err);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=alarm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alarm.js","sourceRoot":"","sources":["../../src/commands/alarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.d.ts","sourceRoot":"","sources":["../../src/commands/audio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAQpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiE3D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import chalk from "chalk";
|
|
2
|
+
import ora from "ora";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import { request } from "../lib/api.js";
|
|
5
|
+
import * as output from "../lib/output.js";
|
|
6
|
+
import { handleError } from "../lib/errors.js";
|
|
7
|
+
export function registerAudioCommand(program) {
|
|
8
|
+
const audio = program.command("audio").description("Generate and analyze audio");
|
|
9
|
+
audio.command("generate")
|
|
10
|
+
.description("Generate TTS audio from text")
|
|
11
|
+
.argument("<text>", "Text to convert to speech")
|
|
12
|
+
.option("--voice <voice>", "Voice to use", "nat")
|
|
13
|
+
.option("-o, --output <file>", "Output file path")
|
|
14
|
+
.option("--json", "Output as JSON")
|
|
15
|
+
.action(async (text, opts) => {
|
|
16
|
+
try {
|
|
17
|
+
const spinner = ora("Generating audio...").start();
|
|
18
|
+
const result = await request("/v1/speak", {
|
|
19
|
+
method: "POST",
|
|
20
|
+
body: { text, voice: opts.voice },
|
|
21
|
+
});
|
|
22
|
+
spinner.stop();
|
|
23
|
+
const audioUrl = result.url || result.audio_url;
|
|
24
|
+
if (opts.json) {
|
|
25
|
+
output.json(result);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (opts.output && audioUrl) {
|
|
29
|
+
const response = await fetch(audioUrl);
|
|
30
|
+
const buffer = Buffer.from(await response.arrayBuffer());
|
|
31
|
+
fs.writeFileSync(opts.output, buffer);
|
|
32
|
+
output.success(`Audio saved to ${opts.output}`);
|
|
33
|
+
}
|
|
34
|
+
else if (audioUrl) {
|
|
35
|
+
output.success("Audio generated.");
|
|
36
|
+
console.log(` ${audioUrl}`);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
output.success("Audio generated.");
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
handleError(err);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
audio.command("analyze")
|
|
47
|
+
.description("Analyze an audio file")
|
|
48
|
+
.argument("<file>", "Audio file path")
|
|
49
|
+
.option("--transcribe", "Include transcription")
|
|
50
|
+
.option("--json", "Output as JSON")
|
|
51
|
+
.action(async (file, opts) => {
|
|
52
|
+
try {
|
|
53
|
+
if (!fs.existsSync(file)) {
|
|
54
|
+
console.error(chalk.red(`File not found: ${file}`));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
const spinner = ora("Analyzing audio...").start();
|
|
58
|
+
const result = await request("/v1/audio/analyze", {
|
|
59
|
+
method: "POST",
|
|
60
|
+
body: {
|
|
61
|
+
file_path: file,
|
|
62
|
+
transcribe: opts.transcribe,
|
|
63
|
+
},
|
|
64
|
+
});
|
|
65
|
+
spinner.stop();
|
|
66
|
+
if (opts.json) {
|
|
67
|
+
output.json(result);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
output.json(result);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
handleError(err);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audio.js","sourceRoot":"","sources":["../../src/commands/audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6N1D"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { input, select, confirm } from "@inquirer/prompts";
|
|
2
|
+
import chalk from "chalk";
|
|
3
|
+
import ora from "ora";
|
|
4
|
+
import { api } from "../lib/api.js";
|
|
5
|
+
import { saveApiKey, getProfiles, getCurrentProfileName, switchProfile, deleteProfile, clearAuth, isAuthenticated, } from "../lib/config.js";
|
|
6
|
+
import * as output from "../lib/output.js";
|
|
7
|
+
import { handleError } from "../lib/errors.js";
|
|
8
|
+
export function registerAuthCommand(program) {
|
|
9
|
+
const auth = program
|
|
10
|
+
.command("auth")
|
|
11
|
+
.description("Manage authentication and API keys");
|
|
12
|
+
// ── bland auth login ──
|
|
13
|
+
auth
|
|
14
|
+
.command("login")
|
|
15
|
+
.description("Authenticate with Bland AI")
|
|
16
|
+
.option("-k, --key <key>", "API key (skip interactive prompt)")
|
|
17
|
+
.option("-p, --profile <name>", "Profile name", "default")
|
|
18
|
+
.option("--base-url <url>", "Custom API base URL")
|
|
19
|
+
.action(async (opts) => {
|
|
20
|
+
try {
|
|
21
|
+
let apiKey = opts.key;
|
|
22
|
+
if (!apiKey) {
|
|
23
|
+
console.log();
|
|
24
|
+
console.log(chalk.bold("Authenticate with Bland AI"));
|
|
25
|
+
console.log(chalk.dim("Get your API key from https://app.bland.ai/dashboard/settings"));
|
|
26
|
+
console.log();
|
|
27
|
+
apiKey = await input({
|
|
28
|
+
message: "Enter your API key:",
|
|
29
|
+
validate: (val) => val.trim().length > 0 || "API key is required",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const spinner = ora("Verifying API key...").start();
|
|
33
|
+
// Save temporarily to test
|
|
34
|
+
saveApiKey(apiKey.trim(), opts.profile, opts.baseUrl);
|
|
35
|
+
try {
|
|
36
|
+
const account = await api.get("/v1/me");
|
|
37
|
+
spinner.succeed("Authenticated successfully");
|
|
38
|
+
console.log();
|
|
39
|
+
output.detail([
|
|
40
|
+
["Profile", opts.profile],
|
|
41
|
+
["Status", account.status],
|
|
42
|
+
["Balance", `$${account.billing.current_balance.toFixed(2)}`],
|
|
43
|
+
["Total Calls", account.total_calls],
|
|
44
|
+
]);
|
|
45
|
+
}
|
|
46
|
+
catch (err) {
|
|
47
|
+
spinner.fail("Invalid API key");
|
|
48
|
+
clearAuth();
|
|
49
|
+
throw err;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
handleError(err);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
// ── bland auth logout ──
|
|
57
|
+
auth
|
|
58
|
+
.command("logout")
|
|
59
|
+
.description("Clear stored credentials")
|
|
60
|
+
.option("-p, --profile <name>", "Specific profile to remove")
|
|
61
|
+
.option("-a, --all", "Remove all profiles")
|
|
62
|
+
.action(async (opts) => {
|
|
63
|
+
try {
|
|
64
|
+
if (opts.all) {
|
|
65
|
+
const yes = await confirm({
|
|
66
|
+
message: "Remove all stored credentials?",
|
|
67
|
+
});
|
|
68
|
+
if (yes) {
|
|
69
|
+
clearAuth();
|
|
70
|
+
output.success("All credentials removed.");
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
else if (opts.profile) {
|
|
74
|
+
deleteProfile(opts.profile);
|
|
75
|
+
output.success(`Profile "${opts.profile}" removed.`);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
const current = getCurrentProfileName();
|
|
79
|
+
deleteProfile(current);
|
|
80
|
+
output.success(`Profile "${current}" removed.`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
handleError(err);
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
// ── bland auth whoami ──
|
|
88
|
+
auth
|
|
89
|
+
.command("whoami")
|
|
90
|
+
.description("Show current account info")
|
|
91
|
+
.option("--json", "Output as JSON")
|
|
92
|
+
.action(async (opts) => {
|
|
93
|
+
try {
|
|
94
|
+
if (!isAuthenticated()) {
|
|
95
|
+
console.log(chalk.yellow("Not authenticated. Run `bland auth login` to get started."));
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
const spinner = ora("Fetching account info...").start();
|
|
99
|
+
const account = await api.get("/v1/me");
|
|
100
|
+
spinner.stop();
|
|
101
|
+
if (opts.json) {
|
|
102
|
+
output.json({
|
|
103
|
+
profile: getCurrentProfileName(),
|
|
104
|
+
...account,
|
|
105
|
+
});
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
console.log();
|
|
109
|
+
output.detail([
|
|
110
|
+
["Profile", getCurrentProfileName()],
|
|
111
|
+
["Status", account.status],
|
|
112
|
+
["Balance", `$${account.billing.current_balance.toFixed(2)}`],
|
|
113
|
+
[
|
|
114
|
+
"Auto-Refill",
|
|
115
|
+
account.billing.refill_to
|
|
116
|
+
? `$${account.billing.refill_to}`
|
|
117
|
+
: "disabled",
|
|
118
|
+
],
|
|
119
|
+
["Total Calls", account.total_calls],
|
|
120
|
+
]);
|
|
121
|
+
}
|
|
122
|
+
catch (err) {
|
|
123
|
+
handleError(err);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
// ── bland auth switch ──
|
|
127
|
+
auth
|
|
128
|
+
.command("switch")
|
|
129
|
+
.description("Switch between stored profiles")
|
|
130
|
+
.argument("[profile]", "Profile name to switch to")
|
|
131
|
+
.action(async (profileArg) => {
|
|
132
|
+
try {
|
|
133
|
+
const profiles = getProfiles();
|
|
134
|
+
const profileNames = Object.keys(profiles);
|
|
135
|
+
if (profileNames.length === 0) {
|
|
136
|
+
console.log(chalk.yellow("No profiles found. Run `bland auth login` to create one."));
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
let target = profileArg;
|
|
140
|
+
if (!target) {
|
|
141
|
+
const current = getCurrentProfileName();
|
|
142
|
+
target = await select({
|
|
143
|
+
message: "Select profile:",
|
|
144
|
+
choices: profileNames.map((name) => ({
|
|
145
|
+
name: name === current ? `${name} ${chalk.dim("(current)")}` : name,
|
|
146
|
+
value: name,
|
|
147
|
+
})),
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
switchProfile(target);
|
|
151
|
+
output.success(`Switched to profile "${target}"`);
|
|
152
|
+
// Show account info for the switched profile
|
|
153
|
+
const spinner = ora("Verifying...").start();
|
|
154
|
+
try {
|
|
155
|
+
const account = await api.get("/v1/me");
|
|
156
|
+
spinner.stop();
|
|
157
|
+
output.detail([
|
|
158
|
+
["Status", account.status],
|
|
159
|
+
["Balance", `$${account.billing.current_balance.toFixed(2)}`],
|
|
160
|
+
]);
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
spinner.warn("Could not verify profile. The API key may be invalid.");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
handleError(err);
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
// ── bland auth profiles ──
|
|
171
|
+
auth
|
|
172
|
+
.command("profiles")
|
|
173
|
+
.description("List all stored profiles")
|
|
174
|
+
.action(() => {
|
|
175
|
+
try {
|
|
176
|
+
const profiles = getProfiles();
|
|
177
|
+
const current = getCurrentProfileName();
|
|
178
|
+
const names = Object.keys(profiles);
|
|
179
|
+
if (names.length === 0) {
|
|
180
|
+
console.log(chalk.dim(" No profiles. Run `bland auth login` to create one."));
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
console.log();
|
|
184
|
+
for (const name of names) {
|
|
185
|
+
const isCurrent = name === current;
|
|
186
|
+
const prefix = isCurrent ? chalk.green("▸") : " ";
|
|
187
|
+
const label = isCurrent ? chalk.bold(name) : name;
|
|
188
|
+
const url = chalk.dim(profiles[name].base_url);
|
|
189
|
+
const key = chalk.dim(profiles[name].api_key.slice(0, 8) + "...");
|
|
190
|
+
console.log(` ${prefix} ${label} ${key} ${url}`);
|
|
191
|
+
}
|
|
192
|
+
console.log();
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
handleError(err);
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../src/commands/batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiF3D"}
|