@aura3d/cli 4.1.2 → 4.2.0
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/data/root-export-dispositions.json +39 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -17
- package/dist/cli.js.map +1 -1
- package/dist/commands/evidence/index.d.ts +3 -0
- package/dist/commands/evidence/index.d.ts.map +1 -0
- package/dist/commands/evidence/index.js +12 -0
- package/dist/commands/evidence/index.js.map +1 -0
- package/dist/commands/evidence/judge.d.ts +18 -0
- package/dist/commands/evidence/judge.d.ts.map +1 -0
- package/dist/commands/evidence/judge.js +194 -0
- package/dist/commands/evidence/judge.js.map +1 -0
- package/dist/commands/evidence/judgeLib.d.ts +84 -0
- package/dist/commands/evidence/judgeLib.d.ts.map +1 -0
- package/dist/commands/evidence/judgeLib.js +178 -0
- package/dist/commands/evidence/judgeLib.js.map +1 -0
- package/dist/commands/registry.d.ts +1 -0
- package/dist/commands/registry.d.ts.map +1 -1
- package/dist/commands/registry.js +1 -0
- package/dist/commands/registry.js.map +1 -1
- package/dist/look/capture.d.ts +15 -7
- package/dist/look/capture.d.ts.map +1 -1
- package/dist/look/capture.js +85 -13
- package/dist/look/capture.js.map +1 -1
- package/dist/pull-bridge/adapters.d.ts +9 -1
- package/dist/pull-bridge/adapters.d.ts.map +1 -1
- package/dist/pull-bridge/adapters.js +30 -7
- package/dist/pull-bridge/adapters.js.map +1 -1
- package/dist/pull-bridge/search.d.ts +5 -0
- package/dist/pull-bridge/search.d.ts.map +1 -1
- package/dist/pull-bridge/search.js +7 -1
- package/dist/pull-bridge/search.js.map +1 -1
- package/dist/pull-bridge.js +1 -1
- package/dist/pull-bridge.js.map +1 -1
- package/dist/resolve-ladder.d.ts +123 -0
- package/dist/resolve-ladder.d.ts.map +1 -0
- package/dist/resolve-ladder.js +410 -0
- package/dist/resolve-ladder.js.map +1 -0
- package/package.json +5 -5
- package/skills/aura3d-art-direction/SKILL.md +5 -1
- package/skills/aura3d-assets/SKILL.md +16 -19
- package/skills/aura3d-assets/references/preview-under-look.md +16 -0
- package/skills/aura3d-browser-game/SKILL.md +19 -22
- package/skills/aura3d-browser-game/references/genre-gates.md +11 -0
- package/skills/aura3d-browser-game/references/genre-looks.md +48 -0
- package/skills/aura3d-character-animation/SKILL.md +8 -2
- package/skills/aura3d-core/SKILL.md +22 -20
- package/skills/aura3d-core/references/boundaries.md +8 -5
- package/skills/aura3d-evidence-review/SKILL.md +12 -2
- package/skills/aura3d-materials-environments/SKILL.md +25 -19
- package/skills/aura3d-performance/SKILL.md +19 -11
- package/skills/aura3d-retexture/SKILL.md +4 -3
- package/skills/aura3d-scene-authoring/SKILL.md +15 -15
- package/skills/aura3d-threejs-migration/SKILL.md +10 -2
- package/skills/llms.txt +104 -216
- package/skills/meshy-cli/SKILL.md +35 -34
- package/skills/meshy-cli/references/asset-tooling.md +23 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/pull-bridge/search.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAQlD,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAM1D,MAAM,EAAE,iBAAiB,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/pull-bridge/search.ts"],"names":[],"mappings":"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"}
|
package/dist/pull-bridge.js
CHANGED
|
@@ -91,7 +91,7 @@ export async function runResolve(options) {
|
|
|
91
91
|
if (!options.name || !/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(options.name)) {
|
|
92
92
|
throw new Error(`Aura3D resolve failed: --name must be a valid identifier (got "${options.name ?? ""}").`);
|
|
93
93
|
}
|
|
94
|
-
const adapters = buildSearchAdapters(env);
|
|
94
|
+
const adapters = buildSearchAdapters(env, process.cwd(), options.query);
|
|
95
95
|
const resolver = options.makeResolver
|
|
96
96
|
? options.makeResolver(adapters)
|
|
97
97
|
: makeDefaultResolver(adapters, 10);
|
package/dist/pull-bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull-bridge.js","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/pull-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAC;AAKlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAKpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,2CAA2C,EAC3C,0CAA0C,EAC1C,gCAAgC,EAChC,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EACL,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,SAAS,EACT,MAAM,GACP,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,0BAA0B,EAC1B,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,oBAAoB,GACrB,CAAC;AACF,OAAO,EACL,2CAA2C,EAC3C,0CAA0C,GAC3C,MAAM,6BAA6B,CAAC;AACrC;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,OAA8B;IAE9B,IAAI,OAAO,KAAK,oBAAoB,IAAI,OAAO,KAAK,qBAAqB;QAAE,OAAO,oBAAoB,CAAC;IACvG,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAClD,IAAI,QAAQ,KAAK,WAAW;QAAE,OAAO,oBAAoB,CAAC;IAC1D,OAAO,SAAS,CAAC;AACnB,CAAC;AAeD,MAAM,EAAE,cAAc,EAAE,GAAG,UAAU,CAAC;AAEtC,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAmDtF;;;;GAIG;AACH;;;;GAIG;AACH,SAAS,yBAAyB,CAChC,QAAsB,EACtB,OAA+D;IAE/D,IAAI,OAAO,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,IAAI,KAAK,CACb,0CAA0C,OAAO,CAAC,WAAW,sBAAsB,SAAS,CAAC,MAAM,2BAA2B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAC/J,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,OAAO,CAAC,cAAc,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,uEAAuE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7G,CAAC;QACD,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CACb,kCAAkC,KAAK,0BAA0B,QAAQ,CAAC,MAAM,kDAAkD,CACnI,CAAC;QACJ,CAAC;QACD,8FAA8F;QAC9F,gFAAgF;QAChF,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAuB;IACtD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IACvC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,kEAAkE,OAAO,CAAC,IAAI,IAAI,EAAE,KAAK,CAC1F,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY;QACnC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC;QAChC,CAAC,CAAC,mBAAmB,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAEtC,4EAA4E;IAC5E,8EAA8E;IAC9E,6EAA6E;IAC7E,2EAA2E;IAC3E,6BAA6B;IAC7B,MAAM,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,OAAO,IAAI,SAAS,CAAC;IAC1D,MAAM,aAAa,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAE5E,MAAM,MAAM,GAAG,qBAAqB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9F,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO;KACR,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,2BAA2B,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,6EAA6E;IAC7E,2EAA2E;IAC3E,+EAA+E;IAC/E,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACnC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC3C,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,oBAAoB,CAAC,CAAC,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH;;;;;;;OAOG;IACH,MAAM,gBAAgB,GAAG,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEtE,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,mBAAmB,CAAC;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAC;IAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,IAAI,YAAY,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACpE,MAAM,eAAe,GAAa,EAAE,CAAC;IAErC,KAAK,MAAM,eAAe,IAAI,gBAAgB,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,0CAA0C,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YACvF,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,MAAM,IAAI,KAAK,CAAC,2CAA2C,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC/F,CAAC;YAED,MAAM,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;YACtF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;YAErD;;;;;;eAMG;YACH,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;YACxC,IAAI,YAAY,GAAG,QAAQ,CAAC;YAC5B,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;gBACtE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxB,MAAM,IAAI,KAAK,CAAC,iBAAiB,KAAK,CAAC,OAAQ,CAAC,OAAO,kBAAkB,WAAW,4BAA4B,CAAC,CAAC;gBACpH,CAAC;gBACD,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC3D,YAAY,GAAG,cAAc,EAAE,IAAI,IAAI,QAAQ,CAAC;YAClD,CAAC;YAED,sEAAsE;YACtE,4EAA4E;YAC5E,yBAAyB;YACzB,MAAM,MAAM,GAAG,UAAU,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACjG,MAAM,UAAU,GAAG,SAAS,CAAC;gBAC3B,IAAI,EAAE,YAAY;gBAClB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,MAAM,oBAAoB,GAAG,2CAA2C,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;YACrG,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,+CAA+C,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACpG,CAAC;YACD,oEAAoE;YACpE,wEAAwE;YACxE,oEAAoE;YACpE,mEAAmE;YACnE,mEAAmE;YACnE,6BAA6B;YAC7B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;gBAC3E,MAAM,SAAS,GAAG,iBAAiB,CAAC;oBAClC,OAAO,EAAE,KAAK,CAAC,EAAE;oBACjB,oEAAoE;oBACpE,kEAAkE;oBAClE,iEAAiE;oBACjE,uCAAuC;oBACvC,WAAW,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;oBACpC,QAAQ,EAAE;wBACR,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;wBAC5E,SAAS,EAAE,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC;wBACtD,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;wBAC3B,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,MAAM;wBAC1C,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,MAAM;wBACxC,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS;4BACnD,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;4BACpD,CAAC,CAAC,EAAE,CAAC;qBACR;oBACD,UAAU,EAAE;wBACV,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC9D,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC3F,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBAC9D;iBACF,CAAC,CAAC;gBACH,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,EAAE,QAAQ,aAAa,KAAK,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC/G,CAAC;gBACD,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAClC,eAAe,CAAC,IAAI,CAAC,0BAA0B,KAAK,CAAC,EAAE,KAAK,aAAa,MAAM,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAClH,CAAC;YACH,CAAC;YACD,MAAM,cAAc,GAAG,qBAAqB,CAAC,eAAe,EAAE;gBAC5D,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,OAAO;aACR,CAAC,CAAC;YACH,MAAM,gBAAgB,GAAG,gCAAgC,CACvD,eAAe,EACf,OAAO,CAAC,KAAK,EACb,cAAc,EACd,UAAU,CACX,CAAC;YAEF,MAAM,GAAG,GAAG,KAAK,CAAC;gBAChB,IAAI,EAAE,YAAY;gBAClB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,GAAG;gBAC3C,SAAS,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG;gBACxC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI;gBAC3B,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI;gBAC3E,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU;gBACxD,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG;gBAC7B,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,KAAK,CAAC,MAAM;gBAChD,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,MAAM;gBAC9C,MAAM,EAAE,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW;gBACzC,MAAM;gBACN,gBAAgB;gBAChB,WAAW;gBACX,OAAO,EAAE,WAAW;gBACpB,IAAI,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;gBAC/C,iBAAiB,EAAE,KAAK,CAAC,eAAe,IAAI,6FAA6F;aAC1I,CAAC,CAAC;YAEH,MAAM,QAAQ,GAAG,gBAAgB,OAAO,CAAC,IAAI,GAAG,CAAC;YACjD,MAAM,QAAQ,GAAa,CAAC,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;YACjE,QAAQ,CAAC,IAAI,CAAC,sBAAsB,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,IAAI,UAAU,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9F,QAAQ,CAAC,IAAI,CAAC,sBAAsB,MAAM,eAAe,WAAW,YAAY,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;YAClH,QAAQ,CAAC,IAAI,CACX,mBAAmB,cAAc,CAAC,KAAK,KAAK,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,IAAI;gBAC9G,8DAA8D,CACjE,CAAC;YACF,IAAI,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;gBACtC,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC;gBACrE,QAAQ,CAAC,IAAI,CACX,yBAAyB,KAAK,CAAC,OAAO,CAAC,IAAI,cAAc,MAAM,KAAK;oBAClE,OAAO,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,GAAG,GAAG,CAC1C,CAAC;YACJ,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,8IAA8I,CAAC,CAAC;YAE9J,OAAO;gBACL,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,OAAO;gBACP,QAAQ;gBACR,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,eAAe,CAAC;gBAClD,QAAQ;gBACR,KAAK,EAAE,MAAM,CAAC,eAAe,EAAE,OAAO,CAAC;gBACvC,GAAG;aACJ,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAe,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,EAAE,KAAM,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,uFAAuF;QACrF,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAC9B,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"pull-bridge.js","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/pull-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import type { AuraCliAssetManifest } from "./asset-core-types.js";
|
|
2
|
+
import { runResolve, type ResolveReport } from "./pull-bridge.js";
|
|
3
|
+
import { runSearch, type SearchCandidateLine } from "./pull-bridge/search.js";
|
|
4
|
+
import type { CliResolveConstraints } from "./pull-bridge/types.js";
|
|
5
|
+
export type LadderRole = "hero" | "prop" | "background" | "character" | "texture" | "hdri";
|
|
6
|
+
export type LadderRung = "project" | "open-source" | "meshy" | "procedural" | "none";
|
|
7
|
+
export declare const LADDER_ROLES: readonly LadderRole[];
|
|
8
|
+
/** Meshy credits per role: preview 20 + refine 10; characters add rig 5 + one animation 3. */
|
|
9
|
+
export declare const MESHY_CREDIT_ESTIMATE: Readonly<Record<LadderRole, number>>;
|
|
10
|
+
/** Triangle budgets per role (docs/agents/asset-workflow.md). */
|
|
11
|
+
export declare const ROLE_TRIANGLE_BUDGET: Readonly<Record<LadderRole, number | undefined>>;
|
|
12
|
+
export interface LadderSkip {
|
|
13
|
+
readonly rung: LadderRung;
|
|
14
|
+
readonly reason: string;
|
|
15
|
+
}
|
|
16
|
+
export interface LadderReport {
|
|
17
|
+
readonly ok: boolean;
|
|
18
|
+
readonly need: string;
|
|
19
|
+
readonly headNoun: string | undefined;
|
|
20
|
+
readonly role: LadderRole;
|
|
21
|
+
readonly chosen: LadderRung;
|
|
22
|
+
readonly reason: string;
|
|
23
|
+
readonly skipped: readonly LadderSkip[];
|
|
24
|
+
readonly costCredits: number;
|
|
25
|
+
readonly dryRun: boolean;
|
|
26
|
+
readonly name: string;
|
|
27
|
+
/** Rung 1: the admitted entry to use as `assets.<id>`. */
|
|
28
|
+
readonly projectAsset?: {
|
|
29
|
+
readonly id: string;
|
|
30
|
+
readonly url: string;
|
|
31
|
+
readonly sizeBytes: number;
|
|
32
|
+
};
|
|
33
|
+
/** Rung 2: the chosen open-source candidate (with triangles and size when the source reports them). */
|
|
34
|
+
readonly candidate?: SearchCandidateLine;
|
|
35
|
+
/** Rung 2/3: the admission result when a file was produced. */
|
|
36
|
+
readonly resolve?: ResolveReport;
|
|
37
|
+
/** Rung 3: the prompt and the commands to run (or that were run). */
|
|
38
|
+
readonly meshy?: {
|
|
39
|
+
readonly prompt: string;
|
|
40
|
+
readonly estimateCredits: number;
|
|
41
|
+
readonly commands: readonly string[];
|
|
42
|
+
readonly ran: boolean;
|
|
43
|
+
};
|
|
44
|
+
/** Rung 4: a paste-ready procedural snippet. */
|
|
45
|
+
readonly procedural?: {
|
|
46
|
+
readonly recipe: string;
|
|
47
|
+
readonly snippet: string;
|
|
48
|
+
};
|
|
49
|
+
readonly messages: readonly string[];
|
|
50
|
+
readonly warnings: readonly string[];
|
|
51
|
+
}
|
|
52
|
+
export interface LadderOptions {
|
|
53
|
+
readonly need: string;
|
|
54
|
+
readonly name?: string;
|
|
55
|
+
readonly role?: LadderRole;
|
|
56
|
+
readonly budget?: number;
|
|
57
|
+
readonly allowMeshy?: boolean;
|
|
58
|
+
readonly dryRun?: boolean;
|
|
59
|
+
readonly projectDir?: string;
|
|
60
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
61
|
+
readonly constraints?: CliResolveConstraints;
|
|
62
|
+
/** Test seams. */
|
|
63
|
+
readonly readManifest?: (projectDir: string) => AuraCliAssetManifest;
|
|
64
|
+
readonly searchFn?: typeof runSearch;
|
|
65
|
+
readonly resolveFn?: typeof runResolve;
|
|
66
|
+
readonly meshyRunner?: MeshyRunner;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Runs a configured Meshy generator. The default reads `AURA3D_MESHY_CMD`: an executable that
|
|
70
|
+
* accepts `--prompt <text> --out <dir> --budget <credits>`, generates through the team's
|
|
71
|
+
* credentialed path (for example Kiro Prism with ledger caps) and writes a GLB plus its
|
|
72
|
+
* metadata and rights evidence into `<dir>`. The CLI never handles Meshy credentials itself.
|
|
73
|
+
*/
|
|
74
|
+
export type MeshyRunner = (input: {
|
|
75
|
+
readonly prompt: string;
|
|
76
|
+
readonly outDir: string;
|
|
77
|
+
readonly budget: number;
|
|
78
|
+
readonly env: NodeJS.ProcessEnv;
|
|
79
|
+
}) => {
|
|
80
|
+
readonly ok: boolean;
|
|
81
|
+
readonly message: string;
|
|
82
|
+
};
|
|
83
|
+
/** Singular form good enough for matching English asset nouns. */
|
|
84
|
+
export declare function singular(word: string): string;
|
|
85
|
+
/**
|
|
86
|
+
* The head noun of an English need: the last content word. "wooden bridge" -> "bridge",
|
|
87
|
+
* "street lamp" -> "lamp", "oak tree" -> "tree", "sports car" -> "car".
|
|
88
|
+
*/
|
|
89
|
+
export declare function headNoun(need: string): string | undefined;
|
|
90
|
+
/** True when `text` (a title, id or tag list) contains the head noun. */
|
|
91
|
+
export declare function mentionsNoun(text: string, noun: string): boolean;
|
|
92
|
+
/**
|
|
93
|
+
* True when a candidate's own title is the needed thing, not merely mentions it: the title's head
|
|
94
|
+
* noun must be the need's noun. "Bridge Pillar" is a pillar, not a bridge; "Garbage Truck" from a
|
|
95
|
+
* "car-kit" pack is a truck, not a car. Precision over recall: a miss falls through to the next rung.
|
|
96
|
+
*/
|
|
97
|
+
export declare function titleIsNoun(title: string, noun: string): boolean;
|
|
98
|
+
export declare function formatSize(bytes: number | undefined): string;
|
|
99
|
+
export declare function describeCandidate(candidate: SearchCandidateLine): string;
|
|
100
|
+
export declare function meshyPrompt(need: string, role: LadderRole): string;
|
|
101
|
+
export declare function runResolveLadder(options: LadderOptions): Promise<LadderReport>;
|
|
102
|
+
interface RecipePart {
|
|
103
|
+
readonly shape: "box" | "cylinder" | "sphere" | "cone";
|
|
104
|
+
readonly size?: readonly [number, number, number] | number;
|
|
105
|
+
readonly params?: Readonly<Record<string, number>>;
|
|
106
|
+
readonly color: string;
|
|
107
|
+
readonly roughness?: number;
|
|
108
|
+
readonly metallic?: number;
|
|
109
|
+
readonly at: readonly [number, number, number];
|
|
110
|
+
}
|
|
111
|
+
/** Keyword -> parts, in metres, standing on y = 0. */
|
|
112
|
+
export declare const PROCEDURAL_RECIPES: Readonly<Record<string, readonly RecipePart[]>>;
|
|
113
|
+
/** The best recipe for a need: the head noun, then any other word, then aliases; a crate as the fallback. */
|
|
114
|
+
export declare function pickRecipe(need: string): string;
|
|
115
|
+
/** The recipe for a need, or undefined when no keyword or alias matches (the crate is then a placeholder). */
|
|
116
|
+
export declare function pickRecipeOrUndefined(need: string): string | undefined;
|
|
117
|
+
export declare function proceduralRecipe(need: string, name: string): {
|
|
118
|
+
readonly recipe: string;
|
|
119
|
+
readonly snippet: string;
|
|
120
|
+
};
|
|
121
|
+
export declare function printLadderReport(report: LadderReport, print?: (line: string) => void): void;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=resolve-ladder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve-ladder.d.ts","sourceRoot":"","sources":["../../../../packages/aura3d-cli/src/resolve-ladder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aura3d assets resolve "<need>"`: a build-time decision ladder for one asset need.
|
|
3
|
+
*
|
|
4
|
+
* Rungs, in order: (1) an asset already admitted in this project, (2) a directly
|
|
5
|
+
* downloadable, licence-clear model, texture or HDRI from open sources (Khronos samples,
|
|
6
|
+
* Poly Haven, ambientCG, the jsDelivr CC0 mirror), (3) Meshy generation from a text
|
|
7
|
+
* prompt, only with `--allow meshy` and a budget that covers the estimate, (4) a
|
|
8
|
+
* procedural recipe the agent pastes into its scene (primitives, built in code like
|
|
9
|
+
* three.js geometry). Nothing is fetched or generated at runtime: every rung that
|
|
10
|
+
* produces a file goes through admission (sha256, provenance, licence) and typegen.
|
|
11
|
+
*/
|
|
12
|
+
import { spawnSync } from "node:child_process";
|
|
13
|
+
import { existsSync, mkdtempSync, readdirSync } from "node:fs";
|
|
14
|
+
import { tmpdir } from "node:os";
|
|
15
|
+
import { join } from "node:path";
|
|
16
|
+
import { readAssetManifest } from "./asset-manifest.js";
|
|
17
|
+
import { runResolve } from "./pull-bridge.js";
|
|
18
|
+
import { runSearch } from "./pull-bridge/search.js";
|
|
19
|
+
export const LADDER_ROLES = ["hero", "prop", "background", "character", "texture", "hdri"];
|
|
20
|
+
/** Meshy credits per role: preview 20 + refine 10; characters add rig 5 + one animation 3. */
|
|
21
|
+
export const MESHY_CREDIT_ESTIMATE = {
|
|
22
|
+
hero: 30,
|
|
23
|
+
prop: 30,
|
|
24
|
+
background: 30,
|
|
25
|
+
character: 38,
|
|
26
|
+
texture: 10,
|
|
27
|
+
hdri: 0,
|
|
28
|
+
};
|
|
29
|
+
/** Triangle budgets per role (docs/agents/asset-workflow.md). */
|
|
30
|
+
export const ROLE_TRIANGLE_BUDGET = {
|
|
31
|
+
hero: 40_000,
|
|
32
|
+
prop: 6_000,
|
|
33
|
+
background: 15_000,
|
|
34
|
+
character: 30_000,
|
|
35
|
+
texture: undefined,
|
|
36
|
+
hdri: undefined,
|
|
37
|
+
};
|
|
38
|
+
const STOP_WORDS = new Set([
|
|
39
|
+
"a", "an", "the", "of", "for", "with", "and", "or", "in", "on", "to", "my", "some",
|
|
40
|
+
"low", "poly", "lowpoly", "high", "detailed", "simple", "stylised", "stylized", "realistic",
|
|
41
|
+
"small", "large", "big", "tiny", "old", "new", "model", "asset", "glb", "gltf", "3d", "game", "pbr",
|
|
42
|
+
"tall", "short", "wide", "narrow", "round", "square", "corner", "straight", "end", "double", "single", "half",
|
|
43
|
+
"top", "bottom", "left", "right", "broken", "damaged", "dark", "variant", "alt", "lod", "pure", "pack", "kit",
|
|
44
|
+
"huge", "giant", "mini", "medium", "big", "little",
|
|
45
|
+
]);
|
|
46
|
+
/** Singular form good enough for matching English asset nouns. */
|
|
47
|
+
export function singular(word) {
|
|
48
|
+
if (word.length > 4 && word.endsWith("ies"))
|
|
49
|
+
return `${word.slice(0, -3)}y`;
|
|
50
|
+
if (word.length > 4 && /(ches|shes|xes|sses)$/.test(word))
|
|
51
|
+
return word.slice(0, -2);
|
|
52
|
+
if (word.length > 3 && word.endsWith("s") && !word.endsWith("ss"))
|
|
53
|
+
return word.slice(0, -1);
|
|
54
|
+
return word;
|
|
55
|
+
}
|
|
56
|
+
function tokens(text) {
|
|
57
|
+
return text
|
|
58
|
+
.toLowerCase()
|
|
59
|
+
.replace(/([a-z])([A-Z])/g, "$1 $2")
|
|
60
|
+
.split(/[^a-z0-9]+/)
|
|
61
|
+
.filter((token) => token.length > 0);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The head noun of an English need: the last content word. "wooden bridge" -> "bridge",
|
|
65
|
+
* "street lamp" -> "lamp", "oak tree" -> "tree", "sports car" -> "car".
|
|
66
|
+
*/
|
|
67
|
+
export function headNoun(need) {
|
|
68
|
+
const words = tokens(need).filter((word) => !STOP_WORDS.has(word) && !/^\d+$/.test(word));
|
|
69
|
+
const last = words.at(-1);
|
|
70
|
+
return last === undefined ? undefined : singular(last);
|
|
71
|
+
}
|
|
72
|
+
/** True when `text` (a title, id or tag list) contains the head noun. */
|
|
73
|
+
export function mentionsNoun(text, noun) {
|
|
74
|
+
const words = new Set(tokens(text).map(singular));
|
|
75
|
+
return words.has(noun) || tokens(text).some((word) => word.startsWith(noun) && word.length <= noun.length + 3);
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* True when a candidate's own title is the needed thing, not merely mentions it: the title's head
|
|
79
|
+
* noun must be the need's noun. "Bridge Pillar" is a pillar, not a bridge; "Garbage Truck" from a
|
|
80
|
+
* "car-kit" pack is a truck, not a car. Precision over recall: a miss falls through to the next rung.
|
|
81
|
+
*/
|
|
82
|
+
export function titleIsNoun(title, noun) {
|
|
83
|
+
const head = headNoun(title.replace(/\([^)]*\)/g, " "));
|
|
84
|
+
if (head === noun)
|
|
85
|
+
return true;
|
|
86
|
+
// "Belfast Sunset (Pure Sky)": the parenthesised qualifier names the kind.
|
|
87
|
+
const qualifier = /\(([^)]*)\)/.exec(title)?.[1];
|
|
88
|
+
return qualifier !== undefined && headNoun(qualifier) === noun;
|
|
89
|
+
}
|
|
90
|
+
function camelName(need) {
|
|
91
|
+
const words = tokens(need).filter((word) => !STOP_WORDS.has(word));
|
|
92
|
+
const base = (words.length > 0 ? words : ["asset"]).slice(-3);
|
|
93
|
+
const name = base.map((word, index) => (index === 0 ? word : word[0].toUpperCase() + word.slice(1))).join("");
|
|
94
|
+
return /^[a-z_]/.test(name) ? name : `asset${name[0].toUpperCase()}${name.slice(1)}`;
|
|
95
|
+
}
|
|
96
|
+
function entryText(entry) {
|
|
97
|
+
return [entry.id, entry.source, ...(entry.nodeNames ?? []), entry.suitabilityReason ?? ""].join(" ");
|
|
98
|
+
}
|
|
99
|
+
function profileFor(role) {
|
|
100
|
+
if (role === "character")
|
|
101
|
+
return "animation-character";
|
|
102
|
+
return "general";
|
|
103
|
+
}
|
|
104
|
+
function searchQuery(need, role) {
|
|
105
|
+
if (role === "texture" && !/\btextures?\b/i.test(need))
|
|
106
|
+
return `${need} texture`;
|
|
107
|
+
if (role === "hdri" && !/\bhdri?\b/i.test(need))
|
|
108
|
+
return `${need} hdri`;
|
|
109
|
+
return need;
|
|
110
|
+
}
|
|
111
|
+
function fitsRole(candidate, role) {
|
|
112
|
+
if (role === "texture" && candidate.format !== undefined && candidate.format !== "texture-set" && candidate.format !== "image") {
|
|
113
|
+
return `format ${candidate.format} is not a texture`;
|
|
114
|
+
}
|
|
115
|
+
if (role === "hdri" && candidate.format !== undefined && candidate.format !== "hdr")
|
|
116
|
+
return `format ${candidate.format} is not an HDRI`;
|
|
117
|
+
if ((role === "hero" || role === "prop" || role === "background" || role === "character") && (candidate.format === "texture-set" || candidate.format === "image" || candidate.format === "hdr")) {
|
|
118
|
+
return `format ${candidate.format} is not a model`;
|
|
119
|
+
}
|
|
120
|
+
const budget = ROLE_TRIANGLE_BUDGET[role];
|
|
121
|
+
if (budget !== undefined && typeof candidate.triangles === "number" && candidate.triangles > budget) {
|
|
122
|
+
return `${candidate.triangles} triangles exceeds the ${role} budget of ${budget}`;
|
|
123
|
+
}
|
|
124
|
+
return undefined;
|
|
125
|
+
}
|
|
126
|
+
export function formatSize(bytes) {
|
|
127
|
+
if (bytes === undefined)
|
|
128
|
+
return "size unknown";
|
|
129
|
+
if (bytes >= 1024 * 1024)
|
|
130
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;
|
|
131
|
+
return `${Math.max(1, Math.round(bytes / 1024))} KB`;
|
|
132
|
+
}
|
|
133
|
+
export function describeCandidate(candidate) {
|
|
134
|
+
const triangles = typeof candidate.triangles === "number" ? `${candidate.triangles.toLocaleString("en-US")} triangles` : "triangles unknown";
|
|
135
|
+
return `${candidate.title} (${candidate.id}, ${candidate.license}, ${triangles}, ${formatSize(candidate.sizeBytes)})`;
|
|
136
|
+
}
|
|
137
|
+
const defaultMeshyRunner = ({ prompt, outDir, budget, env }) => {
|
|
138
|
+
const command = env["AURA3D_MESHY_CMD"];
|
|
139
|
+
if (!command) {
|
|
140
|
+
return { ok: false, message: "AURA3D_MESHY_CMD is not set: run the printed Meshy commands yourself, then `aura3d assets import-meshy`." };
|
|
141
|
+
}
|
|
142
|
+
// No shell: the prompt is passed as a single argument, never interpolated into a command line.
|
|
143
|
+
const run = spawnSync(command, ["--prompt", prompt, "--out", outDir, "--budget", String(budget)], { env, encoding: "utf8" });
|
|
144
|
+
if (run.status !== 0)
|
|
145
|
+
return { ok: false, message: `${command} exited ${String(run.status)}: ${(run.stderr || run.stdout || "").trim().slice(0, 400)}` };
|
|
146
|
+
return { ok: true, message: (run.stdout || "").trim().slice(0, 400) };
|
|
147
|
+
};
|
|
148
|
+
export function meshyPrompt(need, role) {
|
|
149
|
+
const base = need.trim();
|
|
150
|
+
const style = "stylised, clean topology, game-ready, matte flat colours, no text, no logos, no brand marks";
|
|
151
|
+
if (role === "character")
|
|
152
|
+
return `${base}, single humanoid character in A-pose, full body, ${style}`;
|
|
153
|
+
if (role === "texture")
|
|
154
|
+
return `${base}, seamless tileable surface`;
|
|
155
|
+
return `${base}, single solid closed object, ${style}`;
|
|
156
|
+
}
|
|
157
|
+
export async function runResolveLadder(options) {
|
|
158
|
+
const need = options.need.trim();
|
|
159
|
+
if (!need)
|
|
160
|
+
throw new Error('Usage: aura3d assets resolve "<need>" [--name <id>] [--role hero|prop|background|character|texture|hdri] [--budget credits] [--allow meshy] [--dry-run]');
|
|
161
|
+
const projectDir = options.projectDir ?? process.cwd();
|
|
162
|
+
const env = options.env ?? process.env;
|
|
163
|
+
const role = options.role ?? "prop";
|
|
164
|
+
const name = options.name ?? camelName(need);
|
|
165
|
+
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(name))
|
|
166
|
+
throw new Error(`Aura3D resolve failed: --name must be a valid identifier (got "${name}").`);
|
|
167
|
+
const dryRun = options.dryRun === true;
|
|
168
|
+
const noun = headNoun(need);
|
|
169
|
+
const skipped = [];
|
|
170
|
+
const warnings = [];
|
|
171
|
+
const messages = [];
|
|
172
|
+
const base = { need, headNoun: noun, role, dryRun, name, skipped, warnings, messages };
|
|
173
|
+
// Rung 1: already admitted in this project.
|
|
174
|
+
const manifest = (options.readManifest ?? readAssetManifest)(projectDir);
|
|
175
|
+
const wantsModel = role !== "texture" && role !== "hdri";
|
|
176
|
+
const local = noun === undefined ? undefined : manifest.assets.find((entry) => {
|
|
177
|
+
if (wantsModel && entry.type !== "model")
|
|
178
|
+
return false;
|
|
179
|
+
if (role === "texture" && entry.type !== "texture")
|
|
180
|
+
return false;
|
|
181
|
+
if (role === "hdri" && entry.type !== "environment" && entry.format !== "hdr")
|
|
182
|
+
return false;
|
|
183
|
+
return entry.id === name || mentionsNoun(entryText(entry), noun);
|
|
184
|
+
});
|
|
185
|
+
if (local) {
|
|
186
|
+
messages.push(`Use the admitted asset: model(assets.${local.id}) (${formatSize(local.sizeBytes)}, ${local.hash}).`);
|
|
187
|
+
return { ...base, ok: true, chosen: "project", reason: `"${local.id}" is already admitted in this project and matches "${noun}".`, costCredits: 0, projectAsset: { id: local.id, url: local.url, sizeBytes: local.sizeBytes } };
|
|
188
|
+
}
|
|
189
|
+
skipped.push({ rung: "project", reason: noun === undefined ? "the need has no noun to match" : `no admitted asset matches "${noun}"` });
|
|
190
|
+
// Rung 2: open, licence-clear sources.
|
|
191
|
+
const query = searchQuery(need, role);
|
|
192
|
+
let search;
|
|
193
|
+
try {
|
|
194
|
+
search = await (options.searchFn ?? runSearch)({ query, constraints: { ...options.constraints, profile: options.constraints?.profile ?? profileFor(role) } });
|
|
195
|
+
for (const warning of search.warnings)
|
|
196
|
+
warnings.push(warning);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
warnings.push(`open-source search failed: ${error.message}`);
|
|
200
|
+
}
|
|
201
|
+
const rejected = [];
|
|
202
|
+
const candidate = search?.candidates.find((line) => {
|
|
203
|
+
if (!line.autoPullable)
|
|
204
|
+
return false;
|
|
205
|
+
if (noun !== undefined && !mentionsNoun(line.title, noun)) {
|
|
206
|
+
rejected.push(`${line.title}: does not mention "${noun}"`);
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
const misfit = fitsRole(line, role);
|
|
210
|
+
if (misfit) {
|
|
211
|
+
rejected.push(`${line.title}: ${misfit}`);
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
if (noun !== undefined && !titleIsNoun(line.title, noun)) {
|
|
215
|
+
rejected.push(`${line.title}: is a ${headNoun(line.title.replace(/\([^)]*\)/g, " ")) ?? "different thing"}, not a ${noun}`);
|
|
216
|
+
return false;
|
|
217
|
+
}
|
|
218
|
+
return true;
|
|
219
|
+
});
|
|
220
|
+
if (candidate) {
|
|
221
|
+
messages.push(`Open source: ${describeCandidate(candidate)}.`);
|
|
222
|
+
if (dryRun) {
|
|
223
|
+
messages.push(`Dry run: would admit it as assets.${name} with sha256, provenance and licence.`);
|
|
224
|
+
return { ...base, ok: true, chosen: "open-source", reason: `licence-clear match for "${noun ?? need}" from ${candidate.source}`, costCredits: 0, candidate };
|
|
225
|
+
}
|
|
226
|
+
const resolved = await (options.resolveFn ?? runResolve)({ query, name, projectDir, candidateId: candidate.id, constraints: { ...options.constraints, profile: options.constraints?.profile ?? profileFor(role) } });
|
|
227
|
+
for (const message of resolved.messages)
|
|
228
|
+
messages.push(message);
|
|
229
|
+
for (const warning of resolved.warnings)
|
|
230
|
+
warnings.push(warning);
|
|
231
|
+
if (resolved.ok) {
|
|
232
|
+
return { ...base, ok: true, chosen: "open-source", reason: `licence-clear match for "${noun ?? need}" from ${candidate.source}`, costCredits: 0, candidate, resolve: resolved };
|
|
233
|
+
}
|
|
234
|
+
skipped.push({ rung: "open-source", reason: `admission of ${candidate.id} failed` });
|
|
235
|
+
}
|
|
236
|
+
else {
|
|
237
|
+
const detail = rejected.length > 0 ? `; rejected: ${rejected.slice(0, 3).join("; ")}` : "";
|
|
238
|
+
skipped.push({ rung: "open-source", reason: `no licence-clear, downloadable match for "${noun ?? need}"${detail}` });
|
|
239
|
+
}
|
|
240
|
+
// Rung 3: Meshy, only when allowed and within budget.
|
|
241
|
+
const estimate = MESHY_CREDIT_ESTIMATE[role];
|
|
242
|
+
const prompt = meshyPrompt(need, role);
|
|
243
|
+
if (role === "hdri") {
|
|
244
|
+
skipped.push({ rung: "meshy", reason: "Meshy does not generate HDRIs" });
|
|
245
|
+
}
|
|
246
|
+
else if (!options.allowMeshy) {
|
|
247
|
+
skipped.push({ rung: "meshy", reason: `needs --allow meshy (estimate ${estimate} credits)` });
|
|
248
|
+
}
|
|
249
|
+
else if ((options.budget ?? 0) < estimate) {
|
|
250
|
+
skipped.push({ rung: "meshy", reason: `--budget ${options.budget ?? 0} is below the ${estimate}-credit estimate` });
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
const outDir = mkdtempSync(join(tmpdir(), "aura3d-meshy-"));
|
|
254
|
+
const commands = [
|
|
255
|
+
`<your Meshy generator> --prompt ${JSON.stringify(prompt)} --out ${outDir} --budget ${estimate}`,
|
|
256
|
+
`aura3d assets import-meshy --input ${outDir} --name ${name} --role ${role === "character" ? "character" : "prop"}`,
|
|
257
|
+
"aura3d assets validate && aura3d assets typegen",
|
|
258
|
+
];
|
|
259
|
+
if (dryRun) {
|
|
260
|
+
messages.push(`Dry run: would generate with Meshy for about ${estimate} credits.`);
|
|
261
|
+
return { ...base, ok: true, chosen: "meshy", reason: `no project or open-source match; Meshy allowed within budget`, costCredits: 0, meshy: { prompt, estimateCredits: estimate, commands, ran: false } };
|
|
262
|
+
}
|
|
263
|
+
const runner = options.meshyRunner ?? defaultMeshyRunner;
|
|
264
|
+
const ran = runner({ prompt, outDir, budget: estimate, env });
|
|
265
|
+
messages.push(ran.message);
|
|
266
|
+
const produced = existsSync(outDir) && readdirSync(outDir).some((file) => /\.glb$/i.test(file));
|
|
267
|
+
if (ran.ok && produced) {
|
|
268
|
+
messages.push(`Generated into ${outDir}. Admit it: ${commands[1]}, then ${commands[2]}.`);
|
|
269
|
+
return { ...base, ok: true, chosen: "meshy", reason: "no project or open-source match; generated with Meshy within budget", costCredits: estimate, meshy: { prompt, estimateCredits: estimate, commands: commands.slice(1), ran: true } };
|
|
270
|
+
}
|
|
271
|
+
skipped.push({ rung: "meshy", reason: ran.ok ? "the generator produced no GLB" : ran.message });
|
|
272
|
+
messages.push(`Meshy plan (not run): ${commands.join(" then ")}`);
|
|
273
|
+
}
|
|
274
|
+
// Rung 4: procedural recipe for props; characters, textures and HDRIs have none.
|
|
275
|
+
if (role === "character" || role === "texture" || role === "hdri") {
|
|
276
|
+
skipped.push({ rung: "procedural", reason: `no procedural recipe for a ${role}` });
|
|
277
|
+
messages.push(role === "character"
|
|
278
|
+
? "No character found. Generate one with --allow meshy --budget 40, or admit a licensed file with `aura3d assets add`."
|
|
279
|
+
: `No ${role} found. Admit a licensed file with \`aura3d assets add --type ${role === "hdri" ? "environment" : "texture"}\`.`);
|
|
280
|
+
return { ...base, ok: false, chosen: "none", reason: `nothing in the project or open sources, Meshy not run, and no procedural recipe for a ${role}`, costCredits: 0 };
|
|
281
|
+
}
|
|
282
|
+
const procedural = proceduralRecipe(need, name);
|
|
283
|
+
if (pickRecipeOrUndefined(need) === undefined) {
|
|
284
|
+
messages.push(`No recipe for a ${noun ?? "need like this"}: the box below is a placeholder. For the real thing run with --allow meshy --budget ${estimate || 30}, or admit a licensed file with \`aura3d assets add\`.`);
|
|
285
|
+
}
|
|
286
|
+
messages.push(`Build it in code (${procedural.recipe} recipe): paste the snippet and add \`${name}\` to your scene.`);
|
|
287
|
+
return { ...base, ok: true, chosen: "procedural", reason: "no admitted, open-source or generated asset; build from primitives", costCredits: 0, procedural };
|
|
288
|
+
}
|
|
289
|
+
/** Keyword -> parts, in metres, standing on y = 0. */
|
|
290
|
+
export const PROCEDURAL_RECIPES = {
|
|
291
|
+
crate: [{ shape: "box", size: [1, 1, 1], color: "#8a5a2b", roughness: 0.85, at: [0, 0.5, 0] }],
|
|
292
|
+
barrel: [
|
|
293
|
+
{ shape: "cylinder", size: [0.7, 1, 0.7], color: "#7a4a24", roughness: 0.8, at: [0, 0.5, 0] },
|
|
294
|
+
{ shape: "cylinder", size: [0.74, 0.06, 0.74], color: "#3c3c40", metallic: 0.8, roughness: 0.4, at: [0, 0.2, 0] },
|
|
295
|
+
{ shape: "cylinder", size: [0.74, 0.06, 0.74], color: "#3c3c40", metallic: 0.8, roughness: 0.4, at: [0, 0.8, 0] },
|
|
296
|
+
],
|
|
297
|
+
table: [
|
|
298
|
+
{ shape: "box", size: [1.6, 0.08, 0.9], color: "#9a6b3f", roughness: 0.7, at: [0, 0.74, 0] },
|
|
299
|
+
{ shape: "box", size: [0.08, 0.7, 0.08], color: "#7a5230", at: [-0.7, 0.35, -0.35] },
|
|
300
|
+
{ shape: "box", size: [0.08, 0.7, 0.08], color: "#7a5230", at: [0.7, 0.35, -0.35] },
|
|
301
|
+
{ shape: "box", size: [0.08, 0.7, 0.08], color: "#7a5230", at: [-0.7, 0.35, 0.35] },
|
|
302
|
+
{ shape: "box", size: [0.08, 0.7, 0.08], color: "#7a5230", at: [0.7, 0.35, 0.35] },
|
|
303
|
+
],
|
|
304
|
+
chair: [
|
|
305
|
+
{ shape: "box", size: [0.5, 0.06, 0.5], color: "#9a6b3f", at: [0, 0.45, 0] },
|
|
306
|
+
{ shape: "box", size: [0.5, 0.5, 0.06], color: "#9a6b3f", at: [0, 0.73, -0.22] },
|
|
307
|
+
{ shape: "box", size: [0.05, 0.45, 0.05], color: "#7a5230", at: [-0.21, 0.22, -0.21] },
|
|
308
|
+
{ shape: "box", size: [0.05, 0.45, 0.05], color: "#7a5230", at: [0.21, 0.22, -0.21] },
|
|
309
|
+
{ shape: "box", size: [0.05, 0.45, 0.05], color: "#7a5230", at: [-0.21, 0.22, 0.21] },
|
|
310
|
+
{ shape: "box", size: [0.05, 0.45, 0.05], color: "#7a5230", at: [0.21, 0.22, 0.21] },
|
|
311
|
+
],
|
|
312
|
+
tree: [
|
|
313
|
+
{ shape: "cylinder", size: [0.3, 2, 0.3], color: "#5a3d24", roughness: 0.95, at: [0, 1, 0] },
|
|
314
|
+
{ shape: "cone", params: { radius: 1.2, height: 2.6 }, color: "#3f7a3a", roughness: 0.9, at: [0, 3.2, 0] },
|
|
315
|
+
],
|
|
316
|
+
rock: [
|
|
317
|
+
{ shape: "sphere", size: 1.2, color: "#7d7a74", roughness: 1, at: [0, 0.4, 0] },
|
|
318
|
+
{ shape: "sphere", size: 0.7, color: "#6f6c66", roughness: 1, at: [0.5, 0.25, 0.2] },
|
|
319
|
+
],
|
|
320
|
+
fence: [
|
|
321
|
+
{ shape: "box", size: [0.1, 1, 0.1], color: "#8b6a45", at: [-1, 0.5, 0] },
|
|
322
|
+
{ shape: "box", size: [0.1, 1, 0.1], color: "#8b6a45", at: [0, 0.5, 0] },
|
|
323
|
+
{ shape: "box", size: [0.1, 1, 0.1], color: "#8b6a45", at: [1, 0.5, 0] },
|
|
324
|
+
{ shape: "box", size: [2.2, 0.1, 0.05], color: "#a07c52", at: [0, 0.75, 0] },
|
|
325
|
+
{ shape: "box", size: [2.2, 0.1, 0.05], color: "#a07c52", at: [0, 0.35, 0] },
|
|
326
|
+
],
|
|
327
|
+
lamp: [
|
|
328
|
+
{ shape: "cylinder", size: [0.12, 3.2, 0.12], color: "#2e3238", metallic: 0.8, roughness: 0.4, at: [0, 1.6, 0] },
|
|
329
|
+
{ shape: "box", size: [0.5, 0.12, 0.3], color: "#2e3238", metallic: 0.8, roughness: 0.4, at: [0.2, 3.25, 0] },
|
|
330
|
+
{ shape: "sphere", size: 0.22, color: "#ffe9b0", roughness: 0.3, at: [0.35, 3.13, 0] },
|
|
331
|
+
],
|
|
332
|
+
building: [
|
|
333
|
+
{ shape: "box", size: [8, 12, 8], color: "#b9b2a6", roughness: 0.9, at: [0, 6, 0] },
|
|
334
|
+
{ shape: "box", size: [8.4, 0.4, 8.4], color: "#6f6a62", at: [0, 12.2, 0] },
|
|
335
|
+
],
|
|
336
|
+
car: [
|
|
337
|
+
{ shape: "box", size: [1.8, 0.6, 4.2], color: "#c0392b", roughness: 0.5, metallic: 0.3, at: [0, 0.55, 0] },
|
|
338
|
+
{ shape: "box", size: [1.6, 0.5, 2.2], color: "#2c3e50", roughness: 0.2, at: [0, 1.05, -0.2] },
|
|
339
|
+
{ shape: "cylinder", size: [0.66, 0.24, 0.66], color: "#1b1b1b", at: [-0.9, 0.33, 1.3] },
|
|
340
|
+
{ shape: "cylinder", size: [0.66, 0.24, 0.66], color: "#1b1b1b", at: [0.9, 0.33, 1.3] },
|
|
341
|
+
{ shape: "cylinder", size: [0.66, 0.24, 0.66], color: "#1b1b1b", at: [-0.9, 0.33, -1.3] },
|
|
342
|
+
{ shape: "cylinder", size: [0.66, 0.24, 0.66], color: "#1b1b1b", at: [0.9, 0.33, -1.3] },
|
|
343
|
+
],
|
|
344
|
+
};
|
|
345
|
+
const RECIPE_ALIASES = {
|
|
346
|
+
box: "crate", chest: "crate", cask: "barrel", keg: "barrel", desk: "table", bench: "chair", stool: "chair",
|
|
347
|
+
pine: "tree", oak: "tree", bush: "tree", boulder: "rock", stone: "rock", wall: "fence", railing: "fence",
|
|
348
|
+
streetlight: "lamp", light: "lamp", lantern: "lamp", post: "lamp", house: "building", tower: "building", block: "building",
|
|
349
|
+
vehicle: "car", truck: "car", van: "car", taxi: "car", sedan: "car",
|
|
350
|
+
};
|
|
351
|
+
/** The best recipe for a need: the head noun, then any other word, then aliases; a crate as the fallback. */
|
|
352
|
+
export function pickRecipe(need) {
|
|
353
|
+
return pickRecipeOrUndefined(need) ?? "crate";
|
|
354
|
+
}
|
|
355
|
+
/** The recipe for a need, or undefined when no keyword or alias matches (the crate is then a placeholder). */
|
|
356
|
+
export function pickRecipeOrUndefined(need) {
|
|
357
|
+
const words = tokens(need).map(singular);
|
|
358
|
+
const ordered = [headNoun(need), ...words.reverse()].filter((word) => word !== undefined);
|
|
359
|
+
for (const word of ordered) {
|
|
360
|
+
if (PROCEDURAL_RECIPES[word])
|
|
361
|
+
return word;
|
|
362
|
+
const alias = RECIPE_ALIASES[word];
|
|
363
|
+
if (alias)
|
|
364
|
+
return alias;
|
|
365
|
+
}
|
|
366
|
+
return undefined;
|
|
367
|
+
}
|
|
368
|
+
function partCode(part, index, name) {
|
|
369
|
+
const options = [`name: "${name}-${index}"`];
|
|
370
|
+
if (part.size !== undefined)
|
|
371
|
+
options.push(`size: ${Array.isArray(part.size) ? `[${part.size.join(", ")}]` : String(part.size)}`);
|
|
372
|
+
if (part.params)
|
|
373
|
+
options.push(`params: { ${Object.entries(part.params).map(([key, value]) => `${key}: ${value}`).join(", ")} }`);
|
|
374
|
+
const pbr = [`color: "${part.color}"`];
|
|
375
|
+
if (part.roughness !== undefined)
|
|
376
|
+
pbr.push(`roughness: ${part.roughness}`);
|
|
377
|
+
if (part.metallic !== undefined)
|
|
378
|
+
pbr.push(`metallic: ${part.metallic}`);
|
|
379
|
+
options.push(`material: material.pbr({ ${pbr.join(", ")} })`);
|
|
380
|
+
return ` primitives.${part.shape}({ ${options.join(", ")} }).position(${part.at.join(", ")}),`;
|
|
381
|
+
}
|
|
382
|
+
export function proceduralRecipe(need, name) {
|
|
383
|
+
const matched = pickRecipeOrUndefined(need);
|
|
384
|
+
const recipe = matched ?? "crate";
|
|
385
|
+
const parts = PROCEDURAL_RECIPES[recipe];
|
|
386
|
+
const note = matched === undefined ? " PLACEHOLDER: no recipe matches this need; replace it with a real model before shipping." : " Tune sizes and colours.";
|
|
387
|
+
const lines = [
|
|
388
|
+
`import { group, material, primitives } from "@aura3d/engine";`,
|
|
389
|
+
``,
|
|
390
|
+
`// ${need.replace(/[\r\n*/]/g, " ")}: built from primitives (${recipe} recipe), metres, standing on y = 0.${note}`,
|
|
391
|
+
`export const ${name} = group("${name}", [`,
|
|
392
|
+
...parts.map((part, index) => partCode(part, index, name)),
|
|
393
|
+
`]);`,
|
|
394
|
+
];
|
|
395
|
+
return { recipe, snippet: lines.join("\n") };
|
|
396
|
+
}
|
|
397
|
+
export function printLadderReport(report, print = console.log) {
|
|
398
|
+
print(`Need: "${report.need}" (role ${report.role}${report.headNoun ? `, matching "${report.headNoun}"` : ""})`);
|
|
399
|
+
print(`Chosen: ${report.chosen}: ${report.reason}`);
|
|
400
|
+
for (const skip of report.skipped)
|
|
401
|
+
print(` skipped ${skip.rung}: ${skip.reason}`);
|
|
402
|
+
print(`Cost: ${report.costCredits} credits${report.dryRun ? " (dry run)" : ""}`);
|
|
403
|
+
for (const message of report.messages)
|
|
404
|
+
print(message);
|
|
405
|
+
if (report.procedural)
|
|
406
|
+
print(`\n${report.procedural.snippet}`);
|
|
407
|
+
for (const warning of report.warnings)
|
|
408
|
+
print(`warning: ${warning}`);
|
|
409
|
+
}
|
|
410
|
+
//# sourceMappingURL=resolve-ladder.js.map
|