@koda-sl/baker-cli 0.250.2-dev.e7a1a227e → 0.251.0-dev.e7a1a227e

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 CHANGED
@@ -5792,6 +5792,7 @@ This CLI is designed for AI agent consumption. Key patterns:
5792
5792
  - **0.217.0**: new family `baker avatars list|get|create|update|delete`, plus `--avatar <handle>` on `baker studio generate` and `baker studio animate` — company-scoped reusable presenters, typed from the shared `@baker/api` avatars contract. `--avatar` is the way to cast one: it grounds the render on the identity sheet, reuses the subject description verbatim, and records the avatar on the batch. Passing the sheet through `--reference` instead does none of those and leaves the batch unattributed, so the avatar can never show what it has appeared in; the route refuses a handle that is not `ready`, because generating a stranger is worse than an error. `get` returns the sheet URL and that description; every command's `hints` carry the next move (still building → re-check with `get`; changed `--subject` without `--regenerate-sheet` → the sheet is stale). `create` refuses `--source-image` without `--likeness-confirmed` and returns an `error.fix` telling the agent to ask the user for that permission, since only they can give it; an unknown handle returns an `error.fix` pointing at `baker avatars list`. Profile flags on `update` merge over the stored profile instead of replacing it.
5793
5793
 
5794
5794
  - **0.250.1**: `--avatar <handle>` on `baker studio generate` and `baker studio animate` never worked. Both were declared in `registerSchema` and read at the call site, but neither was in the command's own citty `args` — and citty does not reject an undeclared flag, it keeps it and sets it to `true`. So `--avatar elena` reached the route as `avatar: true` with `elena` dropped as a stray positional, and the body schema (`z.string()`) refused it. Documented since 0.217.0, broken since 0.217.0: casting an avatar into a render was not possible from the CLI at all, which is why a clip of a named presenter came back with neither the identity sheet nor the voice. Both flags are now declared. A new test in `command-reference-integrity` compares every registered schema against the args of the command that parses it, so the two cannot drift again — it found a third case on the way, `actions status`, whose schema advertised a `--refs` flag for what the command actually takes as positionals.
5795
+ - **0.251.0**: `--accent` on `baker avatars create|update` — the region an avatar's voice comes from, e.g. `"Spanish from Spain, Madrid accent"`. Its own field rather than a sentence inside `--speech`, because that is where it went to die: asked for "pace, register, accent", the agent wrote *"clear Spanish accent"* for a Madrid presenter, the video model read that as no accent, and the clip came out sounding like nowhere. A place can be checked; an adjective cannot. It reaches the render through `buildDeliveryDirection` as its own `ACCENT:` instruction, and `thinProfileHint` now names it first among the missing fields since it is the only one that fails silently — a clip with no accent still looks finished.
5795
5796
  ## Publishing
5796
5797
 
5797
5798
  ### Auto-publish (CI)
package/dist/cli.js CHANGED
@@ -3682,6 +3682,7 @@ var avatarProfileSchema = z7.object({
3682
3682
  subjectDescription: z7.string().trim().min(1).max(2e3),
3683
3683
  persona: z7.string().trim().max(2e3).optional(),
3684
3684
  speech: z7.string().trim().max(2e3).optional(),
3685
+ accent: z7.string().trim().max(2e3).optional(),
3685
3686
  motion: z7.string().trim().max(2e3).optional(),
3686
3687
  wardrobe: z7.string().trim().max(2e3).optional(),
3687
3688
  setting: z7.string().trim().max(2e3).optional(),
@@ -24517,11 +24518,11 @@ function rosterHints(roster, statusFilter) {
24517
24518
  return hints;
24518
24519
  }
24519
24520
  function thinProfileHint(profile, handle) {
24520
- const missing = ["motion", "persona", "speech", "wardrobe", "setting"].filter(
24521
+ const missing = ["motion", "persona", "speech", "accent", "wardrobe", "setting"].filter(
24521
24522
  (field) => !profile?.[field]?.trim()
24522
24523
  );
24523
24524
  if (missing.length === 0) return null;
24524
- return `MISSING ${missing.map((field) => `--${field}`).join(" ")}. A bare subject description holds the face still and nothing else, so clips of @${handle} come out stiff and generic \u2014 measured, filling these in nearly doubled the movement in the same brief. The user almost certainly told you how this person talks and carries themselves; put it in: \`baker avatars update ${handle} ${missing.map((field) => `--${field} "\u2026"`).join(" ")}\`.`;
24525
+ return `MISSING ${missing.map((field) => `--${field}`).join(" ")}. A bare subject description holds the face still and nothing else, so clips of @${handle} come out stiff and generic \u2014 measured, filling these in nearly doubled the movement in the same brief. --accent is the one nobody guesses and the only one that fails silently: it decides the accent the avatar SPEAKS with in every clip, so name the region the user is writing to you from ("Spanish from Spain, Madrid accent") \u2014 "Spanish" on its own renders as no accent at all. The user almost certainly told you how this person talks and carries themselves; put it in: \`baker avatars update ${handle} ${missing.map((field) => `--${field} "\u2026"`).join(" ")}\`.`;
24525
24526
  }
24526
24527
  function creationHints(created, profile) {
24527
24528
  const thin = thinProfileHint(profile, created.handle);
@@ -24614,6 +24615,7 @@ var TEXT_FIELDS = [
24614
24615
  ["subject", "subjectDescription"],
24615
24616
  ["persona", "persona"],
24616
24617
  ["speech", "speech"],
24618
+ ["accent", "accent"],
24617
24619
  ["motion", "motion"],
24618
24620
  ["wardrobe", "wardrobe"],
24619
24621
  ["setting", "setting"]
@@ -24702,7 +24704,12 @@ registerSchema({
24702
24704
  required: true
24703
24705
  },
24704
24706
  persona: { type: "string", description: "Who they are on camera \u2014 role, attitude, energy", required: false },
24705
- speech: { type: "string", description: "How they speak \u2014 pace, register, accent, verbal habits", required: false },
24707
+ speech: { type: "string", description: "How they speak \u2014 pace, register, verbal habits", required: false },
24708
+ accent: {
24709
+ type: "string",
24710
+ description: "Where their voice is FROM, as a place: 'Spanish from Spain, Madrid accent', 'Mexican Spanish', 'British English, London'. Name the region \u2014 an adjective like 'clear Spanish accent' is read by the video model as NO accent, and the clip comes out sounding like nowhere. Set it whenever the avatar will speak; the user's own language is the default to assume, not English.",
24711
+ required: false
24712
+ },
24706
24713
  motion: { type: "string", description: "Body language and gesture in video", required: false },
24707
24714
  wardrobe: { type: "string", description: "Default outfit when the brief does not name one", required: false },
24708
24715
  setting: { type: "string", description: "Default surroundings when the brief leaves them open", required: false },
@@ -24736,6 +24743,11 @@ var createCommand2 = defineCommand89({
24736
24743
  subject: { type: "string", description: "The person, plainly described \u2014 reused verbatim", required: false },
24737
24744
  persona: { type: "string", description: "Who they are on camera", required: false },
24738
24745
  speech: { type: "string", description: "How they speak", required: false },
24746
+ accent: {
24747
+ type: "string",
24748
+ description: "Where their voice is FROM \u2014 name the region, e.g. 'Spanish from Spain, Madrid accent'",
24749
+ required: false
24750
+ },
24739
24751
  motion: { type: "string", description: "Body language in video", required: false },
24740
24752
  wardrobe: { type: "string", description: "Default outfit", required: false },
24741
24753
  setting: { type: "string", description: "Default surroundings", required: false },