makaron-persona-look-cli 0.5.0 → 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.
package/README.md
CHANGED
|
@@ -47,7 +47,7 @@ Once setup and `remote doctor` succeed, an Agent can fulfill a request such as
|
|
|
47
47
|
personlib remote render --brief '20 秒嘻哈说唱女 rapper 舞台视频,红黑街头风、宽松工装、强节奏' --output-dir ./personlib-turnaround --json
|
|
48
48
|
```
|
|
49
49
|
|
|
50
|
-
This is a paid external generation action: the Agent must first have working Makaron authentication and receive explicit approval to spend credits. The result is `turnaround.png` (or `.jpg`/`.webp`), plus `turnaround-plan.json`, `prompt_used.md`, and `qc_report.md`. The CLI never automatically retries a paid job. Use `--dry-run` to inspect the exact prompt and matching IDs without downloading inputs or submitting anything, or `--no-wait` to keep the returned Makaron run ID for later retrieval.
|
|
50
|
+
This is a paid external generation action: the Agent must first have working Makaron authentication and receive explicit approval to spend credits. The result is `turnaround.png` (or `.jpg`/`.webp`), plus `turnaround-plan.json`, `prompt_used.md`, and `qc_report.md`. The CLI removes only brand identifiers: visible logos, wordmarks, brand names, protected monograms, recognizable trademark symbols, and brand/team crests. Ordinary stripes, numbers, abstract graphics, and shoe construction remain part of the Look. The CLI never automatically retries a paid job. Use `--dry-run` to inspect the exact prompt and matching IDs without downloading inputs or submitting anything, or `--no-wait` to keep the returned Makaron run ID for later retrieval.
|
|
51
51
|
|
|
52
52
|
For a free reference-only check, retain the explicit preview command:
|
|
53
53
|
|
package/lib/remote-client.mjs
CHANGED
|
@@ -262,6 +262,8 @@ function providerImages(payload) {
|
|
|
262
262
|
return [...new Map(images.map((item) => [item.url, item])).values()];
|
|
263
263
|
}
|
|
264
264
|
|
|
265
|
+
const BRAND_IDENTIFIER_REMOVAL_CONTRACT = "Brand identifier removal: preserve the Look's silhouette, palette, material, styling energy, decorative stripes, abstract graphics, non-brand numbers, and ordinary shoe construction. Remove only a visible logo, wordmark, brand name, protected monogram, recognizable trademark symbol, or brand/team crest, replacing it with blank fabric or an original non-brand detail. Do not add any recognizable trademark symbol or branded text. If an element is not a brand identifier, retain it rather than simplifying the styling.";
|
|
266
|
+
|
|
265
267
|
function turnaroundPrompt(payload) {
|
|
266
268
|
if (!payload?.render_brief) throw new Error("remote selection did not include a render brief");
|
|
267
269
|
return [
|
|
@@ -270,6 +272,7 @@ function turnaroundPrompt(payload) {
|
|
|
270
272
|
"Layout: three equal vertical panels at identical scale: left is straight-on front view, center is exact right-side profile, right is back view. Show head-to-toe including both shoes in every panel.",
|
|
271
273
|
"Identity rule: the Persona reference is the only identity reference. Preserve the same adult facial structure, skin traits, stable marks, apparent age, hairline, build, and proportions in all three panels. Never use the Look-reference face.",
|
|
272
274
|
"Look rule: use the Look reference only for the selected outfit, hairstyle, makeup, accessories, palette, and material direction. Keep the exact same clothing, footwear, hairstyle, and accessories in every panel. Ignore any scene, person, text, logo, or watermark in the Look reference.",
|
|
275
|
+
BRAND_IDENTIFIER_REMOVAL_CONTRACT,
|
|
273
276
|
"Use a seamless neutral light-grey studio background, even lighting, fixed eye-level camera, natural relaxed standing pose, clean anatomy, and no props.",
|
|
274
277
|
"No text, labels, watermark, source logos, team marks, celebrity likenesses, or recognizable brand elements."
|
|
275
278
|
].join(" ");
|
|
@@ -298,6 +301,7 @@ async function renderTurnaround(args, output) {
|
|
|
298
301
|
project: getOption(args, "--project") || "auto",
|
|
299
302
|
output_dir: outputDir,
|
|
300
303
|
source_policy: "persona-is-the-only-identity-reference",
|
|
304
|
+
brand_identifier_policy: "remove-identifiers-only",
|
|
301
305
|
prompt
|
|
302
306
|
};
|
|
303
307
|
if (has(args, "--dry-run")) {
|
|
@@ -320,7 +324,7 @@ async function renderTurnaround(args, output) {
|
|
|
320
324
|
const runId = providerRunId(submitted);
|
|
321
325
|
const submission = { run_id: runId, project_id: providerBody(submitted).projectId || providerBody(submitted).project_id, project_url: providerBody(submitted).projectUrl || providerBody(submitted).project_url };
|
|
322
326
|
if (has(args, "--no-wait")) {
|
|
323
|
-
writeFileSync(join(outputDir, "qc_report.md"), `# QC report\n\n- State: PENDING_VISUAL_QC\n- Run ID: ${runId}\n- Requested asset: front-side-back turnaround sheet\n`, "utf8");
|
|
327
|
+
writeFileSync(join(outputDir, "qc_report.md"), `# QC report\n\n- State: PENDING_VISUAL_QC\n- Run ID: ${runId}\n- Requested asset: front-side-back turnaround sheet\n- Required check: no logo, wordmark, brand name, protected monogram, recognizable trademark symbol, or brand/team crest. Preserve ordinary stripes, numbers, abstract graphics, and shoe construction.\n`, "utf8");
|
|
324
328
|
jsonOutput({ ok: true, submitted: true, render: { ...plan, ...submission, qc_state: "PENDING_VISUAL_QC" } }, output, args);
|
|
325
329
|
return;
|
|
326
330
|
}
|
|
@@ -333,7 +337,7 @@ async function renderTurnaround(args, output) {
|
|
|
333
337
|
const media = await fetch(images[0].url);
|
|
334
338
|
if (!media.ok) throw new Error(`Makaron image download failed (${media.status})`);
|
|
335
339
|
writeFileSync(finalPath, Buffer.from(await media.arrayBuffer()));
|
|
336
|
-
writeFileSync(join(outputDir, "qc_report.md"), `# QC report\n\n- State: PENDING_VISUAL_QC\n- Run ID: ${runId}\n- Asset: ${basename(finalPath)}\n- Required check: one adult Persona identity across front, exact side, and back views; one unchanged Look; no source Look face,
|
|
340
|
+
writeFileSync(join(outputDir, "qc_report.md"), `# QC report\n\n- State: PENDING_VISUAL_QC\n- Run ID: ${runId}\n- Asset: ${basename(finalPath)}\n- Required check: one adult Persona identity across front, exact side, and back views; one unchanged Look; no source Look face, logo, wordmark, brand name, protected monogram, recognizable trademark symbol, or brand/team crest. Preserve ordinary stripes, numbers, abstract graphics, and shoe construction.\n- Retry policy: no automatic reroll.\n`, "utf8");
|
|
337
341
|
jsonOutput({ ok: true, render: { ...plan, ...submission, status: body.status || "completed", qc_state: "PENDING_VISUAL_QC", files: { turnaround: finalPath, plan: join(outputDir, "turnaround-plan.json"), prompt: join(outputDir, "prompt_used.md"), qc_report: join(outputDir, "qc_report.md") } } }, output, args);
|
|
338
342
|
}
|
|
339
343
|
|
package/package.json
CHANGED
|
@@ -29,6 +29,6 @@ Any enrolled OpenClaw Agent may use credentialed `remote doctor`, `remote recomm
|
|
|
29
29
|
|
|
30
30
|
## Current local-admin milestone
|
|
31
31
|
|
|
32
|
-
The current package supports local Persona and Look intake, list, show, integrity validation, `recommend --brief TEXT`, `fetch --brief TEXT --output-dir PATH`, and `compose --persona P-xxx --look L-xxx`; it also ships the remote Worker/client implementation. The remote commands need a deployed private Worker and a successful top-level `setup` before use; do not claim that the current host is live until `remote doctor` succeeds against its Worker URL. `remote render` obtains the selected private inputs just in time, calls Makaron with the Persona as the sole identity reference, and asks for one neutral-studio front/right-side/back turnaround. It keeps internal inputs in `_internal_references/` for traceability but only the finished turnaround is customer-ready. Reject an output that is not one three-view adult turnaround, mixes identities or Looks, uses the Look source face, or includes
|
|
32
|
+
The current package supports local Persona and Look intake, list, show, integrity validation, `recommend --brief TEXT`, `fetch --brief TEXT --output-dir PATH`, and `compose --persona P-xxx --look L-xxx`; it also ships the remote Worker/client implementation. The remote commands need a deployed private Worker and a successful top-level `setup` before use; do not claim that the current host is live until `remote doctor` succeeds against its Worker URL. `remote render` obtains the selected private inputs just in time, calls Makaron with the Persona as the sole identity reference, and asks for one neutral-studio front/right-side/back turnaround. It retains the Look's silhouette, palette, materials, energy, ordinary stripes, numbers, abstract graphics, and shoe construction. It removes only brand identifiers: logos, wordmarks, brand names, protected monograms, recognizable trademark symbols, and brand/team crests. It keeps internal inputs in `_internal_references/` for traceability but only the finished turnaround is customer-ready. Reject an output that is not one three-view adult turnaround, mixes identities or Looks, uses the Look source face, or includes a brand identifier. Record `PASS`, `REROLL`, or `BLOCKED`; do not submit a hidden retry.
|
|
33
33
|
|
|
34
34
|
When a source has preppy, uniform-adjacent, or youth-coded styling, store only an adult office-core/editorial interpretation. Do not use a student identity, school context, or sexualized youth styling.
|