@ggui-ai/ui-gen 0.9.0 → 0.10.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 +9 -2
- package/dist/adapters/generation-dispatch.js +547 -85
- package/dist/adapters/generation-dispatch.js.map +1 -1
- package/dist/adapters/index.js +28 -11
- package/dist/adapters/index.js.map +1 -1
- package/dist/advanced/index.d.ts +5 -3
- package/dist/advanced/index.js +563 -92
- package/dist/advanced/index.js.map +1 -1
- package/dist/blueprint-validator.js +109 -3
- package/dist/blueprint-validator.js.map +1 -1
- package/dist/boilerplate.js +14 -2
- package/dist/boilerplate.js.map +1 -1
- package/dist/check/index.d.ts +1 -1
- package/dist/check/index.js +11 -1
- package/dist/check/index.js.map +1 -1
- package/dist/{create-ui-generator-B9kV4U9h.d.ts → create-ui-generator-CF0EL0Li.d.ts} +13 -1
- package/dist/{dispatch-Deo9qzrG.d.ts → dispatch-D75M-OfZ.d.ts} +1 -1
- package/dist/evaluation/axis-checks/index.d.ts +3 -3
- package/dist/evaluation/axis-checks/index.js +101 -0
- package/dist/evaluation/axis-checks/index.js.map +1 -1
- package/dist/evaluation/axis-checks/registry.d.ts +1 -1
- package/dist/evaluation/axis-checks/registry.js +101 -0
- package/dist/evaluation/axis-checks/registry.js.map +1 -1
- package/dist/evaluation/index.d.ts +46 -3
- package/dist/evaluation/index.js +358 -17
- package/dist/evaluation/index.js.map +1 -1
- package/dist/harness/check/runtime-render/index.d.ts +2 -2
- package/dist/harness/check/runtime-render/index.js +110 -3
- package/dist/harness/check/runtime-render/index.js.map +1 -1
- package/dist/harness/index.d.ts +2 -2
- package/dist/harness/index.js +263 -18
- package/dist/harness/index.js.map +1 -1
- package/dist/harness/llm-trace-sink.d.ts +1 -1
- package/dist/harness/llm-trace-sink.js.map +1 -1
- package/dist/harness/prompts.js +17 -3
- package/dist/harness/prompts.js.map +1 -1
- package/dist/harness/result-types.d.ts +1 -1
- package/dist/harness/runtime.d.ts +9 -2
- package/dist/harness/runtime.js +20 -6
- package/dist/harness/runtime.js.map +1 -1
- package/dist/harness/types-public.d.ts +1 -1
- package/dist/harness/types-public.js +14 -2
- package/dist/harness/types-public.js.map +1 -1
- package/dist/harness/validator-trace-sink.d.ts +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +563 -92
- package/dist/index.js.map +1 -1
- package/dist/{llm-router-1TyI0_TV.d.ts → llm-router-BEVtbAb9.d.ts} +61 -4
- package/dist/patch.d.ts +1 -1
- package/dist/provider-adapter.d.ts +16 -6
- package/dist/provider-adapter.js.map +1 -1
- package/dist/providers/index.d.ts +19 -6
- package/dist/providers/index.js.map +1 -1
- package/dist/{render-check-CNZjHD5g.d.ts → render-check-BNYGVDJd.d.ts} +1 -1
- package/dist/{types-public-C36k1q6s.d.ts → types-public-DIpjC-OA.d.ts} +1 -1
- package/dist/workflows.d.ts +1 -1
- package/package.json +12 -12
- package/src/adapters/generation-dispatch.ts +9 -0
- package/src/adapters/openrouter/client.ts +2 -2
- package/src/adapters/openrouter/types.ts +10 -0
- package/src/boilerplate/generate.ts +10 -2
- package/src/boilerplate/json-schema-ts.ts +22 -2
- package/src/boilerplate/system-prompt.ts +1 -0
- package/src/compile.ts +1 -1
- package/src/contract-context.ts +10 -2
- package/src/create-ui-generator.ts +14 -0
- package/src/design-system-docs.ts +6 -4
- package/src/evaluation/axis-checks/checks/state-ui-affordance.ts +162 -0
- package/src/evaluation/axis-checks/registry.ts +2 -0
- package/src/evaluation/index.ts +11 -0
- package/src/evaluation/llm-evaluator.ts +14 -1
- package/src/evaluation/visual-evaluator.ts +44 -65
- package/src/harness/check/runtime-render/adapter.ts +18 -0
- package/src/harness/check/runtime-render/index.ts +8 -0
- package/src/harness/check/runtime-render/prepare-mockup.ts +14 -0
- package/src/harness/check/runtime-render/production-act-shim.ts +158 -0
- package/src/harness/check/runtime-render/render-check.ts +72 -1
- package/src/harness/coding/run-eval-round.ts +61 -5
- package/src/harness/index.ts +1 -1
- package/src/harness/llm-router.ts +397 -18
- package/src/harness/llm-trace-sink.ts +2 -1
- package/src/harness/runtime.ts +7 -0
- package/src/index.ts +5 -5
- package/src/provider-adapter.ts +16 -6
- package/src/providers/bedrock.ts +5 -4
- package/src/providers/index.ts +16 -4
- package/src/tools/render-check.ts +19 -7
package/dist/adapters/index.js
CHANGED
|
@@ -1109,14 +1109,16 @@ var OpenRouterError;
|
|
|
1109
1109
|
var init_types = __esm({
|
|
1110
1110
|
"src/adapters/openrouter/types.ts"() {
|
|
1111
1111
|
OpenRouterError = class extends Error {
|
|
1112
|
-
constructor(message, status, code) {
|
|
1112
|
+
constructor(message, status, code, headers) {
|
|
1113
1113
|
super(message);
|
|
1114
1114
|
this.status = status;
|
|
1115
1115
|
this.code = code;
|
|
1116
|
+
this.headers = headers;
|
|
1116
1117
|
this.name = "OpenRouterError";
|
|
1117
1118
|
}
|
|
1118
1119
|
status;
|
|
1119
1120
|
code;
|
|
1121
|
+
headers;
|
|
1120
1122
|
get isTransient() {
|
|
1121
1123
|
return this.status === 408 || this.status === 429 || this.status === 502 || this.status === 503;
|
|
1122
1124
|
}
|
|
@@ -1157,7 +1159,7 @@ var init_client2 = __esm({
|
|
|
1157
1159
|
if (!response.ok) {
|
|
1158
1160
|
const errorBody = await response.json().catch(() => ({ error: { message: response.statusText } }));
|
|
1159
1161
|
const message = errorBody.error?.message ?? response.statusText;
|
|
1160
|
-
throw new OpenRouterError(message, response.status);
|
|
1162
|
+
throw new OpenRouterError(message, response.status, void 0, response.headers);
|
|
1161
1163
|
}
|
|
1162
1164
|
return response.json();
|
|
1163
1165
|
}
|
|
@@ -1175,7 +1177,7 @@ var init_client2 = __esm({
|
|
|
1175
1177
|
if (!response.ok) {
|
|
1176
1178
|
const errorBody = await response.json().catch(() => ({ error: { message: response.statusText } }));
|
|
1177
1179
|
const message = errorBody.error?.message ?? response.statusText;
|
|
1178
|
-
throw new OpenRouterError(message, response.status);
|
|
1180
|
+
throw new OpenRouterError(message, response.status, void 0, response.headers);
|
|
1179
1181
|
}
|
|
1180
1182
|
if (!response.body) {
|
|
1181
1183
|
throw new OpenRouterError("No response body for streaming request", 500);
|
|
@@ -1840,10 +1842,12 @@ These tokens adapt automatically to any theme (light, dark, branded). **ALWAYS u
|
|
|
1840
1842
|
- Borders/dividers \u2192 \`var(--ggui-color-outline)\` or \`var(--ggui-color-outlineVariant)\`
|
|
1841
1843
|
|
|
1842
1844
|
### State Colors
|
|
1843
|
-
|
|
1844
|
-
- var(--ggui-color-
|
|
1845
|
-
- var(--ggui-color-
|
|
1846
|
-
- var(--ggui-color-
|
|
1845
|
+
Semantic families ship as SCALES; the \`500\` stop is the role color (per-mode brightness), \`50\` the tint, \`800\` the on-tint text:
|
|
1846
|
+
- var(--ggui-color-success-500) \u2014 success states (tint bg: success-50, text on tint: success-800)
|
|
1847
|
+
- var(--ggui-color-warning-500) \u2014 warning states (warning-50 / warning-800)
|
|
1848
|
+
- var(--ggui-color-error-500) \u2014 error states, destructive actions (error-50 / error-800)
|
|
1849
|
+
- var(--ggui-color-info-500) \u2014 informational (info-50 / info-800)
|
|
1850
|
+
Prefer the primitives' \`tone="success|warning|error|info"\` prop over hand-written vars \u2014 it resolves to the same stops.
|
|
1847
1851
|
|
|
1848
1852
|
### IMPORTANT: Color Rules
|
|
1849
1853
|
- **NEVER** use hardcoded hex colors. ONLY use var(--ggui-color-*) tokens.
|
|
@@ -2135,6 +2139,15 @@ function jsonSchemaTypeToTs(schema) {
|
|
|
2135
2139
|
if (schema.enum?.length) {
|
|
2136
2140
|
return schema.enum.map((v) => typeof v === "string" ? `'${v}'` : String(v)).join(" | ");
|
|
2137
2141
|
}
|
|
2142
|
+
if (Array.isArray(schema.type)) {
|
|
2143
|
+
const { nullable: _nullable, ...rest } = schema;
|
|
2144
|
+
const members = [...new Set(schema.type)].map(
|
|
2145
|
+
(member) => jsonSchemaTypeToTs({ ...rest, type: member })
|
|
2146
|
+
);
|
|
2147
|
+
const unique = [...new Set(members)];
|
|
2148
|
+
if (schema.nullable && !unique.includes("null")) unique.push("null");
|
|
2149
|
+
return unique.join(" | ");
|
|
2150
|
+
}
|
|
2138
2151
|
let result;
|
|
2139
2152
|
switch (schema.type) {
|
|
2140
2153
|
case "string":
|
|
@@ -2152,7 +2165,8 @@ function jsonSchemaTypeToTs(schema) {
|
|
|
2152
2165
|
case "array": {
|
|
2153
2166
|
if (schema.items) {
|
|
2154
2167
|
const itemType = jsonSchemaTypeToTs(schema.items);
|
|
2155
|
-
|
|
2168
|
+
const itemsDeclareObject = Array.isArray(schema.items.type) ? schema.items.type.includes("object") : schema.items.type === "object";
|
|
2169
|
+
result = itemsDeclareObject && schema.items.properties ? `Array<${itemType}>` : itemType.includes("|") ? `(${itemType})[]` : `${itemType}[]`;
|
|
2156
2170
|
} else {
|
|
2157
2171
|
result = "unknown[]";
|
|
2158
2172
|
}
|
|
@@ -2802,16 +2816,19 @@ function generateSampleProps(spec) {
|
|
|
2802
2816
|
return props;
|
|
2803
2817
|
}
|
|
2804
2818
|
function synthesizeFromSchema(schema) {
|
|
2805
|
-
|
|
2819
|
+
const declared = Array.isArray(schema.type) ? schema.type.find((t) => t !== "null") : schema.type;
|
|
2820
|
+
switch (declared) {
|
|
2806
2821
|
case "string":
|
|
2807
2822
|
return "sample";
|
|
2808
2823
|
case "number":
|
|
2824
|
+
case "integer":
|
|
2809
2825
|
return 0;
|
|
2810
2826
|
case "boolean":
|
|
2811
2827
|
return false;
|
|
2828
|
+
case "null":
|
|
2829
|
+
return null;
|
|
2812
2830
|
case "array": {
|
|
2813
|
-
|
|
2814
|
-
if (itemSchema) return [synthesizeFromSchema(itemSchema) ?? null];
|
|
2831
|
+
if (schema.items) return [synthesizeFromSchema(schema.items) ?? null];
|
|
2815
2832
|
return [];
|
|
2816
2833
|
}
|
|
2817
2834
|
case "object": {
|