@llm4ts/core 2.5.0 → 2.7.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.
Files changed (84) hide show
  1. package/dist/Connector.d.ts +4 -0
  2. package/dist/Connector.d.ts.map +1 -1
  3. package/dist/Connector.js +8 -3
  4. package/dist/Connector.js.map +1 -1
  5. package/dist/ConnectorConfig.d.ts.map +1 -1
  6. package/dist/ConnectorConfig.js +2 -0
  7. package/dist/ConnectorConfig.js.map +1 -1
  8. package/dist/ContextManagement.d.ts.map +1 -1
  9. package/dist/ContextManagement.js +1 -0
  10. package/dist/ContextManagement.js.map +1 -1
  11. package/dist/LabelScoring.d.ts +52 -0
  12. package/dist/LabelScoring.d.ts.map +1 -0
  13. package/dist/LabelScoring.js +139 -0
  14. package/dist/LabelScoring.js.map +1 -0
  15. package/dist/LlmService.d.ts +30 -2
  16. package/dist/LlmService.d.ts.map +1 -1
  17. package/dist/LlmService.js.map +1 -1
  18. package/dist/Models.d.ts +34 -2
  19. package/dist/Models.d.ts.map +1 -1
  20. package/dist/Models.js +37 -1
  21. package/dist/Models.js.map +1 -1
  22. package/dist/eval/Judge.d.ts +15 -0
  23. package/dist/eval/Judge.d.ts.map +1 -1
  24. package/dist/eval/Judge.js +50 -0
  25. package/dist/eval/Judge.js.map +1 -1
  26. package/dist/judgment/FakeJudgment.d.ts +22 -0
  27. package/dist/judgment/FakeJudgment.d.ts.map +1 -0
  28. package/dist/judgment/FakeJudgment.js +42 -0
  29. package/dist/judgment/FakeJudgment.js.map +1 -0
  30. package/dist/judgment/Judgment.d.ts +57 -0
  31. package/dist/judgment/Judgment.d.ts.map +1 -0
  32. package/dist/judgment/Judgment.js +57 -0
  33. package/dist/judgment/Judgment.js.map +1 -0
  34. package/dist/judgment/LlmJudgment.d.ts +73 -0
  35. package/dist/judgment/LlmJudgment.d.ts.map +1 -0
  36. package/dist/judgment/LlmJudgment.js +239 -0
  37. package/dist/judgment/LlmJudgment.js.map +1 -0
  38. package/dist/judgment/Schemas.d.ts +163 -0
  39. package/dist/judgment/Schemas.d.ts.map +1 -0
  40. package/dist/judgment/Schemas.js +197 -0
  41. package/dist/judgment/Schemas.js.map +1 -0
  42. package/dist/judgment/TypeSafeJudgment.d.ts +46 -0
  43. package/dist/judgment/TypeSafeJudgment.d.ts.map +1 -0
  44. package/dist/judgment/TypeSafeJudgment.js +185 -0
  45. package/dist/judgment/TypeSafeJudgment.js.map +1 -0
  46. package/dist/observability/MeteredLlmService.d.ts.map +1 -1
  47. package/dist/observability/MeteredLlmService.js +1 -0
  48. package/dist/observability/MeteredLlmService.js.map +1 -1
  49. package/dist/providers/ConnectorFactories.d.ts.map +1 -1
  50. package/dist/providers/ConnectorFactories.js +2 -0
  51. package/dist/providers/ConnectorFactories.js.map +1 -1
  52. package/dist/providers/LmStudioProvider.d.ts.map +1 -1
  53. package/dist/providers/LmStudioProvider.js +45 -34
  54. package/dist/providers/LmStudioProvider.js.map +1 -1
  55. package/dist/providers/MlxLmProvider.d.ts +29 -0
  56. package/dist/providers/MlxLmProvider.d.ts.map +1 -0
  57. package/dist/providers/MlxLmProvider.js +249 -0
  58. package/dist/providers/MlxLmProvider.js.map +1 -0
  59. package/dist/providers/MockProvider.d.ts.map +1 -1
  60. package/dist/providers/MockProvider.js +11 -0
  61. package/dist/providers/MockProvider.js.map +1 -1
  62. package/dist/providers/OpenAIModels.d.ts +35 -0
  63. package/dist/providers/OpenAIModels.d.ts.map +1 -1
  64. package/dist/providers/OpenAIModels.js +36 -3
  65. package/dist/providers/OpenAIModels.js.map +1 -1
  66. package/package.json +8 -1
  67. package/src/Connector.ts +13 -3
  68. package/src/ConnectorConfig.ts +2 -0
  69. package/src/ContextManagement.ts +1 -0
  70. package/src/LabelScoring.ts +211 -0
  71. package/src/LlmService.ts +37 -1
  72. package/src/Models.ts +43 -1
  73. package/src/eval/Judge.ts +74 -0
  74. package/src/judgment/FakeJudgment.ts +90 -0
  75. package/src/judgment/Judgment.ts +123 -0
  76. package/src/judgment/LlmJudgment.ts +399 -0
  77. package/src/judgment/Schemas.ts +278 -0
  78. package/src/judgment/TypeSafeJudgment.ts +253 -0
  79. package/src/observability/MeteredLlmService.ts +7 -0
  80. package/src/providers/ConnectorFactories.ts +4 -0
  81. package/src/providers/LmStudioProvider.ts +64 -48
  82. package/src/providers/MlxLmProvider.ts +357 -0
  83. package/src/providers/MockProvider.ts +19 -0
  84. package/src/providers/OpenAIModels.ts +40 -3
package/dist/Models.js CHANGED
@@ -8,6 +8,7 @@ export const LlmProvider = Schema.Literals([
8
8
  "Anthropic",
9
9
  "LmStudio",
10
10
  "Ollama",
11
+ "MlxLm",
11
12
  "OpenCode",
12
13
  "Mock"
13
14
  ]);
@@ -21,6 +22,7 @@ export const ConnectorIds = Object.freeze({
21
22
  GeminiApi: new ConnectorId({ value: "gemini-api" }),
22
23
  LmStudio: new ConnectorId({ value: "lm-studio" }),
23
24
  Ollama: new ConnectorId({ value: "ollama" }),
25
+ MlxLm: new ConnectorId({ value: "mlx-lm" }),
24
26
  ClaudeCli: new ConnectorId({ value: "claude-cli" }),
25
27
  GeminiCli: new ConnectorId({ value: "gemini-cli" }),
26
28
  OpenCode: new ConnectorId({ value: "opencode" }),
@@ -37,7 +39,8 @@ export const apiConnectorIds = Object.freeze([
37
39
  ConnectorIds.Anthropic,
38
40
  ConnectorIds.GeminiApi,
39
41
  ConnectorIds.LmStudio,
40
- ConnectorIds.Ollama
42
+ ConnectorIds.Ollama,
43
+ ConnectorIds.MlxLm
41
44
  ]);
42
45
  export const cliConnectorIds = Object.freeze([
43
46
  ConnectorIds.ClaudeCli,
@@ -70,6 +73,8 @@ export const defaultBaseUrl = (provider) => {
70
73
  return "http://localhost:1234/v1";
71
74
  case "Ollama":
72
75
  return "http://localhost:11434";
76
+ case "MlxLm":
77
+ return "http://localhost:8080";
73
78
  case "OpenCode":
74
79
  return "http://localhost:4096";
75
80
  }
@@ -80,6 +85,7 @@ const connectorProviderTable = {
80
85
  "gemini-api": "GeminiApi",
81
86
  "lm-studio": "LmStudio",
82
87
  ollama: "Ollama",
88
+ "mlx-lm": "MlxLm",
83
89
  opencode: "OpenCode",
84
90
  "gemini-cli": "GeminiCli",
85
91
  mock: "Mock"
@@ -103,6 +109,8 @@ export const providerConnectorId = (provider) => {
103
109
  return ConnectorIds.LmStudio;
104
110
  case "Ollama":
105
111
  return ConnectorIds.Ollama;
112
+ case "MlxLm":
113
+ return ConnectorIds.MlxLm;
106
114
  case "OpenCode":
107
115
  return ConnectorIds.OpenCode;
108
116
  case "Mock":
@@ -212,6 +220,33 @@ export const InteractionSupport = Schema.Literals(["InteractiveStdin", "Continua
212
220
  * ignored in headless runs.
213
221
  */
214
222
  export const ReadOnlyEnforcement = Schema.Literals(["enforced", "advisory", "ignored"]);
223
+ /**
224
+ * How a connector produces the per-label probabilities behind `scoreLabels`:
225
+ * - "logprobs": read off the backend's token log-probabilities in one
226
+ * forward pass (a real distribution, still uncalibrated).
227
+ * - "verbalized": the model writes the numbers itself in a JSON reply
228
+ * (typically overconfident; hold to a higher bar).
229
+ * - "none": the connector cannot answer label questions at all.
230
+ */
231
+ export const LabelProbabilities = Schema.Literals(["logprobs", "verbalized", "none"]);
232
+ /** How a label distribution's numbers were extracted (see `LabelProbabilities`). */
233
+ export const LabelMethod = Schema.Literals(["logprobs", "verbalized", "sampled"]);
234
+ /**
235
+ * A probability per label, normalized over the labels the caller offered.
236
+ * `support` is the probability mass the backend actually placed on those
237
+ * labels before renormalization (1 when the numbers were declared over the
238
+ * labels alone): a distribution renormalized from a sliver of mass is not
239
+ * a confident one, and callers must not treat it as one.
240
+ * `usage` is whatever the backend reported for the call, if anything.
241
+ */
242
+ export class LabelDistribution extends Schema.Class("LabelDistribution")({
243
+ probabilities: Schema.Record(Schema.String, Schema.Number),
244
+ method: LabelMethod,
245
+ support: Schema.Number,
246
+ usage: Schema.optionalKey(TokenUsage),
247
+ model: Schema.optionalKey(Schema.String)
248
+ }) {
249
+ }
215
250
  export class ConnectorCapabilities extends Schema.Class("ConnectorCapabilities")({
216
251
  streaming: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(true))),
217
252
  resumableSessions: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(false))),
@@ -220,6 +255,7 @@ export class ConnectorCapabilities extends Schema.Class("ConnectorCapabilities")
220
255
  approval: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(false))),
221
256
  structuredOutput: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(true))),
222
257
  usageReporting: Schema.Boolean.pipe(Schema.withConstructorDefault(Effect.succeed(true))),
258
+ labelProbabilities: LabelProbabilities.pipe(Schema.withConstructorDefault(Effect.succeed("verbalized"))),
223
259
  readOnlyEnforcement: ReadOnlyEnforcement.pipe(Schema.withConstructorDefault(Effect.succeed("advisory")))
224
260
  }) {
225
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Models.js","sourceRoot":"","sources":["../src/Models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Models.js","sourceRoot":"","sources":["../src/Models.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  import * as Schema from "effect/Schema";
2
+ import type { JudgmentShape } from "../judgment/Judgment.ts";
3
+ import { type ScoreQuestion, type State } from "../judgment/Schemas.ts";
2
4
  import type { LlmServiceShape } from "../LlmService.ts";
3
5
  import { DimensionScore } from "./Eval.ts";
4
6
  import type { Dimension, Sample } from "./Eval.ts";
@@ -11,5 +13,18 @@ export declare class JudgeResponse extends JudgeResponse_base {
11
13
  export declare const defaultSystem: string;
12
14
  export declare const buildPrompt: (system: string, dimensions: ReadonlyArray<Dimension>, sample: Sample) => string;
13
15
  export declare const judge: (llm: LlmServiceShape, dimensions: ReadonlyArray<Dimension>, system?: string) => Evaluator<Sample>;
16
+ /**
17
+ * A dimension as a Score question: one level per rubric point, so the
18
+ * judgment returns a distribution over the scale instead of one integer.
19
+ */
20
+ export declare const dimensionQuestion: (dimension: Dimension) => ScoreQuestion;
21
+ export declare const sampleState: (sample: Sample) => State;
22
+ /**
23
+ * The rubric judge over the Judgment service (ADR 0017, consumer 1): every
24
+ * dimension is an independent Score question over the same sample. A
25
+ * dimension the backend could not answer scores 0 with the reason recorded,
26
+ * matching the generative judge's treatment of a missing score.
27
+ */
28
+ export declare const judgeWithJudgment: (judgment: JudgmentShape, dimensions: ReadonlyArray<Dimension>) => Evaluator<Sample>;
14
29
  export {};
15
30
  //# sourceMappingURL=Judge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Judge.d.ts","sourceRoot":"","sources":["../../src/eval/Judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAc,MAAM,WAAW,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;;;;AAE9D,qBAAa,aAAc,SAAQ,kBAEjC;CAAG;AAEL,eAAO,MAAM,aAAa,QAEW,CAAA;AAsBrC,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,YAAY,aAAa,CAAC,SAAS,CAAC,EACpC,QAAQ,MAAM,KACb,MAoBF,CAAA;AAsBD,eAAO,MAAM,KAAK,GAChB,KAAK,eAAe,EACpB,YAAY,aAAa,CAAC,SAAS,CAAC,EACpC,eAAsB,KACrB,SAAS,CAAC,MAAM,CAKhB,CAAA"}
1
+ {"version":3,"file":"Judge.d.ts","sourceRoot":"","sources":["../../src/eval/Judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAC9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAc,MAAM,WAAW,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAiB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;;;;AAE9D,qBAAa,aAAc,SAAQ,kBAEjC;CAAG;AAEL,eAAO,MAAM,aAAa,QAEW,CAAA;AAsBrC,eAAO,MAAM,WAAW,GACtB,QAAQ,MAAM,EACd,YAAY,aAAa,CAAC,SAAS,CAAC,EACpC,QAAQ,MAAM,KACb,MAoBF,CAAA;AAsBD,eAAO,MAAM,KAAK,GAChB,KAAK,eAAe,EACpB,YAAY,aAAa,CAAC,SAAS,CAAC,EACpC,eAAsB,KACrB,SAAS,CAAC,MAAM,CAKhB,CAAA;AAEH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,GAAI,WAAW,SAAS,KAAG,aAatD,CAAA;AAEH,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,KAK3C,CAAA;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,GAC5B,UAAU,aAAa,EACvB,YAAY,aAAa,CAAC,SAAS,CAAC,KACnC,SAAS,CAAC,MAAM,CAkChB,CAAA"}
@@ -1,5 +1,7 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Schema from "effect/Schema";
3
+ import { ProviderError } from "../Errors.js";
4
+ import { score } from "../judgment/Schemas.js";
3
5
  import { DimensionScore, EvalResult } from "./Eval.js";
4
6
  import { makeEvaluator } from "./Evaluator.js";
5
7
  export class JudgeResponse extends Schema.Class("JudgeResponse")({
@@ -70,4 +72,52 @@ const toResult = (dimensions, response) => {
70
72
  export const judge = (llm, dimensions, system = defaultSystem) => makeEvaluator((sample) => llm
71
73
  .executeStructured(buildPrompt(system, dimensions, sample), JudgeResponse, judgeJsonSchema)
72
74
  .pipe(Effect.map((response) => toResult(dimensions, response))));
75
+ /**
76
+ * A dimension as a Score question: one level per rubric point, so the
77
+ * judgment returns a distribution over the scale instead of one integer.
78
+ */
79
+ export const dimensionQuestion = (dimension) => score(`${dimension.name}: ${dimension.rubric}`, Array.from({ length: dimension.maxScore + 1 }, (_, level) => ({
80
+ level,
81
+ of: dimension.maxScore,
82
+ meaning: level === 0
83
+ ? "does not meet the rubric at all"
84
+ : level === dimension.maxScore
85
+ ? "fully meets the rubric"
86
+ : `partially meets the rubric (${level} of ${dimension.maxScore})`
87
+ })));
88
+ export const sampleState = (sample) => ({
89
+ ...(sample.query === undefined ? {} : { query: sample.query }),
90
+ ...(sample.context === undefined ? {} : { context: sample.context }),
91
+ response: sample.response,
92
+ ...(sample.expected === undefined ? {} : { expected: sample.expected })
93
+ });
94
+ /**
95
+ * The rubric judge over the Judgment service (ADR 0017, consumer 1): every
96
+ * dimension is an independent Score question over the same sample. A
97
+ * dimension the backend could not answer scores 0 with the reason recorded,
98
+ * matching the generative judge's treatment of a missing score.
99
+ */
100
+ export const judgeWithJudgment = (judgment, dimensions) => makeEvaluator((sample) => judgment
101
+ .judge({
102
+ state: sampleState(sample),
103
+ questions: Object.fromEntries(dimensions.map((dimension) => [dimension.name, dimensionQuestion(dimension)]))
104
+ })
105
+ .pipe(Effect.mapError((error) => ProviderError.make({ message: `judgment backend failed: ${error.message}`, cause: error })), Effect.map((result) => EvalResult.make({
106
+ scores: dimensions.map((dimension) => {
107
+ const answer = result.answers[dimension.name];
108
+ if (answer === undefined || answer.type !== "score") {
109
+ const failure = result.failures.find((entry) => entry.key === dimension.name);
110
+ return DimensionScore.make({
111
+ name: dimension.name,
112
+ score: 0,
113
+ reasoning: failure === undefined ? "missing" : `failed: ${failure.reason}`
114
+ });
115
+ }
116
+ return DimensionScore.make({
117
+ name: dimension.name,
118
+ score: Math.max(0, Math.min(dimension.maxScore, Math.round(answer.score))),
119
+ reasoning: `${answer.origin.method} judgment (${answer.origin.backend}), confidence ${answer.confidence.toFixed(2)}, support ${answer.support.toFixed(2)}, expected level ${answer.score.toFixed(2)}`
120
+ });
121
+ })
122
+ }))));
73
123
  //# sourceMappingURL=Judge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Judge.js","sourceRoot":"","sources":["../../src/eval/Judge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Judge.js","sourceRoot":"","sources":["../../src/eval/Judge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import { Judgment, type JudgmentShape } from "./Judgment.ts";
4
+ import { JudgmentRequest, type Answer } from "./Schemas.ts";
5
+ /**
6
+ * `FakeJudgment`: deterministic answers for tests. A plan maps question keys
7
+ * to canned answers (or a failure reason); unplanned questions get a
8
+ * predictable default so a consumer test can run without listing every key.
9
+ */
10
+ export interface FakeJudgmentPlan {
11
+ readonly answers?: Readonly<Record<string, Answer>>;
12
+ readonly failures?: Readonly<Record<string, string>>;
13
+ /** Truth probability for unplanned truth questions (default 1). */
14
+ readonly defaultTruth?: number;
15
+ }
16
+ export interface FakeJudgment {
17
+ readonly judgment: JudgmentShape;
18
+ readonly recorded: Effect.Effect<ReadonlyArray<JudgmentRequest>>;
19
+ }
20
+ export declare const makeFakeJudgment: (plan?: FakeJudgmentPlan | undefined) => Effect.Effect<FakeJudgment, never, never>;
21
+ export declare const FakeJudgmentLive: (plan?: FakeJudgmentPlan) => Layer.Layer<Judgment>;
22
+ //# sourceMappingURL=FakeJudgment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeJudgment.d.ts","sourceRoot":"","sources":["../../src/judgment/FakeJudgment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,EAAE,QAAQ,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAEL,eAAe,EAMf,KAAK,MAAM,EAEZ,MAAM,cAAc,CAAA;AAErB;;;;GAIG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;IACpD,mEAAmE;IACnE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,QAAQ,EAAE,aAAa,CAAA;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAA;CACjE;AAwBD,eAAO,MAAM,gBAAgB,oFA2B3B,CAAA;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,gBAAgB,KAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAI5E,CAAA"}
@@ -0,0 +1,42 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import * as Ref from "effect/Ref";
4
+ import { Judgment } from "./Judgment.js";
5
+ import { choiceAnswer, JudgmentRequest, JudgmentResult, origins, QuestionFailure, scoreAnswer, truthAnswer } from "./Schemas.js";
6
+ const defaultAnswer = (question, defaultTruth) => {
7
+ switch (question.type) {
8
+ case "choice": {
9
+ const keys = Object.keys(question.criteria);
10
+ return choiceAnswer(Object.fromEntries(keys.map((key, index) => [key, index === 0 ? 1 : 0])), origins.fake());
11
+ }
12
+ case "score":
13
+ return scoreAnswer(question, Object.fromEntries(question.criteria.map((_, index) => [String(index), index === 0 ? 1 : 0])), origins.fake());
14
+ case "truth":
15
+ return truthAnswer(defaultTruth, origins.fake());
16
+ }
17
+ };
18
+ export const makeFakeJudgment = Effect.fn("@llm4ts/core/judgment/FakeJudgment.make")(function* (plan = {}) {
19
+ const requests = yield* Ref.make([]);
20
+ const judge = (input) => Ref.update(requests, (all) => [
21
+ ...all,
22
+ JudgmentRequest.make({ state: input.state, questions: input.questions })
23
+ ]).pipe(Effect.map(() => {
24
+ const answers = {};
25
+ const failures = [];
26
+ for (const [key, question] of Object.entries(input.questions)) {
27
+ const failure = plan.failures?.[key];
28
+ if (failure !== undefined) {
29
+ failures.push(QuestionFailure.make({ key, reason: failure }));
30
+ continue;
31
+ }
32
+ answers[key] = plan.answers?.[key] ?? defaultAnswer(question, plan.defaultTruth ?? 1);
33
+ }
34
+ return JudgmentResult.make({ answers, failures, backend: "fake" });
35
+ }));
36
+ return {
37
+ judgment: { backend: "fake", identity: "fake", judge },
38
+ recorded: Ref.get(requests)
39
+ };
40
+ });
41
+ export const FakeJudgmentLive = (plan) => Layer.effect(Judgment, Effect.map(makeFakeJudgment(plan), (fake) => fake.judgment));
42
+ //# sourceMappingURL=FakeJudgment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeJudgment.js","sourceRoot":"","sources":["../../src/judgment/FakeJudgment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Schema from "effect/Schema";
4
+ import { ChoiceAnswer, ScoreAnswer, TruthAnswer, type JudgmentBackend, type JudgmentResult, type Question, type State } from "./Schemas.ts";
5
+ declare const JudgmentBackendError_base: Schema.Class<JudgmentBackendError, Schema.TaggedStruct<"JudgmentBackendError", {
6
+ readonly backend: Schema.String;
7
+ readonly message: Schema.String;
8
+ readonly cause: Schema.optionalKey<Schema.Defect>;
9
+ }>, import("effect/Cause").YieldableError>;
10
+ /**
11
+ * The Judgment service (ADR 0017): evaluate typed questions against one
12
+ * State and return typed answers with probabilities and their origin. It
13
+ * answers; it never decides. Policy (thresholds, escalation, caching) lives
14
+ * in the flow package.
15
+ */
16
+ export declare class JudgmentBackendError extends JudgmentBackendError_base {
17
+ }
18
+ declare const AnswerMismatch_base: Schema.Class<AnswerMismatch, Schema.TaggedStruct<"AnswerMismatch", {
19
+ readonly key: Schema.String;
20
+ readonly expected: Schema.String;
21
+ readonly actual: Schema.optionalKey<Schema.String>;
22
+ readonly reason: Schema.optionalKey<Schema.String>;
23
+ }>, import("effect/Cause").YieldableError>;
24
+ /** Raised by the typed accessors when a key is missing or of another kind. */
25
+ export declare class AnswerMismatch extends AnswerMismatch_base {
26
+ get message(): string;
27
+ }
28
+ export declare const JudgmentError: Schema.Union<readonly [typeof JudgmentBackendError, typeof AnswerMismatch]>;
29
+ export type JudgmentError = typeof JudgmentError.Type;
30
+ export interface JudgmentInput {
31
+ readonly state: State;
32
+ readonly questions: Readonly<Record<string, Question>>;
33
+ }
34
+ export interface JudgmentShape {
35
+ readonly backend: JudgmentBackend;
36
+ /**
37
+ * Backend plus checkpoint, e.g. `llm:mlx-lm:/models/qwen3-4b` or
38
+ * `typesafe:jev-1.13.0`: what a cached answer is keyed on, so swapping a
39
+ * local model never reuses its predecessor's answers.
40
+ */
41
+ readonly identity: string;
42
+ /**
43
+ * Answer every question independently over the same state. A question the
44
+ * backend could not answer lands in `failures`; the request as a whole
45
+ * fails only when the backend itself is unreachable or rejects it.
46
+ */
47
+ readonly judge: (input: JudgmentInput) => Effect.Effect<JudgmentResult, JudgmentBackendError>;
48
+ }
49
+ declare const Judgment_base: Context.ServiceClass<Judgment, "@llm4ts/core/judgment/Judgment", JudgmentShape>;
50
+ export declare class Judgment extends Judgment_base {
51
+ }
52
+ /** Typed accessors: the honest way to read an answer by key. */
53
+ export declare const choiceOf: (result: JudgmentResult, key: string) => Effect.Effect<ChoiceAnswer, AnswerMismatch>;
54
+ export declare const scoreOf: (result: JudgmentResult, key: string) => Effect.Effect<ScoreAnswer, AnswerMismatch>;
55
+ export declare const truthOf: (result: JudgmentResult, key: string) => Effect.Effect<TruthAnswer, AnswerMismatch>;
56
+ export {};
57
+ //# sourceMappingURL=Judgment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Judgment.d.ts","sourceRoot":"","sources":["../../src/judgment/Judgment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EAEX,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,KAAK,EACX,MAAM,cAAc,CAAA;;;;;;AAErB;;;;;GAKG;AAEH,qBAAa,oBAAqB,SAAQ,yBAOzC;CAAG;;;;;;;AAEJ,8EAA8E;AAC9E,qBAAa,cAAe,SAAQ,mBAKlC;IACA,IAAI,OAAO,IAAI,MAAM,CAIpB;CACF;AAED,eAAO,MAAM,aAAa,6EAAuD,CAAA;AACjF,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAA;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB;;;;OAIG;IACH,QAAQ,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;CAC9F;;AAED,qBAAa,QAAS,SAAQ,aAE7B;CAAG;AAuBJ,gEAAgE;AAChE,eAAO,MAAM,QAAQ,GACnB,QAAQ,cAAc,EACtB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,cAAc,CAK1C,CAAA;AAEH,eAAO,MAAM,OAAO,GAClB,QAAQ,cAAc,EACtB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAKzC,CAAA;AAEH,eAAO,MAAM,OAAO,GAClB,QAAQ,cAAc,EACtB,KAAK,MAAM,KACV,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,cAAc,CAKzC,CAAA"}
@@ -0,0 +1,57 @@
1
+ import * as Context from "effect/Context";
2
+ import * as Effect from "effect/Effect";
3
+ import * as Schema from "effect/Schema";
4
+ import { ChoiceAnswer, ScoreAnswer, TruthAnswer } from "./Schemas.js";
5
+ /**
6
+ * The Judgment service (ADR 0017): evaluate typed questions against one
7
+ * State and return typed answers with probabilities and their origin. It
8
+ * answers; it never decides. Policy (thresholds, escalation, caching) lives
9
+ * in the flow package.
10
+ */
11
+ export class JudgmentBackendError extends Schema.TaggedError()("JudgmentBackendError", {
12
+ backend: Schema.String,
13
+ message: Schema.String,
14
+ cause: Schema.optionalKey(Schema.Defect())
15
+ }) {
16
+ }
17
+ /** Raised by the typed accessors when a key is missing or of another kind. */
18
+ export class AnswerMismatch extends Schema.TaggedError()("AnswerMismatch", {
19
+ key: Schema.String,
20
+ expected: Schema.String,
21
+ actual: Schema.optionalKey(Schema.String),
22
+ reason: Schema.optionalKey(Schema.String)
23
+ }) {
24
+ get message() {
25
+ return this.actual === undefined
26
+ ? `no ${this.expected} answer for "${this.key}"${this.reason === undefined ? "" : `: ${this.reason}`}`
27
+ : `answer "${this.key}" is a ${this.actual}, not a ${this.expected}`;
28
+ }
29
+ }
30
+ export const JudgmentError = Schema.Union([JudgmentBackendError, AnswerMismatch]);
31
+ export class Judgment extends Context.Service()("@llm4ts/core/judgment/Judgment") {
32
+ }
33
+ const answerOf = (result, key, expected) => {
34
+ const answer = result.answers[key];
35
+ if (answer === undefined) {
36
+ const failure = result.failures.find((entry) => entry.key === key);
37
+ return Effect.fail(AnswerMismatch.make({
38
+ key,
39
+ expected,
40
+ ...(failure === undefined ? {} : { reason: failure.reason })
41
+ }));
42
+ }
43
+ return answer.type === expected
44
+ ? Effect.succeed(answer)
45
+ : Effect.fail(AnswerMismatch.make({ key, expected, actual: answer.type }));
46
+ };
47
+ /** Typed accessors: the honest way to read an answer by key. */
48
+ export const choiceOf = (result, key) => Effect.flatMap(answerOf(result, key, "choice"), (answer) => answer instanceof ChoiceAnswer
49
+ ? Effect.succeed(answer)
50
+ : Effect.fail(AnswerMismatch.make({ key, expected: "choice", actual: answer.type })));
51
+ export const scoreOf = (result, key) => Effect.flatMap(answerOf(result, key, "score"), (answer) => answer instanceof ScoreAnswer
52
+ ? Effect.succeed(answer)
53
+ : Effect.fail(AnswerMismatch.make({ key, expected: "score", actual: answer.type })));
54
+ export const truthOf = (result, key) => Effect.flatMap(answerOf(result, key, "truth"), (answer) => answer instanceof TruthAnswer
55
+ ? Effect.succeed(answer)
56
+ : Effect.fail(AnswerMismatch.make({ key, expected: "truth", actual: answer.type })));
57
+ //# sourceMappingURL=Judgment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Judgment.js","sourceRoot":"","sources":["../../src/judgment/Judgment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EACL,YAAY,EACZ,WAAW,EACX,WAAW,EAMZ,MAAM,cAAc,CAAA;AAErB;;;;;GAKG;AAEH,MAAM,OAAO,oBAAqB,SAAQ,MAAM,CAAC,WAAW,EAAwB,CAClF,sBAAsB,EACtB;IACE,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CAC3C,CACF;CAAG;AAEJ,8EAA8E;AAC9E,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,WAAW,EAAkB,CAAC,gBAAgB,EAAE;IACzF,GAAG,EAAE,MAAM,CAAC,MAAM;IAClB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC;CAC1C,CAAC;IACA,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,KAAK,SAAS;YAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,gBAAgB,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,EAAE;YACtG,CAAC,CAAC,WAAW,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxE,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,oBAAoB,EAAE,cAAc,CAAC,CAAC,CAAA;AAwBjF,MAAM,OAAO,QAAS,SAAQ,OAAO,CAAC,OAAO,EAA2B,CACtE,gCAAgC,CACjC;CAAG;AAEJ,MAAM,QAAQ,GAAG,CACf,MAAsB,EACtB,GAAW,EACX,QAAwB,EACe,EAAE;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;QAClE,OAAO,MAAM,CAAC,IAAI,CAChB,cAAc,CAAC,IAAI,CAAC;YAClB,GAAG;YACH,QAAQ;YACR,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;SAC7D,CAAC,CACH,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;QAC7B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;QACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;AAC9E,CAAC,CAAA;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,MAAsB,EACtB,GAAW,EACkC,EAAE,CAC/C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACzD,MAAM,YAAY,YAAY;IAC5B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CACvF,CAAA;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAsB,EACtB,GAAW,EACiC,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACxD,MAAM,YAAY,WAAW;IAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CACtF,CAAA;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,CACrB,MAAsB,EACtB,GAAW,EACiC,EAAE,CAC9C,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CACxD,MAAM,YAAY,WAAW;IAC3B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;IACxB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CACtF,CAAA"}
@@ -0,0 +1,73 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as Layer from "effect/Layer";
3
+ import * as Schema from "effect/Schema";
4
+ import type { LabelSequence, LlmServiceShape } from "../LlmService.ts";
5
+ import { TokenUsage } from "../Models.ts";
6
+ import { Judgment, type JudgmentShape } from "./Judgment.ts";
7
+ import { type Question, type State } from "./Schemas.ts";
8
+ /**
9
+ * `LlmJudgment`: the Judgment service over any `LlmServiceShape`. One label
10
+ * question per atomic question, answered through `scoreLabels`: a single
11
+ * forward pass on connectors with log-probabilities, a short JSON reply on
12
+ * the rest. Questions never see each other's answers in `independent`
13
+ * batching; `shared-prefix` sends the state once with every question and
14
+ * reads each answer as its own label distribution, trading that isolation
15
+ * for one prompt prefix per request.
16
+ */
17
+ export declare const Batching: Schema.Literals<readonly ["independent", "shared-prefix"]>;
18
+ export type Batching = typeof Batching.Type;
19
+ declare const LlmJudgmentConfig_base: Schema.Class<LlmJudgmentConfig, Schema.Struct<{
20
+ /** Questions in flight at once. 1 keeps a local server's prompt cache warm. */
21
+ readonly concurrency: Schema.withConstructorDefault<Schema.Int>;
22
+ /** 2 also asks with the options reversed and averages, to blunt position bias. */
23
+ readonly permutations: Schema.withConstructorDefault<Schema.Literals<readonly [1, 2]>>;
24
+ /**
25
+ * `independent` (default): one call per question, Jev's answer
26
+ * independence. `shared-prefix`: every question of a request in one call
27
+ * whose state prefix is sent once; a question the batch could not read
28
+ * falls back to its own independent call.
29
+ */
30
+ readonly batching: Schema.withConstructorDefault<Schema.Literals<readonly ["independent", "shared-prefix"]>>;
31
+ /** Connector and model behind the seat, for `identity` and answer origins. */
32
+ readonly connector: Schema.optionalKey<Schema.String>;
33
+ readonly model: Schema.optionalKey<Schema.String>;
34
+ }>, {}>;
35
+ export declare class LlmJudgmentConfig extends LlmJudgmentConfig_base {
36
+ }
37
+ export interface LlmJudgmentHooks {
38
+ /** Called once per request with the summed backend usage, when any was reported. */
39
+ readonly onUsage?: (usage: TokenUsage, model: string | undefined) => Effect.Effect<void>;
40
+ /** Called when a question fell back from label scoring to the verbalized path. */
41
+ readonly onFallback?: (key: string, reason: string) => Effect.Effect<void>;
42
+ }
43
+ interface LabelPlan {
44
+ readonly prompt: string;
45
+ readonly labels: ReadonlyArray<string>;
46
+ /** Label to the option key or level index it stands for. */
47
+ readonly keys: Readonly<Record<string, string>>;
48
+ }
49
+ /** A question's part of a prompt, without the state header. */
50
+ export interface QuestionBody {
51
+ readonly body: string;
52
+ readonly labels: ReadonlyArray<string>;
53
+ readonly keys: Readonly<Record<string, string>>;
54
+ }
55
+ export declare const questionBody: (question: Question, reverse: boolean) => QuestionBody;
56
+ /**
57
+ * The fixed label-scoring template: state first, then the question, then
58
+ * one single-token label per option. Truth uses `yes`/`no`.
59
+ */
60
+ export declare const labelPlan: (state: State, question: Question, reverse: boolean) => LabelPlan;
61
+ /**
62
+ * The shared-prefix template: the state once, then every question numbered,
63
+ * and an answer format of one label per line so a backend can read each
64
+ * position as its own distribution.
65
+ */
66
+ export declare const sequencePlan: (state: State, questions: ReadonlyArray<Question>, reverse: boolean) => {
67
+ readonly prompt: string;
68
+ readonly parts: ReadonlyArray<QuestionBody>;
69
+ };
70
+ export declare const makeLlmJudgment: (llm: LlmServiceShape, config?: LlmJudgmentConfig, hooks?: LlmJudgmentHooks) => JudgmentShape;
71
+ export declare const LlmJudgmentLive: (llm: LlmServiceShape, config?: LlmJudgmentConfig, hooks?: LlmJudgmentHooks) => Layer.Layer<Judgment>;
72
+ export type { LabelSequence };
73
+ //# sourceMappingURL=LlmJudgment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LlmJudgment.d.ts","sourceRoot":"","sources":["../../src/judgment/LlmJudgment.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAErC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AACtE,OAAO,EAAE,UAAU,EAA0B,MAAM,cAAc,CAAA;AACjE,OAAO,EAAE,QAAQ,EAAsB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAA;AAChF,OAAO,EAYL,KAAK,QAAQ,EAEb,KAAK,KAAK,EACX,MAAM,cAAc,CAAA;AAErB;;;;;;;;GAQG;AAEH,eAAO,MAAM,QAAQ,4DAAoD,CAAA;AACzE,MAAM,MAAM,QAAQ,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAA;;IAGzC,+EAA+E;;IAE/E,kFAAkF;;IAIlF;;;;;OAKG;;IAEH,8EAA8E;;;;AAdhF,qBAAa,iBAAkB,SAAQ,sBAiBrC;CAAG;AAEL,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,SAAS,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACxF,kFAAkF;IAClF,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;CAC3E;AAOD,UAAU,SAAS;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,4DAA4D;IAC5D,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAChD;AAED,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,CAAA;IACtC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAChD;AAED,eAAO,MAAM,YAAY,GAAI,UAAU,QAAQ,EAAE,SAAS,OAAO,KAAG,YA+BnE,CAAA;AAID;;;GAGG;AACH,eAAO,MAAM,SAAS,GAAI,OAAO,KAAK,EAAE,UAAU,QAAQ,EAAE,SAAS,OAAO,KAAG,SAG9E,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,OAAO,KAAK,EACZ,WAAW,aAAa,CAAC,QAAQ,CAAC,EAClC,SAAS,OAAO,KACf;IAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAA;CASxE,CAAA;AAwED,eAAO,MAAM,eAAe,GAC1B,KAAK,eAAe,EACpB,SAAQ,iBAA8C,EACtD,QAAO,gBAAqB,KAC3B,aAwKF,CAAA;AAED,eAAO,MAAM,eAAe,GAC1B,KAAK,eAAe,EACpB,SAAS,iBAAiB,EAC1B,QAAQ,gBAAgB,KACvB,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAiE,CAAA;AAExF,YAAY,EAAE,aAAa,EAAE,CAAA"}