orizu 0.5.22 → 0.5.23

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 (66) hide show
  1. package/README.md +42 -14
  2. package/dist/cleanup.d.ts +6 -0
  3. package/dist/cleanup.d.ts.map +1 -0
  4. package/dist/cleanup.js +27 -0
  5. package/dist/help.js +3 -3
  6. package/dist/hosted-commands.d.ts +13 -0
  7. package/dist/hosted-commands.d.ts.map +1 -0
  8. package/dist/hosted-commands.js +10 -0
  9. package/dist/hosted-gepa-cli.d.ts +11 -0
  10. package/dist/hosted-gepa-cli.d.ts.map +1 -0
  11. package/dist/hosted-gepa-cli.js +110 -0
  12. package/dist/hosted-gepa-numeric-values.d.ts +3 -0
  13. package/dist/hosted-gepa-numeric-values.d.ts.map +1 -0
  14. package/dist/hosted-gepa-numeric-values.js +49 -0
  15. package/dist/hosted-provider-settings.d.ts +3 -0
  16. package/dist/hosted-provider-settings.d.ts.map +1 -0
  17. package/dist/hosted-provider-settings.js +69 -0
  18. package/dist/hosted-session-cli.d.ts.map +1 -1
  19. package/dist/hosted-session-cli.js +6 -1
  20. package/dist/http.d.ts +1 -0
  21. package/dist/http.d.ts.map +1 -1
  22. package/dist/http.js +7 -0
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +69 -36
  25. package/dist/optimizations-promote-cli.d.ts +3 -0
  26. package/dist/optimizations-promote-cli.d.ts.map +1 -1
  27. package/dist/optimizations-promote-cli.js +75 -7
  28. package/dist/runner-dir-verify.d.ts.map +1 -1
  29. package/dist/runner-dir-verify.js +4 -7
  30. package/dist/skilled-proposer-bake-report.d.ts +2 -0
  31. package/dist/skilled-proposer-bake-report.d.ts.map +1 -0
  32. package/dist/skilled-proposer-bake-report.js +1 -0
  33. package/dist/skilled-proposer-launch.d.ts +22 -0
  34. package/dist/skilled-proposer-launch.d.ts.map +1 -1
  35. package/dist/skilled-proposer-launch.js +39 -6
  36. package/package.json +1 -1
  37. package/scripts/vendor-gepa-python.mjs +81 -12
  38. package/src/cleanup.ts +37 -0
  39. package/src/help.ts +3 -3
  40. package/src/hosted-commands.ts +4 -0
  41. package/src/hosted-gepa-cli.ts +107 -0
  42. package/src/hosted-gepa-numeric-values.ts +60 -0
  43. package/src/hosted-provider-settings.ts +69 -0
  44. package/src/hosted-session-cli.ts +4 -1
  45. package/src/http.ts +8 -0
  46. package/src/index.ts +107 -37
  47. package/src/optimizations-promote-cli.ts +85 -7
  48. package/src/runner-dir-verify.ts +11 -6
  49. package/src/skilled-proposer-bake-report.ts +1 -0
  50. package/src/skilled-proposer-launch.ts +38 -7
  51. package/src/skilled-proposer-venv-manager.mjs +44 -27
  52. package/vendor/orizu-gepa/src/orizu_gepa_connector/runtime.py +7 -2
  53. package/vendor/orizu-gepa-python/src/orizu_gepa/cli.py +1 -0
  54. package/vendor/orizu-gepa-python/src/orizu_gepa/client.py +15 -0
  55. package/vendor/skills/orizu-cli/SKILL.md +94 -202
  56. package/vendor/skills/orizu-cli/references/assess-and-plan.md +107 -0
  57. package/vendor/skills/orizu-cli/references/building-judges.md +442 -180
  58. package/vendor/skills/orizu-cli/references/cli-reference.md +20 -19
  59. package/vendor/skills/orizu-cli/references/dataset-design.md +100 -0
  60. package/vendor/skills/orizu-cli/references/eval-strategy.md +64 -0
  61. package/vendor/skills/orizu-cli/references/instructions-after-prompts.md +12 -17
  62. package/vendor/skills/orizu-cli/references/migrate-existing-gepa-setup.md +78 -70
  63. package/vendor/skills/orizu-cli/references/optimization-reports.md +195 -108
  64. package/vendor/skills/orizu-cli/references/optimization-with-gepa.md +42 -23
  65. package/vendor/skills/orizu-cli/references/primer.md +25 -16
  66. package/vendor/skills/orizu-cli/references/prompt-control-plane.md +94 -73
package/README.md CHANGED
@@ -28,24 +28,52 @@ By default, the CLI talks to `https://orizu.ai`.
28
28
  ## Updating bundled GEPA
29
29
 
30
30
  The CLI ships a verified, source-only copy of official GEPA so optimization
31
- users never need `pip` or a network connection. To upgrade it, make a PR that
32
- updates the version, release commit, and SHA-256 pin in
33
- `scripts/vendor-gepa-python.mjs`, then re-runs the refresh command with the
34
- matching downloaded wheel:
31
+ users never need `pip` or a network connection. From the repository root,
32
+ derive both mandatory pins independently from the downloaded wheel:
35
33
 
36
34
  ```bash
37
- node scripts/vendor-gepa-python.mjs --refresh --archive /path/to/gepa-<version>-py3-none-any.whl
35
+ python3 - /path/to/gepa-<version>-py3-none-any.whl <version> <<'PY'
36
+ import hashlib, json, sys, zipfile
37
+ from pathlib import Path
38
+
39
+ wheel, version = Path(sys.argv[1]), sys.argv[2]
40
+ license_member = f'gepa-{version}.dist-info/licenses/LICENSE'
41
+ files = {}
42
+ with zipfile.ZipFile(wheel) as archive:
43
+ for member in archive.infolist():
44
+ if member.is_dir():
45
+ continue
46
+ if member.filename.startswith('gepa/'):
47
+ path = f'src/{member.filename}'
48
+ elif member.filename == license_member:
49
+ path = 'LICENSE'
50
+ else:
51
+ continue
52
+ files[path] = hashlib.sha256(archive.read(member)).hexdigest()
53
+ entries = sorted(files.items())
54
+ print('GEPA_WHEEL_SHA256=' + hashlib.sha256(wheel.read_bytes()).hexdigest())
55
+ print('GEPA_TREE_SHA256=' + hashlib.sha256(json.dumps(entries, separators=(',', ':')).encode()).hexdigest())
56
+ PY
38
57
  ```
39
58
 
40
- Commit the refreshed `gepa-python-source.zip` and run the CLI packaging test.
41
- `npm pack` verifies that archive and materializes only the shipped source tree;
42
- it never downloads GEPA.
59
+ Update `GEPA_VERSION`, `GEPA_RELEASE_COMMIT`, `GEPA_WHEEL_FILENAME`,
60
+ `GEPA_WHEEL_SHA256`, `GEPA_TREE_SHA256`, and the extractor's license member in
61
+ `packages/cli/scripts/vendor-gepa-python.mjs`. Both SHA-256 constants must
62
+ change together before running the matching refresh command:
63
+
64
+ ```bash
65
+ node packages/cli/scripts/vendor-gepa-python.mjs --refresh --archive /path/to/gepa-<version>-py3-none-any.whl
66
+ ```
67
+
68
+ Commit the refreshed `packages/cli/gepa-python-source.zip`, then run
69
+ `bun test test/cli-gepa-packaging.test.ts test/cli/provision-snapshot.test.ts`.
70
+ These gates cover both pins. `npm pack` never downloads GEPA.
43
71
 
44
72
  For a development checkout, materialize that same verified source before local
45
73
  work that imports GEPA:
46
74
 
47
75
  ```bash
48
- node scripts/vendor-gepa-python.mjs
76
+ node packages/cli/scripts/vendor-gepa-python.mjs
49
77
  ```
50
78
 
51
79
  ## Install
@@ -109,9 +137,9 @@ Agents are first-class users of this CLI: **every command supports `--json`**
109
137
  (as a prefix, `orizu --json teams list`, or a trailing flag) and emits a single
110
138
  machine-readable JSON document instead of formatted text. Discover the full
111
139
  command surface, including global options, with `orizu capabilities --json`.
112
- Hosted agents may read and sync instruction sets and prepare complete manifests,
113
- but a human curator using the local CLI with a user token must run instruction
114
- create, push, shape, archive, restore, and production/default pointer mutations.
140
+ Hosted agents may read and sync instruction sets and prepare complete manifests. A local coding agent using the user's token runs instruction create, push, shape,
141
+ archive, and restore itself after plan ratification. It gathers only read-only pointer-resolution and binding evidence; a human curator executes every production/default pointer command on every surface.
142
+ In a hosted session, a human curator using the local CLI must run both categories.
115
143
 
116
144
  ## Authentication
117
145
 
@@ -196,11 +224,11 @@ orizu logout
196
224
  <td><code>orizu prompts list --project ops-eval/support-qa [--status active|archived|all]</code></td>
197
225
  </tr>
198
226
  <tr>
199
- <td>Archive or restore an instruction set (human/local CLI only)</td>
227
+ <td>Archive or restore an instruction set (local agent or human; hosted human only)</td>
200
228
  <td><code>orizu instructions archive &lt;slug-or-exact-name&gt; --project ops-eval/support-qa</code><br><code>orizu instructions restore &lt;slug-or-exact-name&gt; --project ops-eval/support-qa</code></td>
201
229
  </tr>
202
230
  <tr>
203
- <td>Push an instruction-set manifest (human/local CLI only)</td>
231
+ <td>Push an instruction-set manifest (local agent or human; hosted human only)</td>
204
232
  <td><code>orizu instructions push ./orizu.instruction-set.json --project ops-eval/support-qa --set &lt;slug-or-exact-name&gt;</code></td>
205
233
  </tr>
206
234
  <tr>
@@ -0,0 +1,6 @@
1
+ export type Cleanup = () => void;
2
+ /** Attempt every disposer even when an earlier cleanup fails. */
3
+ export declare function cleanupAll(cleanups: readonly Cleanup[], message: string): void;
4
+ /** Preserve the operation failure together with every cleanup failure. */
5
+ export declare function throwWithCleanup(operationError: unknown, cleanups: readonly Cleanup[], message: string): never;
6
+ //# sourceMappingURL=cleanup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanup.d.ts","sourceRoot":"","sources":["../src/cleanup.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG,MAAM,IAAI,CAAA;AAchC,iEAAiE;AACjE,wBAAgB,UAAU,CACxB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,MAAM,GACd,IAAI,CAKN;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,OAAO,EAAE,MAAM,GACd,KAAK,CAMP"}
@@ -0,0 +1,27 @@
1
+ function collectCleanupFailures(cleanups) {
2
+ const failures = [];
3
+ for (const cleanup of cleanups) {
4
+ try {
5
+ cleanup();
6
+ }
7
+ catch (error) {
8
+ failures.push(error);
9
+ }
10
+ }
11
+ return failures;
12
+ }
13
+ /** Attempt every disposer even when an earlier cleanup fails. */
14
+ export function cleanupAll(cleanups, message) {
15
+ const failures = collectCleanupFailures(cleanups);
16
+ if (failures.length > 0) {
17
+ throw new AggregateError(failures, message);
18
+ }
19
+ }
20
+ /** Preserve the operation failure together with every cleanup failure. */
21
+ export function throwWithCleanup(operationError, cleanups, message) {
22
+ const cleanupFailures = collectCleanupFailures(cleanups);
23
+ if (cleanupFailures.length > 0) {
24
+ throw new AggregateError([operationError, ...cleanupFailures], message);
25
+ }
26
+ throw operationError;
27
+ }
package/dist/help.js CHANGED
@@ -128,7 +128,7 @@ export const COMMAND_DOCS = [
128
128
  },
129
129
  {
130
130
  path: ['log'],
131
- usage: 'orizu log <event_type> --run-id <id> --sequence <n> --payload @event.json',
131
+ usage: 'orizu log <event_type> --run-id <id> --sequence <n> --payload @event.json [--event-id <id>] [--event-layer <layer>] [--optimizer-family <family>] [--iteration <n>] [--candidate-id <id>] [--parent-candidate-id <id>] [--child-candidate-id <id>]',
132
132
  summary: 'Submit an optimization event payload.',
133
133
  group: 'Optimizations',
134
134
  },
@@ -575,8 +575,8 @@ export const COMMAND_DOCS = [
575
575
  },
576
576
  {
577
577
  path: ['optimizations', 'run-gepa'],
578
- usage: 'orizu optimizations run-gepa --project <team/project> --optimizer-version-id <id> (--candidate-version-id <id> | --instruction-set <name> --model-config <identity> [--component-selector round-robin|all]) --runner-version-id <id> --candidate-runner-dir <dir> --scorer-version-id <id> --scorer-runner-version-id <id> --scorer-runner-dir <dir> [--engine official|legacy] [--candidate-proposer skilled-proposer [--candidate-proposer-config <@file|path>] [--proposal-max-calls <n>] [--proposal-max-tokens <n>]] [--scorer-input-contract gepa|flat_row] [--scorer-candidate-field <row-field>] [--allow-degenerate-seed] --dataset-version-id <id> --split-set-id <id> [--train-split train] [--val-split validation] [--budget auto|light|medium|heavy | --max-metric-calls <n> | --max-full-evals <n> | --max-iterations <n> | --max-candidate-proposals <n>] [--num-threads auto|N] [--reflection-max-tokens N] [--reflection-retry-attempts N] [--reflection-http-timeout-seconds N] [--log-dir logs]',
579
- summary: 'Run official GEPA locally and stream events; pass --engine legacy only for the frozen safety hatch. Skilled-proposer is official-only, its config requires that selection, and the selection cannot be combined with --reflection-prompt-template. --instruction-set requires --model-config and cannot be combined with --candidate-version-id; round-robin updates one component-map entry per round and all updates every component. --max-candidate-proposals is official-engine-only. Validates the scorer contract on the seed before iterating; judge runners built for flat-row score runs need --scorer-input-contract flat_row (ALI-1158).',
578
+ usage: 'orizu optimizations run-gepa [--hosted [--launch-intent-id <uuid>]] --project <team/project> --optimizer-version-id <id> (--candidate-version-id <id> | --instruction-set <name> --model-config <identity> [--component-selector round-robin|all]) --runner-version-id <id> [--candidate-runner-dir <dir>] --scorer-version-id <id> --scorer-runner-version-id <id> [--scorer-runner-dir <dir>] [--engine official|legacy] [--candidate-proposer skilled-proposer [--candidate-proposer-config <@file|path>] [--proposal-max-calls <n>] [--proposal-max-tokens <n>]] [--scorer-input-contract gepa|flat_row] [--scorer-candidate-field <row-field>] [--allow-degenerate-seed] [--seed <n>] --dataset-version-id <id> --split-set-id <id> [--train-split train] [--val-split validation] [--minibatch-size <n>] [--candidate-selection-strategy pareto|current_best|epsilon_greedy] [--epsilon <n>] [--objective <text>] [--budget auto|light|medium|heavy | --max-metric-calls <n> | --max-full-evals <n> | --max-iterations <n> | --max-candidate-proposals <n>] [--num-threads auto|N] [--reflection-model <provider/model>] [--reflection-temperature <n>] [--reflection-prompt-template <text|@file>] [--reflection-max-tokens N] [--reflection-provider-settings <json|@file>] [--reflection-retry-attempts N] [--reflection-http-timeout-seconds N] [--skip-perfect-parent-reflection|--no-skip-perfect-parent-reflection] [--disable-evaluation-cache] [--auto-promote] [--promotion-label <label>] [--log-row-snapshots] [--metadata <json>] [--python <command>] [--log-dir logs] [--no-local-log] [--json]',
579
+ summary: 'Run official GEPA locally and stream events, or use --hosted for a queued Orizu launch. Hosted mode does not require --candidate-runner-dir or --scorer-runner-dir, accepts only a named --budget preset, and supports response-loss recovery with --launch-intent-id. Local runner version ids materialize registered bytes, while optional runner dirs are additionally byte-verified before execution. Pass --engine legacy only for the frozen safety hatch. Skilled-proposer is official-only, its config requires that selection, and the selection cannot be combined with --reflection-prompt-template. --instruction-set requires --model-config and cannot be combined with --candidate-version-id; round-robin updates one component-map entry per round and all updates every component. --max-candidate-proposals is official-engine-only. Validates the scorer contract on the seed before iterating; judge runners built for flat-row score runs need --scorer-input-contract flat_row (ALI-1158).',
580
580
  group: 'Optimizations',
581
581
  },
582
582
  {
@@ -0,0 +1,13 @@
1
+ interface HostedCommandContext {
2
+ environment: NodeJS.ProcessEnv;
3
+ getArg: (name: string) => string | null;
4
+ json: boolean;
5
+ printJson: (value: Record<string, unknown>) => void;
6
+ printLine: (value?: string) => void;
7
+ printErr: (value: string) => void;
8
+ resolveProjectSlug: (projectArg: string | null) => Promise<string>;
9
+ setExitCode: (code: number) => void;
10
+ }
11
+ export declare function dispatchHostedCommands(args: string[], context: HostedCommandContext): Promise<boolean>;
12
+ export {};
13
+ //# sourceMappingURL=hosted-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-commands.d.ts","sourceRoot":"","sources":["../src/hosted-commands.ts"],"names":[],"mappings":"AAEA,UAAU,oBAAoB;IAAG,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAAC,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE;AAC/V,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAwqB"}
@@ -0,0 +1,10 @@
1
+ import { runHostedGepaOptimization } from './hosted-gepa-cli.js';
2
+ import { hostedCommand } from './hosted-session-cli.js';
3
+ export async function dispatchHostedCommands(args, context) { const [command, subcommand] = args; if (command === 'optimizations' && subcommand === 'run-gepa' && args.includes('--hosted')) {
4
+ const project = context.getArg('--project') || await context.resolveProjectSlug(null);
5
+ await runHostedGepaOptimization({ args: args.slice(2), project, environment: context.environment, json: context.json, printJson: context.printJson, printLine: context.printLine });
6
+ return true;
7
+ } if (command === 'internal' || (command === 'session' && subcommand === 'start' && args.includes('--hosted'))) {
8
+ context.setExitCode(await hostedCommand(args, { json: context.json, print: context.printLine, printErr: context.printErr }));
9
+ return true;
10
+ } return false; }
@@ -0,0 +1,11 @@
1
+ interface HostedGepaOptions {
2
+ args: string[];
3
+ project: string;
4
+ environment: NodeJS.ProcessEnv;
5
+ json: boolean;
6
+ printJson: (value: Record<string, unknown>) => void;
7
+ printLine: (value: string) => void;
8
+ }
9
+ export declare function runHostedGepaOptimization(options: HostedGepaOptions): Promise<void>;
10
+ export {};
11
+ //# sourceMappingURL=hosted-gepa-cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-gepa-cli.d.ts","sourceRoot":"","sources":["../src/hosted-gepa-cli.ts"],"names":[],"mappings":"AAQA,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,CAAC,UAAU,CAAA;IAC9B,IAAI,EAAE,OAAO,CAAA;IACb,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACnD,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAmBD,wBAAsB,yBAAyB,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwEzF"}
@@ -0,0 +1,110 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { dispatchGepaEngine } from './gepa-engine-dispatch.js';
3
+ import { parseHostedGepaNumericValue } from './hosted-gepa-numeric-values.js';
4
+ import { authedFetch } from './http.js';
5
+ import { hostedProviderSettingsError } from './hosted-provider-settings.js';
6
+ import { parseJsonResponse } from './json-response.js';
7
+ function argumentValue(args, name) {
8
+ const index = args.indexOf(name);
9
+ if (index >= 0 && index + 1 < args.length)
10
+ return args[index + 1];
11
+ return args.find(argument => argument.startsWith(`${name}=`))?.slice(name.length + 1) ?? null;
12
+ }
13
+ function dispatchArgs(args) {
14
+ const filtered = [];
15
+ for (let index = 0; index < args.length; index += 1) {
16
+ if (args[index] === '--hosted')
17
+ continue;
18
+ if (args[index] === '--launch-intent-id') {
19
+ index += 1;
20
+ continue;
21
+ }
22
+ if (args[index].startsWith('--launch-intent-id='))
23
+ continue;
24
+ filtered.push(args[index]);
25
+ }
26
+ return filtered;
27
+ }
28
+ export async function runHostedGepaOptimization(options) {
29
+ const hasLaunchIntent = options.args.some(argument => argument === '--launch-intent-id' || argument.startsWith('--launch-intent-id='));
30
+ const explicitLaunchIntent = argumentValue(options.args, '--launch-intent-id');
31
+ if (hasLaunchIntent && (!explicitLaunchIntent || explicitLaunchIntent.startsWith('-')
32
+ || !/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(explicitLaunchIntent))) {
33
+ throw new Error('--launch-intent-id must be a UUIDv4 value when provided.');
34
+ }
35
+ const args = dispatchArgs(options.args);
36
+ if (['--max-iterations', '--max-full-evals', '--max-metric-calls', '--max-candidate-proposals']
37
+ .some(flag => args.some(argument => argument === flag || argument.startsWith(`${flag}=`)))) {
38
+ throw new Error('Hosted optimization requires a named --budget preset; numeric budget controls are not accepted.');
39
+ }
40
+ const dispatch = dispatchGepaEngine(args, options.project, options.environment);
41
+ if (dispatch.engine !== 'official')
42
+ throw new Error('Hosted optimization requires the official GEPA engine.');
43
+ const env = dispatch.environment;
44
+ const required = [
45
+ ['ORIZU_OPTIMIZER_VERSION_ID', '--optimizer-version-id'], ['ORIZU_RUNNER_VERSION_ID', '--runner-version-id'],
46
+ ['ORIZU_SCORER_VERSION_ID', '--scorer-version-id'], ['ORIZU_SCORER_RUNNER_VERSION_ID', '--scorer-runner-version-id'],
47
+ ['ORIZU_DATASET_VERSION_ID', '--dataset-version-id'], ['ORIZU_SPLIT_SET_ID', '--split-set-id'],
48
+ ];
49
+ for (const [name, flag] of required)
50
+ if (!env[name])
51
+ throw new Error(`${flag} is required for hosted optimization.`);
52
+ const providerSettings = JSON.parse(env.ORIZU_REFLECTION_PROVIDER_SETTINGS ?? '{}');
53
+ const providerSettingsError = hostedProviderSettingsError(providerSettings, env.ORIZU_REFLECTION_MODEL ?? 'anthropic/', env.ORIZU_REFLECTION_TEMPERATURE);
54
+ if (providerSettingsError)
55
+ throw new Error(providerSettingsError);
56
+ const optional = {};
57
+ const fields = [
58
+ ['candidateProposer', 'ORIZU_CANDIDATE_PROPOSER', 'string'], ['candidateProposerConfig', 'ORIZU_SKILLED_PROPOSER_CONFIG', 'json'],
59
+ ['proposalMaxCalls', 'ORIZU_PROPOSAL_MAX_CALLS', 'number'], ['proposalMaxTokens', 'ORIZU_PROPOSAL_MAX_TOKENS', 'number'],
60
+ ['minibatchSize', 'ORIZU_MINIBATCH_SIZE', 'number'], ['numThreads', 'ORIZU_NUM_THREADS', 'number'],
61
+ ['candidateSelectionStrategy', 'ORIZU_CANDIDATE_SELECTION_STRATEGY', 'string'], ['epsilon', 'ORIZU_EPSILON', 'number'],
62
+ ['reflectionModel', 'ORIZU_REFLECTION_MODEL', 'string'], ['reflectionTemperature', 'ORIZU_REFLECTION_TEMPERATURE', 'number'],
63
+ ['reflectionMaxTokens', 'ORIZU_REFLECTION_MAX_TOKENS', 'number'], ['reflectionRetryAttempts', 'ORIZU_REFLECTION_RETRY_ATTEMPTS', 'number'],
64
+ ['reflectionHttpTimeoutSeconds', 'ORIZU_REFLECTION_HTTP_TIMEOUT_SECONDS', 'number'],
65
+ ['reflectionPromptTemplate', 'ORIZU_REFLECTION_PROMPT_TEMPLATE', 'string'],
66
+ ['reflectionProviderSettings', 'ORIZU_REFLECTION_PROVIDER_SETTINGS', 'json'], ['objective', 'ORIZU_OBJECTIVE', 'string'],
67
+ ['seed', 'ORIZU_SEED', 'number'], ['disableEvaluationCache', 'ORIZU_DISABLE_EVALUATION_CACHE', 'boolean'],
68
+ ['allowDegenerateSeed', 'ORIZU_ALLOW_DEGENERATE_SEED', 'boolean'],
69
+ ['skipPerfectParentReflection', 'ORIZU_SKIP_PERFECT_PARENT_REFLECTION', 'boolean'],
70
+ ];
71
+ for (const [field, name, kind] of fields) {
72
+ if (env[name] === undefined)
73
+ continue;
74
+ optional[field] = kind === 'number' ? parseHostedGepaNumericValue(field, env[name])
75
+ : kind === 'json' ? JSON.parse(env[name]) : kind === 'boolean' ? env[name] === '1' : env[name];
76
+ }
77
+ const launchIntentId = explicitLaunchIntent || randomUUID();
78
+ const body = {
79
+ hosted: true, launchIntentId, optimizerVersionId: env.ORIZU_OPTIMIZER_VERSION_ID,
80
+ promptVersionIds: env.ORIZU_PROMPT_VERSION_ID ? [env.ORIZU_PROMPT_VERSION_ID] : [],
81
+ ...(env.ORIZU_INSTRUCTION_SET_NAME ? { instructionSetName: env.ORIZU_INSTRUCTION_SET_NAME,
82
+ modelConfigIdentity: env.ORIZU_MODEL_CONFIG_IDENTITY, componentSelector: env.ORIZU_COMPONENT_SELECTOR } : {}),
83
+ runnerVersionId: env.ORIZU_RUNNER_VERSION_ID,
84
+ scorers: [{ scorerVersionId: env.ORIZU_SCORER_VERSION_ID,
85
+ scorerRunnerVersionId: env.ORIZU_SCORER_RUNNER_VERSION_ID, role: 'selection', scorerConfig: {} }],
86
+ datasetVersionId: env.ORIZU_DATASET_VERSION_ID, splitSetId: env.ORIZU_SPLIT_SET_ID,
87
+ trainSplitName: env.ORIZU_TRAIN_SPLIT ?? 'train', validationSplitName: env.ORIZU_VALIDATION_SPLIT ?? 'validation',
88
+ engine: 'official', scorerInputContract: env.ORIZU_SCORER_INPUT_CONTRACT ?? 'gepa',
89
+ scorerCandidateField: env.ORIZU_SCORER_CANDIDATE_FIELD ?? null, budget: env.ORIZU_BUDGET ?? 'auto', ...optional,
90
+ };
91
+ const response = await authedFetch(`/api/cli/optimization-runs?project=${encodeURIComponent(options.project)}`, {
92
+ method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(body),
93
+ });
94
+ const data = await parseJsonResponse(response, 'Hosted optimization launch');
95
+ if (!response.ok) {
96
+ if (options.json) {
97
+ options.printJson(data);
98
+ process.exitCode = 1;
99
+ return;
100
+ }
101
+ throw new Error(JSON.stringify(data));
102
+ }
103
+ if (options.json) {
104
+ options.printJson(data);
105
+ return;
106
+ }
107
+ options.printLine('Queued hosted optimization.');
108
+ options.printLine(`Launch intent: ${launchIntentId}`);
109
+ options.printLine(String(data.monitorUrl));
110
+ }
@@ -0,0 +1,3 @@
1
+ export declare function parseHostedGepaNumericValue(field: string, rawValue: string): number | 'auto';
2
+ export declare function hostedGepaNumericError(values: Record<string, unknown>): string | null;
3
+ //# sourceMappingURL=hosted-gepa-numeric-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-gepa-numeric-values.d.ts","sourceRoot":"","sources":["../src/hosted-gepa-numeric-values.ts"],"names":[],"mappings":"AAyCA,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAS5F;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,IAAI,CAOrF"}
@@ -0,0 +1,49 @@
1
+ const isFiniteNumber = (value) => typeof value === 'number' && Number.isFinite(value);
2
+ const isInteger = (value) => isFiniteNumber(value) && Number.isInteger(value);
3
+ const isPositiveInteger = (value) => isInteger(value) && value > 0;
4
+ const rules = [
5
+ ...[
6
+ ['proposalMaxCalls', '--proposal-max-calls'],
7
+ ['proposalMaxTokens', '--proposal-max-tokens'],
8
+ ['maxIterations', '--max-iterations'],
9
+ ['maxCandidateProposals', '--max-candidate-proposals'],
10
+ ['maxFullEvals', '--max-full-evals'],
11
+ ['maxMetricCalls', '--max-metric-calls'],
12
+ ['minibatchSize', '--minibatch-size'],
13
+ ['reflectionMaxTokens', '--reflection-max-tokens'],
14
+ ['reflectionRetryAttempts', '--reflection-retry-attempts'],
15
+ ['reflectionHttpTimeoutSeconds', '--reflection-http-timeout-seconds'],
16
+ ].map(([field, flag]) => ({ field, flag, grammar: 'positive integer', accepts: isPositiveInteger })),
17
+ {
18
+ field: 'numThreads', flag: '--num-threads', grammar: 'auto or positive integer',
19
+ accepts: value => value === 'auto' || isPositiveInteger(value),
20
+ },
21
+ ...[
22
+ ['epsilon', '--epsilon'],
23
+ ['reflectionTemperature', '--reflection-temperature'],
24
+ ].map(([field, flag]) => ({ field, flag, grammar: 'finite number', accepts: isFiniteNumber })),
25
+ { field: 'seed', flag: '--seed', grammar: 'integer', accepts: isInteger },
26
+ ];
27
+ const integerPattern = /^[+-]?\d+$/;
28
+ const floatPattern = /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i;
29
+ export function parseHostedGepaNumericValue(field, rawValue) {
30
+ const rule = rules.find(candidate => candidate.field === field);
31
+ if (!rule)
32
+ throw new Error(`Unknown hosted numeric field ${field}`);
33
+ const trimmed = rawValue.trim();
34
+ if (field === 'numThreads' && trimmed.toLowerCase() === 'auto')
35
+ return 'auto';
36
+ const lexicalPattern = rule.grammar === 'finite number' ? floatPattern : integerPattern;
37
+ const parsed = lexicalPattern.test(trimmed) ? Number(trimmed) : Number.NaN;
38
+ if (!rule.accepts(parsed))
39
+ throw new Error(`${rule.flag} must be ${rule.grammar}`);
40
+ return parsed;
41
+ }
42
+ export function hostedGepaNumericError(values) {
43
+ for (const rule of rules) {
44
+ if (values[rule.field] !== undefined && !rule.accepts(values[rule.field])) {
45
+ return `${rule.field} must be ${rule.grammar}`;
46
+ }
47
+ }
48
+ return null;
49
+ }
@@ -0,0 +1,3 @@
1
+ export declare function hostedSettingsContainCredentials(value: unknown): boolean;
2
+ export declare function hostedProviderSettingsError(value: unknown, model?: string, temperature?: unknown): string | null;
3
+ //# sourceMappingURL=hosted-provider-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hosted-provider-settings.d.ts","sourceRoot":"","sources":["../src/hosted-provider-settings.ts"],"names":[],"mappings":"AAqDA,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAqC;AAE9G,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAe,EAAE,WAAW,CAAC,EAAE,OAAO,GAC1D,MAAM,GAAG,IAAI,CAWf"}
@@ -0,0 +1,69 @@
1
+ function isRecord(value) {
2
+ return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
3
+ }
4
+ function hasOnlyKeys(value, keys) {
5
+ return Object.keys(value).every(key => keys.includes(key));
6
+ }
7
+ function isChoice(value, choices) {
8
+ return typeof value === 'string' && choices.includes(value);
9
+ }
10
+ function isProviderObject(value, keys, choices) {
11
+ return isRecord(value) && hasOnlyKeys(value, keys)
12
+ && Object.entries(value).every(([key, nested]) => isChoice(nested, choices[key] ?? []));
13
+ }
14
+ function isCredentialKey(key) {
15
+ const tokens = key.replaceAll(/([a-z0-9])([A-Z])/g, '$1 $2').toLowerCase().split(/[^a-z0-9]+/).filter(Boolean);
16
+ return tokens.some(token => ['auth', 'authorization', 'token', 'secret', 'password', 'passwd', 'credential', 'credentials', 'key'].includes(token))
17
+ || /(?:authorization|authheader|bearer|token|secret|password|passwd|credential|credentials|apikey|accesskey(?:id)?|privatekey|clientkey|secretkey|connection(?:string|url)|dsn)$/.test(tokens.join(''));
18
+ }
19
+ function containsCredential(value, root = true) {
20
+ if (Array.isArray(value))
21
+ return root || value.some(nested => containsCredential(nested, false));
22
+ if (!isRecord(value))
23
+ return root ? value !== undefined
24
+ : typeof value === 'string' && (/(?:authorization|bearer|x-api-key|x-auth-token)\s*[: ]/i.test(value)
25
+ || /^[a-z]+:\/\/[^/@]*:[^/@]*@/i.test(value));
26
+ return Object.entries(value).some(([key, nested]) => isCredentialKey(key) || containsCredential(nested, false));
27
+ }
28
+ function unsupportedHostedSetting(value, model) {
29
+ if (value === undefined)
30
+ return null;
31
+ if (!isRecord(value))
32
+ return '<root>';
33
+ const providerKeys = model.startsWith('openai/') ? ['reasoning']
34
+ : model.startsWith('anthropic/') ? ['thinking', 'output_config'] : [];
35
+ const unknown = Object.keys(value).find(key => !['top_p', ...providerKeys].includes(key));
36
+ if (unknown)
37
+ return unknown;
38
+ if (value.top_p !== undefined && (typeof value.top_p !== 'number'
39
+ || !Number.isFinite(value.top_p) || value.top_p < 0 || value.top_p > 1))
40
+ return 'top_p';
41
+ if (value.thinking !== undefined && (!isRecord(value.thinking) || value.thinking.type === undefined))
42
+ return 'thinking.type';
43
+ for (const [key, nested, keys, choices] of [
44
+ ['thinking', value.thinking, ['type'], { type: ['adaptive'] }],
45
+ ['output_config', value.output_config, ['effort'], { effort: ['low', 'medium', 'high', 'max'] }],
46
+ ['reasoning', value.reasoning, ['effort', 'summary'], { effort: ['minimal', 'low', 'medium', 'high', 'xhigh'], summary: ['auto', 'concise', 'detailed'] }],
47
+ ])
48
+ if (nested !== undefined && !isProviderObject(nested, keys, choices)) {
49
+ if (!isRecord(nested))
50
+ return key;
51
+ return `${key}.${Object.keys(nested).find(child => !keys.includes(child)
52
+ || !isChoice(nested[child], choices[child] ?? [])) ?? key}`;
53
+ }
54
+ return null;
55
+ }
56
+ export function hostedSettingsContainCredentials(value) { return containsCredential(value); }
57
+ export function hostedProviderSettingsError(value, model = 'anthropic/', temperature) {
58
+ if (hostedSettingsContainCredentials(value)) {
59
+ return 'Hosted reflection provider settings must not contain credential-bearing fields.';
60
+ }
61
+ const unsupported = unsupportedHostedSetting(value, model);
62
+ if (unsupported)
63
+ return `Unsupported hosted setting "${unsupported}".`;
64
+ if (model.startsWith('anthropic/') && temperature !== undefined && temperature !== null
65
+ && isRecord(value) && value.thinking !== undefined) {
66
+ return 'reflection_temperature cannot be combined with Anthropic thinking';
67
+ }
68
+ return null;
69
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"hosted-session-cli.d.ts","sourceRoot":"","sources":["../src/hosted-session-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hosted-session-cli.d.ts","sourceRoot":"","sources":["../src/hosted-session-cli.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,7 @@ import { buildEgressPolicy, DEFAULT_EGRESS_CANARY_HOST } from './egress-policy.j
44
44
  import { DEFAULT_HOSTED_MODEL, hostedLoopCommand } from './hosted-loop.js';
45
45
  import { hostedBootCommand } from './hosted-boot.js';
46
46
  import { mergeJobCommand } from './merge-job.js';
47
+ import { skilledProposerBakeCommand } from './skilled-proposer-launch.js';
47
48
  import { authedFetch } from './http.js';
48
49
  import { resolveBaseUrl } from './http.js';
49
50
  import { findUnknownOption } from './option-validation.js';
@@ -1185,7 +1186,11 @@ export async function hostedCommand(args, io, deps = {}) {
1185
1186
  if (positional[1] === 'merge-job') {
1186
1187
  return mergeJobCommand(io);
1187
1188
  }
1188
- io.printErr?.('Usage: orizu internal <hosted-loop --context <path> | hosted-boot | merge-job>');
1189
+ if (positional[1] === 'bake-skilled-proposer-venv')
1190
+ return skilledProposerBakeCommand(io);
1191
+ if (positional[1] === 'verify-skilled-proposer-bake')
1192
+ return skilledProposerBakeCommand(io, true);
1193
+ io.printErr?.('Usage: orizu internal <hosted-loop --context <path> | hosted-boot | merge-job | bake-skilled-proposer-venv | verify-skilled-proposer-bake>');
1189
1194
  return 1;
1190
1195
  }
1191
1196
  const unknownOption = findUnknownOption(args, HOSTED_START_OPTIONS, HOSTED_START_VALUE_OPTIONS);
package/dist/http.d.ts CHANGED
@@ -4,5 +4,6 @@ export declare function resolveBaseUrl(flags?: GlobalFlags): string;
4
4
  export declare function resolveLoginBaseUrl(flags?: GlobalFlags): string;
5
5
  export declare function getBaseUrl(): string;
6
6
  export declare function assertSecureTokenTransport(baseUrl: string): void;
7
+ export declare function credentialRequestRedirectPolicy(): Pick<RequestInit, 'redirect'>;
7
8
  export declare function authedFetch(path: string, init?: RequestInit): Promise<Response>;
8
9
  //# sourceMappingURL=http.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,WAAW,EAAoB,MAAM,mBAAmB,CAAA;AAKjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,QAEhD;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAiBxE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAY7E;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,QAmBzD;AA8CD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,qBAkDrE"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAMA,OAAO,EAAkB,WAAW,EAAoB,MAAM,mBAAmB,CAAA;AAKjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,QAEhD;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAiBxE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAY7E;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,QAmBzD;AAeD,wBAAgB,+BAA+B,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAE/E;AAkCD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,qBAqDrE"}
package/dist/http.js CHANGED
@@ -65,6 +65,9 @@ function isExpired(expiresAt) {
65
65
  const nowUnix = Math.floor(Date.now() / 1000);
66
66
  return expiresAt <= nowUnix + 30;
67
67
  }
68
+ export function credentialRequestRedirectPolicy() {
69
+ return process.env.ORIZU_CLI_AUTH_REDIRECT === 'error' ? { redirect: 'error' } : {};
70
+ }
68
71
  async function refreshCredentials(baseUrl, credentials) {
69
72
  if (!isSessionCredentials(credentials)) {
70
73
  throw new Error('API key credentials do not refresh. Run `orizu login` again if access fails.');
@@ -74,6 +77,7 @@ async function refreshCredentials(baseUrl, credentials) {
74
77
  method: 'POST',
75
78
  headers: { 'Content-Type': 'application/json' },
76
79
  body: JSON.stringify({ refreshToken: credentials.refreshToken }),
80
+ ...credentialRequestRedirectPolicy(),
77
81
  });
78
82
  if (!response.ok) {
79
83
  throw new Error('Session expired. Run `orizu login` again.');
@@ -107,6 +111,7 @@ export async function authedFetch(path, init = {}) {
107
111
  ...(init.headers || {}),
108
112
  Authorization: `Bearer ${envBearer}`,
109
113
  },
114
+ ...credentialRequestRedirectPolicy(),
110
115
  });
111
116
  }
112
117
  const credentials = getServerCredentials(baseUrl);
@@ -123,6 +128,7 @@ export async function authedFetch(path, init = {}) {
123
128
  ...(init.headers || {}),
124
129
  Authorization: `Bearer ${getAuthorizationToken(activeCredentials)}`,
125
130
  },
131
+ ...credentialRequestRedirectPolicy(),
126
132
  });
127
133
  if (response.status === 401 && isSessionCredentials(activeCredentials)) {
128
134
  activeCredentials = await refreshCredentials(baseUrl, activeCredentials);
@@ -132,6 +138,7 @@ export async function authedFetch(path, init = {}) {
132
138
  ...(init.headers || {}),
133
139
  Authorization: `Bearer ${getAuthorizationToken(activeCredentials)}`,
134
140
  },
141
+ ...credentialRequestRedirectPolicy(),
135
142
  });
136
143
  }
137
144
  return response;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AA2FgF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AA8BhJ,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAgU5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAyBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAcD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,GAAG,CAqB5E;AA6BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAkhKD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B1G;AAED,eAAO,MAAM,iBAAiB,SAAU,CAAA;AACxC,eAAO,MAAM,uBAAuB,QAAkB,CAAA;AACtD,eAAO,MAAM,oBAAoB,aAgB/B,CAAA;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAaxH;AAWD,wBAAsB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA6B3H;AA0LD,wBAAsB,IAAI,CAAC,OAAO,WAAwB,iBAwgBzD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAmGgF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAoChJ,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAgU5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAyBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAcD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,GAAG,CAqB5E;AA6BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBtD;AAkkKD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B1G;AAED,eAAO,MAAM,iBAAiB,SAAU,CAAA;AACxC,eAAO,MAAM,uBAAuB,QAAkB,CAAA;AACtD,eAAO,MAAM,oBAAoB,aAgB/B,CAAA;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAaxH;AAWD,wBAAsB,wBAAwB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CAoC3H;AA0LD,wBAAsB,IAAI,CAAC,OAAO,WAAwB,iBAygBzD"}