@ggui-ai/ui-gen 0.16.0 → 0.18.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/dist/adapters/generation-dispatch.d.ts +6 -3
- package/dist/adapters/generation-dispatch.js +5161 -4312
- package/dist/adapters/generation-dispatch.js.map +1 -1
- package/dist/adapters/index.js +8 -5
- package/dist/adapters/index.js.map +1 -1
- package/dist/advanced/index.d.ts +12 -8
- package/dist/advanced/index.js +4685 -3801
- package/dist/advanced/index.js.map +1 -1
- package/dist/blueprint-validator.js +8 -12
- package/dist/blueprint-validator.js.map +1 -1
- package/dist/boilerplate.d.ts +5 -2
- package/dist/boilerplate.js +120 -13
- package/dist/boilerplate.js.map +1 -1
- package/dist/check/index.d.ts +2 -2
- package/dist/check/index.js +72 -0
- package/dist/check/index.js.map +1 -1
- package/dist/compose.js +1 -1
- package/dist/compose.js.map +1 -1
- package/dist/{create-ui-generator-CCIeQaEe.d.ts → create-ui-generator-C8Ki9Wz1.d.ts} +18 -2
- package/dist/{design-mode-BHEE7flj.d.ts → design-mode-DLufhrNp.d.ts} +0 -6
- package/dist/{dispatch-BA5dJcg-.d.ts → dispatch-D2htzi9h.d.ts} +2 -2
- package/dist/evaluation/axis-checks/index.d.ts +4 -4
- package/dist/evaluation/axis-checks/index.js +347 -13
- package/dist/evaluation/axis-checks/index.js.map +1 -1
- package/dist/evaluation/axis-checks/registry.d.ts +2 -2
- package/dist/evaluation/axis-checks/registry.js +302 -1
- package/dist/evaluation/axis-checks/registry.js.map +1 -1
- package/dist/evaluation/index.d.ts +160 -8
- package/dist/evaluation/index.js +752 -81
- package/dist/evaluation/index.js.map +1 -1
- package/dist/fragments/index.js +1 -1
- package/dist/fragments/index.js.map +1 -1
- package/dist/{generate-8L_bc2iP.d.ts → generate-9IeNT4ZY.d.ts} +1 -1
- package/dist/harness/check/runtime-render/index.d.ts +3 -2
- package/dist/harness/check/runtime-render/index.js +8 -12
- package/dist/harness/check/runtime-render/index.js.map +1 -1
- package/dist/harness/index.d.ts +3 -2
- package/dist/harness/index.js +410 -255
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/prompts.d.ts +2 -2
- package/dist/harness/prompts.js +7 -3
- package/dist/harness/prompts.js.map +1 -1
- package/dist/harness/result-types.d.ts +3 -3
- package/dist/harness/runtime.d.ts +13 -4
- package/dist/harness/runtime.js +131 -20
- package/dist/harness/runtime.js.map +1 -1
- package/dist/harness/types-public.d.ts +13 -2
- package/dist/harness/types-public.js +410 -255
- package/dist/harness/types-public.js.map +1 -1
- package/dist/harness/validator-trace-sink.d.ts +2 -2
- package/dist/index.d.ts +29 -7
- package/dist/index.js +4691 -3805
- package/dist/index.js.map +1 -1
- package/dist/patch.d.ts +3 -2
- package/dist/{prompts-k6m6reqe.d.ts → prompts-YU9piOgs.d.ts} +12 -46
- package/dist/styling-profile-CxfvV48g.d.ts +35 -0
- package/dist/tools/get-primitives-ts.d.ts +1 -1
- package/dist/tools/get-primitives-ts.js +1 -1
- package/dist/tools/get-primitives-ts.js.map +1 -1
- package/dist/{types-public-D24JLJgl.d.ts → types-public-DVSssdc-.d.ts} +39 -3
- package/dist/validation/index.d.ts +1 -1
- package/dist/validation/index.js +1 -1
- package/dist/validation/index.js.map +1 -1
- package/dist/workflows.d.ts +3 -2
- package/package.json +12 -12
- package/src/adapters/generation-dispatch.ts +6 -1
- package/src/boilerplate/free-design-prompt.ts +9 -0
- package/src/boilerplate/generate.ts +8 -1
- package/src/boilerplate/hard-sections.ts +45 -1
- package/src/boilerplate/styling-profile.ts +166 -0
- package/src/boilerplate/system-prompt.ts +22 -8
- package/src/boilerplate/templates/layouts/fullscreen-desktop.tsx.tmpl +5 -3
- package/src/boilerplate/templates/layouts/fullscreen-mobile.tsx.tmpl +3 -3
- package/src/boilerplate/templates/layouts/fullscreen-universal.tsx.tmpl +5 -3
- package/src/check/run-tier0.ts +154 -0
- package/src/contract-context.ts +28 -14
- package/src/create-harness.ts +4 -0
- package/src/create-ui-generator.ts +41 -2
- package/src/design-mode.ts +11 -1
- package/src/design-system-docs.ts +7 -4
- package/src/effort.ts +48 -0
- package/src/evaluation/axis-checks/checks/grid.ts +148 -0
- package/src/evaluation/axis-checks/checks/universal.ts +308 -0
- package/src/evaluation/axis-checks/dispatch.ts +78 -13
- package/src/evaluation/axis-checks/helpers.ts +12 -0
- package/src/evaluation/axis-checks/registry.ts +2 -0
- package/src/evaluation/design-identity.ts +96 -0
- package/src/evaluation/index.ts +17 -0
- package/src/evaluation/llm-evaluator.ts +13 -1
- package/src/evaluation/theme-css.ts +14 -0
- package/src/evaluation/types-public.ts +35 -1
- package/src/evaluation/visual-evaluator.ts +478 -45
- package/src/fragments/render.ts +1 -1
- package/src/harness/check/runtime-render/prepare-mockup.ts +18 -11
- package/src/harness/coding/init-session.ts +1 -0
- package/src/harness/coding/run-coding-turn.ts +6 -14
- package/src/harness/coding/run-eval-round.ts +31 -3
- package/src/harness/runtime.ts +10 -0
- package/src/harness/types-public.ts +11 -0
- package/src/index.ts +2 -0
- package/src/pin-fixtures.ts +98 -0
- package/src/run-check.ts +10 -10
- package/src/tools/get-primitives-ts.ts +1 -1
- package/src/tools.ts +2 -1
- package/src/validation/primitives.ts +1 -1
package/dist/check/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DataContract, JsonObject, PropsSpec, ActionSpec, StreamSpec } from '@ggui-ai/protocol';
|
|
2
|
-
import { D as DesignMode } from '../design-mode-
|
|
3
|
-
import { b as EvalResult, E as EvalIssue } from '../types-public-
|
|
2
|
+
import { D as DesignMode } from '../design-mode-DLufhrNp.js';
|
|
3
|
+
import { b as EvalResult, E as EvalIssue } from '../types-public-DVSssdc-.js';
|
|
4
4
|
export { j as jsonSchemaTypeToTs } from '../json-schema-ts-CbB78b3n.js';
|
|
5
5
|
import '../axes-CzLEMDeB.js';
|
|
6
6
|
import '../types-BOvHNG7K.js';
|
package/dist/check/index.js
CHANGED
|
@@ -1049,6 +1049,63 @@ function isGadgetExportImported(source, pkg, exportName) {
|
|
|
1049
1049
|
}
|
|
1050
1050
|
return false;
|
|
1051
1051
|
}
|
|
1052
|
+
function detectComponentNeverReturns(sourceCode) {
|
|
1053
|
+
const sf = ts4.createSourceFile(
|
|
1054
|
+
"source.tsx",
|
|
1055
|
+
sourceCode,
|
|
1056
|
+
ts4.ScriptTarget.Latest,
|
|
1057
|
+
/* setParentNodes */
|
|
1058
|
+
true,
|
|
1059
|
+
ts4.ScriptKind.TSX
|
|
1060
|
+
);
|
|
1061
|
+
const isFunctionLike = (n) => ts4.isFunctionDeclaration(n) || ts4.isFunctionExpression(n) || ts4.isArrowFunction(n) || ts4.isMethodDeclaration(n) || ts4.isClassDeclaration(n) || ts4.isClassExpression(n);
|
|
1062
|
+
function resolveTopLevel(name) {
|
|
1063
|
+
for (const st of sf.statements) {
|
|
1064
|
+
if (ts4.isFunctionDeclaration(st) && st.name?.text === name) return st;
|
|
1065
|
+
if (ts4.isVariableStatement(st)) {
|
|
1066
|
+
for (const decl of st.declarationList.declarations) {
|
|
1067
|
+
if (ts4.isIdentifier(decl.name) && decl.name.text === name && decl.initializer !== void 0 && (ts4.isArrowFunction(decl.initializer) || ts4.isFunctionExpression(decl.initializer))) {
|
|
1068
|
+
return decl.initializer;
|
|
1069
|
+
}
|
|
1070
|
+
}
|
|
1071
|
+
}
|
|
1072
|
+
}
|
|
1073
|
+
return void 0;
|
|
1074
|
+
}
|
|
1075
|
+
let component;
|
|
1076
|
+
for (const st of sf.statements) {
|
|
1077
|
+
if (ts4.isFunctionDeclaration(st) && st.modifiers?.some((m) => m.kind === ts4.SyntaxKind.DefaultKeyword)) {
|
|
1078
|
+
component = st;
|
|
1079
|
+
break;
|
|
1080
|
+
}
|
|
1081
|
+
if (ts4.isExportAssignment(st) && st.isExportEquals !== true) {
|
|
1082
|
+
const expr = st.expression;
|
|
1083
|
+
if (ts4.isArrowFunction(expr) || ts4.isFunctionExpression(expr)) component = expr;
|
|
1084
|
+
else if (ts4.isIdentifier(expr)) component = resolveTopLevel(expr.text);
|
|
1085
|
+
break;
|
|
1086
|
+
}
|
|
1087
|
+
}
|
|
1088
|
+
if (component === void 0) return null;
|
|
1089
|
+
const body = component.body;
|
|
1090
|
+
if (body === void 0 || !ts4.isBlock(body)) return null;
|
|
1091
|
+
let returnsValue = false;
|
|
1092
|
+
let jsxStatementLine;
|
|
1093
|
+
const visit = (node) => {
|
|
1094
|
+
if (returnsValue) return;
|
|
1095
|
+
if (ts4.isReturnStatement(node)) {
|
|
1096
|
+
if (node.expression !== void 0) returnsValue = true;
|
|
1097
|
+
return;
|
|
1098
|
+
}
|
|
1099
|
+
if (jsxStatementLine === void 0 && ts4.isExpressionStatement(node) && (ts4.isJsxElement(node.expression) || ts4.isJsxFragment(node.expression) || ts4.isJsxSelfClosingElement(node.expression))) {
|
|
1100
|
+
jsxStatementLine = sf.getLineAndCharacterOfPosition(node.getStart(sf)).line + 1;
|
|
1101
|
+
}
|
|
1102
|
+
node.forEachChild((child) => {
|
|
1103
|
+
if (!isFunctionLike(child)) visit(child);
|
|
1104
|
+
});
|
|
1105
|
+
};
|
|
1106
|
+
for (const st of body.statements) if (!isFunctionLike(st)) visit(st);
|
|
1107
|
+
return returnsValue ? null : { jsxStatementLine };
|
|
1108
|
+
}
|
|
1052
1109
|
async function runTier0Checks(sourceCode, contract, buildErrors, gadgetTypes, designMode = DEFAULT_DESIGN_MODE) {
|
|
1053
1110
|
const issues = [];
|
|
1054
1111
|
const lines = sourceCode.split("\n");
|
|
@@ -1062,6 +1119,7 @@ async function runTier0Checks(sourceCode, contract, buildErrors, gadgetTypes, de
|
|
|
1062
1119
|
tier: 0,
|
|
1063
1120
|
result: "fail",
|
|
1064
1121
|
category: "compile",
|
|
1122
|
+
subcategory: "build-error",
|
|
1065
1123
|
severity: "critical",
|
|
1066
1124
|
description: `Component failed to compile:
|
|
1067
1125
|
${errorDetail}`,
|
|
@@ -1134,6 +1192,7 @@ ${errorDetail}`,
|
|
|
1134
1192
|
tier: 0,
|
|
1135
1193
|
result: "fail",
|
|
1136
1194
|
category: "imports",
|
|
1195
|
+
subcategory: "disallowed-package",
|
|
1137
1196
|
severity: "critical",
|
|
1138
1197
|
description: `Import from "${pkg}" is not allowed`,
|
|
1139
1198
|
fix: `Only import from: ${describeAllowedImports()}`,
|
|
@@ -1466,6 +1525,19 @@ ${errorDetail}`,
|
|
|
1466
1525
|
fix: "Add export default function Component(props: Props) { ... }"
|
|
1467
1526
|
});
|
|
1468
1527
|
}
|
|
1528
|
+
const neverReturns = detectComponentNeverReturns(sourceCode);
|
|
1529
|
+
if (neverReturns !== null) {
|
|
1530
|
+
issues.push({
|
|
1531
|
+
tier: 0,
|
|
1532
|
+
result: "fail",
|
|
1533
|
+
category: "compile",
|
|
1534
|
+
subcategory: "renders-nothing",
|
|
1535
|
+
severity: "critical",
|
|
1536
|
+
description: neverReturns.jsxStatementLine === void 0 ? "The component never returns its tree \u2014 it renders a blank frame" : `The component never returns its tree: the JSX at line ${neverReturns.jsxStatementLine} sits at statement position, so it is built and thrown away and the frame renders blank`,
|
|
1537
|
+
fix: "Wrap the tree in the return the boilerplate gave you: `return (` before the root element and `);` after it.",
|
|
1538
|
+
...neverReturns.jsxStatementLine === void 0 ? {} : { line: neverReturns.jsxStatementLine }
|
|
1539
|
+
});
|
|
1540
|
+
}
|
|
1469
1541
|
if (contract) {
|
|
1470
1542
|
try {
|
|
1471
1543
|
const contractIssues = validateAllContracts(sourceCode, contract);
|