@chai-ui/core 0.12.0 → 0.14.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/README.md +14 -3
- package/dist/analytics-events.d.ts +121 -0
- package/dist/analytics-events.d.ts.map +1 -0
- package/dist/analytics-events.js +55 -0
- package/dist/analytics-events.js.map +1 -0
- package/dist/composer.d.ts +14 -1
- package/dist/composer.d.ts.map +1 -1
- package/dist/composer.js +44 -6
- package/dist/composer.js.map +1 -1
- package/dist/evaluation-judge.d.ts +33 -0
- package/dist/evaluation-judge.d.ts.map +1 -0
- package/dist/evaluation-judge.js +37 -0
- package/dist/evaluation-judge.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/run.d.ts +2 -0
- package/dist/run.d.ts.map +1 -1
- package/dist/run.js +4 -0
- package/dist/run.js.map +1 -1
- package/package.json +1 -1
- package/src/analytics-events.ts +106 -0
- package/src/composer.ts +57 -4
- package/src/evaluation-judge.ts +60 -0
- package/src/index.ts +2 -0
- package/src/run.ts +5 -0
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ The headless core behind Chai UI's components: the data types, the
|
|
|
16
16
|
Request → Run → Result model a submitted prompt flows through, and the
|
|
17
17
|
pluggable generation engines that actually call models, and the components'
|
|
18
18
|
behavior as small framework-free stores. No framework, no rendering:
|
|
19
|
-
`@chai-ui/react` wraps the stores in hooks, and
|
|
19
|
+
`@chai-ui/react` wraps the stores in hooks, and `@chai-ui/vue` wraps the
|
|
20
20
|
same stores.
|
|
21
21
|
|
|
22
22
|
## Layout
|
|
@@ -26,14 +26,25 @@ same stores.
|
|
|
26
26
|
- `engine.ts` — the `GenerationEngine` interface every provider implements, `GenerationError`, and `mockEngine`/`createMockEngine` (placeholder output, no network call, no API key).
|
|
27
27
|
- `engines/fal.ts` — `createFalEngine`, media generation through Fal.ai (the default).
|
|
28
28
|
- `engines/openrouter.ts` — `createOpenRouterEngine`, text/reasoning through OpenRouter (prompt enhancement, media analysis).
|
|
29
|
+
- `engines/vercel.ts` — `createVercelEngine`, text and image models through Vercel AI Gateway.
|
|
29
30
|
- `media-analysis-prompts.ts` — the instruction text `MediaAnalyzer` sends, per media kind × prompt length.
|
|
30
31
|
- `suggested-models.ts` — the suggested model lists per use case (Fal for generation, OpenRouter for analysis), each model with its verified aspect ratios and Fal input format; `suggestedModels(useCase)`.
|
|
31
32
|
- `check-suggested-models.ts` — `checkSuggestedModels()`: checks those lists against Fal's and OpenRouter's catalogs as they are today. No key, no model run.
|
|
32
33
|
- `model-routing.ts` — auto-select: `buildModelRoutingPrompt`, `parseModelRoutingReply`, and `routeModel`, which falls back to the first listed model instead of throwing.
|
|
33
34
|
- `reasoning.ts` — the reasoning engine and models a `ChaiProvider` shares: `createReasoning`, `pickReasoning`, `reasoningModelFor` and the suggested defaults.
|
|
34
|
-
- `composer.ts` — `createComposerStore`, what `useComposer` wraps: submit payload → runs, auto-select routing, Enhance, cancel,
|
|
35
|
+
- `composer.ts` — `createComposerStore`, what `useComposer` wraps: submit payload → runs, auto-select routing, Enhance, cancel, image edit versions and the evaluation judge. Plus the Composer's shared types (`ComposerSubmitPayload`, `EditVersion`, …).
|
|
36
|
+
- `composer-view.ts` — what the `Composer` shows and submits, worked out from its props, for every binding: model menus, aspect ratios, use-case rules (`nextUseCases`).
|
|
37
|
+
- `analytics-events.ts` — front-end analytics: the `ChaiEvent` type and the `composerEvents` and `resultCardEvents` the components report through `onEvent`.
|
|
38
|
+
- `evaluation-judge.ts` — the opt-in judge: `EvaluationCheck`, `DEFAULT_EVALUATION_CHECKS`, `buildJudgePrompt`, `parseJudgeReply`.
|
|
39
|
+
- `image-fit.ts` — `fitImageToRatio`: crops or pads a video's start image to the picked ratio (`startImageFit`).
|
|
40
|
+
- `region-edit.ts` — region editing: the region shape, the models that read regions as boxes, and `buildRegionEditPrompt`.
|
|
41
|
+
- `edit-card.ts` — `EditCard`'s geometry: region boxes, zoom and pan, and where the instruction field goes.
|
|
42
|
+
- `voice-input.ts` — the Composer's voice input: record, send to a speech-to-text model, return the transcript.
|
|
43
|
+
- `result-format.ts` — how `ResultCard` shows a result's details.
|
|
44
|
+
- `media-actions.ts` — download and share for generated media.
|
|
45
|
+
- `menu-placement.ts` — which way a component's menus open from their trigger.
|
|
35
46
|
- `media-analyzer.ts` — `createMediaAnalyzerStore`, what `useMediaAnalyzer` wraps.
|
|
36
|
-
- `server/` — `createChaiHandler` and `toNodeHandler
|
|
47
|
+
- `server/` — `createChaiHandler` (`chai-handler.ts`) and `toNodeHandler` (`node.ts`), exported from `@chai-ui/core/server` (server-only).
|
|
37
48
|
|
|
38
49
|
## Suggested models, and checking them
|
|
39
50
|
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Front-end analytics: what the person did in Chai's components and what
|
|
3
|
+
* the components showed them, reported through each component's `onEvent`.
|
|
4
|
+
* Defined once here so every framework binding sends the same events.
|
|
5
|
+
*
|
|
6
|
+
* Front end only: model calls, latency, cost and storage belong to the
|
|
7
|
+
* builder's back end. No prompt text, file names, URLs or outputs are ever
|
|
8
|
+
* sent: only lengths, counts and Chai's own ids. Properties are flat, so any
|
|
9
|
+
* analytics tool takes them as they are: `onEvent={(e) => posthog.capture(e.name, e.properties)}`.
|
|
10
|
+
*/
|
|
11
|
+
import type { ComposerAttachMenuAction, ComposerPromptField } from "./composer-view.js";
|
|
12
|
+
import type { ComposerSubmitPayload, ComposerUseCase } from "./composer.js";
|
|
13
|
+
import type { MediaKind } from "./types.js";
|
|
14
|
+
export type ChaiEvent = {
|
|
15
|
+
name: "chai_composer_submitted";
|
|
16
|
+
properties: {
|
|
17
|
+
use_cases: string;
|
|
18
|
+
model_count: number;
|
|
19
|
+
auto_select: boolean;
|
|
20
|
+
aspect_ratio?: string;
|
|
21
|
+
attachment_count: number;
|
|
22
|
+
prompt_length: number;
|
|
23
|
+
retry: boolean;
|
|
24
|
+
};
|
|
25
|
+
} | {
|
|
26
|
+
name: "chai_composer_stopped";
|
|
27
|
+
properties: Record<string, never>;
|
|
28
|
+
} | {
|
|
29
|
+
name: "chai_composer_use_case_picked";
|
|
30
|
+
properties: {
|
|
31
|
+
action: ComposerAttachMenuAction;
|
|
32
|
+
};
|
|
33
|
+
} | {
|
|
34
|
+
name: "chai_composer_use_case_removed";
|
|
35
|
+
properties: {
|
|
36
|
+
use_case: string;
|
|
37
|
+
};
|
|
38
|
+
} | {
|
|
39
|
+
name: "chai_composer_media_attached";
|
|
40
|
+
properties: {
|
|
41
|
+
count: number;
|
|
42
|
+
unsupported_count: number;
|
|
43
|
+
};
|
|
44
|
+
} | {
|
|
45
|
+
name: "chai_composer_model_picked";
|
|
46
|
+
properties: {
|
|
47
|
+
use_case: string;
|
|
48
|
+
model_id: string;
|
|
49
|
+
};
|
|
50
|
+
} | {
|
|
51
|
+
name: "chai_composer_auto_select_toggled";
|
|
52
|
+
properties: {
|
|
53
|
+
on: boolean;
|
|
54
|
+
};
|
|
55
|
+
} | {
|
|
56
|
+
name: "chai_composer_option_picked";
|
|
57
|
+
properties: {
|
|
58
|
+
option: "aspect_ratio" | "voice" | "genre" | "frame_rate";
|
|
59
|
+
value: string;
|
|
60
|
+
};
|
|
61
|
+
} | {
|
|
62
|
+
name: "chai_composer_enhance_clicked";
|
|
63
|
+
properties: {
|
|
64
|
+
field: ComposerPromptField;
|
|
65
|
+
prompt_length: number;
|
|
66
|
+
};
|
|
67
|
+
} | {
|
|
68
|
+
name: "chai_composer_enhance_reverted";
|
|
69
|
+
properties: {
|
|
70
|
+
field: ComposerPromptField;
|
|
71
|
+
};
|
|
72
|
+
} | {
|
|
73
|
+
name: "chai_composer_voice_started";
|
|
74
|
+
properties: Record<string, never>;
|
|
75
|
+
} | {
|
|
76
|
+
name: "chai_result_shown";
|
|
77
|
+
properties: {
|
|
78
|
+
status: "done" | "error";
|
|
79
|
+
output_kind?: MediaKind;
|
|
80
|
+
result_count: number;
|
|
81
|
+
};
|
|
82
|
+
} | {
|
|
83
|
+
name: "chai_result_action";
|
|
84
|
+
properties: {
|
|
85
|
+
action: string;
|
|
86
|
+
};
|
|
87
|
+
} | {
|
|
88
|
+
name: "chai_result_paged";
|
|
89
|
+
properties: {
|
|
90
|
+
index: number;
|
|
91
|
+
count: number;
|
|
92
|
+
};
|
|
93
|
+
} | {
|
|
94
|
+
name: "chai_result_info_opened";
|
|
95
|
+
properties: Record<string, never>;
|
|
96
|
+
};
|
|
97
|
+
export type ChaiEventName = ChaiEvent["name"];
|
|
98
|
+
/** A use case as one short id, e.g. `"image"`, `"image:edit"` or `"audio:music"`. */
|
|
99
|
+
export declare function useCaseId(useCase: ComposerUseCase): string;
|
|
100
|
+
/** The events `Composer` reports. */
|
|
101
|
+
export declare const composerEvents: {
|
|
102
|
+
submitted: (payload: ComposerSubmitPayload, retry: boolean) => ChaiEvent;
|
|
103
|
+
stopped: () => ChaiEvent;
|
|
104
|
+
useCasePicked: (action: ComposerAttachMenuAction) => ChaiEvent;
|
|
105
|
+
useCaseRemoved: (useCase: ComposerUseCase) => ChaiEvent;
|
|
106
|
+
mediaAttached: (count: number, unsupportedCount: number) => ChaiEvent;
|
|
107
|
+
modelPicked: (useCase: string, modelId: string) => ChaiEvent;
|
|
108
|
+
autoSelectToggled: (on: boolean) => ChaiEvent;
|
|
109
|
+
optionPicked: (option: "aspect_ratio" | "voice" | "genre" | "frame_rate", value: string | number) => ChaiEvent;
|
|
110
|
+
enhanceClicked: (field: ComposerPromptField, promptLength: number) => ChaiEvent;
|
|
111
|
+
enhanceReverted: (field: ComposerPromptField) => ChaiEvent;
|
|
112
|
+
voiceStarted: () => ChaiEvent;
|
|
113
|
+
};
|
|
114
|
+
/** The events `ResultCard` reports. */
|
|
115
|
+
export declare const resultCardEvents: {
|
|
116
|
+
shown: (status: "done" | "error", outputKind: MediaKind | undefined, resultCount: number) => ChaiEvent;
|
|
117
|
+
action: (action: string) => ChaiEvent;
|
|
118
|
+
paged: (index: number, count: number) => ChaiEvent;
|
|
119
|
+
infoOpened: () => ChaiEvent;
|
|
120
|
+
};
|
|
121
|
+
//# sourceMappingURL=analytics-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-events.d.ts","sourceRoot":"","sources":["../src/analytics-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/** A use case as one short id, e.g. `"image"`, `"image:edit"` or `"audio:music"`. */
|
|
2
|
+
export function useCaseId(useCase) {
|
|
3
|
+
return `${useCase.kind}${useCase.edit ? ":edit" : ""}${useCase.audio ? `:${useCase.audio}` : ""}`;
|
|
4
|
+
}
|
|
5
|
+
/** The events `Composer` reports. */
|
|
6
|
+
export const composerEvents = {
|
|
7
|
+
submitted: (payload, retry) => ({
|
|
8
|
+
name: "chai_composer_submitted",
|
|
9
|
+
properties: {
|
|
10
|
+
use_cases: payload.selections.map((s) => useCaseId(s.useCase)).join(","),
|
|
11
|
+
model_count: payload.selections.reduce((n, s) => n + s.modelIds.length, 0),
|
|
12
|
+
auto_select: payload.autoSelectModel,
|
|
13
|
+
...(payload.aspectRatio && { aspect_ratio: payload.aspectRatio }),
|
|
14
|
+
attachment_count: payload.attachments.length,
|
|
15
|
+
prompt_length: payload.value.length,
|
|
16
|
+
retry,
|
|
17
|
+
},
|
|
18
|
+
}),
|
|
19
|
+
stopped: () => ({ name: "chai_composer_stopped", properties: {} }),
|
|
20
|
+
useCasePicked: (action) => ({ name: "chai_composer_use_case_picked", properties: { action } }),
|
|
21
|
+
useCaseRemoved: (useCase) => ({
|
|
22
|
+
name: "chai_composer_use_case_removed",
|
|
23
|
+
properties: { use_case: useCaseId(useCase) },
|
|
24
|
+
}),
|
|
25
|
+
mediaAttached: (count, unsupportedCount) => ({
|
|
26
|
+
name: "chai_composer_media_attached",
|
|
27
|
+
properties: { count, unsupported_count: unsupportedCount },
|
|
28
|
+
}),
|
|
29
|
+
modelPicked: (useCase, modelId) => ({
|
|
30
|
+
name: "chai_composer_model_picked",
|
|
31
|
+
properties: { use_case: useCase, model_id: modelId },
|
|
32
|
+
}),
|
|
33
|
+
autoSelectToggled: (on) => ({ name: "chai_composer_auto_select_toggled", properties: { on } }),
|
|
34
|
+
optionPicked: (option, value) => ({
|
|
35
|
+
name: "chai_composer_option_picked",
|
|
36
|
+
properties: { option, value: String(value) },
|
|
37
|
+
}),
|
|
38
|
+
enhanceClicked: (field, promptLength) => ({
|
|
39
|
+
name: "chai_composer_enhance_clicked",
|
|
40
|
+
properties: { field, prompt_length: promptLength },
|
|
41
|
+
}),
|
|
42
|
+
enhanceReverted: (field) => ({ name: "chai_composer_enhance_reverted", properties: { field } }),
|
|
43
|
+
voiceStarted: () => ({ name: "chai_composer_voice_started", properties: {} }),
|
|
44
|
+
};
|
|
45
|
+
/** The events `ResultCard` reports. */
|
|
46
|
+
export const resultCardEvents = {
|
|
47
|
+
shown: (status, outputKind, resultCount) => ({
|
|
48
|
+
name: "chai_result_shown",
|
|
49
|
+
properties: { status, ...(outputKind && { output_kind: outputKind }), result_count: resultCount },
|
|
50
|
+
}),
|
|
51
|
+
action: (action) => ({ name: "chai_result_action", properties: { action } }),
|
|
52
|
+
paged: (index, count) => ({ name: "chai_result_paged", properties: { index, count } }),
|
|
53
|
+
infoOpened: () => ({ name: "chai_result_info_opened", properties: {} }),
|
|
54
|
+
};
|
|
55
|
+
//# sourceMappingURL=analytics-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analytics-events.js","sourceRoot":"","sources":["../src/analytics-events.ts"],"names":[],"mappings":"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"}
|
package/dist/composer.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ import { type Reasoning } from "./reasoning.js";
|
|
|
12
12
|
import { type ResultStatus, type Run } from "./run.js";
|
|
13
13
|
import type { ComposerPromptField } from "./composer-view.js";
|
|
14
14
|
import { type StartImageFit } from "./image-fit.js";
|
|
15
|
+
import { type EvaluationCheck, type JudgePromptInput } from "./evaluation-judge.js";
|
|
15
16
|
import type { AudioUseCase, DroppedMedia, GenerationUseCase, ModelOption, OutputKind } from "./types.js";
|
|
16
17
|
export interface ComposerAttachment extends DroppedMedia {
|
|
17
18
|
id: string;
|
|
@@ -178,6 +179,18 @@ export interface ComposerOptions {
|
|
|
178
179
|
* image-to-video models that otherwise take the image's shape.
|
|
179
180
|
*/
|
|
180
181
|
startImageFit?: StartImageFit;
|
|
182
|
+
/**
|
|
183
|
+
* Opt-in, off by default: the model that checks each text or image
|
|
184
|
+
* result against `judgeChecks`, run on the reasoning engine (a
|
|
185
|
+
* `ChaiProvider`, or `reasoningEngine`). Each check becomes a pass or
|
|
186
|
+
* fail tag in the result's `evaluations`, after any your backend added.
|
|
187
|
+
* There's no default model: you name it. Video results aren't judged.
|
|
188
|
+
*/
|
|
189
|
+
judgeModel?: string;
|
|
190
|
+
/** What the judge checks, in your words. Defaults to `DEFAULT_EVALUATION_CHECKS`, one "Matches prompt" check. */
|
|
191
|
+
judgeChecks?: EvaluationCheck[];
|
|
192
|
+
/** Replaces the judge's prompt. Defaults to `buildJudgePrompt`; call it to add to the default rather than rewrite it. */
|
|
193
|
+
judgePrompt?: (input: JudgePromptInput) => string;
|
|
181
194
|
/** Replaces how an edit's prompt and regions become the model's prompt. Defaults to `buildRegionEditPrompt`, in the model's `regionFormat`. */
|
|
182
195
|
editPrompt?: (args: {
|
|
183
196
|
prompt: string;
|
|
@@ -224,6 +237,6 @@ export declare function createComposerStore(getOptions: () => ComposerOptions, g
|
|
|
224
237
|
reasoning: () => Reasoning | undefined;
|
|
225
238
|
};
|
|
226
239
|
export type ComposerStore = ReturnType<typeof createComposerStore>;
|
|
227
|
-
/**
|
|
240
|
+
/** Auto-select is on with no reasoning model to route with. */
|
|
228
241
|
export declare function warnNoReasoningOnce(consequence: string): void;
|
|
229
242
|
//# sourceMappingURL=composer.d.ts.map
|
package/dist/composer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../src/composer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAc,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"composer.d.ts","sourceRoot":"","sources":["../src/composer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EAML,KAAK,gBAAgB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAc,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAClF,OAAO,EAWL,KAAK,YAAY,EACjB,KAAK,GAAG,EACT,MAAM,UAAU,CAAC;AAClB,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAa,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpH,MAAM,WAAW,kBAAmB,SAAQ,YAAY;IACtD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,UAAU,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,gFAAgF;IAChF,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED,uHAAuH;AACvH,eAAO,MAAM,aAAa,EAAE,eAAiD,CAAC;AAE9E,8HAA8H;AAC9H,eAAO,MAAM,mBAAmB,EAAE,eAAoE,CAAC;AAEvG,iEAAiE;AACjE,eAAO,MAAM,sBAAsB,EAAE,eAAqE,CAAC;AAE3G,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,EAAE,eAAmE,CAAC;AAExG,2GAA2G;AAC3G,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,2EAA2E;IAC3E,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,+HAA+H;IAC/H,OAAO,EAAE,eAAe,CAAC;IACzB,gEAAgE;IAChE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,2HAA2H;IAC3H,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,yHAAyH;IACzH,eAAe,EAAE,OAAO,CAAC;IACzB,qGAAqG;IACrG,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,4IAA4I;IAC5I,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yGAAyG;IACzG,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0GAA0G;IAC1G,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,4GAA4G;IAC5G,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,4GAA4G;AAC5G,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAEzE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,iBAAiB;;;;;EAQ5F;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,oCAAoC;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,YAAY,CAAC;IACrB,oGAAoG;IACpG,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,2FAA2F;AAC3F,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,sFAAsF;IACtF,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC7D;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,uJAAuJ;IACvJ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,8FAA8F;IAC9F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,iBAAiB,EAAE,KAAK,CAAC,EAAE,mBAAmB,KAAK,MAAM,CAAC;IACjG;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAChD,oEAAoE;IACpE,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,MAAM,CAAC;IACrD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE,CAAC,KAAK,IAAI,CAAC;IAC1F;;;;;OAKG;IACH,SAAS,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAChC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iHAAiH;IACjH,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,yHAAyH;IACzH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,MAAM,CAAC;IAClD,+IAA+I;IAC/I,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,UAAU,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,WAAW,CAAA;KAAE,KAAK,MAAM,CAAC;IAC9F,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,aAAa;IAC5B,qGAAqG;IACrG,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,wJAAwJ;IACxJ,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,sEAAsE;IACtE,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,+FAA+F;IAC/F,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,8EAA8E;AAC9E,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,eAAe,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,IAAI,CAAC;CAClD;AAgCD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,eAAe,EAAE,WAAW,GAAE,MAAM,SAAS,GAAG,SAA2B;;wBAuVzG,MAAM,IAAI;sBA9HP,qBAAqB;;qBAyFhB,MAAM,UAAU,mBAAmB,SAAS,iBAAiB,KAAG,OAAO,CAAC,MAAM,CAAC;cAqB5F,aAAa,aAAa,YAAY,GAAG,IAAI,GAAG,SAAS,KAAG,YAAY,GAAG,IAAI;;EA0BjG;AAED,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAUnE,+DAA+D;AAC/D,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,QAItD"}
|
package/dist/composer.js
CHANGED
|
@@ -9,8 +9,9 @@ import { abortError, createMockEngine, isAbortError, mockEngine, normalizeGenera
|
|
|
9
9
|
import { routeModel } from "./model-routing.js";
|
|
10
10
|
import { buildRegionEditPrompt, PRECISE_EDIT_MODELS } from "./region-edit.js";
|
|
11
11
|
import { pickReasoning, reasoningModelFor } from "./reasoning.js";
|
|
12
|
-
import { cancelResult, createRun, deriveGenerationUseCase, failResult, resolveResult, ROUTING_MODEL_ID, startResult, streamResult, } from "./run.js";
|
|
12
|
+
import { addEvaluations, cancelResult, createRun, deriveGenerationUseCase, failResult, resolveResult, ROUTING_MODEL_ID, startResult, streamResult, } from "./run.js";
|
|
13
13
|
import { fitImagesToRatio } from "./image-fit.js";
|
|
14
|
+
import { buildJudgePrompt, DEFAULT_EVALUATION_CHECKS, parseJudgeReply, } from "./evaluation-judge.js";
|
|
14
15
|
/** A plain text request — what a submit means when no use case is picked, unless the builder sets `defaultUseCase`. */
|
|
15
16
|
export const TEXT_USE_CASE = { kind: "text", label: "Text" };
|
|
16
17
|
/** Editing the attached image, the attach menu's "Edit image". Pair it with `useComposer`'s `editImage` and an `EditCard`. */
|
|
@@ -237,6 +238,7 @@ export function createComposerStore(getOptions, getProvided = () => undefined) {
|
|
|
237
238
|
: generate(newRun.request.attachments)).then(({ src, kind, usage, evaluations }) => {
|
|
238
239
|
update(newRun.id, (r) => resolveResult(r, result.id, { src, kind }, usage, evaluations));
|
|
239
240
|
getOptions().onResult?.(newRun, result.id);
|
|
241
|
+
void judge(newRun, result.id, { src, kind }, signal);
|
|
240
242
|
}, (err) => {
|
|
241
243
|
if (isAbortError(err))
|
|
242
244
|
return update(newRun.id, (r) => cancelResult(r, result.id));
|
|
@@ -246,6 +248,38 @@ export function createComposerStore(getOptions, getProvided = () => undefined) {
|
|
|
246
248
|
}
|
|
247
249
|
}
|
|
248
250
|
}
|
|
251
|
+
// The opt-in judge: checks a text or image result against the builder's
|
|
252
|
+
// criteria and adds a tag per check. A reply it can't read adds none.
|
|
253
|
+
async function judge(run, resultId, output, signal) {
|
|
254
|
+
const { judgeModel, judgeChecks = DEFAULT_EVALUATION_CHECKS, judgePrompt = buildJudgePrompt } = getOptions();
|
|
255
|
+
if (!judgeModel || (output.kind !== "text" && output.kind !== "image"))
|
|
256
|
+
return;
|
|
257
|
+
const checks = judgeChecks.filter((c) => !c.kind || c.kind === output.kind);
|
|
258
|
+
if (checks.length === 0)
|
|
259
|
+
return;
|
|
260
|
+
const r = reasoning();
|
|
261
|
+
if (!r)
|
|
262
|
+
return warnOnce("[chai-ui] judgeModel is set, but there's no reasoning engine to run it. Wrap your app in <ChaiProvider> or pass reasoningEngine.");
|
|
263
|
+
const prompt = judgePrompt({
|
|
264
|
+
prompt: run.request.prompt,
|
|
265
|
+
output: output.kind === "image" ? { kind: "image" } : { kind: "text", text: output.src },
|
|
266
|
+
checks,
|
|
267
|
+
});
|
|
268
|
+
try {
|
|
269
|
+
const attachments = output.kind === "image" ? [{ src: output.src, kind: "image" }] : [];
|
|
270
|
+
const reply = await r.engine.generate({ modelId: judgeModel, prompt, attachments, signal });
|
|
271
|
+
const verdicts = parseJudgeReply(reply.src, checks);
|
|
272
|
+
if (!verdicts)
|
|
273
|
+
return warnOnce(`[chai-ui] The judge model "${judgeModel}" replied without verdicts Chai can read, so no evaluations were added.`);
|
|
274
|
+
// Only on a run still shown: a newer submit's runs are left alone.
|
|
275
|
+
const add = (runs) => runs.map((x) => (x.id === run.id ? addEvaluations(x, resultId, verdicts) : x));
|
|
276
|
+
set((s) => ({ runs: add(s.runs), editRuns: add(s.editRuns) }));
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
if (!isAbortError(err))
|
|
280
|
+
warnOnce(`[chai-ui] The judge model "${judgeModel}" failed, so no evaluations were added: ${normalizeGenerationError(err).message}`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
249
283
|
function submit(payload) {
|
|
250
284
|
const id = ++submitId;
|
|
251
285
|
controller?.abort();
|
|
@@ -382,11 +416,15 @@ export function createComposerStore(getOptions, getProvided = () => undefined) {
|
|
|
382
416
|
};
|
|
383
417
|
}
|
|
384
418
|
const warned = new Set();
|
|
385
|
-
/** One console warning per message per page load
|
|
386
|
-
|
|
387
|
-
if (warned.has(
|
|
419
|
+
/** One console warning per message per page load. */
|
|
420
|
+
function warnOnce(message) {
|
|
421
|
+
if (warned.has(message))
|
|
388
422
|
return;
|
|
389
|
-
warned.add(
|
|
390
|
-
console.warn(
|
|
423
|
+
warned.add(message);
|
|
424
|
+
console.warn(message);
|
|
425
|
+
}
|
|
426
|
+
/** Auto-select is on with no reasoning model to route with. */
|
|
427
|
+
export function warnNoReasoningOnce(consequence) {
|
|
428
|
+
warnOnce(`[chai-ui] Auto-select model is on, but there's no reasoning model, so ${consequence}. Wrap your app in <ChaiProvider> to route with one.`);
|
|
391
429
|
}
|
|
392
430
|
//# sourceMappingURL=composer.js.map
|
package/dist/composer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../src/composer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composer.js","sourceRoot":"","sources":["../src/composer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,UAAU,EACV,wBAAwB,GAEzB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAmD,MAAM,oBAAoB,CAAC;AACjG,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAmB,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAkB,MAAM,gBAAgB,CAAC;AAClF,OAAO,EACL,cAAc,EACd,YAAY,EACZ,SAAS,EACT,uBAAuB,EACvB,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,WAAW,EACX,YAAY,GAIb,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAsB,MAAM,gBAAgB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,GAGhB,MAAM,uBAAuB,CAAC;AA4B/B,uHAAuH;AACvH,MAAM,CAAC,MAAM,aAAa,GAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;AAE9E,8HAA8H;AAC9H,MAAM,CAAC,MAAM,mBAAmB,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAEvG,iEAAiE;AACjE,MAAM,CAAC,MAAM,sBAAsB,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;AAE3G,kEAAkE;AAClE,MAAM,CAAC,MAAM,qBAAqB,GAAoB,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAwCxG,4GAA4G;AAC5G,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAgB;IAC/D,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,cAAc,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACxF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA8B,EAAE,SAA4B;IAC3F,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC;IACtC,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI;QACtC,MAAM,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;QACjG,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI;QACxC,GAAG,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACrF,CAAC;AACJ,CAAC;AAkBD,2FAA2F;AAC3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AA8G1C,MAAM,cAAc,GAAG,gBAAgB,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC;AAEhE,SAAS,oBAAoB,CAAC,KAAa,EAAE,IAAwB,EAAE,QAA6B,QAAQ;IAC1G,MAAM,KAAK,GAAG,0DAA0D,CAAC;IACzE,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC5B,OAAO,0OAA0O,KAAK,OAAO,KAAK,EAAE,CAAC;IACvQ,CAAC;IACD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;QAC1B,OAAO,sPAAsP,KAAK,OAAO,KAAK,EAAE,CAAC;IACnR,CAAC;IACD,mFAAmF;IACnF,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC9B,OAAO,0NAA0N,KAAK,EAAE,CAAC;IAC3O,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,KAAK,eAAe;QACtC,CAAC,CAAC,oBAAoB;QACtB,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC;YACzB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,KAAK,QAAQ;gBAC5C,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,qBAAqB,CAAC;IAC5B,OAAO,yBAAyB,OAAO,6HAA6H,KAAK,EAAE,CAAC;AAC9K,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAkE;IACnH,OAAO,qBAAqB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,KAAsC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAEvG;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,UAAiC,EAAE,cAA2C,GAAG,EAAE,CAAC,SAAS;IAC/H,IAAI,KAAK,GAAkB;QACzB,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,KAAK;QAChB,OAAO,EAAE,KAAK;QACd,QAAQ,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE;QACX,aAAa,EAAE,CAAC;QAChB,UAAU,EAAE,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,IAAI;QAC1D,cAAc,EAAE,CAAC;KAClB,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAExC,wEAAwE;IACxE,kEAAkE;IAClE,MAAM,QAAQ,GAAG,CAAC,CAAgB,EAAE,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,SAAS,CAAC,EAAiB,EAAE;QAC9F,MAAM,GAAG,GAAG,KAAK,EAAE,GAAG,IAAI,IAAI,CAAC;QAC/B,OAAO,GAAG,KAAK,CAAC,CAAC,UAAU;YACzB,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,CAAC;IACnH,CAAC,CAAC;IACF,MAAM,GAAG,GAAG,CAAC,EAAgD,EAAE,EAAE;QAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChC,KAAK,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,CAAC,EAAE,CAAC;IACjC,CAAC,CAAC;IAEF,IAAI,aAAa,GAAmG,IAAI,CAAC;IACzH,MAAM,UAAU,GAAG,CAAC,CAAgB,EAAE,KAA0B,EAAiB,EAAE;QACjF,IAAI,aAAa,IAAI,aAAa,CAAC,KAAK,KAAK,KAAK,IAAI,aAAa,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,IAAI,aAAa,CAAC,KAAK,KAAK,CAAC,CAAC,cAAc,EAAE,CAAC;YACxI,OAAO,aAAa,CAAC,QAAQ,CAAC;QAChC,CAAC;QACD,MAAM,QAAQ,GAAkB,KAAK;YACnC,CAAC,CAAC;gBACE,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,cAAc,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE;gBACnF,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAC5B,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACtB,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,GAAG;oBAClB,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG;oBACrC,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,OAAO,EAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAoC,IAAI,EAAE;oBACvE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,OAAO;iBACxB,CAAC,CAAC,CACJ;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,aAAa,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,QAAQ,EAAE,CAAC;QACnF,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC;IAEF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IAEnE,mFAAmF;IACnF,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,4EAA4E;IAC5E,4DAA4D;IAC5D,IAAI,UAAU,GAA2B,IAAI,CAAC;IAC9C,0EAA0E;IAC1E,kEAAkE;IAClE,IAAI,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IAEvC,uEAAuE;IACvE,8EAA8E;IAC9E,SAAS,YAAY,CAAC,OAA8B,EAAE,SAA4B;QAChF,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC;QACjD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;QACnF,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,EAAE,MAAM,KAAK,MAAM,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC;QACzF,MAAM,WAAW,GAAmB,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;QAClH,mEAAmE;QACnE,wEAAwE;QACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACnG,MAAM,MAAM,GAA4B,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnH,IAAI,MAAM;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;QACnD,kEAAkE;QAClE,IAAI,SAAS,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvC,IAAI,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE;gBAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;YACpE,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI;gBAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;QACtE,CAAC;QACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC1C,MAAM,OAAO,GAAY;YACvB,IAAI,EAAE,uBAAuB,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;YAC7D,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,WAAW;YACX,QAAQ,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,gBAAgB,CAAC;YAC7F,MAAM;SACP,CAAC;QACF,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE,MAAM,IAAI,cAAc,CAAC;YAClD,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,UAAU,CAAC,CAAC;QAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAED,SAAS,KAAK,CAAC,OAA8B,EAAE,MAAmB;QAChE,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;YACnD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACrE,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;QACrF,CAAC,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,cAAc,CAAC;QACpC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACR,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACtE,MAAM,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACvC,uEAAuE;YACvE,mDAAmD;YACnD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO;oBACL,IAAI;oBACJ,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,WAAW,CAAC;oBACnC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;oBACjE,OAAO,EAAE,EAAE;iBACZ,CAAC;YACJ,CAAC;YACD,OAAO,YAAY,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,mEAAmE;QACnE,qEAAqE;QACrE,uEAAuE;QACvE,2DAA2D;QAC3D,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAqB,EAAE,EAAE;YACtD,MAAM,KAAK,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzH,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC,CAAC;QAEF,KAAK,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YAC9D,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;YACrB,oEAAoE;YACpE,8DAA8D;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,WAAiC,CAAC;YACtE,MAAM,OAAO,GACX,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,gBAAgB;gBAC/C,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,MAAM,CAAC;gBACnF,CAAC,CAAC,IAAI,CAAC;YACX,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;gBACpD,mEAAmE;gBACnE,wDAAwD;gBACxD,MAAM,OAAO,GAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,OAAoC,IAAI,EAAE,CAAC;gBAClF,MAAM,KAAK,GACT,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC1G,MAAM,MAAM,GAAG,MAAM;oBACnB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;oBAC3F,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC1B,MAAM,QAAQ,GAAG,CAAC,WAA2B,EAAE,EAAE,CAC/C,MAAM,CAAC,QAAQ,CAAC;oBACd,OAAO,EAAE,MAAM,CAAC,OAAO,KAAK,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO;oBACzE,MAAM;oBACN,WAAW;oBACX,WAAW,EAAE,KAAK;oBAClB,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAA+B;oBAChE,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAA+B;oBAChE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAA2B;oBACxD,mEAAmE;oBACnE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;oBAC5E,MAAM;iBACP,CAAC,CAAC;gBACL,+DAA+D;gBAC/D,KAAK,CACH,OAAO;oBACL,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;wBACtB,IAAI,MAAM,CAAC,OAAO;4BAAE,MAAM,UAAU,EAAE,CAAC;wBACvC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1B,CAAC,CAAC;oBACJ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CACzC,CAAC,IAAI,CACJ,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;oBACpC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;oBACzF,UAAU,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC3C,KAAK,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,CAAC;gBACvD,CAAC,EACD,CAAC,GAAG,EAAE,EAAE;oBACN,IAAI,YAAY,CAAC,GAAG,CAAC;wBAAE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;oBACnF,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,wBAAwB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAClF,UAAU,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;gBAC5C,CAAC,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,wEAAwE;IACxE,sEAAsE;IACtE,KAAK,UAAU,KAAK,CAAC,GAAQ,EAAE,QAAgB,EAAE,MAAwC,EAAE,MAAmB;QAC5G,MAAM,EAAE,UAAU,EAAE,WAAW,GAAG,yBAAyB,EAAE,WAAW,GAAG,gBAAgB,EAAE,GAAG,UAAU,EAAE,CAAC;QAC7G,IAAI,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;YAAE,OAAO;QAC/E,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAChC,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC;YAAE,OAAO,QAAQ,CAAC,kIAAkI,CAAC,CAAC;QAC5J,MAAM,MAAM,GAAG,WAAW,CAAC;YACzB,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM;YAC1B,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;YACxF,MAAM;SACP,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,WAAW,GAAmB,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxG,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5F,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ;gBAAE,OAAO,QAAQ,CAAC,8BAA8B,UAAU,yEAAyE,CAAC,CAAC;YAClJ,mEAAmE;YACnE,MAAM,GAAG,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5G,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC;gBAAE,QAAQ,CAAC,8BAA8B,UAAU,2CAA2C,wBAAwB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/J,CAAC;IACH,CAAC;IAED,SAAS,MAAM,CAAC,OAA8B;QAC5C,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC;QACtB,UAAU,EAAE,KAAK,EAAE,CAAC;QACpB,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC,CAAC;QACxD,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,KAAK,CAAC,OAAO;gBAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC;YAAE,mBAAmB,CAAC,6CAA6C,CAAC,CAAC;QAC3E,wEAAwE;QACxE,0EAA0E;QAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAClD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;YAC/E,OAAO,EAAE,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACR,MAAM,IAAI,GAA2B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7F,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YAChF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;gBACzE,KAAK,MAAM,GAAG,IAAI,gBAAgB;oBAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC/D,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,gBAAgB,CAAC,CAAC;gBACnD,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAClF,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,KAAK,OAAO,CAAC,GAAG,CACd,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAC7B,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;YACvB,CAAC,CAAC,UAAU,CAAC;gBACT,MAAM,EAAE,OAAO,CAAC,KAAK;gBACrB,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI;gBAC5B,eAAe,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvD,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,MAAM,EAAE,CAAC,EAAE,MAAM;gBACjB,KAAK,EAAE,CAAC,IAAI,iBAAiB,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;gBACrD,aAAa,EAAE,IAAI,CAAC,aAAa;gBACjC,MAAM;aACP,CAAC,CACP,CACF,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;YACjB,IAAI,EAAE,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO;gBAAE,OAAO;YAC9C,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;YAChC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,KAAK,MAAM,GAAG,IAAI,OAAO;gBAAE,IAAI,GAAG,EAAE,MAAM,KAAK,UAAU;oBAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,GAAG,CAAC,CAAC;YAC3F,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACvE,IAAI,MAAM,CAAC,gBAAgB;gBAAE,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;iBAC3D,IAAI,SAAS,CAAC,CAAC,CAAC;gBAAE,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5D,KAAK,CACH;gBACE,GAAG,OAAO;gBACV,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,OAAO;gBACxC,UAAU,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC9C,GAAG,GAAG;oBACN,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ;iBAC5D,CAAC,CAAC;aACJ,EACD,MAAM,CACP,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,SAAS,MAAM;QACb,QAAQ,IAAI,CAAC,CAAC;QACd,UAAU,EAAE,KAAK,EAAE,CAAC;QACpB,UAAU,GAAG,IAAI,CAAC;QAClB,MAAM,SAAS,GAAG,CAAC,IAAW,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QACnH,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED;;;;OAIG;IACH,KAAK,UAAU,OAAO,CAAC,KAAa,EAAE,KAA2B,EAAE,IAAwB;QACzF,MAAM,CAAC,GAAG,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACjF,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,CAAC,UAAU,EAAE,CAAC,aAAa,IAAI,oBAAoB,CAAC,CAAC,KAAK,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACvH,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YACvF,OAAO,GAAG,CAAC;QACb,CAAC;gBAAS,CAAC;YACT,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,aAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,CAAC,OAAqB,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAEvE;;;;OAIG;IACH,SAAS,IAAI,CAAC,CAAgB,EAAE,SAA0C;QACxE,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC5C,OAAO;YACL,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,aAAa,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YACnE,qBAAqB,EAAE,gBAAgB;YACvC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,eAAe,EAAE,UAAU;SAC5B,CAAC;IACJ,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,SAAS,CAAC,QAAoB;YAC5B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACxB,OAAO,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM;QACN,MAAM;QACN,OAAO;QACP,IAAI;QACJ,SAAS;KACV,CAAC;AACJ,CAAC;AAID,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;AACjC,qDAAqD;AACrD,SAAS,QAAQ,CAAC,OAAe;IAC/B,IAAI,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC;QAAE,OAAO;IAChC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACxB,CAAC;AAED,+DAA+D;AAC/D,MAAM,UAAU,mBAAmB,CAAC,WAAmB;IACrD,QAAQ,CACN,yEAAyE,WAAW,sDAAsD,CAC3I,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The opt-in evaluation judge: after a text or image result arrives, a
|
|
3
|
+
* model the builder names checks it against the builder's own criteria,
|
|
4
|
+
* and each check becomes a pass or fail tag on the result. Chai writes the
|
|
5
|
+
* framing; what "good" means is the builder's, in `checks`.
|
|
6
|
+
*/
|
|
7
|
+
import type { Evaluation } from "./types.js";
|
|
8
|
+
/** One thing the judge checks. `label` is the tag on the result; `criterion` says what passing means, in the builder's words. */
|
|
9
|
+
export interface EvaluationCheck {
|
|
10
|
+
id: string;
|
|
11
|
+
label: string;
|
|
12
|
+
criterion: string;
|
|
13
|
+
/** Only judge results of this kind, e.g. a look-and-feel check for images. Absent, text and image results both get it. */
|
|
14
|
+
kind?: "text" | "image";
|
|
15
|
+
}
|
|
16
|
+
/** What a judge prompt is built from. A text result's words are in `text`; an image result is attached to the judge's request. */
|
|
17
|
+
export interface JudgePromptInput {
|
|
18
|
+
prompt: string;
|
|
19
|
+
output: {
|
|
20
|
+
kind: "text";
|
|
21
|
+
text: string;
|
|
22
|
+
} | {
|
|
23
|
+
kind: "image";
|
|
24
|
+
};
|
|
25
|
+
checks: EvaluationCheck[];
|
|
26
|
+
}
|
|
27
|
+
/** The checks when the builder gives none: one accuracy check. Replace or add to it for your app. */
|
|
28
|
+
export declare const DEFAULT_EVALUATION_CHECKS: EvaluationCheck[];
|
|
29
|
+
/** The prompt the judge model receives: the person's prompt, the result, and each check's criterion, answered as JSON. */
|
|
30
|
+
export declare function buildJudgePrompt({ prompt, output, checks }: JudgePromptInput): string;
|
|
31
|
+
/** The judge's verdicts as evaluations, in the checks' order: `null` when the reply has none it can read. */
|
|
32
|
+
export declare function parseJudgeReply(reply: string, checks: EvaluationCheck[]): Evaluation[] | null;
|
|
33
|
+
//# sourceMappingURL=evaluation-judge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluation-judge.d.ts","sourceRoot":"","sources":["../src/evaluation-judge.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,iIAAiI;AACjI,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,0HAA0H;IAC1H,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACzB;AAED,kIAAkI;AAClI,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;IAC3D,MAAM,EAAE,eAAe,EAAE,CAAC;CAC3B;AAED,qGAAqG;AACrG,eAAO,MAAM,yBAAyB,EAAE,eAAe,EAMtD,CAAC;AAEF,0HAA0H;AAC1H,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAQrF;AAED,6GAA6G;AAC7G,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,GAAG,UAAU,EAAE,GAAG,IAAI,CAc7F"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/** The checks when the builder gives none: one accuracy check. Replace or add to it for your app. */
|
|
2
|
+
export const DEFAULT_EVALUATION_CHECKS = [
|
|
3
|
+
{
|
|
4
|
+
id: "matches-prompt",
|
|
5
|
+
label: "Matches prompt",
|
|
6
|
+
criterion: "The result does what the prompt asked for, with nothing important missing or wrong.",
|
|
7
|
+
},
|
|
8
|
+
];
|
|
9
|
+
/** The prompt the judge model receives: the person's prompt, the result, and each check's criterion, answered as JSON. */
|
|
10
|
+
export function buildJudgePrompt({ prompt, output, checks }) {
|
|
11
|
+
return [
|
|
12
|
+
"You judge a result an AI app generated, against the app's own criteria. Be strict: pass a check only if the result clearly meets it.",
|
|
13
|
+
`The person's prompt:\n"""\n${prompt}\n"""`,
|
|
14
|
+
output.kind === "image" ? "The result is the attached image." : `The result:\n"""\n${output.text}\n"""`,
|
|
15
|
+
`Criteria, by id:\n${checks.map((c) => `- ${c.id}: ${c.criterion}`).join("\n")}`,
|
|
16
|
+
'Reply with only a JSON object mapping each id to true (passes) or false (fails), e.g. {"first-id": true, "second-id": false}.',
|
|
17
|
+
].join("\n\n");
|
|
18
|
+
}
|
|
19
|
+
/** The judge's verdicts as evaluations, in the checks' order: `null` when the reply has none it can read. */
|
|
20
|
+
export function parseJudgeReply(reply, checks) {
|
|
21
|
+
const json = reply.match(/\{[\s\S]*\}/)?.[0];
|
|
22
|
+
if (!json)
|
|
23
|
+
return null;
|
|
24
|
+
let verdicts;
|
|
25
|
+
try {
|
|
26
|
+
verdicts = JSON.parse(json);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
const found = checks.flatMap((c) => {
|
|
32
|
+
const passed = verdicts[c.id];
|
|
33
|
+
return typeof passed === "boolean" ? [{ id: c.id, label: c.label, passed }] : [];
|
|
34
|
+
});
|
|
35
|
+
return found.length > 0 ? found : null;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=evaluation-judge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"evaluation-judge.js","sourceRoot":"","sources":["../src/evaluation-judge.ts"],"names":[],"mappings":"AAwBA,qGAAqG;AACrG,MAAM,CAAC,MAAM,yBAAyB,GAAsB;IAC1D;QACE,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,SAAS,EAAE,qFAAqF;KACjG;CACF,CAAC;AAEF,0HAA0H;AAC1H,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAoB;IAC3E,OAAO;QACL,sIAAsI;QACtI,8BAA8B,MAAM,OAAO;QAC3C,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,qBAAqB,MAAM,CAAC,IAAI,OAAO;QACvG,qBAAqB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QAChF,+HAA+H;KAChI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACjB,CAAC;AAED,6GAA6G;AAC7G,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,MAAyB;IACtE,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,QAAiC,CAAC;IACtC,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC9B,OAAO,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -19,4 +19,6 @@ export * from "./edit-card.js";
|
|
|
19
19
|
export * from "./voice-input.js";
|
|
20
20
|
export * from "./menu-placement.js";
|
|
21
21
|
export * from "./image-fit.js";
|
|
22
|
+
export * from "./evaluation-judge.js";
|
|
23
|
+
export * from "./analytics-events.js";
|
|
22
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,6BAA6B,CAAC;AAC5C,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
|
package/dist/run.d.ts
CHANGED
|
@@ -63,6 +63,8 @@ export declare function startResult(run: Run, resultId: string): Run;
|
|
|
63
63
|
*/
|
|
64
64
|
export declare function streamResult(run: Run, resultId: string, textSoFar: string): Run;
|
|
65
65
|
export declare function resolveResult(run: Run, resultId: string, output: Result["output"], usage?: Usage, evaluations?: Evaluation[]): Run;
|
|
66
|
+
/** The result with `evaluations` added after any it already has (e.g. the judge's after the backend's). */
|
|
67
|
+
export declare function addEvaluations(run: Run, resultId: string, evaluations: Evaluation[]): Run;
|
|
66
68
|
export declare function failResult(run: Run, resultId: string, error: Result["error"]): Run;
|
|
67
69
|
/** Marks a queued or running result as stopped by the person. A settled result is left as it is. */
|
|
68
70
|
export declare function cancelResult(run: Run, resultId: string): Run;
|
package/dist/run.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAE1H,MAAM,WAAW,OAAO;IACtB,+LAA+L;IAC/L,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,YAAY,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,gGAAgG;AAChG,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjF,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,SAAS,CAAA;KAAE,CAAC;IAC1C,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,wFAAwF;IACxF,WAAW,CAAC,EAAE,UAAU,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAChD,kKAAkK;IAClK,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4SAA4S;IAC5S,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAQ1C;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAa/C;AAMD,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,GAAG,CAI/E;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,GAAG,EACR,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,EACxB,KAAK,CAAC,EAAE,KAAK,EACb,WAAW,CAAC,EAAE,UAAU,EAAE,GACzB,GAAG,CASL;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,CAOlF;AAED,oGAAoG;AACpG,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAG,GAAG,CAM5D;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,EACtE,WAAW,EAAE,YAAY,EAAE,GAC1B,iBAAiB,GAAG,SAAS,CAU/B"}
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/dist/run.js
CHANGED
|
@@ -58,6 +58,10 @@ export function resolveResult(run, resultId, output, usage, evaluations) {
|
|
|
58
58
|
durationMs: r.startedAt != null ? Date.now() - r.startedAt : undefined,
|
|
59
59
|
}));
|
|
60
60
|
}
|
|
61
|
+
/** The result with `evaluations` added after any it already has (e.g. the judge's after the backend's). */
|
|
62
|
+
export function addEvaluations(run, resultId, evaluations) {
|
|
63
|
+
return updateResult(run, resultId, (r) => ({ ...r, evaluations: [...(r.evaluations ?? []), ...evaluations] }));
|
|
64
|
+
}
|
|
61
65
|
export function failResult(run, resultId, error) {
|
|
62
66
|
return updateResult(run, resultId, (r) => ({
|
|
63
67
|
...r,
|
package/dist/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chai-ui/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.14.0",
|
|
4
4
|
"description": "Chai UI headless core — the Request/Run/Result data model and pluggable generation engines (Fal.ai, OpenRouter, Vercel AI Gateway, mock). No framework, no rendering.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "kazarazat",
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Front-end analytics: what the person did in Chai's components and what
|
|
3
|
+
* the components showed them, reported through each component's `onEvent`.
|
|
4
|
+
* Defined once here so every framework binding sends the same events.
|
|
5
|
+
*
|
|
6
|
+
* Front end only: model calls, latency, cost and storage belong to the
|
|
7
|
+
* builder's back end. No prompt text, file names, URLs or outputs are ever
|
|
8
|
+
* sent: only lengths, counts and Chai's own ids. Properties are flat, so any
|
|
9
|
+
* analytics tool takes them as they are: `onEvent={(e) => posthog.capture(e.name, e.properties)}`.
|
|
10
|
+
*/
|
|
11
|
+
import type { ComposerAttachMenuAction, ComposerPromptField } from "./composer-view.js";
|
|
12
|
+
import type { ComposerSubmitPayload, ComposerUseCase } from "./composer.js";
|
|
13
|
+
import type { MediaKind } from "./types.js";
|
|
14
|
+
|
|
15
|
+
export type ChaiEvent =
|
|
16
|
+
| {
|
|
17
|
+
name: "chai_composer_submitted";
|
|
18
|
+
properties: {
|
|
19
|
+
use_cases: string;
|
|
20
|
+
model_count: number;
|
|
21
|
+
auto_select: boolean;
|
|
22
|
+
aspect_ratio?: string;
|
|
23
|
+
attachment_count: number;
|
|
24
|
+
prompt_length: number;
|
|
25
|
+
retry: boolean;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
| { name: "chai_composer_stopped"; properties: Record<string, never> }
|
|
29
|
+
| { name: "chai_composer_use_case_picked"; properties: { action: ComposerAttachMenuAction } }
|
|
30
|
+
| { name: "chai_composer_use_case_removed"; properties: { use_case: string } }
|
|
31
|
+
| { name: "chai_composer_media_attached"; properties: { count: number; unsupported_count: number } }
|
|
32
|
+
| { name: "chai_composer_model_picked"; properties: { use_case: string; model_id: string } }
|
|
33
|
+
| { name: "chai_composer_auto_select_toggled"; properties: { on: boolean } }
|
|
34
|
+
| {
|
|
35
|
+
name: "chai_composer_option_picked";
|
|
36
|
+
properties: { option: "aspect_ratio" | "voice" | "genre" | "frame_rate"; value: string };
|
|
37
|
+
}
|
|
38
|
+
| { name: "chai_composer_enhance_clicked"; properties: { field: ComposerPromptField; prompt_length: number } }
|
|
39
|
+
| { name: "chai_composer_enhance_reverted"; properties: { field: ComposerPromptField } }
|
|
40
|
+
| { name: "chai_composer_voice_started"; properties: Record<string, never> }
|
|
41
|
+
| {
|
|
42
|
+
name: "chai_result_shown";
|
|
43
|
+
properties: { status: "done" | "error"; output_kind?: MediaKind; result_count: number };
|
|
44
|
+
}
|
|
45
|
+
| { name: "chai_result_action"; properties: { action: string } }
|
|
46
|
+
| { name: "chai_result_paged"; properties: { index: number; count: number } }
|
|
47
|
+
| { name: "chai_result_info_opened"; properties: Record<string, never> };
|
|
48
|
+
|
|
49
|
+
export type ChaiEventName = ChaiEvent["name"];
|
|
50
|
+
|
|
51
|
+
/** A use case as one short id, e.g. `"image"`, `"image:edit"` or `"audio:music"`. */
|
|
52
|
+
export function useCaseId(useCase: ComposerUseCase): string {
|
|
53
|
+
return `${useCase.kind}${useCase.edit ? ":edit" : ""}${useCase.audio ? `:${useCase.audio}` : ""}`;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** The events `Composer` reports. */
|
|
57
|
+
export const composerEvents = {
|
|
58
|
+
submitted: (payload: ComposerSubmitPayload, retry: boolean): ChaiEvent => ({
|
|
59
|
+
name: "chai_composer_submitted",
|
|
60
|
+
properties: {
|
|
61
|
+
use_cases: payload.selections.map((s) => useCaseId(s.useCase)).join(","),
|
|
62
|
+
model_count: payload.selections.reduce((n, s) => n + s.modelIds.length, 0),
|
|
63
|
+
auto_select: payload.autoSelectModel,
|
|
64
|
+
...(payload.aspectRatio && { aspect_ratio: payload.aspectRatio }),
|
|
65
|
+
attachment_count: payload.attachments.length,
|
|
66
|
+
prompt_length: payload.value.length,
|
|
67
|
+
retry,
|
|
68
|
+
},
|
|
69
|
+
}),
|
|
70
|
+
stopped: (): ChaiEvent => ({ name: "chai_composer_stopped", properties: {} }),
|
|
71
|
+
useCasePicked: (action: ComposerAttachMenuAction): ChaiEvent => ({ name: "chai_composer_use_case_picked", properties: { action } }),
|
|
72
|
+
useCaseRemoved: (useCase: ComposerUseCase): ChaiEvent => ({
|
|
73
|
+
name: "chai_composer_use_case_removed",
|
|
74
|
+
properties: { use_case: useCaseId(useCase) },
|
|
75
|
+
}),
|
|
76
|
+
mediaAttached: (count: number, unsupportedCount: number): ChaiEvent => ({
|
|
77
|
+
name: "chai_composer_media_attached",
|
|
78
|
+
properties: { count, unsupported_count: unsupportedCount },
|
|
79
|
+
}),
|
|
80
|
+
modelPicked: (useCase: string, modelId: string): ChaiEvent => ({
|
|
81
|
+
name: "chai_composer_model_picked",
|
|
82
|
+
properties: { use_case: useCase, model_id: modelId },
|
|
83
|
+
}),
|
|
84
|
+
autoSelectToggled: (on: boolean): ChaiEvent => ({ name: "chai_composer_auto_select_toggled", properties: { on } }),
|
|
85
|
+
optionPicked: (option: "aspect_ratio" | "voice" | "genre" | "frame_rate", value: string | number): ChaiEvent => ({
|
|
86
|
+
name: "chai_composer_option_picked",
|
|
87
|
+
properties: { option, value: String(value) },
|
|
88
|
+
}),
|
|
89
|
+
enhanceClicked: (field: ComposerPromptField, promptLength: number): ChaiEvent => ({
|
|
90
|
+
name: "chai_composer_enhance_clicked",
|
|
91
|
+
properties: { field, prompt_length: promptLength },
|
|
92
|
+
}),
|
|
93
|
+
enhanceReverted: (field: ComposerPromptField): ChaiEvent => ({ name: "chai_composer_enhance_reverted", properties: { field } }),
|
|
94
|
+
voiceStarted: (): ChaiEvent => ({ name: "chai_composer_voice_started", properties: {} }),
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
/** The events `ResultCard` reports. */
|
|
98
|
+
export const resultCardEvents = {
|
|
99
|
+
shown: (status: "done" | "error", outputKind: MediaKind | undefined, resultCount: number): ChaiEvent => ({
|
|
100
|
+
name: "chai_result_shown",
|
|
101
|
+
properties: { status, ...(outputKind && { output_kind: outputKind }), result_count: resultCount },
|
|
102
|
+
}),
|
|
103
|
+
action: (action: string): ChaiEvent => ({ name: "chai_result_action", properties: { action } }),
|
|
104
|
+
paged: (index: number, count: number): ChaiEvent => ({ name: "chai_result_paged", properties: { index, count } }),
|
|
105
|
+
infoOpened: (): ChaiEvent => ({ name: "chai_result_info_opened", properties: {} }),
|
|
106
|
+
};
|
package/src/composer.ts
CHANGED
|
@@ -17,6 +17,7 @@ import { routeModel, type ModelRoutingInput, type ModelRoutingResult } from "./m
|
|
|
17
17
|
import { buildRegionEditPrompt, PRECISE_EDIT_MODELS, type EditRegion } from "./region-edit.js";
|
|
18
18
|
import { pickReasoning, reasoningModelFor, type Reasoning } from "./reasoning.js";
|
|
19
19
|
import {
|
|
20
|
+
addEvaluations,
|
|
20
21
|
cancelResult,
|
|
21
22
|
createRun,
|
|
22
23
|
deriveGenerationUseCase,
|
|
@@ -31,6 +32,13 @@ import {
|
|
|
31
32
|
} from "./run.js";
|
|
32
33
|
import type { ComposerPromptField } from "./composer-view.js";
|
|
33
34
|
import { fitImagesToRatio, type StartImageFit } from "./image-fit.js";
|
|
35
|
+
import {
|
|
36
|
+
buildJudgePrompt,
|
|
37
|
+
DEFAULT_EVALUATION_CHECKS,
|
|
38
|
+
parseJudgeReply,
|
|
39
|
+
type EvaluationCheck,
|
|
40
|
+
type JudgePromptInput,
|
|
41
|
+
} from "./evaluation-judge.js";
|
|
34
42
|
import type { AudioUseCase, DroppedMedia, GenerationUseCase, MediaKind, ModelOption, OutputKind } from "./types.js";
|
|
35
43
|
|
|
36
44
|
export interface ComposerAttachment extends DroppedMedia {
|
|
@@ -213,6 +221,18 @@ export interface ComposerOptions {
|
|
|
213
221
|
* image-to-video models that otherwise take the image's shape.
|
|
214
222
|
*/
|
|
215
223
|
startImageFit?: StartImageFit;
|
|
224
|
+
/**
|
|
225
|
+
* Opt-in, off by default: the model that checks each text or image
|
|
226
|
+
* result against `judgeChecks`, run on the reasoning engine (a
|
|
227
|
+
* `ChaiProvider`, or `reasoningEngine`). Each check becomes a pass or
|
|
228
|
+
* fail tag in the result's `evaluations`, after any your backend added.
|
|
229
|
+
* There's no default model: you name it. Video results aren't judged.
|
|
230
|
+
*/
|
|
231
|
+
judgeModel?: string;
|
|
232
|
+
/** What the judge checks, in your words. Defaults to `DEFAULT_EVALUATION_CHECKS`, one "Matches prompt" check. */
|
|
233
|
+
judgeChecks?: EvaluationCheck[];
|
|
234
|
+
/** Replaces the judge's prompt. Defaults to `buildJudgePrompt`; call it to add to the default rather than rewrite it. */
|
|
235
|
+
judgePrompt?: (input: JudgePromptInput) => string;
|
|
216
236
|
/** Replaces how an edit's prompt and regions become the model's prompt. Defaults to `buildRegionEditPrompt`, in the model's `regionFormat`. */
|
|
217
237
|
editPrompt?: (args: { prompt: string; regions: EditRegion[]; model?: ModelOption }) => string;
|
|
218
238
|
onRun?: (run: Run) => void;
|
|
@@ -456,6 +476,7 @@ export function createComposerStore(getOptions: () => ComposerOptions, getProvid
|
|
|
456
476
|
({ src, kind, usage, evaluations }) => {
|
|
457
477
|
update(newRun.id, (r) => resolveResult(r, result.id, { src, kind }, usage, evaluations));
|
|
458
478
|
getOptions().onResult?.(newRun, result.id);
|
|
479
|
+
void judge(newRun, result.id, { src, kind }, signal);
|
|
459
480
|
},
|
|
460
481
|
(err) => {
|
|
461
482
|
if (isAbortError(err)) return update(newRun.id, (r) => cancelResult(r, result.id));
|
|
@@ -467,6 +488,33 @@ export function createComposerStore(getOptions: () => ComposerOptions, getProvid
|
|
|
467
488
|
}
|
|
468
489
|
}
|
|
469
490
|
|
|
491
|
+
// The opt-in judge: checks a text or image result against the builder's
|
|
492
|
+
// criteria and adds a tag per check. A reply it can't read adds none.
|
|
493
|
+
async function judge(run: Run, resultId: string, output: { src: string; kind: MediaKind }, signal: AbortSignal) {
|
|
494
|
+
const { judgeModel, judgeChecks = DEFAULT_EVALUATION_CHECKS, judgePrompt = buildJudgePrompt } = getOptions();
|
|
495
|
+
if (!judgeModel || (output.kind !== "text" && output.kind !== "image")) return;
|
|
496
|
+
const checks = judgeChecks.filter((c) => !c.kind || c.kind === output.kind);
|
|
497
|
+
if (checks.length === 0) return;
|
|
498
|
+
const r = reasoning();
|
|
499
|
+
if (!r) return warnOnce("[chai-ui] judgeModel is set, but there's no reasoning engine to run it. Wrap your app in <ChaiProvider> or pass reasoningEngine.");
|
|
500
|
+
const prompt = judgePrompt({
|
|
501
|
+
prompt: run.request.prompt,
|
|
502
|
+
output: output.kind === "image" ? { kind: "image" } : { kind: "text", text: output.src },
|
|
503
|
+
checks,
|
|
504
|
+
});
|
|
505
|
+
try {
|
|
506
|
+
const attachments: DroppedMedia[] = output.kind === "image" ? [{ src: output.src, kind: "image" }] : [];
|
|
507
|
+
const reply = await r.engine.generate({ modelId: judgeModel, prompt, attachments, signal });
|
|
508
|
+
const verdicts = parseJudgeReply(reply.src, checks);
|
|
509
|
+
if (!verdicts) return warnOnce(`[chai-ui] The judge model "${judgeModel}" replied without verdicts Chai can read, so no evaluations were added.`);
|
|
510
|
+
// Only on a run still shown: a newer submit's runs are left alone.
|
|
511
|
+
const add = (runs: Run[]) => runs.map((x) => (x.id === run.id ? addEvaluations(x, resultId, verdicts) : x));
|
|
512
|
+
set((s) => ({ runs: add(s.runs), editRuns: add(s.editRuns) }));
|
|
513
|
+
} catch (err) {
|
|
514
|
+
if (!isAbortError(err)) warnOnce(`[chai-ui] The judge model "${judgeModel}" failed, so no evaluations were added: ${normalizeGenerationError(err).message}`);
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
|
|
470
518
|
function submit(payload: ComposerSubmitPayload) {
|
|
471
519
|
const id = ++submitId;
|
|
472
520
|
controller?.abort();
|
|
@@ -608,11 +656,16 @@ export function createComposerStore(getOptions: () => ComposerOptions, getProvid
|
|
|
608
656
|
export type ComposerStore = ReturnType<typeof createComposerStore>;
|
|
609
657
|
|
|
610
658
|
const warned = new Set<string>();
|
|
611
|
-
/** One console warning per message per page load
|
|
659
|
+
/** One console warning per message per page load. */
|
|
660
|
+
function warnOnce(message: string) {
|
|
661
|
+
if (warned.has(message)) return;
|
|
662
|
+
warned.add(message);
|
|
663
|
+
console.warn(message);
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
/** Auto-select is on with no reasoning model to route with. */
|
|
612
667
|
export function warnNoReasoningOnce(consequence: string) {
|
|
613
|
-
|
|
614
|
-
warned.add(consequence);
|
|
615
|
-
console.warn(
|
|
668
|
+
warnOnce(
|
|
616
669
|
`[chai-ui] Auto-select model is on, but there's no reasoning model, so ${consequence}. Wrap your app in <ChaiProvider> to route with one.`
|
|
617
670
|
);
|
|
618
671
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The opt-in evaluation judge: after a text or image result arrives, a
|
|
3
|
+
* model the builder names checks it against the builder's own criteria,
|
|
4
|
+
* and each check becomes a pass or fail tag on the result. Chai writes the
|
|
5
|
+
* framing; what "good" means is the builder's, in `checks`.
|
|
6
|
+
*/
|
|
7
|
+
import type { Evaluation } from "./types.js";
|
|
8
|
+
|
|
9
|
+
/** One thing the judge checks. `label` is the tag on the result; `criterion` says what passing means, in the builder's words. */
|
|
10
|
+
export interface EvaluationCheck {
|
|
11
|
+
id: string;
|
|
12
|
+
label: string;
|
|
13
|
+
criterion: string;
|
|
14
|
+
/** Only judge results of this kind, e.g. a look-and-feel check for images. Absent, text and image results both get it. */
|
|
15
|
+
kind?: "text" | "image";
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/** What a judge prompt is built from. A text result's words are in `text`; an image result is attached to the judge's request. */
|
|
19
|
+
export interface JudgePromptInput {
|
|
20
|
+
prompt: string;
|
|
21
|
+
output: { kind: "text"; text: string } | { kind: "image" };
|
|
22
|
+
checks: EvaluationCheck[];
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/** The checks when the builder gives none: one accuracy check. Replace or add to it for your app. */
|
|
26
|
+
export const DEFAULT_EVALUATION_CHECKS: EvaluationCheck[] = [
|
|
27
|
+
{
|
|
28
|
+
id: "matches-prompt",
|
|
29
|
+
label: "Matches prompt",
|
|
30
|
+
criterion: "The result does what the prompt asked for, with nothing important missing or wrong.",
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
|
|
34
|
+
/** The prompt the judge model receives: the person's prompt, the result, and each check's criterion, answered as JSON. */
|
|
35
|
+
export function buildJudgePrompt({ prompt, output, checks }: JudgePromptInput): string {
|
|
36
|
+
return [
|
|
37
|
+
"You judge a result an AI app generated, against the app's own criteria. Be strict: pass a check only if the result clearly meets it.",
|
|
38
|
+
`The person's prompt:\n"""\n${prompt}\n"""`,
|
|
39
|
+
output.kind === "image" ? "The result is the attached image." : `The result:\n"""\n${output.text}\n"""`,
|
|
40
|
+
`Criteria, by id:\n${checks.map((c) => `- ${c.id}: ${c.criterion}`).join("\n")}`,
|
|
41
|
+
'Reply with only a JSON object mapping each id to true (passes) or false (fails), e.g. {"first-id": true, "second-id": false}.',
|
|
42
|
+
].join("\n\n");
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/** The judge's verdicts as evaluations, in the checks' order: `null` when the reply has none it can read. */
|
|
46
|
+
export function parseJudgeReply(reply: string, checks: EvaluationCheck[]): Evaluation[] | null {
|
|
47
|
+
const json = reply.match(/\{[\s\S]*\}/)?.[0];
|
|
48
|
+
if (!json) return null;
|
|
49
|
+
let verdicts: Record<string, unknown>;
|
|
50
|
+
try {
|
|
51
|
+
verdicts = JSON.parse(json);
|
|
52
|
+
} catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const found = checks.flatMap((c) => {
|
|
56
|
+
const passed = verdicts[c.id];
|
|
57
|
+
return typeof passed === "boolean" ? [{ id: c.id, label: c.label, passed }] : [];
|
|
58
|
+
});
|
|
59
|
+
return found.length > 0 ? found : null;
|
|
60
|
+
}
|
package/src/index.ts
CHANGED
package/src/run.ts
CHANGED
|
@@ -112,6 +112,11 @@ export function resolveResult(
|
|
|
112
112
|
}));
|
|
113
113
|
}
|
|
114
114
|
|
|
115
|
+
/** The result with `evaluations` added after any it already has (e.g. the judge's after the backend's). */
|
|
116
|
+
export function addEvaluations(run: Run, resultId: string, evaluations: Evaluation[]): Run {
|
|
117
|
+
return updateResult(run, resultId, (r) => ({ ...r, evaluations: [...(r.evaluations ?? []), ...evaluations] }));
|
|
118
|
+
}
|
|
119
|
+
|
|
115
120
|
export function failResult(run: Run, resultId: string, error: Result["error"]): Run {
|
|
116
121
|
return updateResult(run, resultId, (r) => ({
|
|
117
122
|
...r,
|