@koda-sl/baker-cli 0.247.0 → 0.248.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/dist/cli.js CHANGED
@@ -58,7 +58,7 @@ import {
58
58
  ulid,
59
59
  validateCanvasDeep,
60
60
  ytDlpBlockSignal
61
- } from "./chunk-SJPRTSGY.js";
61
+ } from "./chunk-VLNO5AUC.js";
62
62
  import {
63
63
  csvOrJson,
64
64
  daysAgoIso,
@@ -4292,7 +4292,7 @@ var FLOW_NODE_CATALOG = [
4292
4292
  }
4293
4293
  }
4294
4294
  },
4295
- gotcha: "`fieldtype` is one of: checkbox, date_picker, date_time_range, email, hidden, input, multi_select, number, phone, select, textarea. `select`/`multi_select` need non-empty `options`; `phone` needs `defaultCountry`; a field rendered by your own code is declared `hidden`.",
4295
+ gotcha: "`fieldtype` is one of: checkbox, date_picker, date_time_range, email, hidden, input, multi_select, number, phone, select, textarea. `select`/`multi_select` need non-empty `options`; `phone` needs `defaultCountry`; a field rendered by your own code is declared `hidden`. A field your page validates itself (postal code against a service area, VAT number, order reference) also needs `testValue` \u2014 the Form's own checks invent `TestValue` otherwise and never get past that step.",
4296
4296
  reference: NODE_REF("customForm")
4297
4297
  },
4298
4298
  {
@@ -24510,8 +24510,17 @@ function rosterHints(roster, statusFilter) {
24510
24510
  }
24511
24511
  return hints;
24512
24512
  }
24513
- function creationHints(created) {
24513
+ function thinProfileHint(profile, handle) {
24514
+ const missing = ["motion", "persona", "speech", "wardrobe", "setting"].filter(
24515
+ (field) => !profile?.[field]?.trim()
24516
+ );
24517
+ if (missing.length === 0) return null;
24518
+ 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(" ")}\`.`;
24519
+ }
24520
+ function creationHints(created, profile) {
24521
+ const thin = thinProfileHint(profile, created.handle);
24514
24522
  const hints = [
24523
+ ...thin ? [thin] : [],
24515
24524
  ...castingHints({ handle: created.handle, status: created.status }),
24516
24525
  `Once it is ready, every render grounds on its identity sheet (\`--reference <sheetUrl>\`) and reuses the subject description you just wrote, word for word. Those two things are what keep the face identical across a set.`
24517
24526
  ];
@@ -24783,7 +24792,7 @@ var createCommand2 = defineCommand89({
24783
24792
  ...chatIdFromEnv() ? { chatId: chatIdFromEnv() } : {}
24784
24793
  };
24785
24794
  const data = await writeAvatars("/api/avatars", body);
24786
- writeJson({ ok: true, data, hints: creationHints(data) });
24795
+ writeJson({ ok: true, data, hints: creationHints(data, body.profile) });
24787
24796
  } catch (err) {
24788
24797
  failAvatarApi(err, handle);
24789
24798
  }