@koda-sl/baker-cli 0.4.1 → 0.5.1

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 (44) hide show
  1. package/README.md +92 -2
  2. package/dist/cli.js +6 -2
  3. package/dist/cli.js.map +1 -1
  4. package/dist/commands/testimonials/get.d.ts +30 -0
  5. package/dist/commands/testimonials/get.d.ts.map +1 -0
  6. package/dist/commands/testimonials/get.js +42 -0
  7. package/dist/commands/testimonials/get.js.map +1 -0
  8. package/dist/commands/testimonials/index.d.ts +2 -0
  9. package/dist/commands/testimonials/index.d.ts.map +1 -0
  10. package/dist/commands/testimonials/index.js +22 -0
  11. package/dist/commands/testimonials/index.js.map +1 -0
  12. package/dist/commands/testimonials/list.d.ts +60 -0
  13. package/dist/commands/testimonials/list.d.ts.map +1 -0
  14. package/dist/commands/testimonials/list.js +69 -0
  15. package/dist/commands/testimonials/list.js.map +1 -0
  16. package/dist/commands/testimonials/search.d.ts +40 -0
  17. package/dist/commands/testimonials/search.d.ts.map +1 -0
  18. package/dist/commands/testimonials/search.js +59 -0
  19. package/dist/commands/testimonials/search.js.map +1 -0
  20. package/dist/commands/videos/delete.d.ts +19 -0
  21. package/dist/commands/videos/delete.d.ts.map +1 -0
  22. package/dist/commands/videos/delete.js +58 -0
  23. package/dist/commands/videos/delete.js.map +1 -0
  24. package/dist/commands/videos/get.d.ts +30 -0
  25. package/dist/commands/videos/get.d.ts.map +1 -0
  26. package/dist/commands/videos/get.js +42 -0
  27. package/dist/commands/videos/get.js.map +1 -0
  28. package/dist/commands/videos/index.d.ts +2 -0
  29. package/dist/commands/videos/index.d.ts.map +1 -0
  30. package/dist/commands/videos/index.js +25 -0
  31. package/dist/commands/videos/index.js.map +1 -0
  32. package/dist/commands/videos/search.d.ts +35 -0
  33. package/dist/commands/videos/search.d.ts.map +1 -0
  34. package/dist/commands/videos/search.js +54 -0
  35. package/dist/commands/videos/search.js.map +1 -0
  36. package/dist/commands/videos/upload.d.ts +19 -0
  37. package/dist/commands/videos/upload.d.ts.map +1 -0
  38. package/dist/commands/videos/upload.js +92 -0
  39. package/dist/commands/videos/upload.js.map +1 -0
  40. package/dist/output.d.ts +4 -1
  41. package/dist/output.d.ts.map +1 -1
  42. package/dist/output.js +73 -7
  43. package/dist/output.js.map +1 -1
  44. package/package.json +1 -1
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @koda-sl/baker-cli
2
2
 
3
- AI-agent-first CLI for interacting with Baker. Designed for programmatic use by AI agents with structured JSON output, schema introspection, and input hardening.
3
+ AI-agent-first CLI for interacting with Baker. Designed for programmatic use by AI agents with structured JSON output, schema introspection, and input hardening. Supports images and videos.
4
4
 
5
5
  ## Installation
6
6
 
@@ -157,6 +157,87 @@ baker images delete j571abc123def
157
157
  | `--image-id` | Image ID (alternative to positional arg) |
158
158
  | `--dry-run` | Preview the operation without executing |
159
159
 
160
+ ### `baker videos search <query>`
161
+
162
+ Semantic search videos using hybrid BM25 + vector + reranking.
163
+
164
+ ```bash
165
+ # Basic search
166
+ baker videos search "product demo"
167
+
168
+ # Filter by tags and limit results
169
+ baker videos search "tutorial" --tags explainer,ugc --limit 5
170
+
171
+ # Full metadata with markdown output
172
+ baker videos search "testimonial" --full --output md
173
+ ```
174
+
175
+ **Flags:**
176
+
177
+ | Flag | Description |
178
+ |------------|------------------------------------------|
179
+ | `--limit` | Max results (default 20) |
180
+ | `--tags` | Comma-separated tags to filter by |
181
+ | `--output` | Output format: `json` \| `files` \| `md` |
182
+ | `--fields` | Comma-separated field names to include |
183
+ | `--full` | Include full metadata |
184
+
185
+ ### `baker videos get <id>`
186
+
187
+ Get a single video by ID.
188
+
189
+ ```bash
190
+ baker videos get j571abc123def
191
+
192
+ # With full metadata
193
+ baker videos get j571abc123def --full
194
+
195
+ # Alternative flag syntax
196
+ baker videos get --video-id j571abc123def
197
+ ```
198
+
199
+ ### `baker videos upload <file>`
200
+
201
+ Upload a video file via Mux direct upload. Content type is auto-detected from the file extension.
202
+
203
+ ```bash
204
+ # Upload with auto-detected content type
205
+ baker videos upload ./demo.mp4
206
+
207
+ # Override content type
208
+ baker videos upload ./video.bin --content-type video/mp4
209
+
210
+ # Preview what would happen without uploading
211
+ baker videos upload ./demo.mp4 --dry-run
212
+ ```
213
+
214
+ **Flags:**
215
+
216
+ | Flag | Description |
217
+ |------------------|------------------------------------------------|
218
+ | `--content-type` | MIME type (auto-detected from extension) |
219
+ | `--dry-run` | Preview the operation without executing |
220
+
221
+ Supported extensions: `.mp4`, `.mov`, `.webm`, `.avi`, `.mkv`
222
+
223
+ ### `baker videos delete <id>`
224
+
225
+ Delete a video by ID.
226
+
227
+ ```bash
228
+ # Preview deletion
229
+ baker videos delete j571abc123def --dry-run
230
+
231
+ # Execute deletion
232
+ baker videos delete j571abc123def
233
+ ```
234
+
235
+ **Flags:**
236
+
237
+ | Flag | Description |
238
+ |-------------|------------------------------------------|
239
+ | `--dry-run` | Preview the operation without executing |
240
+
160
241
  ### `baker schema [command]`
161
242
 
162
243
  Inspect command argument schemas for AI agent introspection.
@@ -173,13 +254,22 @@ baker schema images.search
173
254
 
174
255
  ## Compact vs Full Output
175
256
 
176
- By default, image responses include only essential fields to minimize token usage:
257
+ By default, responses include only essential fields to minimize token usage:
258
+
259
+ **Images:**
177
260
 
178
261
  | Mode | Fields |
179
262
  |-----------|------------------------------------------------------------|
180
263
  | Default | `_id`, `name`, `imageUrl`, `description`, `tags` |
181
264
  | `--full` | All fields: width, height, aspectRatio, dominantColor, imagePalette, source, createdAt |
182
265
 
266
+ **Videos:**
267
+
268
+ | Mode | Fields |
269
+ |-----------|-------------------------------------------|
270
+ | Default | `_id`, `name`, `thumbnailUrl`, `description`, `tags`, `status` |
271
+ | `--full` | All fields: duration, muxPlaybackId, source, timestamps |
272
+
183
273
  ## Error Codes
184
274
 
185
275
  | Code | Description |
package/dist/cli.js CHANGED
@@ -2,11 +2,13 @@
2
2
  import { defineCommand, runMain } from "citty";
3
3
  import { imagesCommand } from "./commands/images/index.js";
4
4
  import { schemaCommand } from "./commands/schema.js";
5
+ import { testimonialsCommand } from "./commands/testimonials/index.js";
6
+ import { videosCommand } from "./commands/videos/index.js";
5
7
  const main = defineCommand({
6
8
  meta: {
7
9
  name: "baker",
8
- version: "0.4.0",
9
- description: `AI-agent CLI for finding and managing images in Baker.
10
+ version: "0.5.0",
11
+ description: `AI-agent CLI for finding and managing images, videos, and testimonials in Baker.
10
12
 
11
13
  Auth: Set BAKER_API_KEY (starts with bk_) and BAKER_API_URL environment variables.
12
14
  Output: All commands return JSON envelopes: { ok: true, data: ... } or { ok: false, error: { code, message } }.
@@ -15,6 +17,8 @@ Introspection: Run 'baker schema <command>' to inspect argument schemas.`,
15
17
  },
16
18
  subCommands: {
17
19
  images: imagesCommand,
20
+ videos: videosCommand,
21
+ testimonials: testimonialsCommand,
18
22
  schema: schemaCommand,
19
23
  },
20
24
  });
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;;;;;yEAKwD;KACtE;IACD,WAAW,EAAE;QACX,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;KACtB;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,MAAM,IAAI,GAAG,aAAa,CAAC;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,OAAO;QACb,OAAO,EAAE,OAAO;QAChB,WAAW,EAAE;;;;;yEAKwD;KACtE;IACD,WAAW,EAAE;QACX,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,YAAY,EAAE,mBAAmB;QACjC,MAAM,EAAE,aAAa;KACtB;CACF,CAAC,CAAC;AAEH,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare const getCommand: import("citty").CommandDef<{
2
+ readonly id: {
3
+ readonly type: "positional";
4
+ readonly description: "Testimonial ID";
5
+ readonly required: false;
6
+ };
7
+ readonly "testimonial-id": {
8
+ readonly type: "string";
9
+ readonly description: "Testimonial ID (alternative to positional)";
10
+ readonly required: false;
11
+ };
12
+ readonly output: {
13
+ readonly type: "string";
14
+ readonly description: "Output format: json|files|md";
15
+ readonly required: false;
16
+ readonly default: "json";
17
+ };
18
+ readonly fields: {
19
+ readonly type: "string";
20
+ readonly description: "Comma-separated field names to include";
21
+ readonly required: false;
22
+ };
23
+ readonly full: {
24
+ readonly type: "boolean";
25
+ readonly description: "Include full metadata";
26
+ readonly required: false;
27
+ readonly default: false;
28
+ };
29
+ }>;
30
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/testimonials/get.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCrB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { defineCommand } from "citty";
2
+ import { ApiError, apiGet, validateConvexId } from "../../client.js";
3
+ import { testimonialNormalizer, writeJson, writeOutput } from "../../output.js";
4
+ import { registerSchema } from "../../schemas.js";
5
+ registerSchema({
6
+ command: "testimonials.get",
7
+ description: "Get a single testimonial by ID",
8
+ args: {
9
+ id: { type: "string", description: "Testimonial ID", required: true },
10
+ },
11
+ });
12
+ export const getCommand = defineCommand({
13
+ meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
14
+ args: {
15
+ id: { type: "positional", description: "Testimonial ID", required: false },
16
+ "testimonial-id": { type: "string", description: "Testimonial ID (alternative to positional)", required: false },
17
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
18
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
19
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false },
20
+ },
21
+ run: async ({ args }) => {
22
+ try {
23
+ const id = args.id || args["testimonial-id"];
24
+ if (!id) {
25
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Testimonial ID is required" } });
26
+ process.exit(1);
27
+ }
28
+ validateConvexId(id);
29
+ const data = await apiGet("/api/testimonials/get", { id });
30
+ writeOutput({ ok: true, data }, args.output || "json", args.fields ? args.fields.split(",") : undefined, args.full, testimonialNormalizer);
31
+ }
32
+ catch (err) {
33
+ if (err instanceof ApiError) {
34
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
35
+ process.exit(1);
36
+ }
37
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
38
+ process.exit(1);
39
+ }
40
+ },
41
+ });
42
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/testimonials/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const testimonialsCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/testimonials/index.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,mBAAmB,qDAgB9B,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { defineCommand } from "citty";
2
+ import { getCommand } from "./get.js";
3
+ import { listCommand } from "./list.js";
4
+ import { searchCommand } from "./search.js";
5
+ export const testimonialsCommand = defineCommand({
6
+ meta: {
7
+ name: "testimonials",
8
+ description: `Find and browse testimonials in Baker. Subcommands: search, get, list.
9
+
10
+ Examples:
11
+ baker testimonials search "great customer service" --limit 5
12
+ baker testimonials search "value for money" --rating-min 4
13
+ baker testimonials get <testimonial-id>
14
+ baker testimonials list --source google --sentiment positive`,
15
+ },
16
+ subCommands: {
17
+ get: getCommand,
18
+ search: searchCommand,
19
+ list: listCommand,
20
+ },
21
+ });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/testimonials/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,mBAAmB,GAAG,aAAa,CAAC;IAC/C,IAAI,EAAE;QACJ,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE;;;;;;+DAM8C;KAC5D;IACD,WAAW,EAAE;QACX,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,IAAI,EAAE,WAAW;KAClB;CACF,CAAC,CAAC"}
@@ -0,0 +1,60 @@
1
+ export declare const listCommand: import("citty").CommandDef<{
2
+ readonly source: {
3
+ readonly type: "string";
4
+ readonly description: "Filter by source: google|trustpilot";
5
+ readonly required: false;
6
+ };
7
+ readonly "rating-min": {
8
+ readonly type: "string";
9
+ readonly description: "Minimum star rating (1-5)";
10
+ readonly required: false;
11
+ };
12
+ readonly "rating-max": {
13
+ readonly type: "string";
14
+ readonly description: "Maximum star rating (1-5)";
15
+ readonly required: false;
16
+ };
17
+ readonly status: {
18
+ readonly type: "string";
19
+ readonly description: "Filter by status: pending|processing|ready|error";
20
+ readonly required: false;
21
+ };
22
+ readonly sentiment: {
23
+ readonly type: "string";
24
+ readonly description: "Filter: positive|neutral|negative";
25
+ readonly required: false;
26
+ };
27
+ readonly language: {
28
+ readonly type: "string";
29
+ readonly description: "Filter by language code (e.g. en, es)";
30
+ readonly required: false;
31
+ };
32
+ readonly tags: {
33
+ readonly type: "string";
34
+ readonly description: "Comma-separated tags to filter by";
35
+ readonly required: false;
36
+ };
37
+ readonly limit: {
38
+ readonly type: "string";
39
+ readonly description: "Max results (default 50)";
40
+ readonly required: false;
41
+ };
42
+ readonly output: {
43
+ readonly type: "string";
44
+ readonly description: "Output format: json|files|md";
45
+ readonly required: false;
46
+ readonly default: "json";
47
+ };
48
+ readonly fields: {
49
+ readonly type: "string";
50
+ readonly description: "Comma-separated field names to include";
51
+ readonly required: false;
52
+ };
53
+ readonly full: {
54
+ readonly type: "boolean";
55
+ readonly description: "Include full metadata";
56
+ readonly required: false;
57
+ readonly default: false;
58
+ };
59
+ }>;
60
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/testimonials/list.ts"],"names":[],"mappings":"AAoBA,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgDtB,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { defineCommand } from "citty";
2
+ import { ApiError, apiGet } from "../../client.js";
3
+ import { testimonialNormalizer, writeJson, writeOutput } from "../../output.js";
4
+ import { registerSchema } from "../../schemas.js";
5
+ registerSchema({
6
+ command: "testimonials.list",
7
+ description: "List testimonials with optional filters.",
8
+ args: {
9
+ source: { type: "string", description: "Filter by source: google|trustpilot", required: false },
10
+ "rating-min": { type: "number", description: "Minimum star rating (1-5)", required: false },
11
+ "rating-max": { type: "number", description: "Maximum star rating (1-5)", required: false },
12
+ status: { type: "string", description: "Filter by status: pending|processing|ready|error", required: false },
13
+ sentiment: { type: "string", description: "Filter: positive|neutral|negative", required: false },
14
+ language: { type: "string", description: "Filter by language code (e.g. en, es)", required: false },
15
+ tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
16
+ limit: { type: "number", description: "Max results (default 50)", required: false, default: 50 },
17
+ },
18
+ });
19
+ export const listCommand = defineCommand({
20
+ meta: {
21
+ name: "list",
22
+ description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive",
23
+ },
24
+ args: {
25
+ source: { type: "string", description: "Filter by source: google|trustpilot", required: false },
26
+ "rating-min": { type: "string", description: "Minimum star rating (1-5)", required: false },
27
+ "rating-max": { type: "string", description: "Maximum star rating (1-5)", required: false },
28
+ status: { type: "string", description: "Filter by status: pending|processing|ready|error", required: false },
29
+ sentiment: { type: "string", description: "Filter: positive|neutral|negative", required: false },
30
+ language: { type: "string", description: "Filter by language code (e.g. en, es)", required: false },
31
+ tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
32
+ limit: { type: "string", description: "Max results (default 50)", required: false },
33
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
34
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
35
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false },
36
+ },
37
+ run: async ({ args }) => {
38
+ try {
39
+ const params = {};
40
+ if (args.source)
41
+ params.source = args.source;
42
+ if (args["rating-min"])
43
+ params.rating_min = args["rating-min"];
44
+ if (args["rating-max"])
45
+ params.rating_max = args["rating-max"];
46
+ if (args.status)
47
+ params.status = args.status;
48
+ if (args.sentiment)
49
+ params.sentiment = args.sentiment;
50
+ if (args.language)
51
+ params.language = args.language;
52
+ if (args.tags)
53
+ params.tags = args.tags;
54
+ if (args.limit)
55
+ params.limit = args.limit;
56
+ const data = await apiGet("/api/testimonials", params);
57
+ writeOutput({ ok: true, data }, args.output || "json", args.fields ? args.fields.split(",") : undefined, args.full, testimonialNormalizer);
58
+ }
59
+ catch (err) {
60
+ if (err instanceof ApiError) {
61
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
62
+ process.exit(1);
63
+ }
64
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
65
+ process.exit(1);
66
+ }
67
+ },
68
+ });
69
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/testimonials/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export declare const searchCommand: import("citty").CommandDef<{
2
+ readonly query: {
3
+ readonly type: "positional";
4
+ readonly description: "Search query text";
5
+ readonly required: false;
6
+ };
7
+ readonly limit: {
8
+ readonly type: "string";
9
+ readonly description: "Max results (default 10)";
10
+ readonly required: false;
11
+ };
12
+ readonly "rating-min": {
13
+ readonly type: "string";
14
+ readonly description: "Minimum star rating (1-5)";
15
+ readonly required: false;
16
+ };
17
+ readonly tags: {
18
+ readonly type: "string";
19
+ readonly description: "Comma-separated tags to filter by";
20
+ readonly required: false;
21
+ };
22
+ readonly output: {
23
+ readonly type: "string";
24
+ readonly description: "Output format: json|files|md";
25
+ readonly required: false;
26
+ readonly default: "json";
27
+ };
28
+ readonly fields: {
29
+ readonly type: "string";
30
+ readonly description: "Comma-separated field names to include";
31
+ readonly required: false;
32
+ };
33
+ readonly full: {
34
+ readonly type: "boolean";
35
+ readonly description: "Include full metadata";
36
+ readonly required: false;
37
+ readonly default: false;
38
+ };
39
+ }>;
40
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/testimonials/search.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmDxB,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { defineCommand } from "citty";
2
+ import { ApiError, apiPost } from "../../client.js";
3
+ import { testimonialNormalizer, writeJson, writeOutput } from "../../output.js";
4
+ import { registerSchema } from "../../schemas.js";
5
+ registerSchema({
6
+ command: "testimonials.search",
7
+ description: "Search testimonials by text query. Uses hybrid BM25 + vector + reranking.",
8
+ args: {
9
+ query: { type: "string", description: "Search query text", required: true },
10
+ limit: { type: "number", description: "Maximum results to return", required: false, default: 10 },
11
+ "rating-min": { type: "number", description: "Minimum star rating (1-5)", required: false },
12
+ tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
13
+ },
14
+ });
15
+ export const searchCommand = defineCommand({
16
+ meta: {
17
+ name: "search",
18
+ description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4",
19
+ },
20
+ args: {
21
+ query: { type: "positional", description: "Search query text", required: false },
22
+ limit: { type: "string", description: "Max results (default 10)", required: false },
23
+ "rating-min": { type: "string", description: "Minimum star rating (1-5)", required: false },
24
+ tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
25
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
26
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
27
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false },
28
+ },
29
+ run: async ({ args }) => {
30
+ try {
31
+ const query = args.query;
32
+ if (!query) {
33
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Search query is required" } });
34
+ process.exit(1);
35
+ }
36
+ const body = { query };
37
+ if (args.limit) {
38
+ body.limit = Number(args.limit);
39
+ }
40
+ if (args["rating-min"]) {
41
+ body.rating_min = Number(args["rating-min"]);
42
+ }
43
+ if (args.tags) {
44
+ body.tags = args.tags.split(",").filter(Boolean);
45
+ }
46
+ const data = await apiPost("/api/testimonials/search", body);
47
+ writeOutput({ ok: true, data }, args.output || "json", args.fields ? args.fields.split(",") : undefined, args.full, testimonialNormalizer);
48
+ }
49
+ catch (err) {
50
+ if (err instanceof ApiError) {
51
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
52
+ process.exit(1);
53
+ }
54
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
55
+ process.exit(1);
56
+ }
57
+ },
58
+ });
59
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/testimonials/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const deleteCommand: import("citty").CommandDef<{
2
+ readonly id: {
3
+ readonly type: "positional";
4
+ readonly description: "Video ID";
5
+ readonly required: false;
6
+ };
7
+ readonly "video-id": {
8
+ readonly type: "string";
9
+ readonly description: "Video ID (alternative to positional)";
10
+ readonly required: false;
11
+ };
12
+ readonly "dry-run": {
13
+ readonly type: "boolean";
14
+ readonly description: "Preview without executing";
15
+ readonly required: false;
16
+ readonly default: false;
17
+ };
18
+ }>;
19
+ //# sourceMappingURL=delete.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/videos/delete.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;EAyCxB,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { defineCommand } from "citty";
2
+ import { ApiError, apiPost, validateConvexId } from "../../client.js";
3
+ import { writeJson } from "../../output.js";
4
+ import { registerSchema } from "../../schemas.js";
5
+ registerSchema({
6
+ command: "videos.delete",
7
+ description: "Delete a video by ID",
8
+ args: {
9
+ id: { type: "string", description: "Video ID", required: true },
10
+ "dry-run": {
11
+ type: "boolean",
12
+ description: "Preview the operation without executing",
13
+ required: false,
14
+ default: false,
15
+ },
16
+ },
17
+ });
18
+ export const deleteCommand = defineCommand({
19
+ meta: {
20
+ name: "delete",
21
+ description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run",
22
+ },
23
+ args: {
24
+ id: { type: "positional", description: "Video ID", required: false },
25
+ "video-id": { type: "string", description: "Video ID (alternative to positional)", required: false },
26
+ "dry-run": { type: "boolean", description: "Preview without executing", required: false, default: false },
27
+ },
28
+ run: async ({ args }) => {
29
+ try {
30
+ const id = args.id || args["video-id"];
31
+ if (!id) {
32
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Video ID is required" } });
33
+ process.exit(1);
34
+ }
35
+ validateConvexId(id);
36
+ if (args["dry-run"]) {
37
+ writeJson({
38
+ ok: true,
39
+ dryRun: true,
40
+ operation: "videos.delete",
41
+ params: { id },
42
+ });
43
+ return;
44
+ }
45
+ const data = await apiPost("/api/videos/delete", { id });
46
+ writeJson({ ok: true, data });
47
+ }
48
+ catch (err) {
49
+ if (err instanceof ApiError) {
50
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
51
+ process.exit(1);
52
+ }
53
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
54
+ process.exit(1);
55
+ }
56
+ },
57
+ });
58
+ //# sourceMappingURL=delete.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/videos/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAc,CAAC;IACb,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,sBAAsB;IACnC,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;QAC/D,SAAS,EAAE;YACT,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,yCAAyC;YACtD,QAAQ,EAAE,KAAK;YACf,OAAO,EAAE,KAAK;SACf;KACF;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mGAAmG;KACjH;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;QACpE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,KAAK,EAAE;QACpG,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,2BAA2B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;KAC1G;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,GAAI,IAAI,CAAC,EAAyB,IAAK,IAAI,CAAC,UAAU,CAAwB,CAAC;YACvF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;gBAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,gBAAgB,CAAC,EAAE,CAAC,CAAC;YAErB,IAAI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACpB,SAAS,CAAC;oBACR,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,eAAe;oBAC1B,MAAM,EAAE,EAAE,EAAE,EAAE;iBACf,CAAC,CAAC;gBACH,OAAO;YACT,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,OAAO,CAAU,oBAAoB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAClE,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,30 @@
1
+ export declare const getCommand: import("citty").CommandDef<{
2
+ readonly id: {
3
+ readonly type: "positional";
4
+ readonly description: "Video ID";
5
+ readonly required: false;
6
+ };
7
+ readonly "video-id": {
8
+ readonly type: "string";
9
+ readonly description: "Video ID (alternative to positional)";
10
+ readonly required: false;
11
+ };
12
+ readonly output: {
13
+ readonly type: "string";
14
+ readonly description: "Output format: json|files|md";
15
+ readonly required: false;
16
+ readonly default: "json";
17
+ };
18
+ readonly fields: {
19
+ readonly type: "string";
20
+ readonly description: "Comma-separated field names to include";
21
+ readonly required: false;
22
+ };
23
+ readonly full: {
24
+ readonly type: "boolean";
25
+ readonly description: "Include full metadata";
26
+ readonly required: false;
27
+ readonly default: false;
28
+ };
29
+ }>;
30
+ //# sourceMappingURL=get.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/videos/get.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmCrB,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { defineCommand } from "citty";
2
+ import { ApiError, apiGet, validateConvexId } from "../../client.js";
3
+ import { videoNormalizer, writeJson, writeOutput } from "../../output.js";
4
+ import { registerSchema } from "../../schemas.js";
5
+ registerSchema({
6
+ command: "videos.get",
7
+ description: "Get a single video by ID",
8
+ args: {
9
+ id: { type: "string", description: "Video ID", required: true },
10
+ },
11
+ });
12
+ export const getCommand = defineCommand({
13
+ meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
14
+ args: {
15
+ id: { type: "positional", description: "Video ID", required: false },
16
+ "video-id": { type: "string", description: "Video ID (alternative to positional)", required: false },
17
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
18
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
19
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false },
20
+ },
21
+ run: async ({ args }) => {
22
+ try {
23
+ const id = args.id || args["video-id"];
24
+ if (!id) {
25
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Video ID is required" } });
26
+ process.exit(1);
27
+ }
28
+ validateConvexId(id);
29
+ const data = await apiGet("/api/videos/get", { id });
30
+ writeOutput({ ok: true, data }, args.output || "json", args.fields ? args.fields.split(",") : undefined, args.full, videoNormalizer);
31
+ }
32
+ catch (err) {
33
+ if (err instanceof ApiError) {
34
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
35
+ process.exit(1);
36
+ }
37
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
38
+ process.exit(1);
39
+ }
40
+ },
41
+ });
42
+ //# sourceMappingURL=get.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/videos/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAqB,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,cAAc,CAAC;IACb,OAAO,EAAE,YAAY;IACrB,WAAW,EAAE,0BAA0B;IACvC,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE;KAChE;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,aAAa,CAAC;IACtC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,gEAAgE,EAAE;IACpG,IAAI,EAAE;QACJ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE;QACpE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE,QAAQ,EAAE,KAAK,EAAE;QACpG,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;QACzG,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wCAAwC,EAAE,QAAQ,EAAE,KAAK,EAAE;QAClG,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,uBAAuB,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE;KACjG;IACD,GAAG,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,EAAE,GAAI,IAAI,CAAC,EAAyB,IAAK,IAAI,CAAC,UAAU,CAAwB,CAAC;YACvF,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,CAAC,CAAC;gBAC/F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAU,iBAAiB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9D,WAAW,CACT,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EACjB,IAAI,CAAC,MAAuB,IAAI,MAAM,EACvC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,EAChD,IAAI,CAAC,IAAe,EACpB,eAAe,CAChB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;gBAC5B,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;gBAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;CACF,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const videosCommand: import("citty").CommandDef<import("citty").ArgsDef>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/videos/index.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,qDAkBxB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { defineCommand } from "citty";
2
+ import { deleteCommand } from "./delete.js";
3
+ import { getCommand } from "./get.js";
4
+ import { searchCommand } from "./search.js";
5
+ import { uploadCommand } from "./upload.js";
6
+ export const videosCommand = defineCommand({
7
+ meta: {
8
+ name: "videos",
9
+ description: `Find and manage videos in Baker. Subcommands: search, get, upload, delete.
10
+
11
+ Examples:
12
+ baker videos search "product demo" --limit 5
13
+ baker videos search "tutorial" --tags explainer
14
+ baker videos get <video-id>
15
+ baker videos upload ./demo.mp4
16
+ baker videos delete <video-id> --dry-run`,
17
+ },
18
+ subCommands: {
19
+ get: getCommand,
20
+ search: searchCommand,
21
+ upload: uploadCommand,
22
+ delete: deleteCommand,
23
+ },
24
+ });
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/videos/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,aAAa,GAAG,aAAa,CAAC;IACzC,IAAI,EAAE;QACJ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE;;;;;;;2CAO0B;KACxC;IACD,WAAW,EAAE;QACX,GAAG,EAAE,UAAU;QACf,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,aAAa;KACtB;CACF,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ export declare const searchCommand: import("citty").CommandDef<{
2
+ readonly query: {
3
+ readonly type: "positional";
4
+ readonly description: "Search query text";
5
+ readonly required: false;
6
+ };
7
+ readonly limit: {
8
+ readonly type: "string";
9
+ readonly description: "Max results (default 20)";
10
+ readonly required: false;
11
+ };
12
+ readonly tags: {
13
+ readonly type: "string";
14
+ readonly description: "Comma-separated tags to filter by";
15
+ readonly required: false;
16
+ };
17
+ readonly output: {
18
+ readonly type: "string";
19
+ readonly description: "Output format: json|files|md";
20
+ readonly required: false;
21
+ readonly default: "json";
22
+ };
23
+ readonly fields: {
24
+ readonly type: "string";
25
+ readonly description: "Comma-separated field names to include";
26
+ readonly required: false;
27
+ };
28
+ readonly full: {
29
+ readonly type: "boolean";
30
+ readonly description: "Include full metadata";
31
+ readonly required: false;
32
+ readonly default: false;
33
+ };
34
+ }>;
35
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../src/commands/videos/search.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+CxB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { defineCommand } from "citty";
2
+ import { ApiError, apiPost } from "../../client.js";
3
+ import { videoNormalizer, writeJson, writeOutput } from "../../output.js";
4
+ import { registerSchema } from "../../schemas.js";
5
+ registerSchema({
6
+ command: "videos.search",
7
+ description: "Search videos by text query. Only returns ready videos.",
8
+ args: {
9
+ query: { type: "string", description: "Search query text", required: true },
10
+ limit: { type: "number", description: "Maximum results to return", required: false, default: 20 },
11
+ tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
12
+ },
13
+ });
14
+ export const searchCommand = defineCommand({
15
+ meta: {
16
+ name: "search",
17
+ description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial",
18
+ },
19
+ args: {
20
+ query: { type: "positional", description: "Search query text", required: false },
21
+ limit: { type: "string", description: "Max results (default 20)", required: false },
22
+ tags: { type: "string", description: "Comma-separated tags to filter by", required: false },
23
+ output: { type: "string", description: "Output format: json|files|md", required: false, default: "json" },
24
+ fields: { type: "string", description: "Comma-separated field names to include", required: false },
25
+ full: { type: "boolean", description: "Include full metadata", required: false, default: false },
26
+ },
27
+ run: async ({ args }) => {
28
+ try {
29
+ const query = args.query;
30
+ if (!query) {
31
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "Search query is required" } });
32
+ process.exit(1);
33
+ }
34
+ const body = { query };
35
+ if (args.limit) {
36
+ body.limit = Number(args.limit);
37
+ }
38
+ if (args.tags) {
39
+ body.tags = args.tags.split(",").filter(Boolean);
40
+ }
41
+ const data = await apiPost("/api/videos/search", body);
42
+ writeOutput({ ok: true, data }, args.output || "json", args.fields ? args.fields.split(",") : undefined, args.full, videoNormalizer);
43
+ }
44
+ catch (err) {
45
+ if (err instanceof ApiError) {
46
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
47
+ process.exit(1);
48
+ }
49
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
50
+ process.exit(1);
51
+ }
52
+ },
53
+ });
54
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/commands/videos/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export declare const uploadCommand: import("citty").CommandDef<{
2
+ readonly file: {
3
+ readonly type: "positional";
4
+ readonly description: "Path to the video file";
5
+ readonly required: false;
6
+ };
7
+ readonly "content-type": {
8
+ readonly type: "string";
9
+ readonly description: "MIME type (auto-detected if omitted)";
10
+ readonly required: false;
11
+ };
12
+ readonly "dry-run": {
13
+ readonly type: "boolean";
14
+ readonly description: "Preview without executing";
15
+ readonly required: false;
16
+ readonly default: false;
17
+ };
18
+ }>;
19
+ //# sourceMappingURL=upload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../../src/commands/videos/upload.ts"],"names":[],"mappings":"AA2CA,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;EA4DxB,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { readFile, stat } from "node:fs/promises";
2
+ import { extname } from "node:path";
3
+ import { defineCommand } from "citty";
4
+ import { ApiError, apiPost } from "../../client.js";
5
+ import { writeJson } from "../../output.js";
6
+ import { registerSchema } from "../../schemas.js";
7
+ const MIME_MAP = {
8
+ ".mp4": "video/mp4",
9
+ ".mov": "video/quicktime",
10
+ ".webm": "video/webm",
11
+ ".avi": "video/x-msvideo",
12
+ ".mkv": "video/x-matroska",
13
+ };
14
+ registerSchema({
15
+ command: "videos.upload",
16
+ description: "Upload a video file to Baker (via Mux direct upload)",
17
+ args: {
18
+ file: { type: "string", description: "Path to the video file", required: true },
19
+ "content-type": {
20
+ type: "string",
21
+ description: "MIME type (auto-detected from extension if omitted)",
22
+ required: false,
23
+ },
24
+ "dry-run": {
25
+ type: "boolean",
26
+ description: "Preview the operation without executing",
27
+ required: false,
28
+ default: false,
29
+ },
30
+ },
31
+ });
32
+ function detectContentType(filePath) {
33
+ const ext = extname(filePath).toLowerCase();
34
+ const mime = MIME_MAP[ext];
35
+ if (!mime) {
36
+ throw new ApiError("VALIDATION_ERROR", `Cannot detect content type for extension "${ext}". Use --content-type.`);
37
+ }
38
+ return mime;
39
+ }
40
+ export const uploadCommand = defineCommand({
41
+ meta: {
42
+ name: "upload",
43
+ description: "Upload a video file to Baker via Mux direct upload. Auto-detects content type. Example: baker videos upload ./demo.mp4",
44
+ },
45
+ args: {
46
+ file: { type: "positional", description: "Path to the video file", required: false },
47
+ "content-type": { type: "string", description: "MIME type (auto-detected if omitted)", required: false },
48
+ "dry-run": { type: "boolean", description: "Preview without executing", required: false, default: false },
49
+ },
50
+ run: async ({ args }) => {
51
+ try {
52
+ const filePath = args.file;
53
+ if (!filePath) {
54
+ writeJson({ ok: false, error: { code: "VALIDATION_ERROR", message: "File path is required" } });
55
+ process.exit(1);
56
+ }
57
+ const contentType = args["content-type"] || detectContentType(filePath);
58
+ if (args["dry-run"]) {
59
+ const fileStats = await stat(filePath);
60
+ writeJson({
61
+ ok: true,
62
+ dryRun: true,
63
+ operation: "videos.upload",
64
+ params: { file: filePath, contentType, sizeBytes: fileStats.size },
65
+ });
66
+ return;
67
+ }
68
+ // Step 1: Get a Mux direct upload URL from backend
69
+ const { uploadUrl, videoId } = await apiPost("/api/videos/upload", {});
70
+ // Step 2: PUT the file directly to Mux
71
+ const fileBuffer = await readFile(filePath);
72
+ const uploadResponse = await fetch(uploadUrl, {
73
+ method: "PUT",
74
+ headers: { "Content-Type": contentType },
75
+ body: fileBuffer,
76
+ });
77
+ if (!uploadResponse.ok) {
78
+ throw new ApiError("INTERNAL_ERROR", `Mux upload failed: HTTP ${uploadResponse.status} ${uploadResponse.statusText}`);
79
+ }
80
+ writeJson({ ok: true, data: { videoId } });
81
+ }
82
+ catch (err) {
83
+ if (err instanceof ApiError) {
84
+ writeJson({ ok: false, error: { code: err.code, message: err.message } });
85
+ process.exit(1);
86
+ }
87
+ writeJson({ ok: false, error: { code: "INTERNAL_ERROR", message: "Unexpected error" } });
88
+ process.exit(1);
89
+ }
90
+ },
91
+ });
92
+ //# sourceMappingURL=upload.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upload.js","sourceRoot":"","sources":["../../../src/commands/videos/upload.ts"],"names":[],"mappings":"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"}
package/dist/output.d.ts CHANGED
@@ -22,6 +22,7 @@ interface DryRunEnvelope {
22
22
  params: Record<string, unknown>;
23
23
  }
24
24
  type Envelope<T> = SuccessEnvelope<T> | ErrorEnvelope | DryRunEnvelope;
25
+ type Normalizer = (record: Record<string, unknown>, full: boolean) => Record<string, unknown>;
25
26
  export declare function formatAspectRatio(ratio: number | undefined): string | null;
26
27
  interface ImageCompact {
27
28
  _id: string;
@@ -32,8 +33,10 @@ interface ImageCompact {
32
33
  }
33
34
  export declare function compactImage(image: Record<string, unknown>): ImageCompact;
34
35
  export declare function fullImage(image: Record<string, unknown>): Record<string, unknown>;
36
+ export declare function videoNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown>;
37
+ export declare function testimonialNormalizer(record: Record<string, unknown>, full: boolean): Record<string, unknown>;
35
38
  export declare function applyFieldMask<T extends Record<string, unknown>>(data: T, fields: string[]): Partial<T>;
36
39
  export declare function writeJson<T>(envelope: Envelope<T>): void;
37
- export declare function writeOutput<T>(envelope: Envelope<T>, format: OutputFormat, fields?: string[], full?: boolean): void;
40
+ export declare function writeOutput<T>(envelope: Envelope<T>, format: OutputFormat, fields?: string[], full?: boolean, normalizer?: Normalizer): void;
38
41
  export {};
39
42
  //# sourceMappingURL=output.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEnD,UAAU,eAAe,CAAC,CAAC;IACzB,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,cAAc,CAAC;AAiBvE,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAU1E;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAQzE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYjF;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAQvG;AAMD,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAExD;AA2CD,wBAAgB,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAuBnH"}
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;AAEnD,UAAU,eAAe,CAAC,CAAC;IACzB,EAAE,EAAE,IAAI,CAAC;IACT,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/D;AAED,UAAU,aAAa;IACrB,EAAE,EAAE,KAAK,CAAC;IACV,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED,UAAU,cAAc;IACtB,EAAE,EAAE,IAAI,CAAC;IACT,MAAM,EAAE,IAAI,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,KAAK,QAAQ,CAAC,CAAC,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,cAAc,CAAC;AAEvE,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAiB9F,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAU1E;AAED,UAAU,YAAY;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAQzE;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYjF;AAwCD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAKvG;AA6CD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAK7G;AAED,wBAAgB,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAQvG;AAMD,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAExD;AAyCD,wBAAgB,WAAW,CAAC,CAAC,EAC3B,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,EACrB,MAAM,EAAE,YAAY,EACpB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,IAAI,CAAC,EAAE,OAAO,EACd,UAAU,CAAC,EAAE,UAAU,GACtB,IAAI,CAuBN"}
package/dist/output.js CHANGED
@@ -44,6 +44,75 @@ export function fullImage(image) {
44
44
  createdAt: image.createdAt ?? null,
45
45
  };
46
46
  }
47
+ function imageNormalizer(record, full) {
48
+ if (full) {
49
+ return fullImage(record);
50
+ }
51
+ return compactImage(record);
52
+ }
53
+ function compactVideo(video) {
54
+ return {
55
+ _id: String(video._id ?? ""),
56
+ name: String(video.name ?? ""),
57
+ thumbnailUrl: String(video.thumbnailUrl ?? ""),
58
+ description: String(video.description ?? ""),
59
+ tags: Array.isArray(video.tags) ? video.tags : [],
60
+ status: String(video.status ?? ""),
61
+ };
62
+ }
63
+ function fullVideo(video) {
64
+ const compact = compactVideo(video);
65
+ return {
66
+ ...compact,
67
+ duration: video.duration ?? null,
68
+ muxPlaybackId: String(video.muxPlaybackId ?? ""),
69
+ source: String(video.source ?? ""),
70
+ createdAt: video.createdAt ?? null,
71
+ };
72
+ }
73
+ export function videoNormalizer(record, full) {
74
+ if (full) {
75
+ return fullVideo(record);
76
+ }
77
+ return compactVideo(record);
78
+ }
79
+ function truncate(text, maxLength) {
80
+ if (text.length <= maxLength)
81
+ return text;
82
+ return `${text.slice(0, maxLength)}...`;
83
+ }
84
+ function compactTestimonial(record) {
85
+ return {
86
+ _id: String(record._id ?? ""),
87
+ reviewerName: String(record.reviewerName ?? ""),
88
+ reviewText: truncate(String(record.reviewText ?? ""), 200),
89
+ rating: record.rating ?? null,
90
+ sentiment: record.sentiment ?? null,
91
+ tags: Array.isArray(record.tags) ? record.tags : [],
92
+ sourceType: String(record.sourceType ?? ""),
93
+ };
94
+ }
95
+ function fullTestimonial(record) {
96
+ const compact = compactTestimonial(record);
97
+ return {
98
+ ...compact,
99
+ reviewText: String(record.reviewText ?? ""),
100
+ highlight: record.highlight ?? null,
101
+ summary: record.summary ?? null,
102
+ language: record.language ?? null,
103
+ reviewerImageUrl: record.reviewerImageUrl ?? null,
104
+ sourceUrl: record.sourceUrl ?? null,
105
+ reviewDate: record.reviewDate ?? null,
106
+ createdAt: record.createdAt ?? null,
107
+ status: String(record.status ?? ""),
108
+ };
109
+ }
110
+ export function testimonialNormalizer(record, full) {
111
+ if (full) {
112
+ return fullTestimonial(record);
113
+ }
114
+ return compactTestimonial(record);
115
+ }
47
116
  export function applyFieldMask(data, fields) {
48
117
  const result = {};
49
118
  for (const field of fields) {
@@ -78,21 +147,18 @@ function writeMd(data, fields) {
78
147
  write(`| ${values.join(" | ")} |\n`);
79
148
  }
80
149
  }
81
- function normalizeData(envelope, fields, full) {
150
+ function normalizeData(envelope, fields, full, normalizer) {
82
151
  const raw = Array.isArray(envelope.data) ? envelope.data : [envelope.data];
83
152
  const items = raw.map((item) => {
84
153
  const record = item;
85
- if (full) {
86
- return fullImage(record);
87
- }
88
- return compactImage(record);
154
+ return normalizer(record, full);
89
155
  });
90
156
  if (fields) {
91
157
  return items.map((item) => applyFieldMask(item, fields));
92
158
  }
93
159
  return items;
94
160
  }
95
- export function writeOutput(envelope, format, fields, full) {
161
+ export function writeOutput(envelope, format, fields, full, normalizer) {
96
162
  // Errors and dry runs always output JSON
97
163
  if (!envelope.ok || "dryRun" in envelope) {
98
164
  writeJson(envelope);
@@ -102,7 +168,7 @@ export function writeOutput(envelope, format, fields, full) {
102
168
  writeJson(envelope);
103
169
  return;
104
170
  }
105
- const items = normalizeData(envelope, fields, full ?? false);
171
+ const items = normalizeData(envelope, fields, full ?? false, normalizer ?? imageNormalizer);
106
172
  const displayFields = fields ?? Object.keys(items[0] ?? {});
107
173
  if (format === "files") {
108
174
  writeFiles(items, displayFields);
@@ -1 +1 @@
1
- {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@koda-sl/baker-cli",
3
- "version": "0.4.1",
3
+ "version": "0.5.1",
4
4
  "description": "AI-agent-first CLI for interacting with Baker",
5
5
  "type": "module",
6
6
  "bin": {