systemoneprompts 0.1.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 (147) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +214 -0
  4. package/dist/answers.d.ts +21 -0
  5. package/dist/answers.d.ts.map +1 -0
  6. package/dist/answers.js +104 -0
  7. package/dist/answers.js.map +1 -0
  8. package/dist/cli/cache.d.ts +2 -0
  9. package/dist/cli/cache.d.ts.map +1 -0
  10. package/dist/cli/cache.js +26 -0
  11. package/dist/cli/cache.js.map +1 -0
  12. package/dist/cli/check.d.ts +2 -0
  13. package/dist/cli/check.d.ts.map +1 -0
  14. package/dist/cli/check.js +28 -0
  15. package/dist/cli/check.js.map +1 -0
  16. package/dist/cli/env.d.ts +2 -0
  17. package/dist/cli/env.d.ts.map +1 -0
  18. package/dist/cli/env.js +29 -0
  19. package/dist/cli/env.js.map +1 -0
  20. package/dist/cli/eval.d.ts +18 -0
  21. package/dist/cli/eval.d.ts.map +1 -0
  22. package/dist/cli/eval.js +314 -0
  23. package/dist/cli/eval.js.map +1 -0
  24. package/dist/cli/generate.d.ts +5 -0
  25. package/dist/cli/generate.d.ts.map +1 -0
  26. package/dist/cli/generate.js +93 -0
  27. package/dist/cli/generate.js.map +1 -0
  28. package/dist/cli/index.d.ts +3 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +76 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/cli/io.d.ts +28 -0
  33. package/dist/cli/io.d.ts.map +1 -0
  34. package/dist/cli/io.js +88 -0
  35. package/dist/cli/io.js.map +1 -0
  36. package/dist/cli/run.d.ts +7 -0
  37. package/dist/cli/run.d.ts.map +1 -0
  38. package/dist/cli/run.js +63 -0
  39. package/dist/cli/run.js.map +1 -0
  40. package/dist/client.d.ts +65 -0
  41. package/dist/client.d.ts.map +1 -0
  42. package/dist/client.js +301 -0
  43. package/dist/client.js.map +1 -0
  44. package/dist/cloudflare.d.ts +29 -0
  45. package/dist/cloudflare.d.ts.map +1 -0
  46. package/dist/cloudflare.js +159 -0
  47. package/dist/cloudflare.js.map +1 -0
  48. package/dist/definition/check.d.ts +9 -0
  49. package/dist/definition/check.d.ts.map +1 -0
  50. package/dist/definition/check.js +26 -0
  51. package/dist/definition/check.js.map +1 -0
  52. package/dist/definition/diagnostics.d.ts +29 -0
  53. package/dist/definition/diagnostics.d.ts.map +1 -0
  54. package/dist/definition/diagnostics.js +74 -0
  55. package/dist/definition/diagnostics.js.map +1 -0
  56. package/dist/definition/locate.d.ts +23 -0
  57. package/dist/definition/locate.d.ts.map +1 -0
  58. package/dist/definition/locate.js +211 -0
  59. package/dist/definition/locate.js.map +1 -0
  60. package/dist/definition/parse.d.ts +15 -0
  61. package/dist/definition/parse.d.ts.map +1 -0
  62. package/dist/definition/parse.js +170 -0
  63. package/dist/definition/parse.js.map +1 -0
  64. package/dist/definition/schema.d.ts +39 -0
  65. package/dist/definition/schema.d.ts.map +1 -0
  66. package/dist/definition/schema.js +11 -0
  67. package/dist/definition/schema.js.map +1 -0
  68. package/dist/dev/cache.d.ts +58 -0
  69. package/dist/dev/cache.d.ts.map +1 -0
  70. package/dist/dev/cache.js +287 -0
  71. package/dist/dev/cache.js.map +1 -0
  72. package/dist/dev/index.d.ts +2 -0
  73. package/dist/dev/index.d.ts.map +1 -0
  74. package/dist/dev/index.js +3 -0
  75. package/dist/dev/index.js.map +1 -0
  76. package/dist/factors/evaluate.d.ts +21 -0
  77. package/dist/factors/evaluate.d.ts.map +1 -0
  78. package/dist/factors/evaluate.js +199 -0
  79. package/dist/factors/evaluate.js.map +1 -0
  80. package/dist/factors/graph.d.ts +7 -0
  81. package/dist/factors/graph.d.ts.map +1 -0
  82. package/dist/factors/graph.js +39 -0
  83. package/dist/factors/graph.js.map +1 -0
  84. package/dist/factors/schema.d.ts +54 -0
  85. package/dist/factors/schema.d.ts.map +1 -0
  86. package/dist/factors/schema.js +235 -0
  87. package/dist/factors/schema.js.map +1 -0
  88. package/dist/generate/generate.d.ts +16 -0
  89. package/dist/generate/generate.d.ts.map +1 -0
  90. package/dist/generate/generate.js +100 -0
  91. package/dist/generate/generate.js.map +1 -0
  92. package/dist/generate/types.d.ts +10 -0
  93. package/dist/generate/types.d.ts.map +1 -0
  94. package/dist/generate/types.js +126 -0
  95. package/dist/generate/types.js.map +1 -0
  96. package/dist/index.d.ts +15 -0
  97. package/dist/index.d.ts.map +1 -0
  98. package/dist/index.js +13 -0
  99. package/dist/index.js.map +1 -0
  100. package/dist/json.d.ts +6 -0
  101. package/dist/json.d.ts.map +1 -0
  102. package/dist/json.js +52 -0
  103. package/dist/json.js.map +1 -0
  104. package/dist/model.d.ts +9 -0
  105. package/dist/model.d.ts.map +1 -0
  106. package/dist/model.js +22 -0
  107. package/dist/model.js.map +1 -0
  108. package/dist/native.d.ts +97 -0
  109. package/dist/native.d.ts.map +1 -0
  110. package/dist/native.js +2 -0
  111. package/dist/native.js.map +1 -0
  112. package/dist/patterns/index.d.ts +3 -0
  113. package/dist/patterns/index.d.ts.map +1 -0
  114. package/dist/patterns/index.js +3 -0
  115. package/dist/patterns/index.js.map +1 -0
  116. package/dist/patterns/options.d.ts +2 -0
  117. package/dist/patterns/options.d.ts.map +1 -0
  118. package/dist/patterns/options.js +7 -0
  119. package/dist/patterns/options.js.map +1 -0
  120. package/dist/patterns/run-many.d.ts +41 -0
  121. package/dist/patterns/run-many.d.ts.map +1 -0
  122. package/dist/patterns/run-many.js +51 -0
  123. package/dist/patterns/run-many.js.map +1 -0
  124. package/dist/patterns/walk-taxonomy.d.ts +37 -0
  125. package/dist/patterns/walk-taxonomy.d.ts.map +1 -0
  126. package/dist/patterns/walk-taxonomy.js +81 -0
  127. package/dist/patterns/walk-taxonomy.js.map +1 -0
  128. package/dist/questions/references.d.ts +12 -0
  129. package/dist/questions/references.d.ts.map +1 -0
  130. package/dist/questions/references.js +76 -0
  131. package/dist/questions/references.js.map +1 -0
  132. package/dist/questions/schema.d.ts +18 -0
  133. package/dist/questions/schema.d.ts.map +1 -0
  134. package/dist/questions/schema.js +169 -0
  135. package/dist/questions/schema.js.map +1 -0
  136. package/dist/state/paths.d.ts +13 -0
  137. package/dist/state/paths.d.ts.map +1 -0
  138. package/dist/state/paths.js +70 -0
  139. package/dist/state/paths.js.map +1 -0
  140. package/dist/state/requirements.d.ts +25 -0
  141. package/dist/state/requirements.d.ts.map +1 -0
  142. package/dist/state/requirements.js +189 -0
  143. package/dist/state/requirements.js.map +1 -0
  144. package/docs/SPEC.html +57 -0
  145. package/docs/skills/systemoneprompts/SKILL.md +239 -0
  146. package/docs/skills/systemoneprompts/references/application-data.md +79 -0
  147. package/package.json +94 -0
@@ -0,0 +1,314 @@
1
+ import { writeFile } from "node:fs/promises";
2
+ import { resolve } from "node:path";
3
+ import { createFactorEvaluator, NOUL_CUTOFF } from "../factors/evaluate.js";
4
+ import { COMPARATOR_KEYS } from "../factors/schema.js";
5
+ import { isJsonValue, isPlainObject } from "../json.js";
6
+ import { createStateAssert } from "../state/requirements.js";
7
+ import { createClient, fail, loadChecked, readText } from "./io.js";
8
+ export async function runEval(file, options) {
9
+ if (!file || !options.cases) {
10
+ fail("systemoneprompts eval <file> --cases cases.jsonl [--cache] [--sweep factor] [--report out.json] [--model name]");
11
+ }
12
+ if (options.report &&
13
+ (resolve(options.report) === resolve(file) ||
14
+ resolve(options.report) === resolve(options.cases))) {
15
+ fail("--report must not overwrite the definition or cases input");
16
+ }
17
+ const def = await loadChecked(file);
18
+ const cases = parseJsonl(await readText(options.cases), options.cases, def);
19
+ const evaluate = createFactorEvaluator(def.factorDefinitions);
20
+ const assertState = createStateAssert(def.requires);
21
+ const stateErrors = [];
22
+ for (const [index, testCase] of cases.entries()) {
23
+ try {
24
+ assertState(testCase.state);
25
+ }
26
+ catch (error) {
27
+ const id = testCase.id ?? String(index);
28
+ stateErrors.push(`case ${id}: ${error instanceof Error ? error.message : String(error)}`);
29
+ }
30
+ }
31
+ if (stateErrors.length > 0) {
32
+ for (const message of stateErrors)
33
+ console.error(message);
34
+ fail(`${stateErrors.length} invalid eval case(s)`);
35
+ }
36
+ const sweep = options.sweep ? prepareSweep(options.sweep, def) : undefined;
37
+ if (sweep &&
38
+ !cases.some((testCase) => groundTruth(sweep.id, sweep.ref, sweep.field, sweep.key, testCase) !== undefined)) {
39
+ fail(`--sweep: no usable truth samples for factor \`${sweep.id}\``);
40
+ }
41
+ const questionStats = Object.create(null);
42
+ const factorStats = Object.create(null);
43
+ const nearThreshold = Object.create(null);
44
+ const predictions = [];
45
+ let errors = 0;
46
+ const { client, model, cache } = createClient(def, options);
47
+ for (const [index, testCase] of cases.entries()) {
48
+ const id = testCase.id ?? String(index);
49
+ try {
50
+ const response = await client.systemOne({
51
+ state: testCase.state,
52
+ questions: def.questions,
53
+ model,
54
+ });
55
+ for (const [qid, expected] of Object.entries(testCase.labels ?? {})) {
56
+ const answer = response.answers[qid];
57
+ const stats = (questionStats[qid] ??= {
58
+ correct: 0,
59
+ total: 0,
60
+ confusion: Object.create(null),
61
+ });
62
+ stats.total += 1;
63
+ const predicted = labelOf(answer) ?? "<none>";
64
+ const expectedLabel = String(expected);
65
+ if (predicted === expectedLabel)
66
+ stats.correct += 1;
67
+ const row = (stats.confusion[expectedLabel] ??= Object.create(null));
68
+ row[predicted] = (row[predicted] ?? 0) + 1;
69
+ recordNear(qid, answer, nearThreshold);
70
+ }
71
+ let factors;
72
+ try {
73
+ factors = evaluate(response.answers);
74
+ }
75
+ catch (error) {
76
+ errors += 1;
77
+ console.error(`case ${id}: factor evaluation failed: ${error instanceof Error ? error.message : String(error)}`);
78
+ continue;
79
+ }
80
+ predictions.push({ id, answers: response.answers, factors, testCase });
81
+ for (const [fid, expected] of Object.entries(testCase.factors ?? {})) {
82
+ const stats = (factorStats[fid] ??= { correct: 0, total: 0 });
83
+ stats.total += 1;
84
+ if (factors[fid] === expected)
85
+ stats.correct += 1;
86
+ }
87
+ }
88
+ catch (error) {
89
+ errors += 1;
90
+ console.error(`case ${id}: ${error instanceof Error ? error.message : String(error)}`);
91
+ }
92
+ }
93
+ const report = {
94
+ file,
95
+ model,
96
+ cases: cases.length,
97
+ errors,
98
+ questions: Object.fromEntries(Object.entries(questionStats).map(([id, s]) => [
99
+ id,
100
+ { ...withAccuracy(s), confusion: s.confusion },
101
+ ])),
102
+ factors: Object.fromEntries(Object.entries(factorStats).map(([id, s]) => [id, withAccuracy(s)])),
103
+ near_threshold: nearThreshold,
104
+ cache: cache?.stats(),
105
+ };
106
+ if (sweep)
107
+ report.sweep = sweepFactor(sweep, predictions);
108
+ await finishEval(report, options.report, errors);
109
+ }
110
+ async function finishEval(report, reportPath, errors) {
111
+ if (reportPath) {
112
+ await writeFile(reportPath, `${JSON.stringify(report, null, 2)}\n`);
113
+ console.log(reportPath);
114
+ }
115
+ else {
116
+ console.log(JSON.stringify(report, null, 2));
117
+ }
118
+ if (errors > 0)
119
+ process.exitCode = 1;
120
+ }
121
+ function parseJsonl(text, what, def) {
122
+ const lines = text.split(/\r?\n/);
123
+ const cases = [];
124
+ const errors = [];
125
+ for (const [i, raw] of lines.entries()) {
126
+ const line = raw.trim();
127
+ if (!line || line.startsWith("#"))
128
+ continue;
129
+ let parsed;
130
+ try {
131
+ parsed = JSON.parse(line);
132
+ }
133
+ catch (error) {
134
+ errors.push(`${what}:${i + 1}: ${error instanceof Error ? error.message : String(error)}`);
135
+ continue;
136
+ }
137
+ const validation = validateCase(parsed, def);
138
+ if (validation.length > 0) {
139
+ for (const message of validation)
140
+ errors.push(`${what}:${i + 1}: ${message}`);
141
+ continue;
142
+ }
143
+ cases.push(parsed);
144
+ }
145
+ if (errors.length > 0) {
146
+ for (const message of errors)
147
+ console.error(message);
148
+ fail(`${errors.length} invalid eval case error(s)`);
149
+ }
150
+ return cases;
151
+ }
152
+ function validateCase(value, def) {
153
+ if (!isPlainObject(value))
154
+ return ["each case must be an object"];
155
+ const errors = [];
156
+ if (Object.hasOwn(value, "id") && typeof value.id !== "string") {
157
+ errors.push("`id` must be a string");
158
+ }
159
+ if (!Object.hasOwn(value, "state")) {
160
+ errors.push("each case needs a `state` field");
161
+ }
162
+ else if (!isEvalState(value.state)) {
163
+ errors.push("`state` must be null, a string, object, or array");
164
+ }
165
+ if (Object.hasOwn(value, "labels")) {
166
+ if (!isPlainObject(value.labels)) {
167
+ errors.push("`labels` must be an object");
168
+ }
169
+ else {
170
+ for (const [id, expected] of Object.entries(value.labels)) {
171
+ if (!Object.hasOwn(def.questions, id)) {
172
+ errors.push(`labels.${id}: unknown question id`);
173
+ continue;
174
+ }
175
+ const question = def.questions[id];
176
+ if (question.type === "choice") {
177
+ if (typeof expected !== "string") {
178
+ errors.push(`labels.${id}: expected a Choice label string`);
179
+ }
180
+ else if (!Object.hasOwn(question.criteria, expected)) {
181
+ errors.push(`labels.${id}: unknown Choice label \`${expected}\``);
182
+ }
183
+ }
184
+ else if (question.type === "noul") {
185
+ if (typeof expected !== "boolean") {
186
+ errors.push(`labels.${id}: expected a Noul boolean`);
187
+ }
188
+ }
189
+ else if (typeof expected !== "number" ||
190
+ !Number.isInteger(expected) ||
191
+ expected < 0 ||
192
+ expected >= question.criteria.length) {
193
+ errors.push(`labels.${id}: expected a Score integer from 0 through ${question.criteria.length - 1}`);
194
+ }
195
+ }
196
+ }
197
+ }
198
+ if (Object.hasOwn(value, "factors")) {
199
+ if (!isPlainObject(value.factors)) {
200
+ errors.push("`factors` must be an object");
201
+ }
202
+ else {
203
+ for (const [id, expected] of Object.entries(value.factors)) {
204
+ if (!Object.hasOwn(def.factorDefinitions, id)) {
205
+ errors.push(`factors.${id}: unknown factor id`);
206
+ }
207
+ else if (typeof expected !== "boolean") {
208
+ errors.push(`factors.${id}: expected a boolean`);
209
+ }
210
+ }
211
+ }
212
+ }
213
+ return errors;
214
+ }
215
+ function isEvalState(value) {
216
+ return (isJsonValue(value) &&
217
+ (value === null || typeof value === "string" || isPlainObject(value) || Array.isArray(value)));
218
+ }
219
+ function prepareSweep(id, def) {
220
+ if (!Object.hasOwn(def.factorDefinitions, id))
221
+ fail(`--sweep: unknown factor \`${id}\``);
222
+ const table = def.factorDefinitions[id];
223
+ if (typeof table.ref !== "string") {
224
+ fail(`--sweep: factor \`${id}\` is not a predicate; only predicates can be swept`);
225
+ }
226
+ const field = ["noul", "score", "confidence"].find((candidate) => isPlainObject(table[candidate]));
227
+ if (!field)
228
+ fail(`--sweep: factor \`${id}\` has no numeric comparator to sweep`);
229
+ const comparator = table[field];
230
+ if (!isPlainObject(comparator))
231
+ fail(`--sweep: factor \`${id}\` has an invalid comparator`);
232
+ const keys = COMPARATOR_KEYS.filter((key) => comparator[key] !== undefined);
233
+ if (keys.length !== 1) {
234
+ fail(`--sweep: factor \`${id}\` comparator must have exactly one operator to sweep`);
235
+ }
236
+ const question = def.questions[table.ref];
237
+ const thresholds = field === "score" && question?.type === "score"
238
+ ? range(0, question.criteria.length - 1, 0.1)
239
+ : range(0.05, 0.95, 0.05);
240
+ return { id, ref: table.ref, field, key: keys[0], table, thresholds };
241
+ }
242
+ function withAccuracy(t) {
243
+ return { accuracy: t.total === 0 ? 0 : t.correct / t.total, correct: t.correct, total: t.total };
244
+ }
245
+ /** The comparable label of an answer: Choice label, Noul as `true`/`false`, Score rounded to a level. */
246
+ function labelOf(answer) {
247
+ if (!isPlainObject(answer))
248
+ return undefined;
249
+ if (answer.type === "choice" && typeof answer.choice === "string")
250
+ return answer.choice;
251
+ if (answer.type === "noul" && typeof answer.noul === "number") {
252
+ return String(answer.noul >= NOUL_CUTOFF);
253
+ }
254
+ if (answer.type === "score" && typeof answer.score === "number") {
255
+ return String(Math.round(answer.score));
256
+ }
257
+ return undefined;
258
+ }
259
+ /** Count answers whose value sits close to a decision boundary — the ones worth inspecting. */
260
+ function recordNear(id, answer, dest) {
261
+ if (!isPlainObject(answer))
262
+ return;
263
+ if (typeof answer.noul === "number" && Math.abs(answer.noul - NOUL_CUTOFF) <= 0.1) {
264
+ dest[id] = (dest[id] ?? 0) + 1;
265
+ }
266
+ if (typeof answer.confidence === "number" &&
267
+ answer.confidence >= 0.4 &&
268
+ answer.confidence < 0.75) {
269
+ dest[`${id}.confidence`] = (dest[`${id}.confidence`] ?? 0) + 1;
270
+ }
271
+ }
272
+ /**
273
+ * Re-evaluate a predicate factor across a range of thresholds using the real evaluator,
274
+ * so any other fields on the predicate (`choice = …`, a second comparator) stay in force.
275
+ * Ground truth is the case's expected value for the factor; for a Noul predicate a
276
+ * Boolean label on the referenced question is accepted as a fallback.
277
+ */
278
+ function sweepFactor(sweep, predictions) {
279
+ const { id, ref, field, key, table, thresholds } = sweep;
280
+ const rows = thresholds.map((threshold) => {
281
+ const swept = { ...table, [field]: { [key]: threshold } };
282
+ const evaluate = createFactorEvaluator({ [id]: swept });
283
+ let correct = 0;
284
+ let total = 0;
285
+ for (const pred of predictions) {
286
+ const want = groundTruth(id, ref, field, key, pred.testCase);
287
+ if (want === undefined)
288
+ continue;
289
+ const predicted = evaluate(pred.answers)[id];
290
+ total += 1;
291
+ if (predicted === want)
292
+ correct += 1;
293
+ }
294
+ return { threshold, ...withAccuracy({ correct, total }) };
295
+ });
296
+ return { factor: id, ref, field, comparator: key, rows };
297
+ }
298
+ function groundTruth(id, ref, field, key, testCase) {
299
+ const expected = testCase.factors?.[id];
300
+ if (typeof expected === "boolean")
301
+ return expected;
302
+ const label = testCase.labels?.[ref];
303
+ if (field === "noul" && typeof label === "boolean") {
304
+ return key === "lt" || key === "lte" ? !label : label;
305
+ }
306
+ return undefined;
307
+ }
308
+ function range(from, to, step) {
309
+ const out = [];
310
+ for (let t = from; t <= to + 1e-9; t += step)
311
+ out.push(Number(t.toFixed(2)));
312
+ return out;
313
+ }
314
+ //# sourceMappingURL=eval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.js","sourceRoot":"","sources":["../../src/cli/eval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAmB,qBAAqB,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAwC,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAkCpE,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAwB,EACxB,OAA6F;IAE7F,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CACF,gHAAgH,CACjH,CAAC;IACJ,CAAC;IACD,IACE,OAAO,CAAC,MAAM;QACd,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC;YACxC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACrD,CAAC;QACD,IAAI,CAAC,2DAA2D,CAAC,CAAC;IACpE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAgB,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;YACxC,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5F,CAAC;IACH,CAAC;IACD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,MAAM,OAAO,IAAI,WAAW;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,uBAAuB,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,IACE,KAAK;QACL,CAAC,KAAK,CAAC,IAAI,CACT,CAAC,QAAQ,EAAE,EAAE,CACX,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,SAAS,CACnF,EACD,CAAC;QACD,IAAI,CAAC,iDAAiD,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,aAAa,GAGf,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,WAAW,GAA0B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/D,MAAM,aAAa,GAA2B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAClE,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5D,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QAChD,MAAM,EAAE,GAAG,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC;gBACtC,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;gBACxB,KAAK;aACN,CAAC,CAAC;YAEH,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;gBACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBACrC,MAAM,KAAK,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK;oBACpC,OAAO,EAAE,CAAC;oBACV,KAAK,EAAE,CAAC;oBACR,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;iBAC/B,CAAC,CAAC;gBACH,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;gBACjB,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;gBAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACvC,IAAI,SAAS,KAAK,aAAa;oBAAE,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;gBACpD,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;gBACrE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC3C,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;YACzC,CAAC;YAED,IAAI,OAAgC,CAAC;YACrC,IAAI,CAAC;gBACH,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,CAAC,CAAC;gBACZ,OAAO,CAAC,KAAK,CACX,QAAQ,EAAE,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAClG,CAAC;gBACF,SAAS;YACX,CAAC;YACD,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;YACvE,KAAK,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;gBACrE,MAAM,KAAK,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9D,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;gBACjB,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAAE,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,CAAC;YACZ,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAA4B;QACtC,IAAI;QACJ,KAAK;QACL,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,MAAM;QACN,SAAS,EAAE,MAAM,CAAC,WAAW,CAC3B,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC7C,EAAE;YACF,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE;SAC/C,CAAC,CACH;QACD,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CACpE;QACD,cAAc,EAAE,aAAa;QAC7B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE;KACtB,CAAC;IACF,IAAI,KAAK;QAAE,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1D,MAAM,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,MAA+B,EAC/B,UAA8B,EAC9B,MAAc;IAEd,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,SAAS,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,GAAe;IAC7D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC;QACvC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5C,IAAI,MAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;QACvC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC3F,SAAS;QACX,CAAC;QACD,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAC7C,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,KAAK,MAAM,OAAO,IAAI,UAAU;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;YAC9E,SAAS;QACX,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,MAA6B,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,MAAM,OAAO,IAAI,MAAM;YAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrD,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,6BAA6B,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAc,EAAE,GAAe;IACnD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,6BAA6B,CAAC,CAAC;IAClE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;QACnC,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;IACjD,CAAC;SAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC;oBACtC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,uBAAuB,CAAC,CAAC;oBACjD,SAAS;gBACX,CAAC;gBACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,CAAE,CAAC;gBACpC,IAAI,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC/B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACjC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,kCAAkC,CAAC,CAAC;oBAC9D,CAAC;yBAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;wBACvD,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,4BAA4B,QAAQ,IAAI,CAAC,CAAC;oBACpE,CAAC;gBACH,CAAC;qBAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACpC,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;wBAClC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,2BAA2B,CAAC,CAAC;oBACvD,CAAC;gBACH,CAAC;qBAAM,IACL,OAAO,QAAQ,KAAK,QAAQ;oBAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC;oBAC3B,QAAQ,GAAG,CAAC;oBACZ,QAAQ,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EACpC,CAAC;oBACD,MAAM,CAAC,IAAI,CACT,UAAU,EAAE,6CAA6C,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CACxF,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,EAAE,CAAC;oBAC9C,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;gBAClD,CAAC;qBAAM,IAAI,OAAO,QAAQ,KAAK,SAAS,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,WAAW,CAAC,KAAK,CAAC;QAClB,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAC9F,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,EAAU,EAAE,GAAe;IAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;QAAE,IAAI,CAAC,6BAA6B,EAAE,IAAI,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAE,CAAC;IACzC,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAClC,IAAI,CAAC,qBAAqB,EAAE,qDAAqD,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,KAAK,GAAI,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAW,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAC1E,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAChC,CAAC;IACF,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,qBAAqB,EAAE,uCAAuC,CAAC,CAAC;IACjF,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;IAChC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC;QAAE,IAAI,CAAC,qBAAqB,EAAE,8BAA8B,CAAC,CAAC;IAC5F,MAAM,IAAI,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;IAC5E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,qBAAqB,EAAE,uDAAuD,CAAC,CAAC;IACvF,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,UAAU,GACd,KAAK,KAAK,OAAO,IAAI,QAAQ,EAAE,IAAI,KAAK,OAAO;QAC7C,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,CAAC;QAC7C,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAC9B,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACzE,CAAC;AAED,SAAS,YAAY,CAAC,CAAQ;IAC5B,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;AACnG,CAAC;AAED,yGAAyG;AACzG,SAAS,OAAO,CAAC,MAAe;IAC9B,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAC;IAC7C,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IACxF,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9D,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+FAA+F;AAC/F,SAAS,UAAU,CAAC,EAAU,EAAE,MAAe,EAAE,IAA4B;IAC3E,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QAAE,OAAO;IACnC,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,GAAG,EAAE,CAAC;QAClF,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjC,CAAC;IACD,IACE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ;QACrC,MAAM,CAAC,UAAU,IAAI,GAAG;QACxB,MAAM,CAAC,UAAU,GAAG,IAAI,EACxB,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAY,EAAE,WAAyB;IAC1D,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACzD,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;QACxC,MAAM,KAAK,GAAgB,EAAE,GAAG,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,qBAAqB,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7D,IAAI,IAAI,KAAK,SAAS;gBAAE,SAAS;YACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;YAC7C,KAAK,IAAI,CAAC,CAAC;YACX,IAAI,SAAS,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC,CAAC;QACvC,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,GAAG,YAAY,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;AAC3D,CAAC;AAED,SAAS,WAAW,CAClB,EAAU,EACV,GAAW,EACX,KAAsC,EACtC,GAAkB,EAClB,QAAkB;IAElB,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,OAAO,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,KAAK,MAAM,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;IACxD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,KAAK,CAAC,IAAY,EAAE,EAAU,EAAE,IAAY;IACnD,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI;QAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare function runGenerate(files: string[], options: {
2
+ out?: string;
3
+ check?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CA8Ef"}
@@ -0,0 +1,93 @@
1
+ import { mkdir, readFile, writeFile } from "node:fs/promises";
2
+ import { basename, dirname, join, resolve } from "node:path";
3
+ import { checkDefinition } from "../definition/check.js";
4
+ import { hasErrors, SystemOnePromptsError } from "../definition/diagnostics.js";
5
+ import { parseDefinition } from "../definition/parse.js";
6
+ import { emitGenerated } from "../generate/generate.js";
7
+ import { fail, printDiagnostics, readText } from "./io.js";
8
+ export async function runGenerate(files, options) {
9
+ if (files.length === 0)
10
+ fail("systemoneprompts generate <files...> [--out dir] [--check]");
11
+ const outputPaths = new Map();
12
+ for (const file of files) {
13
+ if (!/\.toml$/i.test(file)) {
14
+ console.error(`error: ${file}: source file must have a .toml extension`);
15
+ process.exit(1);
16
+ }
17
+ const outPath = outputPath(file, options.out);
18
+ const resolved = resolve(outPath);
19
+ outputPaths.set(resolved, [...(outputPaths.get(resolved) ?? []), file]);
20
+ if (resolve(file) === resolved) {
21
+ console.error(`error: refusing to overwrite source file ${file}`);
22
+ process.exit(1);
23
+ }
24
+ }
25
+ const duplicates = [...outputPaths.entries()].filter(([, sources]) => sources.length > 1);
26
+ if (duplicates.length > 0) {
27
+ for (const [outPath, sources] of duplicates) {
28
+ console.error(`error: duplicate output path ${outPath} for ${sources.join(", ")}`);
29
+ }
30
+ process.exit(1);
31
+ }
32
+ let failed = 0;
33
+ for (const file of files) {
34
+ let def;
35
+ try {
36
+ const source = await readText(file);
37
+ def = parseDefinition(source, { filename: file });
38
+ }
39
+ catch (error) {
40
+ failed += 1;
41
+ if (error instanceof SystemOnePromptsError)
42
+ printDiagnostics(error.diagnostics);
43
+ else
44
+ console.error(`error: ${file}: ${error instanceof Error ? error.message : String(error)}`);
45
+ continue;
46
+ }
47
+ const diagnostics = checkDefinition(def);
48
+ printDiagnostics(diagnostics);
49
+ if (hasErrors(diagnostics)) {
50
+ failed += 1;
51
+ continue;
52
+ }
53
+ const generated = emitGenerated(def, file);
54
+ const outPath = outputPath(file, options.out);
55
+ if (options.check) {
56
+ let existing;
57
+ try {
58
+ existing = await readFile(outPath, "utf8");
59
+ }
60
+ catch (error) {
61
+ if (error.code === "ENOENT") {
62
+ console.error(`missing generated file: ${outPath}`);
63
+ }
64
+ else {
65
+ console.error(`error: ${outPath}: ${error instanceof Error ? error.message : String(error)}`);
66
+ }
67
+ failed += 1;
68
+ continue;
69
+ }
70
+ if (existing !== generated) {
71
+ console.error(`stale generated file: ${outPath}`);
72
+ failed += 1;
73
+ }
74
+ continue;
75
+ }
76
+ try {
77
+ await mkdir(dirname(outPath), { recursive: true });
78
+ await writeFile(outPath, generated);
79
+ console.log(outPath);
80
+ }
81
+ catch (error) {
82
+ failed += 1;
83
+ console.error(`error: ${outPath}: ${error instanceof Error ? error.message : String(error)}`);
84
+ }
85
+ }
86
+ if (failed > 0)
87
+ process.exit(1);
88
+ }
89
+ function outputPath(file, outDir) {
90
+ const name = basename(file).replace(/\.toml$/i, ".generated.ts");
91
+ return join(outDir ?? dirname(file), name);
92
+ }
93
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/cli/generate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,76 @@
1
+ #!/usr/bin/env node
2
+ import { parseArgs } from "node:util";
3
+ import { runCache } from "./cache.js";
4
+ import { runCheck } from "./check.js";
5
+ import { runEval } from "./eval.js";
6
+ import { runGenerate } from "./generate.js";
7
+ import { fail } from "./io.js";
8
+ import { runRun } from "./run.js";
9
+ const USAGE = `systemoneprompts <command> [options]
10
+
11
+ Commands:
12
+ check <files...> [--strict]
13
+ generate <files...> [--out dir] [--check]
14
+ run <file> --state s.json | <stdin> [--cache] [--json] [--model name]
15
+ eval <file> --cases cases.jsonl [--cache] [--sweep factor] [--report out.json] [--model name]
16
+ cache stats | clear
17
+ `;
18
+ async function main() {
19
+ const { values, positionals } = parseArgs({
20
+ args: process.argv.slice(2),
21
+ allowPositionals: true,
22
+ options: {
23
+ strict: { type: "boolean", default: false },
24
+ out: { type: "string" },
25
+ check: { type: "boolean", default: false },
26
+ state: { type: "string" },
27
+ cache: { type: "boolean", default: false },
28
+ json: { type: "boolean", default: false },
29
+ cases: { type: "string" },
30
+ sweep: { type: "string" },
31
+ report: { type: "string" },
32
+ model: { type: "string" },
33
+ help: { type: "boolean", default: false },
34
+ },
35
+ });
36
+ if (values.help || positionals.length === 0) {
37
+ console.log(USAGE);
38
+ process.exit(values.help ? 0 : 1);
39
+ }
40
+ const [command, ...rest] = positionals;
41
+ switch (command) {
42
+ case "check":
43
+ await runCheck(rest, Boolean(values.strict));
44
+ break;
45
+ case "generate":
46
+ await runGenerate(rest, { out: values.out, check: Boolean(values.check) });
47
+ break;
48
+ case "run":
49
+ await runRun(rest[0], {
50
+ state: values.state,
51
+ cache: Boolean(values.cache),
52
+ json: Boolean(values.json),
53
+ model: values.model,
54
+ });
55
+ break;
56
+ case "eval":
57
+ await runEval(rest[0], {
58
+ cases: values.cases,
59
+ cache: Boolean(values.cache),
60
+ sweep: values.sweep,
61
+ report: values.report,
62
+ model: values.model,
63
+ });
64
+ break;
65
+ case "cache":
66
+ await runCache(rest[0]);
67
+ break;
68
+ default:
69
+ fail(`unknown command \`${command}\`\n\n${USAGE}`);
70
+ }
71
+ }
72
+ main().catch((error) => {
73
+ console.error(error instanceof Error ? error.message : error);
74
+ process.exit(1);
75
+ });
76
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { TypeSafeClient } from "../client.js";
2
+ import { type Diagnostic } from "../definition/diagnostics.js";
3
+ import type { Definition } from "../definition/schema.js";
4
+ import { type CachingFetch } from "../dev/cache.js";
5
+ export declare function readStdin(): Promise<string>;
6
+ export declare function readText(path: string): Promise<string>;
7
+ /** Parse JSON with a message that names the source instead of a bare "Unexpected token". */
8
+ export declare function parseJson(text: string, what: string): unknown;
9
+ /** Parse and check a definition file; print diagnostics and exit on errors. */
10
+ export declare function loadChecked(file: string): Promise<Definition>;
11
+ /**
12
+ * Build the TypeSafe client for a live CLI call. Model precedence, later wins:
13
+ * default → `TYPESAFE_DEFAULT_MODEL` / `TYPESAFE_MODEL` → TOML `model` → `--model`.
14
+ *
15
+ * Cloudflare mode (`CLOUDFLARE_ACCOUNT_ID`) uses `CLOUDFLARE_API_TOKEN` and is
16
+ * mutually exclusive with `TYPESAFE_BASE_URL`.
17
+ */
18
+ export declare function createClient(def: Definition, options: {
19
+ cache?: boolean;
20
+ model?: string;
21
+ }): {
22
+ client: TypeSafeClient;
23
+ model: string;
24
+ cache?: CachingFetch;
25
+ };
26
+ export declare function printDiagnostics(diagnostics: readonly Diagnostic[], strict?: boolean): number;
27
+ export declare function fail(message: string, code?: number): never;
28
+ //# sourceMappingURL=io.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"io.d.ts","sourceRoot":"","sources":["../../src/cli/io.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAG9C,OAAO,EAAE,KAAK,UAAU,EAA+B,MAAM,8BAA8B,CAAC;AAE5F,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,iBAAiB,CAAC;AAIxE,wBAAsB,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,CAMjD;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE5D;AAED,4FAA4F;AAC5F,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED,+EAA+E;AAC/E,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CASnE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,UAAU,EACf,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C;IAAE,MAAM,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,YAAY,CAAA;CAAE,CAqBjE;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,EAAE,MAAM,UAAQ,GAAG,MAAM,CAa3F;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,SAAI,GAAG,KAAK,CAGrD"}