@koda-sl/baker-cli 0.111.0-dev.b43dfb4db → 0.111.0-dev.cddbc8759
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/README.md +2 -20
- package/dist/cli.js +71 -240
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -12,7 +12,7 @@ import {
|
|
|
12
12
|
} from "./chunk-26K7V346.js";
|
|
13
13
|
|
|
14
14
|
// src/cli.ts
|
|
15
|
-
import { defineCommand as
|
|
15
|
+
import { defineCommand as defineCommand156, runMain } from "citty";
|
|
16
16
|
|
|
17
17
|
// src/commands/actions/index.ts
|
|
18
18
|
import { defineCommand as defineCommand18 } from "citty";
|
|
@@ -31,7 +31,6 @@ function getEnv() {
|
|
|
31
31
|
BAKER_API_KEY: z.string().startsWith("bk_", "API key must start with 'bk_'"),
|
|
32
32
|
BAKER_API_URL: z.url("BAKER_API_URL must be a valid URL"),
|
|
33
33
|
BAKER_CHAT_ID: z.string().optional(),
|
|
34
|
-
BAKER_ACTING_USER_ID: z.string().optional(),
|
|
35
34
|
BAKER_GOOGLE_ADS_CUSTOMER_ID: z.string().regex(/^\d{10}$/).optional(),
|
|
36
35
|
BAKER_GA4_PROPERTY_ID: z.string().optional(),
|
|
37
36
|
BAKER_GSC_SITE_URL: z.string().optional(),
|
|
@@ -4553,8 +4552,7 @@ function requireCustomerId(args) {
|
|
|
4553
4552
|
return raw;
|
|
4554
4553
|
}
|
|
4555
4554
|
function requireTarget(args, entity) {
|
|
4556
|
-
const
|
|
4557
|
-
const target = args.id ?? args.target ?? positional;
|
|
4555
|
+
const target = args.id ?? args.target ?? args._?.[0];
|
|
4558
4556
|
if (typeof target !== "string" || target.length === 0) {
|
|
4559
4557
|
failWriteValidation(`pass the ${entity} resource name or id as the positional argument`);
|
|
4560
4558
|
}
|
|
@@ -12650,7 +12648,7 @@ function roleForType(type) {
|
|
|
12650
12648
|
return "the showcased product; keep this exact product identity. Ignore any caption text printed on this reference.";
|
|
12651
12649
|
case "person":
|
|
12652
12650
|
case "animal":
|
|
12653
|
-
return "the
|
|
12651
|
+
return "the hero subject; keep this identity AND the expression the blueprint specifies. Ignore any caption text printed on this reference.";
|
|
12654
12652
|
default:
|
|
12655
12653
|
return "an identity-bearing element; reproduce it faithfully from this reference. Ignore any caption text printed on it.";
|
|
12656
12654
|
}
|
|
@@ -12658,9 +12656,7 @@ function roleForType(type) {
|
|
|
12658
12656
|
function todoPath(el, label) {
|
|
12659
12657
|
const desc = el.description ? ` \u2014 ${el.description}` : "";
|
|
12660
12658
|
const expr = el.expression ? `, with a ${el.expression} expression` : "";
|
|
12661
|
-
|
|
12662
|
-
const lock = t === "person" || t === "animal" ? " \u2014 REQUIRED: this is the emotional hero; ground it in a real reference (image-library / video-library / Pinterest), do not delete this slot and free-generate" : "";
|
|
12663
|
-
return `[TODO: drop a real image for ${label} (${el.type})${desc}${expr}${lock}]`;
|
|
12659
|
+
return `[TODO: drop a real image for ${label} (${el.type})${desc}${expr}]`;
|
|
12664
12660
|
}
|
|
12665
12661
|
function aspectRatio(blueprint, opts) {
|
|
12666
12662
|
const requested = opts.aspectRatio ?? blueprint.meta?.estimated_aspect_ratio;
|
|
@@ -12775,7 +12771,7 @@ function resolveModel(kind, preferred) {
|
|
|
12775
12771
|
const ids = Object.keys(MODEL_REGISTRY[kind]);
|
|
12776
12772
|
return ids.includes(preferred) ? preferred : ids[0] ?? preferred;
|
|
12777
12773
|
}
|
|
12778
|
-
var DESCRIBE_FOCUS =
|
|
12774
|
+
var DESCRIBE_FOCUS = "the GLOBAL LAYOUT GEOMETRY above all \u2014 the column/row grid, each region's approximate bounds as a percentage of frame width and height, any panel SPLITS and their proportions (e.g. a left column split into a ~60% top photo and a ~20% bottom price box), what occupies every region, and for EVERY text block its string verbatim, relative size (x_large | large | medium | small), weight, case, color, and alignment \u2014 including small bottom-corner fine print. Also: the EXPRESSION and emotion of every person/animal (capture exaggerated or AI-edited faces), the ad_intent (what feeling it engineers and how), per-color brand_ownership (which colors are the advertiser's brand vs borrowed-functional like a red comparison column), logos by brand, and all visible text verbatim";
|
|
12779
12775
|
var LAYOUT_SYSTEM = "You convert an advertisement's JSON blueprint into a precise, structured LAYOUT MAP of the frame \u2014 the spatial grid a designer would rebuild it from. Be exhaustive and quantitative: every region, its bounds as a percentage of the frame, and every text block with its relative size. Output ONLY a JSON object, no prose.";
|
|
12780
12776
|
var LAYOUT_PROMPT = `AD BLUEPRINT (from image_describe):
|
|
12781
12777
|
{{blueprint}}
|
|
@@ -12797,20 +12793,7 @@ Return a JSON object describing the GLOBAL LAYOUT of the frame precisely enough
|
|
|
12797
12793
|
|
|
12798
12794
|
Use the blueprint's positions, sizes, text_content, and colors. Estimate the percentages and split proportions as accurately as you can (e.g. a column split 60/20 with a 20% gap). Cover EVERY visible element \u2014 photos, text boxes, badges, background shapes, and small corner text \u2014 top-to-bottom, left-to-right. Output ONLY the JSON object.`;
|
|
12799
12795
|
var SELECT_SYSTEM = 'You identify the MAIN, identity-critical visual elements of an advertisement from its JSON blueprint \u2014 the things a faithful reproduction must supply as REAL reference images instead of letting a model invent them. Output ONLY a JSON object of the form { "elements": [ ... ] }, no prose.';
|
|
12800
|
-
var SELECT_PROMPT =
|
|
12801
|
-
{{blueprint}}
|
|
12802
|
-
|
|
12803
|
-
From this blueprint, list ONLY the elements that are prominent, important, and identity-bearing \u2014 the ones a reproduction must ground in a real asset:
|
|
12804
|
-
- the brand logo/wordmark (from brands_logos with function_in_image = advertiser_brand) -> type "logo"
|
|
12805
|
-
- trust/rating/certification/app-store/review badges (brands_logos with function_in_image = trust_badge | review_platform | certification_or_seal | app_store_badge | payment_method) -> type "badge"
|
|
12806
|
-
- a showcased/hero product or package (a foreground entry in subjects that the ad is selling) -> type "product"
|
|
12807
|
-
- a foreground person (from people) \u2014 keep it when its identity matters OR it is the emotional/hero focal point of the ad, even a generic one with no brand identity -> type "person"
|
|
12808
|
-
- a foreground animal/character (from subjects) \u2014 keep it when it carries a specific expression OR it is the emotional/hero focal point, even a generic one -> type "animal"
|
|
12809
|
-
(For both: a free-generated face, muzzle, hands, or teeth reads as AI and grows artifacts \u2014 malformed mouths, extra fingers, foam \u2014 so the emotional hero needs the STRONGEST real grounding, not the weakest; "it's just a generic dog/person" is never a reason to drop it.)
|
|
12810
|
-
|
|
12811
|
-
DROP background extras, decorative props, generic scenery, and anything small or incidental. Keep at most ~6. If there are none, return an empty list.
|
|
12812
|
-
|
|
12813
|
-
For each kept element return: { "type": one of logo|product|person|animal|badge, "label": a short UPPER_SNAKE_CASE name (e.g. LOGO, PRODUCT, HERO_DOG, TRUSTPILOT), "description": a concrete reusable description to source/shoot the real asset (include the exact expression for a living subject, and its castable attributes \u2014 breed/species for an animal, apparent age band, apparent origin/ethnicity, and wardrobe/setting for a person \u2014 so it can be recast to fit OUR audience/market), "expression": the facial expression for a living subject or null, "reason": why it is identity-critical, "locator": the blueprint entry this element came from as { "collection": one of "subjects" | "people" | "brands_logos", "index": its 0-based position in that array } (people -> people; logos/badges -> brands_logos; products/animals/objects -> subjects). Output ONLY the JSON object.`;
|
|
12796
|
+
var SELECT_PROMPT = 'AD BLUEPRINT (from image_describe):\n{{blueprint}}\n\nFrom this blueprint, list ONLY the elements that are prominent, important, and identity-bearing \u2014 the ones a reproduction must ground in a real asset:\n- the brand logo/wordmark (from brands_logos with function_in_image = advertiser_brand) -> type "logo"\n- trust/rating/certification/app-store/review badges (brands_logos with function_in_image = trust_badge | review_platform | certification_or_seal | app_store_badge | payment_method) -> type "badge"\n- a showcased/hero product or package (a foreground entry in subjects that the ad is selling) -> type "product"\n- a foreground person whose identity matters (from people) -> type "person"\n- a foreground animal/character with a specific expression (from subjects) -> type "animal"\n\nDROP background extras, decorative props, generic scenery, and anything small or incidental. Keep at most ~6. If there are none, return an empty list.\n\nFor each kept element return: { "type": one of logo|product|person|animal|badge, "label": a short UPPER_SNAKE_CASE name (e.g. LOGO, PRODUCT, HERO_DOG, TRUSTPILOT), "description": a concrete reusable description to source/shoot the real asset (include the exact expression for a living subject), "expression": the facial expression for a living subject or null, "reason": why it is identity-critical, "locator": the blueprint entry this element came from as { "collection": one of "subjects" | "people" | "brands_logos", "index": its 0-based position in that array } (people -> people; logos/badges -> brands_logos; products/animals/objects -> subjects). Output ONLY the JSON object.';
|
|
12814
12797
|
async function loadAssetText(ref, label) {
|
|
12815
12798
|
const r = ref;
|
|
12816
12799
|
if (typeof r?.path === "string") return readFile3(r.path, "utf8");
|
|
@@ -19743,162 +19726,11 @@ Paid transforms (run on the Convex backend, cost-tracked):
|
|
|
19743
19726
|
}
|
|
19744
19727
|
});
|
|
19745
19728
|
|
|
19746
|
-
// src/commands/mcp/index.ts
|
|
19747
|
-
import { defineCommand as defineCommand125 } from "citty";
|
|
19748
|
-
var SCOPES = ["user", "company", "org"];
|
|
19749
|
-
function parseScope(raw) {
|
|
19750
|
-
const scope = raw === void 0 ? "company" : String(raw);
|
|
19751
|
-
if (!SCOPES.includes(scope)) {
|
|
19752
|
-
throw new ApiError("VALIDATION_ERROR", `Invalid --scope "${scope}". Use user | company | org.`);
|
|
19753
|
-
}
|
|
19754
|
-
return scope;
|
|
19755
|
-
}
|
|
19756
|
-
function actingUserId() {
|
|
19757
|
-
return getEnv().BAKER_ACTING_USER_ID;
|
|
19758
|
-
}
|
|
19759
|
-
function parseHeaders(raw) {
|
|
19760
|
-
const list = raw === void 0 ? [] : Array.isArray(raw) ? raw : [raw];
|
|
19761
|
-
const headers = {};
|
|
19762
|
-
for (const entry of list) {
|
|
19763
|
-
const text = String(entry);
|
|
19764
|
-
const sep = text.indexOf(":") >= 0 && (text.indexOf(":") < text.indexOf("=") || text.indexOf("=") < 0) ? ":" : "=";
|
|
19765
|
-
const at = text.indexOf(sep);
|
|
19766
|
-
if (at <= 0) {
|
|
19767
|
-
throw new ApiError("VALIDATION_ERROR", `Invalid header "${text}". Use "Key: Value".`);
|
|
19768
|
-
}
|
|
19769
|
-
headers[text.slice(0, at).trim()] = text.slice(at + 1).trim();
|
|
19770
|
-
}
|
|
19771
|
-
return Object.keys(headers).length > 0 ? headers : void 0;
|
|
19772
|
-
}
|
|
19773
|
-
function fail3(err) {
|
|
19774
|
-
if (err instanceof ApiError) {
|
|
19775
|
-
writeJson({ ok: false, error: { code: err.code, message: err.message } });
|
|
19776
|
-
process.exit(1);
|
|
19777
|
-
}
|
|
19778
|
-
writeJson({ ok: false, error: { code: "NETWORK_ERROR", message: "Unexpected error" } });
|
|
19779
|
-
process.exit(1);
|
|
19780
|
-
}
|
|
19781
|
-
registerSchema({
|
|
19782
|
-
command: "mcp.list",
|
|
19783
|
-
description: "List the custom MCP servers this company's chats see (org + company + your own user scope).",
|
|
19784
|
-
args: {}
|
|
19785
|
-
});
|
|
19786
|
-
var listCommand4 = defineCommand125({
|
|
19787
|
-
meta: { name: "list", description: "List custom MCP servers visible to this company's chats." },
|
|
19788
|
-
run: async () => {
|
|
19789
|
-
try {
|
|
19790
|
-
const user = actingUserId();
|
|
19791
|
-
const data = await apiGet(
|
|
19792
|
-
"/api/mcp/custom",
|
|
19793
|
-
user ? { actingUserId: user } : void 0
|
|
19794
|
-
);
|
|
19795
|
-
writeJson({ ok: true, data: data.servers });
|
|
19796
|
-
} catch (err) {
|
|
19797
|
-
fail3(err);
|
|
19798
|
-
}
|
|
19799
|
-
}
|
|
19800
|
-
});
|
|
19801
|
-
registerSchema({
|
|
19802
|
-
command: "mcp.add",
|
|
19803
|
-
description: "Register a custom MCP server. Tools appear as mcp__<name>__* on the next message. URL must be HTTPS. Scope: company (default, all chats) | org (org admin key) | user (only the current sender).",
|
|
19804
|
-
args: {
|
|
19805
|
-
name: { type: "string", description: "Server name \u2192 tools appear as mcp__<name>__*", required: true },
|
|
19806
|
-
url: { type: "string", description: "HTTPS MCP endpoint", required: true },
|
|
19807
|
-
scope: { type: "string", description: "user | company | org (default company)", required: false },
|
|
19808
|
-
header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
|
|
19809
|
-
}
|
|
19810
|
-
});
|
|
19811
|
-
var addCommand = defineCommand125({
|
|
19812
|
-
meta: {
|
|
19813
|
-
name: "add",
|
|
19814
|
-
description: `Register a custom MCP server. Tools appear as mcp__<name>__* on the NEXT message.
|
|
19815
|
-
|
|
19816
|
-
Scope: company (default \u2014 every chat in the company) | org (all companies in the org; needs an admin key) | user (only the current message sender).
|
|
19817
|
-
|
|
19818
|
-
Examples:
|
|
19819
|
-
baker mcp add --name weather --url https://mcp.example.com/mcp
|
|
19820
|
-
baker mcp add --name acme --url https://acme.dev/mcp --header "Authorization: Bearer sk-\u2026"
|
|
19821
|
-
baker mcp add --name mine --url https://my.dev/mcp --scope user`
|
|
19822
|
-
},
|
|
19823
|
-
args: {
|
|
19824
|
-
name: { type: "string", description: "Server name (mcp__<name>__*)", required: true },
|
|
19825
|
-
url: { type: "string", description: "HTTPS MCP endpoint", required: true },
|
|
19826
|
-
scope: { type: "string", description: "user | company | org (default company)", required: false },
|
|
19827
|
-
header: { type: "string", description: 'Auth header "Key: Value" (repeatable)', required: false }
|
|
19828
|
-
},
|
|
19829
|
-
run: async ({ args }) => {
|
|
19830
|
-
try {
|
|
19831
|
-
const scope = parseScope(args.scope);
|
|
19832
|
-
const user = actingUserId();
|
|
19833
|
-
const headers = parseHeaders(args.header);
|
|
19834
|
-
const data = await apiPost("/api/mcp/custom", {
|
|
19835
|
-
name: args.name,
|
|
19836
|
-
url: args.url,
|
|
19837
|
-
scope,
|
|
19838
|
-
...user ? { actingUserId: user } : {},
|
|
19839
|
-
...headers ? { headers } : {}
|
|
19840
|
-
});
|
|
19841
|
-
writeJson({ ok: true, data });
|
|
19842
|
-
} catch (err) {
|
|
19843
|
-
fail3(err);
|
|
19844
|
-
}
|
|
19845
|
-
}
|
|
19846
|
-
});
|
|
19847
|
-
registerSchema({
|
|
19848
|
-
command: "mcp.remove",
|
|
19849
|
-
description: "Remove a company custom MCP server by name.",
|
|
19850
|
-
args: { name: { type: "string", description: "Server name to remove", required: true } }
|
|
19851
|
-
});
|
|
19852
|
-
var removeCommand3 = defineCommand125({
|
|
19853
|
-
meta: {
|
|
19854
|
-
name: "remove",
|
|
19855
|
-
description: `Remove a company custom MCP server by name.
|
|
19856
|
-
|
|
19857
|
-
Example:
|
|
19858
|
-
baker mcp remove --name weather`
|
|
19859
|
-
},
|
|
19860
|
-
args: { name: { type: "string", description: "Server name to remove", required: true } },
|
|
19861
|
-
run: async ({ args }) => {
|
|
19862
|
-
try {
|
|
19863
|
-
const user = actingUserId();
|
|
19864
|
-
const data = await apiPost("/api/mcp/custom/remove", {
|
|
19865
|
-
name: args.name,
|
|
19866
|
-
...user ? { actingUserId: user } : {}
|
|
19867
|
-
});
|
|
19868
|
-
writeJson({ ok: true, data });
|
|
19869
|
-
} catch (err) {
|
|
19870
|
-
fail3(err);
|
|
19871
|
-
}
|
|
19872
|
-
}
|
|
19873
|
-
});
|
|
19874
|
-
var mcpCommand = defineCommand125({
|
|
19875
|
-
meta: {
|
|
19876
|
-
name: "mcp",
|
|
19877
|
-
description: `Custom MCP servers for this company \u2014 point the agent at any HTTPS MCP endpoint.
|
|
19878
|
-
|
|
19879
|
-
Tools from a registered server appear as mcp__<name>__* on the next message.
|
|
19880
|
-
Managed here are **company-scoped** servers; user- and org-scoped servers are managed in the dashboard.
|
|
19881
|
-
|
|
19882
|
-
Start here:
|
|
19883
|
-
baker mcp list
|
|
19884
|
-
|
|
19885
|
-
Examples:
|
|
19886
|
-
baker mcp add --name weather --url https://mcp.example.com/mcp
|
|
19887
|
-
baker mcp add --name acme --url https://acme.dev/mcp --header "Authorization: Bearer sk-\u2026"
|
|
19888
|
-
baker mcp remove --name weather`
|
|
19889
|
-
},
|
|
19890
|
-
subCommands: {
|
|
19891
|
-
list: listCommand4,
|
|
19892
|
-
add: addCommand,
|
|
19893
|
-
remove: removeCommand3
|
|
19894
|
-
}
|
|
19895
|
-
});
|
|
19896
|
-
|
|
19897
19729
|
// src/commands/research/index.ts
|
|
19898
|
-
import { defineCommand as
|
|
19730
|
+
import { defineCommand as defineCommand135 } from "citty";
|
|
19899
19731
|
|
|
19900
19732
|
// src/commands/research/advertisers.ts
|
|
19901
|
-
import { defineCommand as
|
|
19733
|
+
import { defineCommand as defineCommand125 } from "citty";
|
|
19902
19734
|
|
|
19903
19735
|
// src/commands/research/output.ts
|
|
19904
19736
|
var RESEARCH_DATA_NOTE = "Estimates based on third-party SERP data \u2014 not exact figures. Use for directional insights, not precise measurement.";
|
|
@@ -20011,7 +19843,7 @@ var FIELDS3 = {
|
|
|
20011
19843
|
etv: "Estimated traffic value (USD)",
|
|
20012
19844
|
visibility: "SERP visibility score (0-1)"
|
|
20013
19845
|
};
|
|
20014
|
-
var advertisersCommand =
|
|
19846
|
+
var advertisersCommand = defineCommand125({
|
|
20015
19847
|
meta: {
|
|
20016
19848
|
name: "advertisers",
|
|
20017
19849
|
description: `Find domains competing for a keyword in Google SERPs.
|
|
@@ -20058,7 +19890,7 @@ Examples:
|
|
|
20058
19890
|
});
|
|
20059
19891
|
|
|
20060
19892
|
// src/commands/research/autocomplete.ts
|
|
20061
|
-
import { defineCommand as
|
|
19893
|
+
import { defineCommand as defineCommand126 } from "citty";
|
|
20062
19894
|
registerSchema({
|
|
20063
19895
|
command: "research.autocomplete",
|
|
20064
19896
|
description: "Get Google Autocomplete suggestions for a seed keyword. Useful for keyword expansion and discovering what people actually search for. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
@@ -20081,7 +19913,7 @@ registerSchema({
|
|
|
20081
19913
|
var FIELDS4 = {
|
|
20082
19914
|
suggestion: "Autocomplete suggestion from Google"
|
|
20083
19915
|
};
|
|
20084
|
-
var autocompleteCommand =
|
|
19916
|
+
var autocompleteCommand = defineCommand126({
|
|
20085
19917
|
meta: {
|
|
20086
19918
|
name: "autocomplete",
|
|
20087
19919
|
description: `Get Google Autocomplete suggestions for keyword expansion.
|
|
@@ -20127,7 +19959,7 @@ Examples:
|
|
|
20127
19959
|
});
|
|
20128
19960
|
|
|
20129
19961
|
// src/commands/research/countries.ts
|
|
20130
|
-
import { defineCommand as
|
|
19962
|
+
import { defineCommand as defineCommand127 } from "citty";
|
|
20131
19963
|
registerSchema({
|
|
20132
19964
|
command: "research.countries",
|
|
20133
19965
|
description: "List all supported country codes for --location flag in research commands.",
|
|
@@ -20184,7 +20016,7 @@ var FIELDS5 = {
|
|
|
20184
20016
|
code: "Country code to pass as --location",
|
|
20185
20017
|
name: "Country name"
|
|
20186
20018
|
};
|
|
20187
|
-
var countriesCommand =
|
|
20019
|
+
var countriesCommand = defineCommand127({
|
|
20188
20020
|
meta: {
|
|
20189
20021
|
name: "countries",
|
|
20190
20022
|
description: "List all supported country codes for --location flag."
|
|
@@ -20195,7 +20027,7 @@ var countriesCommand = defineCommand128({
|
|
|
20195
20027
|
});
|
|
20196
20028
|
|
|
20197
20029
|
// src/commands/research/intent.ts
|
|
20198
|
-
import { defineCommand as
|
|
20030
|
+
import { defineCommand as defineCommand128 } from "citty";
|
|
20199
20031
|
registerSchema({
|
|
20200
20032
|
command: "research.intent",
|
|
20201
20033
|
description: "Classify Google Search intent for keywords. Determines if someone searching is looking to buy, research, or navigate. IMPORTANT: If --language is omitted, defaults to English (en). The response includes a query_context object showing which language was used.",
|
|
@@ -20218,7 +20050,7 @@ var FIELDS6 = {
|
|
|
20218
20050
|
intent: "Primary Google Search intent: informational, navigational, commercial, transactional",
|
|
20219
20051
|
probability: "Confidence score 0.0-1.0"
|
|
20220
20052
|
};
|
|
20221
|
-
var intentCommand =
|
|
20053
|
+
var intentCommand = defineCommand128({
|
|
20222
20054
|
meta: {
|
|
20223
20055
|
name: "intent",
|
|
20224
20056
|
description: `Classify Google Search intent for keywords. Returns intent type and confidence.
|
|
@@ -20266,7 +20098,7 @@ Examples:
|
|
|
20266
20098
|
});
|
|
20267
20099
|
|
|
20268
20100
|
// src/commands/research/keyword-gap.ts
|
|
20269
|
-
import { defineCommand as
|
|
20101
|
+
import { defineCommand as defineCommand129 } from "citty";
|
|
20270
20102
|
registerSchema({
|
|
20271
20103
|
command: "research.keyword-gap",
|
|
20272
20104
|
description: "Find keywords a competitor ranks for (organic or paid) that you don't. Discovers expansion opportunities. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en). The response includes a query_context object showing which location/language were used.",
|
|
@@ -20295,7 +20127,7 @@ var FIELDS7 = {
|
|
|
20295
20127
|
cpc: "Cost per click USD",
|
|
20296
20128
|
their_position: "Competitor's ranking position"
|
|
20297
20129
|
};
|
|
20298
|
-
var keywordGapCommand =
|
|
20130
|
+
var keywordGapCommand = defineCommand129({
|
|
20299
20131
|
meta: {
|
|
20300
20132
|
name: "keyword-gap",
|
|
20301
20133
|
description: `Find keywords a competitor has that you don't. Supports pagination via --offset.
|
|
@@ -20369,7 +20201,7 @@ Examples:
|
|
|
20369
20201
|
});
|
|
20370
20202
|
|
|
20371
20203
|
// src/commands/research/keywords-for-site.ts
|
|
20372
|
-
import { defineCommand as
|
|
20204
|
+
import { defineCommand as defineCommand130 } from "citty";
|
|
20373
20205
|
registerSchema({
|
|
20374
20206
|
command: "research.keywords-for-site",
|
|
20375
20207
|
description: "Get keywords a competitor targets in Google. Use --type paid to see only paid keywords, --type organic for organic only. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en). The response includes a query_context object showing which location/language were used.",
|
|
@@ -20402,7 +20234,7 @@ var FIELDS8 = {
|
|
|
20402
20234
|
competition: "LOW, MEDIUM, or HIGH",
|
|
20403
20235
|
competition_index: "Competition score 0-100"
|
|
20404
20236
|
};
|
|
20405
|
-
var keywordsForSiteCommand =
|
|
20237
|
+
var keywordsForSiteCommand = defineCommand130({
|
|
20406
20238
|
meta: {
|
|
20407
20239
|
name: "keywords-for-site",
|
|
20408
20240
|
description: `Get keywords a competitor targets in Google. Use --type to filter paid/organic.
|
|
@@ -20455,7 +20287,7 @@ Examples:
|
|
|
20455
20287
|
});
|
|
20456
20288
|
|
|
20457
20289
|
// src/commands/research/languages.ts
|
|
20458
|
-
import { defineCommand as
|
|
20290
|
+
import { defineCommand as defineCommand131 } from "citty";
|
|
20459
20291
|
registerSchema({
|
|
20460
20292
|
command: "research.languages",
|
|
20461
20293
|
description: "List all supported language codes for --language flag in research commands.",
|
|
@@ -20485,7 +20317,7 @@ var FIELDS9 = {
|
|
|
20485
20317
|
code: "Language code to pass as --language",
|
|
20486
20318
|
name: "Language name (also accepted by --language)"
|
|
20487
20319
|
};
|
|
20488
|
-
var languagesCommand2 =
|
|
20320
|
+
var languagesCommand2 = defineCommand131({
|
|
20489
20321
|
meta: {
|
|
20490
20322
|
name: "languages",
|
|
20491
20323
|
description: "List all supported language codes for --language flag."
|
|
@@ -20496,7 +20328,7 @@ var languagesCommand2 = defineCommand132({
|
|
|
20496
20328
|
});
|
|
20497
20329
|
|
|
20498
20330
|
// src/commands/research/lighthouse.ts
|
|
20499
|
-
import { defineCommand as
|
|
20331
|
+
import { defineCommand as defineCommand132 } from "citty";
|
|
20500
20332
|
registerSchema({
|
|
20501
20333
|
command: "research.lighthouse",
|
|
20502
20334
|
description: "Landing page performance audit. Returns metrics that affect Google Ads Quality Score and CPC.",
|
|
@@ -20515,7 +20347,7 @@ var FIELDS10 = {
|
|
|
20515
20347
|
speed_index_ms: "Speed Index in ms (good: < 3400)",
|
|
20516
20348
|
interactive_ms: "Time to Interactive in ms (good: < 3800)"
|
|
20517
20349
|
};
|
|
20518
|
-
var lighthouseCommand =
|
|
20350
|
+
var lighthouseCommand = defineCommand132({
|
|
20519
20351
|
meta: {
|
|
20520
20352
|
name: "lighthouse",
|
|
20521
20353
|
description: `Landing page performance audit. Metrics affecting Google Ads Quality Score.
|
|
@@ -20553,7 +20385,7 @@ Examples:
|
|
|
20553
20385
|
});
|
|
20554
20386
|
|
|
20555
20387
|
// src/commands/research/relevant-pages.ts
|
|
20556
|
-
import { defineCommand as
|
|
20388
|
+
import { defineCommand as defineCommand133 } from "citty";
|
|
20557
20389
|
registerSchema({
|
|
20558
20390
|
command: "research.relevant-pages",
|
|
20559
20391
|
description: "Get the top pages of a competitor domain with organic traffic and ranking data. Shows which pages drive the most traffic. IMPORTANT: If --location and --language are omitted, defaults to United States (us) and English (en).",
|
|
@@ -20579,7 +20411,7 @@ var FIELDS11 = {
|
|
|
20579
20411
|
keywords: "Total organic keywords the page ranks for",
|
|
20580
20412
|
top_10: "Keywords in positions 1-10"
|
|
20581
20413
|
};
|
|
20582
|
-
var relevantPagesCommand =
|
|
20414
|
+
var relevantPagesCommand = defineCommand133({
|
|
20583
20415
|
meta: {
|
|
20584
20416
|
name: "relevant-pages",
|
|
20585
20417
|
description: `Get the top pages of a competitor domain with traffic data.
|
|
@@ -20625,7 +20457,7 @@ Examples:
|
|
|
20625
20457
|
});
|
|
20626
20458
|
|
|
20627
20459
|
// src/commands/research/web.ts
|
|
20628
|
-
import { defineCommand as
|
|
20460
|
+
import { defineCommand as defineCommand134 } from "citty";
|
|
20629
20461
|
registerSchema({
|
|
20630
20462
|
command: "research.web",
|
|
20631
20463
|
description: "Search the web with AI to answer marketing questions \u2014 competitors, ICP, pricing, pain points, market trends. Three depth levels: medium (quick, default), high (thorough), xhigh (exhaustive deep research).",
|
|
@@ -20676,7 +20508,7 @@ async function runDeepResearch(question) {
|
|
|
20676
20508
|
}
|
|
20677
20509
|
throw new Error("Deep research timed out");
|
|
20678
20510
|
}
|
|
20679
|
-
var webCommand =
|
|
20511
|
+
var webCommand = defineCommand134({
|
|
20680
20512
|
meta: {
|
|
20681
20513
|
name: "web",
|
|
20682
20514
|
description: `Search the web with AI to answer any open-ended marketing question. Uses live internet data via Google Search.
|
|
@@ -20736,7 +20568,7 @@ Examples:
|
|
|
20736
20568
|
});
|
|
20737
20569
|
|
|
20738
20570
|
// src/commands/research/index.ts
|
|
20739
|
-
var researchCommand =
|
|
20571
|
+
var researchCommand = defineCommand135({
|
|
20740
20572
|
meta: {
|
|
20741
20573
|
name: "research",
|
|
20742
20574
|
description: `Competitive intelligence and AI-powered research commands.
|
|
@@ -20776,10 +20608,10 @@ Examples:
|
|
|
20776
20608
|
});
|
|
20777
20609
|
|
|
20778
20610
|
// src/commands/scheduled-actions/index.ts
|
|
20779
|
-
import { defineCommand as
|
|
20611
|
+
import { defineCommand as defineCommand142 } from "citty";
|
|
20780
20612
|
|
|
20781
20613
|
// src/commands/scheduled-actions/create.ts
|
|
20782
|
-
import { defineCommand as
|
|
20614
|
+
import { defineCommand as defineCommand136 } from "citty";
|
|
20783
20615
|
|
|
20784
20616
|
// src/commands/scheduled-actions/shared.ts
|
|
20785
20617
|
var TEMP_SCHEDULED_ACTION_PREFIX = "temp_sched_";
|
|
@@ -20894,7 +20726,7 @@ registerSchema({
|
|
|
20894
20726
|
prompt: { type: "string", description: "Additional prompt instructions for the spawned agent", required: false }
|
|
20895
20727
|
}
|
|
20896
20728
|
});
|
|
20897
|
-
var createCommand2 =
|
|
20729
|
+
var createCommand2 = defineCommand136({
|
|
20898
20730
|
meta: {
|
|
20899
20731
|
name: "create",
|
|
20900
20732
|
description: 'Stage a scheduled action. Example: baker scheduled-actions create --name "Weekly report" --description "..." --cron "0 9 * * MON"'
|
|
@@ -20943,7 +20775,7 @@ var createCommand2 = defineCommand137({
|
|
|
20943
20775
|
});
|
|
20944
20776
|
|
|
20945
20777
|
// src/commands/scheduled-actions/delete.ts
|
|
20946
|
-
import { defineCommand as
|
|
20778
|
+
import { defineCommand as defineCommand137 } from "citty";
|
|
20947
20779
|
registerSchema({
|
|
20948
20780
|
command: "scheduled-actions.delete",
|
|
20949
20781
|
description: "Stage deletion of a published scheduled action or cancellation of a temp_sched_* draft creation.",
|
|
@@ -20951,7 +20783,7 @@ registerSchema({
|
|
|
20951
20783
|
id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
|
|
20952
20784
|
}
|
|
20953
20785
|
});
|
|
20954
|
-
var deleteCommand2 =
|
|
20786
|
+
var deleteCommand2 = defineCommand137({
|
|
20955
20787
|
meta: {
|
|
20956
20788
|
name: "delete",
|
|
20957
20789
|
description: "Stage scheduled action deletion. Example: baker scheduled-actions delete <id-or-temp_sched_id>"
|
|
@@ -20980,7 +20812,7 @@ var deleteCommand2 = defineCommand138({
|
|
|
20980
20812
|
});
|
|
20981
20813
|
|
|
20982
20814
|
// src/commands/scheduled-actions/get.ts
|
|
20983
|
-
import { defineCommand as
|
|
20815
|
+
import { defineCommand as defineCommand138 } from "citty";
|
|
20984
20816
|
registerSchema({
|
|
20985
20817
|
command: "scheduled-actions.get",
|
|
20986
20818
|
description: "Get a published scheduled action or a temp_sched_* draft-created scheduled action.",
|
|
@@ -20988,7 +20820,7 @@ registerSchema({
|
|
|
20988
20820
|
id: { type: "string", description: "Published scheduled action ID or temp_sched_* draft ID", required: true }
|
|
20989
20821
|
}
|
|
20990
20822
|
});
|
|
20991
|
-
var getCommand3 =
|
|
20823
|
+
var getCommand3 = defineCommand138({
|
|
20992
20824
|
meta: {
|
|
20993
20825
|
name: "get",
|
|
20994
20826
|
description: "Get a scheduled action. Example: baker scheduled-actions get <id-or-temp_sched_id>"
|
|
@@ -21025,13 +20857,13 @@ var getCommand3 = defineCommand139({
|
|
|
21025
20857
|
});
|
|
21026
20858
|
|
|
21027
20859
|
// src/commands/scheduled-actions/list.ts
|
|
21028
|
-
import { defineCommand as
|
|
20860
|
+
import { defineCommand as defineCommand139 } from "citty";
|
|
21029
20861
|
registerSchema({
|
|
21030
20862
|
command: "scheduled-actions.list",
|
|
21031
20863
|
description: "List published scheduled actions. Includes draft state when BAKER_CHAT_ID is set.",
|
|
21032
20864
|
args: {}
|
|
21033
20865
|
});
|
|
21034
|
-
var
|
|
20866
|
+
var listCommand4 = defineCommand139({
|
|
21035
20867
|
meta: {
|
|
21036
20868
|
name: "list",
|
|
21037
20869
|
description: "List scheduled actions. Includes staged draft ops when BAKER_CHAT_ID is set."
|
|
@@ -21052,7 +20884,7 @@ var listCommand5 = defineCommand140({
|
|
|
21052
20884
|
});
|
|
21053
20885
|
|
|
21054
20886
|
// src/commands/scheduled-actions/trigger.ts
|
|
21055
|
-
import { defineCommand as
|
|
20887
|
+
import { defineCommand as defineCommand140 } from "citty";
|
|
21056
20888
|
registerSchema({
|
|
21057
20889
|
command: "scheduled-actions.trigger",
|
|
21058
20890
|
description: "Immediately trigger a published scheduled action. Does not require BAKER_CHAT_ID and rejects temp_sched_* IDs.",
|
|
@@ -21060,7 +20892,7 @@ registerSchema({
|
|
|
21060
20892
|
id: { type: "string", description: "Published scheduled action ID", required: true }
|
|
21061
20893
|
}
|
|
21062
20894
|
});
|
|
21063
|
-
var triggerCommand =
|
|
20895
|
+
var triggerCommand = defineCommand140({
|
|
21064
20896
|
meta: {
|
|
21065
20897
|
name: "trigger",
|
|
21066
20898
|
description: "Immediately trigger a published scheduled action. Example: baker scheduled-actions trigger <id>"
|
|
@@ -21097,7 +20929,7 @@ var triggerCommand = defineCommand141({
|
|
|
21097
20929
|
});
|
|
21098
20930
|
|
|
21099
20931
|
// src/commands/scheduled-actions/update.ts
|
|
21100
|
-
import { defineCommand as
|
|
20932
|
+
import { defineCommand as defineCommand141 } from "citty";
|
|
21101
20933
|
registerSchema({
|
|
21102
20934
|
command: "scheduled-actions.update",
|
|
21103
20935
|
description: "Stage an update to a published scheduled action or temp_sched_* draft-created scheduled action.",
|
|
@@ -21122,7 +20954,7 @@ registerSchema({
|
|
|
21122
20954
|
prompt: { type: "string", description: "Replacement additional spawned-agent instructions", required: false }
|
|
21123
20955
|
}
|
|
21124
20956
|
});
|
|
21125
|
-
var updateCommand2 =
|
|
20957
|
+
var updateCommand2 = defineCommand141({
|
|
21126
20958
|
meta: {
|
|
21127
20959
|
name: "update",
|
|
21128
20960
|
description: "Stage a scheduled action update. Example: baker scheduled-actions update <id> --enabled false"
|
|
@@ -21193,7 +21025,7 @@ var updateCommand2 = defineCommand142({
|
|
|
21193
21025
|
});
|
|
21194
21026
|
|
|
21195
21027
|
// src/commands/scheduled-actions/index.ts
|
|
21196
|
-
var scheduledActionsCommand =
|
|
21028
|
+
var scheduledActionsCommand = defineCommand142({
|
|
21197
21029
|
meta: {
|
|
21198
21030
|
name: "scheduled-actions",
|
|
21199
21031
|
description: `Manage Scheduled Actions. Subcommands: list, get, create, update, delete, trigger.
|
|
@@ -21209,7 +21041,7 @@ Examples:
|
|
|
21209
21041
|
baker scheduled-actions trigger <id>`
|
|
21210
21042
|
},
|
|
21211
21043
|
subCommands: {
|
|
21212
|
-
list:
|
|
21044
|
+
list: listCommand4,
|
|
21213
21045
|
get: getCommand3,
|
|
21214
21046
|
create: createCommand2,
|
|
21215
21047
|
update: updateCommand2,
|
|
@@ -21219,8 +21051,8 @@ Examples:
|
|
|
21219
21051
|
});
|
|
21220
21052
|
|
|
21221
21053
|
// src/commands/schema.ts
|
|
21222
|
-
import { defineCommand as
|
|
21223
|
-
var schemaCommand =
|
|
21054
|
+
import { defineCommand as defineCommand143 } from "citty";
|
|
21055
|
+
var schemaCommand = defineCommand143({
|
|
21224
21056
|
meta: {
|
|
21225
21057
|
name: "schema",
|
|
21226
21058
|
description: "Inspect command argument schemas (for AI agent introspection). Lists all commands if no argument given. Example: baker schema images.search"
|
|
@@ -21256,10 +21088,10 @@ var schemaCommand = defineCommand144({
|
|
|
21256
21088
|
});
|
|
21257
21089
|
|
|
21258
21090
|
// src/commands/testimonials/index.ts
|
|
21259
|
-
import { defineCommand as
|
|
21091
|
+
import { defineCommand as defineCommand147 } from "citty";
|
|
21260
21092
|
|
|
21261
21093
|
// src/commands/testimonials/get.ts
|
|
21262
|
-
import { defineCommand as
|
|
21094
|
+
import { defineCommand as defineCommand144 } from "citty";
|
|
21263
21095
|
registerSchema({
|
|
21264
21096
|
command: "testimonials.get",
|
|
21265
21097
|
description: "Get a single testimonial by ID",
|
|
@@ -21267,7 +21099,7 @@ registerSchema({
|
|
|
21267
21099
|
id: { type: "string", description: "Testimonial ID", required: true }
|
|
21268
21100
|
}
|
|
21269
21101
|
});
|
|
21270
|
-
var getCommand4 =
|
|
21102
|
+
var getCommand4 = defineCommand144({
|
|
21271
21103
|
meta: { name: "get", description: "Get a single testimonial by ID. Example: baker testimonials get j571abc123" },
|
|
21272
21104
|
args: {
|
|
21273
21105
|
id: { type: "positional", description: "Testimonial ID", required: false },
|
|
@@ -21304,7 +21136,7 @@ var getCommand4 = defineCommand145({
|
|
|
21304
21136
|
});
|
|
21305
21137
|
|
|
21306
21138
|
// src/commands/testimonials/list.ts
|
|
21307
|
-
import { defineCommand as
|
|
21139
|
+
import { defineCommand as defineCommand145 } from "citty";
|
|
21308
21140
|
registerSchema({
|
|
21309
21141
|
command: "testimonials.list",
|
|
21310
21142
|
description: "List testimonials with optional filters.",
|
|
@@ -21334,7 +21166,7 @@ registerSchema({
|
|
|
21334
21166
|
limit: { type: "number", description: "Max results (default 50)", required: false, default: 50 }
|
|
21335
21167
|
}
|
|
21336
21168
|
});
|
|
21337
|
-
var
|
|
21169
|
+
var listCommand5 = defineCommand145({
|
|
21338
21170
|
meta: {
|
|
21339
21171
|
name: "list",
|
|
21340
21172
|
description: "List testimonials with optional filters. Example: baker testimonials list --source google --sentiment positive"
|
|
@@ -21383,7 +21215,7 @@ var listCommand6 = defineCommand146({
|
|
|
21383
21215
|
});
|
|
21384
21216
|
|
|
21385
21217
|
// src/commands/testimonials/search.ts
|
|
21386
|
-
import { defineCommand as
|
|
21218
|
+
import { defineCommand as defineCommand146 } from "citty";
|
|
21387
21219
|
registerSchema({
|
|
21388
21220
|
command: "testimonials.search",
|
|
21389
21221
|
description: "Search testimonials by text query. Uses hybrid BM25 + vector + reranking.",
|
|
@@ -21414,7 +21246,7 @@ registerSchema({
|
|
|
21414
21246
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
21415
21247
|
}
|
|
21416
21248
|
});
|
|
21417
|
-
var searchCommand2 =
|
|
21249
|
+
var searchCommand2 = defineCommand146({
|
|
21418
21250
|
meta: {
|
|
21419
21251
|
name: "search",
|
|
21420
21252
|
description: "Semantic search testimonials by text query. Uses hybrid BM25 + vector + reranking. Example: baker testimonials search 'great service' --rating-min 4"
|
|
@@ -21488,7 +21320,7 @@ var searchCommand2 = defineCommand147({
|
|
|
21488
21320
|
var tagsCommand3 = makeTagsCommand("testimonials", "testimonial", "/api/testimonials/tags");
|
|
21489
21321
|
|
|
21490
21322
|
// src/commands/testimonials/index.ts
|
|
21491
|
-
var testimonialsCommand =
|
|
21323
|
+
var testimonialsCommand = defineCommand147({
|
|
21492
21324
|
meta: {
|
|
21493
21325
|
name: "testimonials",
|
|
21494
21326
|
description: `Find and browse testimonials in Baker. Subcommands: search, get, list, tags.
|
|
@@ -21503,16 +21335,16 @@ Examples:
|
|
|
21503
21335
|
subCommands: {
|
|
21504
21336
|
get: getCommand4,
|
|
21505
21337
|
search: searchCommand2,
|
|
21506
|
-
list:
|
|
21338
|
+
list: listCommand5,
|
|
21507
21339
|
tags: tagsCommand3
|
|
21508
21340
|
}
|
|
21509
21341
|
});
|
|
21510
21342
|
|
|
21511
21343
|
// src/commands/videos/index.ts
|
|
21512
|
-
import { defineCommand as
|
|
21344
|
+
import { defineCommand as defineCommand152 } from "citty";
|
|
21513
21345
|
|
|
21514
21346
|
// src/commands/videos/delete.ts
|
|
21515
|
-
import { defineCommand as
|
|
21347
|
+
import { defineCommand as defineCommand148 } from "citty";
|
|
21516
21348
|
registerSchema({
|
|
21517
21349
|
command: "videos.delete",
|
|
21518
21350
|
description: "Delete a video by ID",
|
|
@@ -21526,7 +21358,7 @@ registerSchema({
|
|
|
21526
21358
|
}
|
|
21527
21359
|
}
|
|
21528
21360
|
});
|
|
21529
|
-
var deleteCommand3 =
|
|
21361
|
+
var deleteCommand3 = defineCommand148({
|
|
21530
21362
|
meta: {
|
|
21531
21363
|
name: "delete",
|
|
21532
21364
|
description: "Delete a video by ID. Use --dry-run to preview. Example: baker videos delete j571abc123 --dry-run"
|
|
@@ -21567,7 +21399,7 @@ var deleteCommand3 = defineCommand149({
|
|
|
21567
21399
|
});
|
|
21568
21400
|
|
|
21569
21401
|
// src/commands/videos/get.ts
|
|
21570
|
-
import { defineCommand as
|
|
21402
|
+
import { defineCommand as defineCommand149 } from "citty";
|
|
21571
21403
|
registerSchema({
|
|
21572
21404
|
command: "videos.get",
|
|
21573
21405
|
description: "Get a single video by ID",
|
|
@@ -21575,7 +21407,7 @@ registerSchema({
|
|
|
21575
21407
|
id: { type: "string", description: "Video ID", required: true }
|
|
21576
21408
|
}
|
|
21577
21409
|
});
|
|
21578
|
-
var getCommand5 =
|
|
21410
|
+
var getCommand5 = defineCommand149({
|
|
21579
21411
|
meta: { name: "get", description: "Get a single video by ID. Example: baker videos get j571abc123" },
|
|
21580
21412
|
args: {
|
|
21581
21413
|
id: { type: "positional", description: "Video ID", required: false },
|
|
@@ -21612,7 +21444,7 @@ var getCommand5 = defineCommand150({
|
|
|
21612
21444
|
});
|
|
21613
21445
|
|
|
21614
21446
|
// src/commands/videos/search.ts
|
|
21615
|
-
import { defineCommand as
|
|
21447
|
+
import { defineCommand as defineCommand150 } from "citty";
|
|
21616
21448
|
registerSchema({
|
|
21617
21449
|
command: "videos.search",
|
|
21618
21450
|
description: "Search videos by text query. Only returns ready videos.",
|
|
@@ -21622,7 +21454,7 @@ registerSchema({
|
|
|
21622
21454
|
tags: { type: "string", description: "Comma-separated tags to filter by", required: false }
|
|
21623
21455
|
}
|
|
21624
21456
|
});
|
|
21625
|
-
var searchCommand3 =
|
|
21457
|
+
var searchCommand3 = defineCommand150({
|
|
21626
21458
|
meta: {
|
|
21627
21459
|
name: "search",
|
|
21628
21460
|
description: "Semantic search videos by text query. Uses hybrid BM25 + vector + reranking. Example: baker videos search 'product demo' --tags tutorial"
|
|
@@ -21674,7 +21506,7 @@ var tagsCommand4 = makeTagsCommand("videos", "video", "/api/videos/tags");
|
|
|
21674
21506
|
// src/commands/videos/upload.ts
|
|
21675
21507
|
import { readFile as readFile12, stat as stat3 } from "fs/promises";
|
|
21676
21508
|
import { extname as extname3 } from "path";
|
|
21677
|
-
import { defineCommand as
|
|
21509
|
+
import { defineCommand as defineCommand151 } from "citty";
|
|
21678
21510
|
var MIME_MAP = {
|
|
21679
21511
|
".mp4": "video/mp4",
|
|
21680
21512
|
".mov": "video/quicktime",
|
|
@@ -21708,7 +21540,7 @@ function detectContentType(filePath) {
|
|
|
21708
21540
|
}
|
|
21709
21541
|
return mime;
|
|
21710
21542
|
}
|
|
21711
|
-
var uploadCommand2 =
|
|
21543
|
+
var uploadCommand2 = defineCommand151({
|
|
21712
21544
|
meta: {
|
|
21713
21545
|
name: "upload",
|
|
21714
21546
|
description: "Upload a video file to Baker via Mux direct upload. Auto-detects content type. Example: baker videos upload ./demo.mp4"
|
|
@@ -21762,7 +21594,7 @@ var uploadCommand2 = defineCommand152({
|
|
|
21762
21594
|
});
|
|
21763
21595
|
|
|
21764
21596
|
// src/commands/videos/index.ts
|
|
21765
|
-
var videosCommand =
|
|
21597
|
+
var videosCommand = defineCommand152({
|
|
21766
21598
|
meta: {
|
|
21767
21599
|
name: "videos",
|
|
21768
21600
|
description: `Find and manage videos in Baker. Subcommands: search, get, upload, delete, tags.
|
|
@@ -21785,10 +21617,10 @@ Examples:
|
|
|
21785
21617
|
});
|
|
21786
21618
|
|
|
21787
21619
|
// src/commands/winning-ads/index.ts
|
|
21788
|
-
import { defineCommand as
|
|
21620
|
+
import { defineCommand as defineCommand155 } from "citty";
|
|
21789
21621
|
|
|
21790
21622
|
// src/commands/winning-ads/advertisers.ts
|
|
21791
|
-
import { defineCommand as
|
|
21623
|
+
import { defineCommand as defineCommand153 } from "citty";
|
|
21792
21624
|
registerSchema({
|
|
21793
21625
|
command: "winning-ads.advertisers",
|
|
21794
21626
|
description: "Resolve a brand name to advertiser_id(s) in the ad-dna corpus \u2014 to find your OWN advertiser (to --exclude-advertiser) or a competitor (to --advertiser-id).",
|
|
@@ -21801,7 +21633,7 @@ registerSchema({
|
|
|
21801
21633
|
function identity(record) {
|
|
21802
21634
|
return record;
|
|
21803
21635
|
}
|
|
21804
|
-
var advertisersCommand2 =
|
|
21636
|
+
var advertisersCommand2 = defineCommand153({
|
|
21805
21637
|
meta: {
|
|
21806
21638
|
name: "advertisers",
|
|
21807
21639
|
description: 'Resolve a brand name to advertiser_id(s). Use it to find your own advertiser for --exclude-advertiser, or a competitor for --advertiser-id. Example: baker winning-ads advertisers "Deel" --output md'
|
|
@@ -21852,7 +21684,7 @@ var advertisersCommand2 = defineCommand154({
|
|
|
21852
21684
|
});
|
|
21853
21685
|
|
|
21854
21686
|
// src/commands/winning-ads/search.ts
|
|
21855
|
-
import { defineCommand as
|
|
21687
|
+
import { defineCommand as defineCommand154 } from "citty";
|
|
21856
21688
|
registerSchema({
|
|
21857
21689
|
command: "winning-ads.search",
|
|
21858
21690
|
description: "Search the ad-dna corpus of scored winning ads. Returns a lean shortlist (advertiser, summary, scores, media_url) to pick a reference to reproduce.",
|
|
@@ -21960,7 +21792,7 @@ function buildSearchBody(args) {
|
|
|
21960
21792
|
}
|
|
21961
21793
|
return body;
|
|
21962
21794
|
}
|
|
21963
|
-
var searchCommand4 =
|
|
21795
|
+
var searchCommand4 = defineCommand154({
|
|
21964
21796
|
meta: {
|
|
21965
21797
|
name: "search",
|
|
21966
21798
|
description: "Search winning reference ads. Example: baker winning-ads search 'B2B SaaS before/after AI automation' --platform meta --format static --winner-category winner --exclude-advertiser adv_123 --output md"
|
|
@@ -22072,7 +21904,7 @@ var searchCommand4 = defineCommand155({
|
|
|
22072
21904
|
});
|
|
22073
21905
|
|
|
22074
21906
|
// src/commands/winning-ads/index.ts
|
|
22075
|
-
var winningAdsCommand =
|
|
21907
|
+
var winningAdsCommand = defineCommand155({
|
|
22076
21908
|
meta: {
|
|
22077
21909
|
name: "winning-ads",
|
|
22078
21910
|
description: `Search the ad-dna corpus of scored "winning" ads for reference creatives to reproduce. Proxied through the Baker backend (BAKER_API_KEY) \u2014 no separate token needed.
|
|
@@ -22112,7 +21944,7 @@ function getCliVersion() {
|
|
|
22112
21944
|
}
|
|
22113
21945
|
|
|
22114
21946
|
// src/cli.ts
|
|
22115
|
-
var main =
|
|
21947
|
+
var main = defineCommand156({
|
|
22116
21948
|
meta: {
|
|
22117
21949
|
name: "baker",
|
|
22118
21950
|
version: getCliVersion(),
|
|
@@ -22137,7 +21969,6 @@ Introspection: Run 'baker schema <command>' to inspect argument schemas.`
|
|
|
22137
21969
|
testimonials: testimonialsCommand,
|
|
22138
21970
|
canvas: canvasCommand,
|
|
22139
21971
|
"winning-ads": winningAdsCommand,
|
|
22140
|
-
mcp: mcpCommand,
|
|
22141
21972
|
schema: schemaCommand
|
|
22142
21973
|
}
|
|
22143
21974
|
});
|