@lovrozagar/oat 0.6.1 → 0.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 (72) hide show
  1. package/README.md +148 -21
  2. package/dist/cli.js +7 -0
  3. package/dist/config/define-config.d.ts +95 -1
  4. package/dist/config/define-config.d.ts.map +1 -1
  5. package/dist/config/define-config.js +6 -0
  6. package/dist/config/define-config.js.map +1 -1
  7. package/dist/index.d.ts +5 -2
  8. package/dist/index.js +3 -1
  9. package/dist/report/console.d.ts.map +1 -1
  10. package/dist/report/console.js +2 -0
  11. package/dist/report/console.js.map +1 -1
  12. package/dist/report/render.d.ts.map +1 -1
  13. package/dist/report/render.js +4 -2
  14. package/dist/report/render.js.map +1 -1
  15. package/dist/runtime/auth.d.ts +22 -2
  16. package/dist/runtime/auth.d.ts.map +1 -1
  17. package/dist/runtime/auth.js +129 -16
  18. package/dist/runtime/auth.js.map +1 -1
  19. package/dist/runtime/body.d.ts.map +1 -1
  20. package/dist/runtime/body.js +6 -3
  21. package/dist/runtime/body.js.map +1 -1
  22. package/dist/runtime/checks.d.ts +6 -0
  23. package/dist/runtime/checks.d.ts.map +1 -1
  24. package/dist/runtime/checks.js +103 -4
  25. package/dist/runtime/checks.js.map +1 -1
  26. package/dist/runtime/client.d.ts +8 -2
  27. package/dist/runtime/client.d.ts.map +1 -1
  28. package/dist/runtime/client.js +42 -10
  29. package/dist/runtime/client.js.map +1 -1
  30. package/dist/runtime/finding.d.ts +2 -0
  31. package/dist/runtime/finding.d.ts.map +1 -1
  32. package/dist/runtime/finding.js.map +1 -1
  33. package/dist/runtime/input.d.ts +7 -0
  34. package/dist/runtime/input.d.ts.map +1 -0
  35. package/dist/runtime/input.js +46 -0
  36. package/dist/runtime/input.js.map +1 -0
  37. package/dist/runtime/poll.d.ts +29 -0
  38. package/dist/runtime/poll.d.ts.map +1 -0
  39. package/dist/runtime/poll.js +59 -0
  40. package/dist/runtime/poll.js.map +1 -0
  41. package/dist/runtime/principals.d.ts +29 -0
  42. package/dist/runtime/principals.d.ts.map +1 -0
  43. package/dist/runtime/principals.js +97 -0
  44. package/dist/runtime/principals.js.map +1 -0
  45. package/dist/runtime/rate-limit.d.ts +40 -2
  46. package/dist/runtime/rate-limit.d.ts.map +1 -1
  47. package/dist/runtime/rate-limit.js +115 -4
  48. package/dist/runtime/rate-limit.js.map +1 -1
  49. package/dist/runtime/run.d.ts +10 -1
  50. package/dist/runtime/run.d.ts.map +1 -1
  51. package/dist/runtime/run.js +119 -23
  52. package/dist/runtime/run.js.map +1 -1
  53. package/dist/runtime/upload.d.ts +1 -0
  54. package/dist/runtime/upload.d.ts.map +1 -1
  55. package/dist/runtime/upload.js.map +1 -1
  56. package/dist/runtime/wait.d.ts +32 -0
  57. package/dist/runtime/wait.d.ts.map +1 -0
  58. package/dist/runtime/wait.js +125 -0
  59. package/dist/runtime/wait.js.map +1 -0
  60. package/dist/runtime/world.d.ts +16 -0
  61. package/dist/runtime/world.d.ts.map +1 -1
  62. package/dist/runtime/world.js +91 -0
  63. package/dist/runtime/world.js.map +1 -1
  64. package/dist/spec/extensions.d.ts +16 -0
  65. package/dist/spec/extensions.d.ts.map +1 -1
  66. package/dist/spec/extensions.js +24 -1
  67. package/dist/spec/extensions.js.map +1 -1
  68. package/dist/spec/graph.d.ts +2 -1
  69. package/dist/spec/graph.d.ts.map +1 -1
  70. package/dist/spec/graph.js +2 -1
  71. package/dist/spec/graph.js.map +1 -1
  72. package/package.json +4 -2
package/README.md CHANGED
@@ -48,6 +48,8 @@ This file is the operator manual. An agent that has read it can install oat, wri
48
48
  - [Top-level fields](#top-level-fields)
49
49
  - [Principals](#principals)
50
50
  - [Auth flows](#auth-flows)
51
+ - [Harvested principal](#harvested-principal)
52
+ - [Secondary origins](#secondary-origins)
51
53
  - [Hooks](#hooks)
52
54
  - [Uploads](#uploads)
53
55
  - [Environment interpolation](#environment-interpolation)
@@ -101,7 +103,7 @@ The first principal is the writer. Isolation needs a second principal with diffe
101
103
 
102
104
  oat never needs ground truth about your data. A filter and its negation must partition the set; a page walk must cover the collection; a record read four ways must read the same.
103
105
 
104
- oat does **not** use OpenAPI `security` / `securitySchemes`, `servers[]`, cookies, webhooks, callbacks, or `links`. Auth is the config. The origin is `baseUrl`. Request bodies follow the document: JSON, `multipart/form-data` (scalars + dummy / pool / `resolveUpload` files), or `application/x-www-form-urlencoded`.
106
+ oat does **not** use OpenAPI `security` / `securitySchemes`, `servers[]`, cookies, webhooks, callbacks, or `links`. Auth is the config. The primary origin is `baseUrl`. Extra hosts go in `origins[]`, each with its own spec — do not merge them into the primary document. Request bodies follow the document: JSON, `multipart/form-data` (scalars + dummy / pool / `resolveUpload` files), or `application/x-www-form-urlencoded`. `hooks.resolveInput` can replace a generated JSON field (a Stripe test `pm_…`); `hooks.resolveHeaders` can attach a one-shot header (Turnstile) per request.
105
107
 
106
108
  ## Quick start
107
109
 
@@ -433,24 +435,28 @@ export default defineConfig({
433
435
  only: ["store", "product"], // restrict entities
434
436
  keepFixtures: false,
435
437
  outDir: "./oat-out",
438
+ outOfBand: { attempts: 20, initialMs: 1000, maxMs: 8000 },
439
+ origins: [{ id: "cdn", baseUrl: "https://cdn.example.com", spec: "https://cdn.example.com/openapi.json" }],
436
440
  })
437
441
  ```
438
442
 
439
- | field | required | default | notes |
440
- | --------------- | -------- | ----------- | ------------------------------------------------------------------ |
441
- | `spec` | yes | | See [Spec loading](#spec-loading) |
442
- | `baseUrl` | yes | | Origin. OpenAPI `servers[]` is ignored |
443
- | `principals` | yes | | Non-empty. First is the writer |
444
- | `hooks` | no | | `resolveOutOfBand`, `teardownPrincipal`, `resolveUpload` |
445
- | `uploads` | no | | `pool` globs, relative to the config file. JSON configs: pool only |
446
- | `globalHeaders` | no | `{}` | Merged under per-request headers. Opaque to oat |
447
- | `roots` | no | `{}` | Shared path params (merged with each principal's `roots`) |
448
- | `seed` | no | `1` | Integer. Same seed → same fixture bodies |
449
- | `cohortSize` | no | `7` | Sliced from the 7 built-in variants. Larger repeats the pattern |
450
- | `maxInFlight` | no | `4` | Across the whole run |
451
- | `only` | no | all | Entity names from `oat plan` |
452
- | `keepFixtures` | no | `false` | Skip DELETE at the end |
453
- | `outDir` | no | `./oat-out` | Created if missing |
443
+ | field | required | default | notes |
444
+ | --------------- | -------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------- |
445
+ | `spec` | yes | | See [Spec loading](#spec-loading) |
446
+ | `baseUrl` | yes | | Primary origin. OpenAPI `servers[]` is ignored |
447
+ | `principals` | yes | | Non-empty. First is the writer |
448
+ | `hooks` | no | | See [Hooks](#hooks) |
449
+ | `uploads` | no | | `pool` globs, relative to the config file. JSON configs: pool only |
450
+ | `globalHeaders` | no | `{}` | Merged first. `resolveHeaders` then caller headers then auth |
451
+ | `origins` | no | `[]` | Extra `{ id, baseUrl, spec }` hosts. Auth JWT is reused. Do not merge those routes into `spec` |
452
+ | `outOfBand` | no | `{ attempts: 6, initialMs: 200, maxMs: 3000 }` | Backoff for `resolveOutOfBand` and `resolvePrincipalAuth`. See [Hooks](#hooks) |
453
+ | `roots` | no | `{}` | Shared path params (merged with each principal's `roots`) |
454
+ | `seed` | no | `1` | Integer. Same seed → same fixture bodies |
455
+ | `cohortSize` | no | `7` | Sliced from the 7 built-in variants. Larger repeats the pattern |
456
+ | `maxInFlight` | no | `4` | Across the whole run |
457
+ | `only` | no | all | Entity names from `oat plan` |
458
+ | `keepFixtures` | no | `false` | Skip DELETE at the end |
459
+ | `outDir` | no | `./oat-out` | Created if missing. Also writes `principals.json` after acquire |
454
460
 
455
461
  `spec` may be a path relative to `baseUrl` (`/v1/openapi/spec`) or an absolute URL or a file.
456
462
 
@@ -493,6 +499,7 @@ Rules that matter:
493
499
  - Extra principals are not ignored. Isolation picks the first different-`roots` peer. Rank uses the same-tenant pair.
494
500
  - `headers` and `auth` compose: static headers are sent, then the flow's credential header is merged on top.
495
501
  - A principal with only `headers` (no `auth`) never hits a login route.
502
+ - `auth` may be a harvested credential instead of a step chain: `{ fromHook: "oauth-google" }`. See [Harvested principal](#harvested-principal).
496
503
 
497
504
  Example — two tenants plus a same-tenant lattice:
498
505
 
@@ -654,6 +661,50 @@ principals: [
654
661
 
655
662
  The address used for `teardownPrincipal` is `scope.address` or `scope.email` (set via `bind: { address }` or `bind: { email }`).
656
663
 
664
+ ### Harvested principal
665
+
666
+ When the credential is produced outside oat (a human finishes Google OAuth on a harvest page, a pair lands in KV), do not make oat drive `authorize` / `callback`:
667
+
668
+ ```ts
669
+ {
670
+ id: "google-user",
671
+ auth: { fromHook: "oauth-google" },
672
+ }
673
+ ```
674
+
675
+ oat polls `hooks.resolvePrincipalAuth("oauth-google")` with the same `outOfBand` backoff as mail. Return `{ credential, refreshToken?, expiresIn? }` or `null` to retry. Refresh re-calls the hook (401 and countdown). oat does not speak OAuth.
676
+
677
+ ### Secondary origins
678
+
679
+ One run, one primary `baseUrl`. A CDN (or any second host) keeps its own OpenAPI.
680
+
681
+ ```ts
682
+ export default defineConfig({
683
+ spec: "https://api.example.com/openapi.json",
684
+ baseUrl: "https://api.example.com",
685
+ principals: [/* acquire JWT on the API */],
686
+ origins: [{ id: "cdn", baseUrl: "https://cdn.example.com", spec: "https://cdn.example.com/openapi.json" }],
687
+ })
688
+ ```
689
+
690
+ After primary auth, oat snapshots the principals, binds those credentials to the other host, and runs the matrix against that document. Auth steps may set `origin: "cdn"` to send one hop to a named origin during acquire.
691
+
692
+ Do not merge CDN routes into the API gateway document.
693
+
694
+ A second `defineConfig` can reuse the first run's snapshot instead:
695
+
696
+ ```ts
697
+ import { defineConfig, loadPersistedPrincipals } from "@lovrozagar/oat"
698
+
699
+ export default defineConfig({
700
+ spec: "https://cdn.example.com/openapi.json",
701
+ baseUrl: "https://cdn.example.com",
702
+ principals: loadPersistedPrincipals("./oat-out/principals.json"),
703
+ })
704
+ ```
705
+
706
+ The CLI writes `oat-out/principals.json` after every run.
707
+
657
708
  ### Hooks
658
709
 
659
710
  ```ts
@@ -675,13 +726,59 @@ hooks: {
675
726
  }
676
727
  return null
677
728
  },
729
+ // After globalHeaders, before auth. Return null to add nothing.
730
+ resolveHeaders: async ({ operationId, method, url }) => {
731
+ if (operationId === "auth.register" || operationId === "auth.login") {
732
+ return { "cf-turnstile-response": await harvestTurnstile() }
733
+ }
734
+ return null
735
+ },
736
+ // Replace a generated JSON field. Null keeps the generator.
737
+ resolveInput: async ({ operationId, field }) => {
738
+ if (operationId === "billing.subscribe" && field === "payment_method_id") {
739
+ return process.env.STRIPE_TEST_PM
740
+ }
741
+ return null
742
+ },
743
+ // Harvested OAuth pair. Null retries with the outOfBand backoff.
744
+ resolvePrincipalAuth: async (fromHook) => {
745
+ if (fromHook !== "oauth-google") return null
746
+ const pair = await readHarvestedGoogle()
747
+ return pair === null ? null : { credential: pair.access_token, refreshToken: pair.refresh_token, expiresIn: pair.expires_in }
748
+ },
749
+ // Optional extra stop condition while x-wait polls.
750
+ awaitSideEffect: async ({ operationId, record }) => {
751
+ if (operationId !== "webhook.deliver") return null
752
+ return Array.isArray((record as { items?: unknown }).items) && (record as { items: unknown[] }).items.length > 0
753
+ ? true
754
+ : null
755
+ },
678
756
  }
679
757
  ```
680
758
 
681
- Without `resolveOutOfBand`, an `outOfBand` step cannot complete. oat polls the hook up to **6** times: 200 ms, then doubling, capped at 3000 ms. Returning `""` is treated like `null`.
759
+ Without `resolveOutOfBand`, an `outOfBand` step cannot complete. oat polls the hook; the hook must not sleep. Returning `""` is treated like `null`.
760
+
761
+ Default schedule (0.6.2, unchanged unless `outOfBand` is set): **6** attempts, first sleep **200** ms, doubling, cap **3000** ms. oat sleeps after every miss, including the last, so the worst-case wait is
762
+
763
+ `200 + 400 + 800 + 1600 + 3000 + 3000 = 9000` ms.
764
+
765
+ That is too short for real mail (often 10–60 s) and for a human finishing Google OAuth or a Turnstile harvest. Configure it:
766
+
767
+ ```ts
768
+ outOfBand: { attempts: 20, initialMs: 1000, maxMs: 8000 }
769
+ // worst case: 1000 + 2000 + 4000 + 8000×17 = 143000 ms
770
+ ```
771
+
772
+ Worst-case wait is `sum_{i=0}^{attempts-1} min(initialMs × 2^i, maxMs)`. `worstCaseWaitMs()` from the package computes it. Existing configs that omit `outOfBand` do not slow down.
682
773
 
683
774
  Without `teardownPrincipal`, provisioned accounts are reported as leftover rather than cascade-deleted. Per-record DELETE still runs for seeded rows when a delete (or `x-cleanup`) exists.
684
775
 
776
+ `resolveHeaders` is called on every dispatch (including the 401 retry). Merge order: `globalHeaders` → hook → per-request headers → principal credential. Use `ctx.operationId` / `ctx.method` / `ctx.url` to attach a one-shot captcha only on captcha ops. oat does not speak Turnstile.
777
+
778
+ `resolveInput` is the JSON twin of `resolveUpload`. Return a value to replace that field (`payment_method_id` on `billing.subscribe`); `null` keeps the generator.
779
+
780
+ `resolvePrincipalAuth` and `awaitSideEffect` are documented below.
781
+
685
782
  ### Uploads
686
783
 
687
784
  Multipart and binary parts are filled in this order:
@@ -817,6 +914,10 @@ Parent path parameters are created first (depth-first through the owning entity'
817
914
 
818
915
  A create that returns `>= 300` on the first variant fails the entity (downstream checks `BLOCKED`). Later variants that fail just shorten the cohort — a partial cohort is still used.
819
916
 
917
+ HTTP 429 is retried first — `Retry-After` or exponential backoff, up to five times — on seed, checks, and teardown, whether or not the operation declared `x-rate-limit`. The first 429 is never a seed failure. A leftover 429 after those retries is a gap, not a backend defect.
918
+
919
+ A 402 / plan-limit (`payment_required`, `*_plan_limit`) on create is not a backend defect when the same-tenant list already has a row — typically an earlier `x-effects` create that filled a free-plan quota. oat reuses that id so children (a `row` after extract created a `table`) can still seed. It does not invent records. Write-path checks on the adopted entity stand down.
920
+
820
921
  A documented feature-gate 403 is the exception: if create declares `x-feature-gate` and the body is `vars.type: feature_gate` (and `vars.feature` matches the tag when present), oat records a `COVERAGE_GAP` naming the tag rather than a seed defect. See [`x-feature-gate`](#x-feature-gate).
821
922
 
822
923
  `--seed` / `seed` makes the bodies identical across runs. It does not make server-assigned ids identical.
@@ -918,6 +1019,7 @@ What each tag **unlocks** (otherwise the check cannot run):
918
1019
  | `x-query` | `spec.declared-filterable-is-filterable`, `spec.declared-sortable-is-sortable`, `spec.declared-selectable-is-selectable` |
919
1020
  | `x-soft-delete` | `softdelete.absent-from-default-list` |
920
1021
  | `x-invite` | `auth.invite-grants-then-revokes` |
1022
+ | `x-wait` | `effects.side-effect-arrives` |
921
1023
 
922
1024
  What each tag **sharpens** (the check already runs, but the verdict changes):
923
1025
 
@@ -965,9 +1067,15 @@ x-invite:
965
1067
  granteeField: key
966
1068
  tokenPointer: $.token
967
1069
  grantPointer: $.grant_id
1070
+ tokenFrom: response # or outOfBand
1071
+ tokenKind: org-invite # only when tokenFrom is outOfBand; default `${entity}-invite`
968
1072
  ```
969
1073
 
970
- Put this on the invite operation. Config must give the invitee `inviteAs`. Defaults if omitted: `granteeField: key`, `tokenPointer: $.token`, `grantPointer: $.grant_id`. All three of `invite` / `accept` / `revoke` (operationIds) are required or the tag is ignored.
1074
+ Put this on the invite operation. Config must give the invitee `inviteAs`. Defaults if omitted: `granteeField: key`, `tokenPointer: $.token`, `grantPointer: $.grant_id`, `tokenFrom: response`. All three of `invite` / `accept` / `revoke` (operationIds) are required or the tag is ignored.
1075
+
1076
+ `tokenFrom: response` (default) reads the accept token from the invite HTTP body at `tokenPointer`. Keep this for backends that still put the token in JSON.
1077
+
1078
+ `tokenFrom: outOfBand` ignores the response token and calls `resolveOutOfBand({ address: inviteAs, kind })` after the invite POST. `kind` is `tokenKind` or `${entity}-invite` (`org` → `org-invite`, `project` → `project-invite`). Use this when the live profile must accept only the mailed token.
971
1079
 
972
1080
  An invite operation is **not** the entity's fixture create, even when it is `POST` on the collection. oat will not seed it with a generated email. The invite check (and only that check) creates the grant, using `inviteAs` as `granteeField`. The check still runs when there is no non-invite create, as long as an item or list route exists.
973
1081
 
@@ -1033,6 +1141,22 @@ x-effects:
1033
1141
 
1034
1142
  **Fallback:** derived from `x-entity.action` for this entity only.
1035
1143
 
1144
+ ### `x-wait`
1145
+
1146
+ ```yaml
1147
+ x-wait:
1148
+ operationId: inbox.list
1149
+ until: $.items.0
1150
+ timeoutMs: 30000
1151
+ pollIntervalMs: 1000
1152
+ ```
1153
+
1154
+ Put this on the **write**. After that write succeeds, oat polls `operationId` until `until` (JSON path `$.items.0` or JSON pointer `/items/0`) is non-empty, or `hooks.awaitSideEffect` returns `true`. Default `timeoutMs` is **30s**. Timeout is a **finding** (`effects.side-effect-arrives`), not a coverage gap.
1155
+
1156
+ Use this for queue consumers and webhook inboxes (1–30 s), not for the same request. `x-effects` still asserts cardinality; `x-wait` asserts “this other GET eventually has a body”.
1157
+
1158
+ **Fallback:** the check does not run.
1159
+
1036
1160
  ### `x-soft-delete`
1037
1161
 
1038
1162
  ```yaml
@@ -1172,7 +1296,9 @@ x-rate-limit: { category: ai, rps: 3 }
1172
1296
 
1173
1297
  Groups operations sharing one throughput budget (`category`) and optionally the rate itself (`rps`). Without this, oat's matrix can hammer a `login` or paid-inference route past its real limit, collect 429s, and report them as backend defects — exactly the false-positive class that erodes trust fastest. With it, requests to that category are paced through a token bucket before they fire.
1174
1298
 
1175
- A 429 is only ever reported when the request that drew it was demonstrably under the _declared_ rate — oat's own bucket had a free token, so it did not have to wait for one. A 429 that arrived only after oat's bucket made the request wait means oat's own rate model was too generous, which is paced around, never reported.
1299
+ Tags are the **proactive** path. HTTP 429 is the **reactive** path and is honoured even when the operation has no `x-rate-limit` at all (untagged JWT writes, teardown DELETEs). oat reads `Retry-After` (delta-seconds or HTTP-date), otherwise backs off 1s, 2s, 4s… capped at 30s, and retries the same request up to five times. The wait is fed into the matching bucket, or into an implicit `untagged-write` bucket so the next call does not immediately re-trip.
1300
+
1301
+ A 429 is only ever reported when the request that drew it was demonstrably under the _declared_ rate — oat's own bucket had a free token, so it did not have to wait for one. A 429 that arrived only after oat's bucket made the request wait means oat's own rate model was too generous, which is paced around, never reported. A 429 against a config-supplied or implicit rate is never a finding.
1176
1302
 
1177
1303
  `config.rateLimits` is checked first and needs no tag at all — it is what keeps oat usable against a backend that has not adopted `x-rate-limit` yet, or against an environment (staging, usually) whose real limit differs from what the document claims for production. A 429 against a config-supplied rate is never a finding: it is the operator's own belief about the environment, not a claim the API made.
1178
1304
 
@@ -1243,6 +1369,7 @@ Order is fixed (foundations first) so cascade suppression has a cause to point a
1243
1369
  | `softdelete.absent-from-default-list` | a soft-deleted row is gone from the default list | `x-soft-delete` | `list.read-after-write` |
1244
1370
  | `invalidation.declared-route-changes` | after a write, the other entity's listed route actually changes | `x-invalidate` naming another entity | list, persist |
1245
1371
  | `effects.declared-effect-occurs` | `x-effects` cardinality delta is observed on the named list | `x-effects` | `list.read-after-write` |
1372
+ | `effects.side-effect-arrives` | after the write, the named GET’s JSON path is occupied before `timeoutMs` | `x-wait` | `list.read-after-write` |
1246
1373
  | `async.reaches-terminal-state` | `x-async` reaches `until` (poll, or a terminal SSE frame) before `timeoutMs` | `x-async` | — |
1247
1374
  | `async.receipt-identifies-the-job` | `idFrom` on the receipt (JSON object or SSE event JSON) resolves to a pollable job | `x-async` + `idFrom` | — |
1248
1375
  | `patch.minimality` | PATCH `{ name }` does not clear other writable fields | update + item route | — |
@@ -1525,7 +1652,7 @@ const { doc: resolved, externalRefs } = dereference(doc)
1525
1652
  const model = buildModel(resolved)
1526
1653
  ```
1527
1654
 
1528
- Types exported: `OatConfig`, `Principal`, `AuthFlow`, `AuthRefresh`, `AuthStep`, `Hooks`, `Uploads`, `UploadRequest`, `UploadFile`, `RunOptions`, `RunResult`, `Finding`, `Verdict`, `Actor`, `SpecModel`, `EntityModel`, `OperationModel`, `OpenApiDocument`, `AuthRefreshRequiredError`, matrix types.
1655
+ Types exported: `OatConfig`, `Principal`, `AuthFlow`, `AuthRefresh`, `AuthStep`, `HookAuth`, `Hooks`, `Uploads`, `UploadRequest`, `UploadFile`, `HeaderRequest`, `InputRequest`, `OriginSpec`, `OutOfBandConfig`, `RunOptions`, `RunResult`, `Finding`, `Verdict`, `Actor`, `SpecModel`, `EntityModel`, `OperationModel`, `OpenApiDocument`, `AuthRefreshRequiredError`, `loadPersistedPrincipals`, `worstCaseWaitMs`, matrix types.
1529
1656
 
1530
1657
  ## CI
1531
1658
 
@@ -1630,7 +1757,7 @@ These are deliberate. An agent should not invent a flag for them.
1630
1757
  - **No request timeout.** `fetch` waits until the server answers. Watch `idle_ms`.
1631
1758
  - **No retry on 5xx / 429.** One 401 → force refresh + single retry. A second 401 is evidence.
1632
1759
  - **No OpenAPI `security`.** Put credentials in `principals`. Cookie auth is a `headers: { cookie: "…" }` (or a flow that sets that header).
1633
- - **No `servers[]`.** Always set `baseUrl`.
1760
+ - **No `servers[]`.** Always set `baseUrl`. Extra hosts are `origins[]`, each with its own `spec`.
1634
1761
  - **No OCR.** Multipart and file parts are sent as dummy / pool / `resolveUpload` bytes. oat checks HTTP status and JSON responses, not whether a PDF is a real invoice.
1635
1762
  - **No webhook / callback / link-object following.**
1636
1763
  - **External `$ref`s are not fetched.** In-document `$ref`s are.
package/dist/cli.js CHANGED
@@ -166,6 +166,8 @@ async function commandRun(flags) {
166
166
  ...(profile === undefined ? {} : { profile }),
167
167
  ...(config.profiles === undefined ? {} : { profiles: config.profiles }),
168
168
  ...(config.rateLimits === undefined ? {} : { rateLimits: config.rateLimits }),
169
+ ...(config.origins === undefined ? {} : { origins: config.origins }),
170
+ ...(config.outOfBand === undefined ? {} : { outOfBand: config.outOfBand }),
169
171
  keepFixtures: flags["keep-fixtures"] === true || config.keepFixtures === true,
170
172
  maxInFlight: Number.parseInt(str(flags, "max-in-flight") ?? "", 10) || config.maxInFlight || 4,
171
173
  seed: seedFlag === undefined ? (config.seed ?? 1) : Number.parseInt(seedFlag, 10),
@@ -198,6 +200,7 @@ async function commandRun(flags) {
198
200
  * finding reads as a current defect. The folder is only created when there is an issue. */
199
201
  await rm(resolve(outDir, "repro"), { force: true, recursive: true });
200
202
  await rm(resolve(outDir, ISSUE_REPRO_DIR), { force: true, recursive: true });
203
+ await writeFile(resolve(outDir, "principals.json"), `${JSON.stringify({ principals: result.principals }, null, 2)}\n`);
201
204
  await writeFile(resolve(outDir, "oat-report.md"), renderMarkdown(input));
202
205
  await writeFile(resolve(outDir, "oat-report.json"), renderJson(input));
203
206
  await writeFile(resolve(outDir, "matrix.html"), renderMatrixHtml(input));
@@ -236,6 +239,7 @@ export async function main() {
236
239
  if (command === "conformance") {
237
240
  const { postgresAvailable, renderParserSuite, renderSuite, runExampleSpecSuite, runTagUnlockSuite, runParserSuite, runPayloadCatalogSuite, runCoverageReportSuite, runSeedContractSuite, runTenantScopeSuite, runSuite, sqliteAvailable, d1Available, } = await import("./conformance/suite.js");
238
241
  const { runFeatureGateSuite } = await import("./conformance/feature-gate.js");
242
+ const { runRateLimitSuite } = await import("./conformance/rate-limit.js");
239
243
  const parser = renderParserSuite(runParserSuite());
240
244
  process.stdout.write(parser.text);
241
245
  /* The documented example is checked in the same breath: it is the only place a reader
@@ -256,6 +260,9 @@ export async function main() {
256
260
  const featureGate = renderParserSuite(await runFeatureGateSuite());
257
261
  process.stdout.write(featureGate.text);
258
262
  parser.failures += featureGate.failures;
263
+ const rateLimit = renderParserSuite(await runRateLimitSuite());
264
+ process.stdout.write(rateLimit.text);
265
+ parser.failures += rateLimit.failures;
259
266
  const seedContract = renderParserSuite(await runSeedContractSuite());
260
267
  process.stdout.write(seedContract.text);
261
268
  parser.failures += seedContract.failures;
@@ -32,6 +32,8 @@ export interface OperationStep extends StepBase {
32
32
  body?: unknown;
33
33
  headers?: Record<string, string>;
34
34
  query?: Record<string, string>;
35
+ /** Named `origins[]` entry. Omit to hit the primary `baseUrl`. */
36
+ origin?: string;
35
37
  }
36
38
  /** Calls a raw path, for endpoints the document does not describe. */
37
39
  export interface RequestStep extends StepBase {
@@ -40,6 +42,8 @@ export interface RequestStep extends StepBase {
40
42
  body?: unknown;
41
43
  headers?: Record<string, string>;
42
44
  query?: Record<string, string>;
45
+ /** Named `origins[]` entry. Omit to hit the primary `baseUrl`. */
46
+ origin?: string;
43
47
  }
44
48
  /**
45
49
  * A value that never travels over HTTP — an emailed verification token, an OTP, a magic link.
@@ -86,12 +90,31 @@ export interface AuthFlow {
86
90
  */
87
91
  refresh?: AuthRefresh;
88
92
  }
93
+ /**
94
+ * Credential harvested outside oat (Google OAuth on a harvest page, a KV pair).
95
+ * oat polls `hooks.resolvePrincipalAuth` with the same backoff as `resolveOutOfBand`.
96
+ */
97
+ export interface HookAuth {
98
+ fromHook: string;
99
+ header?: string;
100
+ template?: string;
101
+ assumeTtlMs?: number;
102
+ refreshBufferMs?: number;
103
+ }
104
+ export type PrincipalAuth = AuthFlow | HookAuth;
105
+ export declare function isHookAuth(auth: PrincipalAuth): auth is HookAuth;
106
+ export declare function isAuthFlow(auth: PrincipalAuth): auth is AuthFlow;
107
+ export interface PrincipalAuthResult {
108
+ credential: string;
109
+ refreshToken?: string;
110
+ expiresIn?: number;
111
+ }
89
112
  export interface Principal {
90
113
  id: string;
91
114
  /** Sent on every request this principal makes — for a long-lived key, this is all you need. */
92
115
  headers?: Record<string, string>;
93
116
  /** How to obtain a credential. Omit for a principal that authenticates by static header. */
94
- auth?: AuthFlow;
117
+ auth?: PrincipalAuth;
95
118
  /** Path parameters this principal owns — its tenant. */
96
119
  roots?: Record<string, string>;
97
120
  /**
@@ -123,6 +146,39 @@ export interface OutOfBandRequest {
123
146
  /** 1-based; oat retries with backoff until a value arrives or the attempts run out. */
124
147
  attempt: number;
125
148
  }
149
+ /**
150
+ * Poll schedule for `resolveOutOfBand` and `resolvePrincipalAuth`.
151
+ *
152
+ * Defaults match 0.6.2: 6 attempts, 200 ms first sleep, doubling, cap 3000 ms.
153
+ * Worst-case wait is the sum of every sleep, including after the last miss:
154
+ * `200+400+800+1600+3000+3000 = 9000` ms. `{ attempts: 20, initialMs: 1000, maxMs: 8000 }`
155
+ * is `1000+2000+4000+8000×17 = 143000` ms. The hook must not sleep; oat owns the backoff.
156
+ */
157
+ export interface OutOfBandConfig {
158
+ attempts?: number;
159
+ initialMs?: number;
160
+ maxMs?: number;
161
+ }
162
+ export interface HeaderRequest {
163
+ method: string;
164
+ url: string;
165
+ operationId?: string;
166
+ }
167
+ export interface InputRequest {
168
+ operationId: string;
169
+ /** Property name at this depth. */
170
+ field: string;
171
+ /** JSON-path style pointer, e.g. `$.payment_method_id`. */
172
+ pointer: string;
173
+ schema: unknown;
174
+ }
175
+ export interface SideEffectRequest {
176
+ /** The write that should have produced the side effect. */
177
+ operationId: string;
178
+ /** Latest poll body, or the write response when no poll has landed yet. */
179
+ record: unknown;
180
+ attempt: number;
181
+ }
126
182
  export interface UploadRequest {
127
183
  operationId: string;
128
184
  /** The request's multipart / json / urlencoded media type. */
@@ -170,6 +226,33 @@ export interface Hooks {
170
226
  * Returning `UploadFile` replaces that field. `{ fields }` replaces the whole request.
171
227
  */
172
228
  resolveUpload?: (request: UploadRequest) => Promise<UploadResolution>;
229
+ /**
230
+ * Per-request headers, merged after `globalHeaders` and before the principal's credential.
231
+ * Called on every dispatch (including 401 retries) so a one-shot captcha token can be fresh.
232
+ * Return `null` or `{}` to add nothing. oat does not speak Turnstile.
233
+ */
234
+ resolveHeaders?: (request: HeaderRequest) => Promise<Record<string, string> | null>;
235
+ /**
236
+ * Replace a generated JSON field. Return `null` to keep the generator.
237
+ * Same idea as `resolveUpload`, for JSON (Stripe `pm_…`, vendor tokens).
238
+ */
239
+ resolveInput?: (request: InputRequest) => Promise<unknown | null>;
240
+ /**
241
+ * Harvested principal: `auth: { fromHook: "oauth-google" }`.
242
+ * Return `null` to retry with the `outOfBand` backoff so a human can finish the click.
243
+ */
244
+ resolvePrincipalAuth?: (fromHook: string) => Promise<PrincipalAuthResult | null>;
245
+ /**
246
+ * After a write that declares `x-wait`, return `true` when the side effect is visible.
247
+ * `null` retries until `x-wait.timeoutMs` (default 30s).
248
+ */
249
+ awaitSideEffect?: (request: SideEffectRequest) => Promise<true | null>;
250
+ }
251
+ /** A second host with its own OpenAPI. Auth stays on the primary; the JWT is reused. */
252
+ export interface OriginSpec {
253
+ id: string;
254
+ baseUrl: string;
255
+ spec: string;
173
256
  }
174
257
  /**
175
258
  * Which operations a run is allowed to touch, filtering on what `x-cost` / `x-destructive`
@@ -223,6 +306,17 @@ export interface OatConfig {
223
306
  uploads?: Uploads;
224
307
  /** Sent on every request. Request-id / correlation-id headers are recorded on each exchange; the rest is opaque. */
225
308
  globalHeaders?: Record<string, string>;
309
+ /**
310
+ * Extra hosts, each with its own document. Do not merge those routes into the primary spec.
311
+ * After primary auth, oat binds the same principals and runs the matrix against each origin.
312
+ * A second `defineConfig` can also reuse `oat-out/principals.json` via `loadPersistedPrincipals`.
313
+ */
314
+ origins?: OriginSpec[];
315
+ /**
316
+ * Backoff for `resolveOutOfBand` and `resolvePrincipalAuth`.
317
+ * Defaults: `{ attempts: 6, initialMs: 200, maxMs: 3000 }` (~9s worst case).
318
+ */
319
+ outOfBand?: OutOfBandConfig;
226
320
  /** Path parameters oat cannot create. Also declarable in-spec via `x-root`. */
227
321
  roots?: Record<string, string>;
228
322
  /** Fixture generation derives from this, so a failing run is exactly reproducible. */
@@ -1 +1 @@
1
- {"version":3,"file":"define-config.d.ts","sourceRoot":"","sources":["../../src/config/define-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"define-config.d.ts","sourceRoot":"","sources":["../../src/config/define-config.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@
5
5
  * is a compile error rather than a surprise at request time. Everything backend-specific lives
6
6
  * here or in `x-*` spec tags; oat itself knows nothing about any particular API.
7
7
  */
8
+ export function isHookAuth(auth) {
9
+ return "fromHook" in auth && typeof auth.fromHook === "string" && !("steps" in auth);
10
+ }
11
+ export function isAuthFlow(auth) {
12
+ return "steps" in auth;
13
+ }
8
14
  /**
9
15
  * Identity function that gives a config file full type checking and editor completion.
10
16
  *
@@ -1 +1 @@
1
- {"version":3,"file":"define-config.js","sourceRoot":"","sources":["../../src/config/define-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA4QH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC7C,OAAO,MAAM,CAAA;AACd,CAAC"}
1
+ {"version":3,"file":"define-config.js","sourceRoot":"","sources":["../../src/config/define-config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAyGH,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC7C,OAAO,UAAU,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC,CAAA;AACrF,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAmB;IAC7C,OAAO,OAAO,IAAI,IAAI,CAAA;AACvB,CAAC;AAyQD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC7C,OAAO,MAAM,CAAA;AACd,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,9 @@
1
- export { defineConfig } from "./config/define-config.ts";
2
- export type { AuthFlow, AuthRefresh, AuthStep, Hooks, OatConfig, OperationStep, OutOfBandRequest, OutOfBandStep, Principal, ProfileSpec, RateLimitSpec, RequestStep, UploadFile, UploadRequest, UploadResolution, Uploads, } from "./config/define-config.ts";
1
+ export { defineConfig, isAuthFlow, isHookAuth } from "./config/define-config.ts";
2
+ export type { AuthFlow, AuthRefresh, AuthStep, HeaderRequest, HookAuth, Hooks, InputRequest, OatConfig, OperationStep, OriginSpec, OutOfBandConfig, OutOfBandRequest, OutOfBandStep, Principal, PrincipalAuth, PrincipalAuthResult, ProfileSpec, RateLimitSpec, RequestStep, SideEffectRequest, UploadFile, UploadRequest, UploadResolution, Uploads, } from "./config/define-config.ts";
3
3
  export { loadConfig } from "./config/load.ts";
4
+ export { loadPersistedPrincipals, parsePersistedPrincipals } from "./runtime/principals.ts";
5
+ export type { PersistedPrincipal } from "./runtime/principals.ts";
6
+ export { worstCaseWaitMs, resolveBackoff, DEFAULT_OUT_OF_BAND } from "./runtime/poll.ts";
4
7
  export { deriveCollectionShape, deriveIdentity } from "./spec/collection.ts";
5
8
  export type { CollectionShape } from "./spec/collection.ts";
6
9
  export { buildModel } from "./spec/graph.ts";
package/dist/index.js CHANGED
@@ -1,5 +1,7 @@
1
- export { defineConfig } from "./config/define-config.js";
1
+ export { defineConfig, isAuthFlow, isHookAuth } from "./config/define-config.js";
2
2
  export { loadConfig } from "./config/load.js";
3
+ export { loadPersistedPrincipals, parsePersistedPrincipals } from "./runtime/principals.js";
4
+ export { worstCaseWaitMs, resolveBackoff, DEFAULT_OUT_OF_BAND } from "./runtime/poll.js";
3
5
  export { deriveCollectionShape, deriveIdentity } from "./spec/collection.js";
4
6
  export { buildModel } from "./spec/graph.js";
5
7
  export { dereference, loadSpec, normalisePath, parseRouteRef } from "./spec/load.js";
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/report/console.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE9D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAczD,CAAA;AAuCD,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CA+CvD;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAkK7G;AAED,eAAO,MAAM,MAAM;;;CAAmB,CAAA"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/report/console.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAE9D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAczD,CAAA;AAwCD,iBAAS,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,GAAG,MAAM,CA+CvD;AAED,iBAAS,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,OAAO,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAmK7G;AAED,eAAO,MAAM,MAAM;;;CAAmB,CAAA"}
@@ -49,6 +49,7 @@ const TAG_REMEDY = {
49
49
  "x-query": "declare which fields support the filter / order / search / select roles",
50
50
  "x-tenant": "name the path parameter that scopes this operation to a tenant",
51
51
  "x-invite": "name the invite, accept and revoke operations for delegated access",
52
+ "x-wait": "name the GET to poll after this write until a JSON path is occupied",
52
53
  };
53
54
  function bar(value, total, width = 24) {
54
55
  if (total === 0)
@@ -155,6 +156,7 @@ function doctor(model, externalRefs, asJson) {
155
156
  ...(op.immutable.length > 0 ? ["x-immutable"] : []),
156
157
  ...(op.invalidates.length > 0 ? ["x-invalidate"] : []),
157
158
  ...(op.softDelete === null ? [] : ["x-soft-delete"]),
159
+ ...(op.wait === null ? [] : ["x-wait"]),
158
160
  ...(op.tenantSource === "tag" ? ["x-tenant"] : []),
159
161
  ...(op.query?.source === "tag" ? ["x-query"] : []),
160
162
  ]));
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/report/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/report/console.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5E,mFAAmF;IACnF,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClF,SAAS,EAAE,IAAI,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CAClB;AAiED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAoGzD;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CACf;AAED,sFAAsF;AACtF,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA2BhF;AAkBD,UAAU,aAAa;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG;IACpD,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAA;CACxB,CAqCA;AAmCD,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA2GxD;AA8CD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAsDrD"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAY,MAAM,sBAAsB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAW,MAAM,uBAAuB,CAAA;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEjD,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,OAAO,EAAE,CAAA;IACnB,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,cAAc,EAAE,MAAM,EAAE,CAAA;IACxB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,aAAa,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,iFAAiF;IACjF,gBAAgB,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC5E,mFAAmF;IACnF,YAAY,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACvE,6FAA6F;IAC7F,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mGAAmG;IACnG,iBAAiB,CAAC,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAClF,SAAS,EAAE,IAAI,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;CAClB;AAiED,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAsGzD;AAED,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CACf;AAED,sFAAsF;AACtF,eAAO,MAAM,eAAe,gBAAgB,CAAA;AAE5C,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE,CA2BhF;AAkBD,UAAU,aAAa;IACtB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,eAAe,EAAE,MAAM,EAAE,CAAA;IACzB,eAAe,EAAE,MAAM,EAAE,CAAA;CACzB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,GAAG;IACpD,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,WAAW,EAAE,aAAa,EAAE,CAAA;IAC5B,OAAO,EAAE,aAAa,EAAE,CAAA;CACxB,CAqCA;AAmCD,kDAAkD;AAClD,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CA6GxD;AA8CD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAsDrD"}