bland-cli 0.1.2

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 (127) hide show
  1. package/README.md +516 -0
  2. package/dist/commands/agent.d.ts +3 -0
  3. package/dist/commands/agent.d.ts.map +1 -0
  4. package/dist/commands/agent.js +144 -0
  5. package/dist/commands/agent.js.map +1 -0
  6. package/dist/commands/alarm.d.ts +3 -0
  7. package/dist/commands/alarm.d.ts.map +1 -0
  8. package/dist/commands/alarm.js +93 -0
  9. package/dist/commands/alarm.js.map +1 -0
  10. package/dist/commands/audio.d.ts +3 -0
  11. package/dist/commands/audio.d.ts.map +1 -0
  12. package/dist/commands/audio.js +77 -0
  13. package/dist/commands/audio.js.map +1 -0
  14. package/dist/commands/auth.d.ts +3 -0
  15. package/dist/commands/auth.d.ts.map +1 -0
  16. package/dist/commands/auth.js +199 -0
  17. package/dist/commands/auth.js.map +1 -0
  18. package/dist/commands/batch.d.ts +3 -0
  19. package/dist/commands/batch.d.ts.map +1 -0
  20. package/dist/commands/batch.js +96 -0
  21. package/dist/commands/batch.js.map +1 -0
  22. package/dist/commands/call.d.ts +3 -0
  23. package/dist/commands/call.d.ts.map +1 -0
  24. package/dist/commands/call.js +348 -0
  25. package/dist/commands/call.js.map +1 -0
  26. package/dist/commands/eval.d.ts +3 -0
  27. package/dist/commands/eval.d.ts.map +1 -0
  28. package/dist/commands/eval.js +67 -0
  29. package/dist/commands/eval.js.map +1 -0
  30. package/dist/commands/guard.d.ts +3 -0
  31. package/dist/commands/guard.d.ts.map +1 -0
  32. package/dist/commands/guard.js +100 -0
  33. package/dist/commands/guard.js.map +1 -0
  34. package/dist/commands/knowledge.d.ts +3 -0
  35. package/dist/commands/knowledge.d.ts.map +1 -0
  36. package/dist/commands/knowledge.js +137 -0
  37. package/dist/commands/knowledge.js.map +1 -0
  38. package/dist/commands/listen.d.ts +3 -0
  39. package/dist/commands/listen.d.ts.map +1 -0
  40. package/dist/commands/listen.js +98 -0
  41. package/dist/commands/listen.js.map +1 -0
  42. package/dist/commands/mcp.d.ts +3 -0
  43. package/dist/commands/mcp.d.ts.map +1 -0
  44. package/dist/commands/mcp.js +22 -0
  45. package/dist/commands/mcp.js.map +1 -0
  46. package/dist/commands/number.d.ts +3 -0
  47. package/dist/commands/number.d.ts.map +1 -0
  48. package/dist/commands/number.js +225 -0
  49. package/dist/commands/number.js.map +1 -0
  50. package/dist/commands/pathway.d.ts +3 -0
  51. package/dist/commands/pathway.d.ts.map +1 -0
  52. package/dist/commands/pathway.js +1003 -0
  53. package/dist/commands/pathway.js.map +1 -0
  54. package/dist/commands/persona.d.ts +3 -0
  55. package/dist/commands/persona.d.ts.map +1 -0
  56. package/dist/commands/persona.js +236 -0
  57. package/dist/commands/persona.js.map +1 -0
  58. package/dist/commands/release.d.ts +3 -0
  59. package/dist/commands/release.d.ts.map +1 -0
  60. package/dist/commands/release.js +68 -0
  61. package/dist/commands/release.js.map +1 -0
  62. package/dist/commands/secret.d.ts +3 -0
  63. package/dist/commands/secret.d.ts.map +1 -0
  64. package/dist/commands/secret.js +62 -0
  65. package/dist/commands/secret.js.map +1 -0
  66. package/dist/commands/sip.d.ts +3 -0
  67. package/dist/commands/sip.d.ts.map +1 -0
  68. package/dist/commands/sip.js +45 -0
  69. package/dist/commands/sip.js.map +1 -0
  70. package/dist/commands/sms.d.ts +3 -0
  71. package/dist/commands/sms.d.ts.map +1 -0
  72. package/dist/commands/sms.js +84 -0
  73. package/dist/commands/sms.js.map +1 -0
  74. package/dist/commands/tool.d.ts +3 -0
  75. package/dist/commands/tool.d.ts.map +1 -0
  76. package/dist/commands/tool.js +201 -0
  77. package/dist/commands/tool.js.map +1 -0
  78. package/dist/commands/voice.d.ts +3 -0
  79. package/dist/commands/voice.d.ts.map +1 -0
  80. package/dist/commands/voice.js +93 -0
  81. package/dist/commands/voice.js.map +1 -0
  82. package/dist/commands/widget.d.ts +3 -0
  83. package/dist/commands/widget.d.ts.map +1 -0
  84. package/dist/commands/widget.js +78 -0
  85. package/dist/commands/widget.js.map +1 -0
  86. package/dist/index.d.ts +3 -0
  87. package/dist/index.d.ts.map +1 -0
  88. package/dist/index.js +52 -0
  89. package/dist/index.js.map +1 -0
  90. package/dist/lib/api.d.ts +23 -0
  91. package/dist/lib/api.d.ts.map +1 -0
  92. package/dist/lib/api.js +105 -0
  93. package/dist/lib/api.js.map +1 -0
  94. package/dist/lib/config.d.ts +16 -0
  95. package/dist/lib/config.d.ts.map +1 -0
  96. package/dist/lib/config.js +117 -0
  97. package/dist/lib/config.js.map +1 -0
  98. package/dist/lib/errors.d.ts +15 -0
  99. package/dist/lib/errors.d.ts.map +1 -0
  100. package/dist/lib/errors.js +43 -0
  101. package/dist/lib/errors.js.map +1 -0
  102. package/dist/lib/output.d.ts +30 -0
  103. package/dist/lib/output.d.ts.map +1 -0
  104. package/dist/lib/output.js +131 -0
  105. package/dist/lib/output.js.map +1 -0
  106. package/dist/lib/pathway-file.d.ts +33 -0
  107. package/dist/lib/pathway-file.d.ts.map +1 -0
  108. package/dist/lib/pathway-file.js +271 -0
  109. package/dist/lib/pathway-file.js.map +1 -0
  110. package/dist/mcp/server.d.ts +2 -0
  111. package/dist/mcp/server.d.ts.map +1 -0
  112. package/dist/mcp/server.js +375 -0
  113. package/dist/mcp/server.js.map +1 -0
  114. package/dist/types/api.d.ts +302 -0
  115. package/dist/types/api.d.ts.map +1 -0
  116. package/dist/types/api.js +2 -0
  117. package/dist/types/api.js.map +1 -0
  118. package/dist/types/config.d.ts +14 -0
  119. package/dist/types/config.d.ts.map +1 -0
  120. package/dist/types/config.js +2 -0
  121. package/dist/types/config.js.map +1 -0
  122. package/dist/types/pathway.d.ts +55 -0
  123. package/dist/types/pathway.d.ts.map +1 -0
  124. package/dist/types/pathway.js +2 -0
  125. package/dist/types/pathway.js.map +1 -0
  126. package/package.json +51 -0
  127. package/templates/pathway.yaml +30 -0
@@ -0,0 +1,84 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import { api, extractArray } from "../lib/api.js";
4
+ import * as output from "../lib/output.js";
5
+ import { handleError } from "../lib/errors.js";
6
+ export function registerSmsCommand(program) {
7
+ const sms = program
8
+ .command("sms")
9
+ .description("Send and manage SMS conversations");
10
+ sms.command("send")
11
+ .description("Send an SMS message")
12
+ .argument("<number>", "Recipient phone number")
13
+ .option("--from <number>", "From number")
14
+ .option("--message <text>", "Message text")
15
+ .option("--pathway <id>", "Pathway for conversation")
16
+ .option("--json", "Output as JSON")
17
+ .action(async (number, opts) => {
18
+ try {
19
+ const body = {
20
+ phone_number: number,
21
+ };
22
+ if (opts.from)
23
+ body.from = opts.from;
24
+ if (opts.message)
25
+ body.message = opts.message;
26
+ if (opts.pathway)
27
+ body.pathway_id = opts.pathway;
28
+ const spinner = ora(`Sending SMS to ${output.formatPhone(number)}...`).start();
29
+ const result = await api.post("/v1/sms/send", body);
30
+ spinner.succeed(`SMS sent ${chalk.dim(`(${result.conversation_id})`)}`);
31
+ if (opts.json)
32
+ output.json(result);
33
+ }
34
+ catch (err) {
35
+ handleError(err);
36
+ }
37
+ });
38
+ sms.command("conversations")
39
+ .alias("list")
40
+ .description("List SMS conversations")
41
+ .option("--json", "Output as JSON")
42
+ .action(async (opts) => {
43
+ try {
44
+ const spinner = ora("Fetching conversations...").start();
45
+ const raw = await api.get("/v1/sms/conversations");
46
+ spinner.stop();
47
+ const convos = extractArray(raw);
48
+ if (opts.json) {
49
+ output.json(convos);
50
+ return;
51
+ }
52
+ output.json(convos);
53
+ }
54
+ catch (err) {
55
+ handleError(err);
56
+ }
57
+ });
58
+ sms.command("get")
59
+ .description("Get conversation thread")
60
+ .argument("<conversation_id>", "Conversation ID")
61
+ .option("--json", "Output as JSON")
62
+ .action(async (convId, opts) => {
63
+ try {
64
+ const spinner = ora("Fetching conversation...").start();
65
+ const result = await api.get(`/v1/sms/conversations/${convId}`);
66
+ spinner.stop();
67
+ if (opts.json) {
68
+ output.json(result);
69
+ return;
70
+ }
71
+ if (result.messages) {
72
+ for (const msg of result.messages) {
73
+ const speaker = msg.sender === "AGENT" ? chalk.cyan("Agent") : chalk.green("User");
74
+ const ts = chalk.dim(output.formatDate(msg.created_at));
75
+ console.log(` ${ts} ${speaker}: ${msg.text}`);
76
+ }
77
+ }
78
+ }
79
+ catch (err) {
80
+ handleError(err);
81
+ }
82
+ });
83
+ }
84
+ //# sourceMappingURL=sms.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sms.js","sourceRoot":"","sources":["../../src/commands/sms.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerToolCommand(program: Command): void;
3
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/commands/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAiL1D"}
@@ -0,0 +1,201 @@
1
+ import { input } from "@inquirer/prompts";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { api, extractArray } from "../lib/api.js";
5
+ import * as output from "../lib/output.js";
6
+ import { handleError } from "../lib/errors.js";
7
+ export function registerToolCommand(program) {
8
+ const tool = program
9
+ .command("tool")
10
+ .description("Manage custom tools");
11
+ tool
12
+ .command("list")
13
+ .description("List all tools")
14
+ .option("--json", "Output as JSON")
15
+ .action(async (opts) => {
16
+ try {
17
+ const spinner = ora("Fetching tools...").start();
18
+ const raw = await api.get("/v1/tools");
19
+ spinner.stop();
20
+ const tools = extractArray(raw);
21
+ if (opts.json) {
22
+ output.json(tools);
23
+ return;
24
+ }
25
+ if (tools.length === 0) {
26
+ console.log(chalk.dim(" No tools found."));
27
+ return;
28
+ }
29
+ output.table(tools.map((t) => ({
30
+ ...t,
31
+ method_url: t.method && t.url
32
+ ? `${t.method} ${output.truncate(t.url, 40)}`
33
+ : chalk.dim("—"),
34
+ })), [
35
+ { key: "tool_id", header: "ID", width: 38 },
36
+ { key: "name", header: "Name", width: 20 },
37
+ { key: "type", header: "Type", width: 12 },
38
+ { key: "method_url", header: "Endpoint", width: 45 },
39
+ ]);
40
+ }
41
+ catch (err) {
42
+ handleError(err);
43
+ }
44
+ });
45
+ tool
46
+ .command("get")
47
+ .description("Get tool details")
48
+ .argument("<id>", "Tool ID")
49
+ .option("--json", "Output as JSON")
50
+ .action(async (id, opts) => {
51
+ try {
52
+ const spinner = ora("Fetching tool...").start();
53
+ const t = await api.get(`/v1/tools/${id}`);
54
+ spinner.stop();
55
+ if (opts.json) {
56
+ output.json(t);
57
+ return;
58
+ }
59
+ console.log();
60
+ output.detail([
61
+ ["ID", t.tool_id],
62
+ ["Name", t.name],
63
+ ["Type", t.type],
64
+ ["Description", t.description],
65
+ ["Method", t.method || "—"],
66
+ ["URL", t.url || "—"],
67
+ ]);
68
+ if (t.input_schema) {
69
+ output.header("Input Schema");
70
+ console.log(JSON.stringify(t.input_schema, null, 2));
71
+ }
72
+ }
73
+ catch (err) {
74
+ handleError(err);
75
+ }
76
+ });
77
+ tool
78
+ .command("create")
79
+ .description("Create a new tool")
80
+ .option("--name <name>", "Tool name")
81
+ .option("--description <desc>", "Tool description")
82
+ .option("--url <url>", "Webhook URL")
83
+ .option("--method <method>", "HTTP method", "POST")
84
+ .option("--json", "Output as JSON")
85
+ .action(async (opts) => {
86
+ try {
87
+ let name = opts.name;
88
+ if (!name) {
89
+ name = await input({ message: "Tool name:", validate: (v) => v.trim().length > 0 || "Required" });
90
+ }
91
+ let description = opts.description;
92
+ if (!description) {
93
+ description = await input({ message: "Description:" });
94
+ }
95
+ let url = opts.url;
96
+ if (!url) {
97
+ url = await input({ message: "Webhook URL:" });
98
+ }
99
+ const spinner = ora("Creating tool...").start();
100
+ const result = await api.post("/v1/tools", {
101
+ name,
102
+ description,
103
+ url,
104
+ method: opts.method,
105
+ });
106
+ spinner.succeed(`Tool "${name}" created ${chalk.dim(`(${result.tool_id})`)}`);
107
+ if (opts.json)
108
+ output.json(result);
109
+ }
110
+ catch (err) {
111
+ handleError(err);
112
+ }
113
+ });
114
+ tool
115
+ .command("update")
116
+ .description("Update a tool")
117
+ .argument("<id>", "Tool ID")
118
+ .option("--name <name>", "New name")
119
+ .option("--description <desc>", "New description")
120
+ .option("--url <url>", "New URL")
121
+ .option("--method <method>", "New HTTP method")
122
+ .option("--json", "Output as JSON")
123
+ .action(async (id, opts) => {
124
+ try {
125
+ const body = {};
126
+ if (opts.name)
127
+ body.name = opts.name;
128
+ if (opts.description)
129
+ body.description = opts.description;
130
+ if (opts.url)
131
+ body.url = opts.url;
132
+ if (opts.method)
133
+ body.method = opts.method;
134
+ const spinner = ora("Updating tool...").start();
135
+ const result = await api.post(`/v1/tools/${id}`, body);
136
+ spinner.succeed("Tool updated.");
137
+ if (opts.json)
138
+ output.json(result);
139
+ }
140
+ catch (err) {
141
+ handleError(err);
142
+ }
143
+ });
144
+ tool
145
+ .command("delete")
146
+ .description("Delete a tool")
147
+ .argument("<id>", "Tool ID")
148
+ .action(async (id) => {
149
+ try {
150
+ const spinner = ora("Deleting tool...").start();
151
+ await api.delete(`/v1/tools/${id}`);
152
+ spinner.succeed("Tool deleted.");
153
+ }
154
+ catch (err) {
155
+ handleError(err);
156
+ }
157
+ });
158
+ tool
159
+ .command("test")
160
+ .description("Test a tool with sample input")
161
+ .argument("<id>", "Tool ID")
162
+ .option("--input <json>", "Test input data (JSON)")
163
+ .option("--verbose", "Show full request/response")
164
+ .option("--json", "Output as JSON")
165
+ .action(async (id, opts) => {
166
+ try {
167
+ let testInput = {};
168
+ if (opts.input) {
169
+ try {
170
+ testInput = JSON.parse(opts.input);
171
+ }
172
+ catch {
173
+ console.error(chalk.red("--input must be valid JSON"));
174
+ process.exit(1);
175
+ }
176
+ }
177
+ else {
178
+ const raw = await input({ message: "Test input (JSON):", default: "{}" });
179
+ testInput = JSON.parse(raw);
180
+ }
181
+ const spinner = ora("Testing tool...").start();
182
+ const start = Date.now();
183
+ const result = await api.post(`/v1/tools/${id}/test`, { input: testInput });
184
+ const duration = Date.now() - start;
185
+ spinner.stop();
186
+ if (opts.json) {
187
+ output.json({ ...result, duration_ms: duration });
188
+ return;
189
+ }
190
+ output.header("Response");
191
+ console.log(JSON.stringify(result.response, null, 2));
192
+ console.log();
193
+ console.log(chalk.dim(` Completed in ${duration}ms`));
194
+ output.success("Tool test passed.");
195
+ }
196
+ catch (err) {
197
+ handleError(err);
198
+ }
199
+ });
200
+ }
201
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/commands/tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerVoiceCommand(program: Command): void;
3
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/commands/voice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8F3D"}
@@ -0,0 +1,93 @@
1
+ import chalk from "chalk";
2
+ import ora from "ora";
3
+ import * as fs from "fs";
4
+ import { api, request, extractArray } from "../lib/api.js";
5
+ import * as output from "../lib/output.js";
6
+ import { handleError } from "../lib/errors.js";
7
+ export function registerVoiceCommand(program) {
8
+ const voice = program
9
+ .command("voice")
10
+ .description("Manage and preview voices");
11
+ voice
12
+ .command("list")
13
+ .description("List available voices")
14
+ .option("--language <code>", "Filter by language")
15
+ .option("--custom", "Show only custom voices")
16
+ .option("--json", "Output as JSON")
17
+ .action(async (opts) => {
18
+ try {
19
+ const spinner = ora("Fetching voices...").start();
20
+ const raw = await api.get("/v1/voices");
21
+ spinner.stop();
22
+ let filtered = extractArray(raw);
23
+ if (opts.language) {
24
+ filtered = filtered.filter((v) => v.language?.toLowerCase() === opts.language.toLowerCase());
25
+ }
26
+ if (opts.custom) {
27
+ filtered = filtered.filter((v) => v.is_custom);
28
+ }
29
+ if (opts.json) {
30
+ output.json(filtered);
31
+ return;
32
+ }
33
+ output.table(filtered.map((v) => ({
34
+ ...v,
35
+ custom: v.is_custom ? chalk.cyan("custom") : v.public ? "" : chalk.cyan("custom"),
36
+ lang: v.language || v.tags?.find((t) => t.match(/^[a-z]{2}$/)) || "en",
37
+ })), [
38
+ { key: "name", header: "Name", width: 24 },
39
+ { key: "description", header: "Description", width: 40 },
40
+ { key: "lang", header: "Language", width: 10 },
41
+ { key: "custom", header: "", width: 8 },
42
+ ]);
43
+ }
44
+ catch (err) {
45
+ handleError(err);
46
+ }
47
+ });
48
+ voice
49
+ .command("speak")
50
+ .alias("sample")
51
+ .description("Generate TTS audio from text")
52
+ .argument("<text>", "Text to speak")
53
+ .option("--voice <voice>", "Voice to use", "nat")
54
+ .option("-o, --output <file>", "Save to file")
55
+ .option("--json", "Output as JSON")
56
+ .action(async (text, opts) => {
57
+ try {
58
+ const spinner = ora("Generating audio...").start();
59
+ const result = await request("/v1/speak", {
60
+ method: "POST",
61
+ body: {
62
+ text,
63
+ voice: opts.voice,
64
+ },
65
+ });
66
+ spinner.stop();
67
+ const audioUrl = result.url || result.audio_url;
68
+ if (opts.json) {
69
+ output.json(result);
70
+ return;
71
+ }
72
+ if (opts.output && audioUrl) {
73
+ const response = await fetch(audioUrl);
74
+ const buffer = Buffer.from(await response.arrayBuffer());
75
+ fs.writeFileSync(opts.output, buffer);
76
+ output.success(`Audio saved to ${opts.output}`);
77
+ }
78
+ else if (audioUrl) {
79
+ console.log();
80
+ console.log(` ${chalk.bold("Audio URL:")}`);
81
+ console.log(` ${audioUrl}`);
82
+ }
83
+ else {
84
+ output.success("Audio generated.");
85
+ output.json(result);
86
+ }
87
+ }
88
+ catch (err) {
89
+ handleError(err);
90
+ }
91
+ });
92
+ }
93
+ //# sourceMappingURL=voice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.js","sourceRoot":"","sources":["../../src/commands/voice.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function registerWidgetCommand(program: Command): void;
3
+ //# sourceMappingURL=widget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.d.ts","sourceRoot":"","sources":["../../src/commands/widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4D5D"}
@@ -0,0 +1,78 @@
1
+ import { confirm } from "@inquirer/prompts";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { api, extractArray } from "../lib/api.js";
5
+ import * as output from "../lib/output.js";
6
+ import { handleError } from "../lib/errors.js";
7
+ export function registerWidgetCommand(program) {
8
+ const widget = program.command("widget").description("Manage embeddable widgets");
9
+ widget.command("list").description("List widgets")
10
+ .option("--json", "Output as JSON")
11
+ .action(async (opts) => {
12
+ try {
13
+ const spinner = ora("Fetching...").start();
14
+ const raw = await api.get("/v1/widget");
15
+ spinner.stop();
16
+ const widgets = extractArray(raw);
17
+ if (opts.json) {
18
+ output.json(widgets);
19
+ return;
20
+ }
21
+ output.table(widgets.map((w) => ({
22
+ ...w,
23
+ domains: w.allowed_domains?.join(", ") || chalk.dim("—"),
24
+ })), [
25
+ { key: "id", header: "ID", width: 38 },
26
+ { key: "domains", header: "Domains", width: 40 },
27
+ { key: "messages_per_minute", header: "Rate Limit", width: 12 },
28
+ ]);
29
+ }
30
+ catch (err) {
31
+ handleError(err);
32
+ }
33
+ });
34
+ widget.command("create").description("Create a widget")
35
+ .option("--pathway <id>", "Pathway ID")
36
+ .option("--prompt <text>", "Agent prompt (if no pathway)")
37
+ .option("--domains <domains>", "Allowed domains (comma-separated)")
38
+ .option("--rate-limit <n>", "Messages per minute", "60")
39
+ .option("--json", "Output as JSON")
40
+ .action(async (opts) => {
41
+ try {
42
+ const body = {
43
+ messages_per_minute: parseInt(opts.rateLimit, 10),
44
+ config: {},
45
+ };
46
+ if (opts.pathway)
47
+ body.pathway_id = opts.pathway;
48
+ if (opts.prompt)
49
+ body.agent_prompt = opts.prompt;
50
+ if (opts.domains)
51
+ body.allowed_domains = opts.domains.split(",").map((d) => d.trim());
52
+ const spinner = ora("Creating widget...").start();
53
+ const result = await api.post("/v1/widget", body);
54
+ spinner.succeed(`Widget created ${chalk.dim(`(${result.id})`)}`);
55
+ if (opts.json)
56
+ output.json(result);
57
+ }
58
+ catch (err) {
59
+ handleError(err);
60
+ }
61
+ });
62
+ widget.command("delete").description("Delete a widget")
63
+ .argument("<id>", "Widget ID")
64
+ .action(async (id) => {
65
+ try {
66
+ const proceed = await confirm({ message: `Delete widget ${id}?` });
67
+ if (!proceed)
68
+ return;
69
+ const spinner = ora("Deleting...").start();
70
+ await api.delete(`/v1/widget/${id}`);
71
+ spinner.succeed("Widget deleted.");
72
+ }
73
+ catch (err) {
74
+ handleError(err);
75
+ }
76
+ });
77
+ }
78
+ //# sourceMappingURL=widget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../src/commands/widget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,52 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from "commander";
3
+ import { registerAuthCommand } from "./commands/auth.js";
4
+ import { registerCallCommand } from "./commands/call.js";
5
+ import { registerNumberCommand } from "./commands/number.js";
6
+ import { registerPathwayCommand } from "./commands/pathway.js";
7
+ import { registerPersonaCommand } from "./commands/persona.js";
8
+ import { registerVoiceCommand } from "./commands/voice.js";
9
+ import { registerToolCommand } from "./commands/tool.js";
10
+ import { registerKnowledgeCommand } from "./commands/knowledge.js";
11
+ import { registerBatchCommand } from "./commands/batch.js";
12
+ import { registerSmsCommand } from "./commands/sms.js";
13
+ import { registerAgentCommand } from "./commands/agent.js";
14
+ import { registerGuardCommand } from "./commands/guard.js";
15
+ import { registerAlarmCommand } from "./commands/alarm.js";
16
+ import { registerSecretCommand } from "./commands/secret.js";
17
+ import { registerReleaseCommand } from "./commands/release.js";
18
+ import { registerWidgetCommand } from "./commands/widget.js";
19
+ import { registerSipCommand } from "./commands/sip.js";
20
+ import { registerEvalCommand } from "./commands/eval.js";
21
+ import { registerAudioCommand } from "./commands/audio.js";
22
+ import { registerListenCommand } from "./commands/listen.js";
23
+ import { registerMcpCommand } from "./commands/mcp.js";
24
+ const program = new Command();
25
+ program
26
+ .name("bland")
27
+ .description("The official Bland AI command-line interface")
28
+ .version("0.1.2");
29
+ // Register all command groups
30
+ registerAuthCommand(program);
31
+ registerCallCommand(program);
32
+ registerPathwayCommand(program);
33
+ registerPersonaCommand(program);
34
+ registerNumberCommand(program);
35
+ registerVoiceCommand(program);
36
+ registerToolCommand(program);
37
+ registerKnowledgeCommand(program);
38
+ registerBatchCommand(program);
39
+ registerSmsCommand(program);
40
+ registerAgentCommand(program);
41
+ registerGuardCommand(program);
42
+ registerAlarmCommand(program);
43
+ registerSecretCommand(program);
44
+ registerReleaseCommand(program);
45
+ registerWidgetCommand(program);
46
+ registerSipCommand(program);
47
+ registerEvalCommand(program);
48
+ registerAudioCommand(program);
49
+ registerListenCommand(program);
50
+ registerMcpCommand(program);
51
+ program.parse();
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,8CAA8C,CAAC;KAC3D,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,8BAA8B;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,wBAAwB,CAAC,OAAO,CAAC,CAAC;AAClC,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAChC,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAC5B,mBAAmB,CAAC,OAAO,CAAC,CAAC;AAC7B,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAC9B,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAC/B,kBAAkB,CAAC,OAAO,CAAC,CAAC;AAE5B,OAAO,CAAC,KAAK,EAAE,CAAC"}
@@ -0,0 +1,23 @@
1
+ interface RequestOptions {
2
+ method?: "GET" | "POST" | "PUT" | "PATCH" | "DELETE";
3
+ body?: Record<string, unknown> | FormData;
4
+ query?: Record<string, string | number | boolean | undefined>;
5
+ headers?: Record<string, string>;
6
+ rawResponse?: boolean;
7
+ }
8
+ export declare function request<T = unknown>(path: string, options?: RequestOptions): Promise<T>;
9
+ /**
10
+ * Extract an array from an API response that may be wrapped in a named key.
11
+ * Bland API inconsistently returns either `[...]` or `{ key: [...] }`.
12
+ * This tries the raw value first, then looks for the first array-valued key.
13
+ */
14
+ export declare function extractArray<T>(data: unknown): T[];
15
+ export declare const api: {
16
+ get: <T = unknown>(path: string, query?: Record<string, string | number | boolean | undefined>) => Promise<T>;
17
+ post: <T = unknown>(path: string, body?: Record<string, unknown>) => Promise<T>;
18
+ put: <T = unknown>(path: string, body?: Record<string, unknown>) => Promise<T>;
19
+ patch: <T = unknown>(path: string, body?: Record<string, unknown>) => Promise<T>;
20
+ delete: <T = unknown>(path: string) => Promise<T>;
21
+ };
22
+ export {};
23
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAqBD,wBAAsB,OAAO,CAAC,CAAC,GAAG,OAAO,EACvC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC,CA6EZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,CAQlD;AAGD,eAAO,MAAM,GAAG;UACR,CAAC,kBACC,MAAM,UACJ,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;WAGxD,CAAC,kBAAkB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;UAG1D,CAAC,kBAAkB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;YAGvD,CAAC,kBAAkB,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;aAGxD,CAAC,kBAAkB,MAAM;CAEnC,CAAC"}