@lovrozagar/oat 0.6.2 → 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 (67) hide show
  1. package/README.md +141 -20
  2. package/dist/cli.js +3 -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 +80 -3
  25. package/dist/runtime/checks.js.map +1 -1
  26. package/dist/runtime/client.d.ts +6 -0
  27. package/dist/runtime/client.d.ts.map +1 -1
  28. package/dist/runtime/client.js +14 -1
  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/run.d.ts +10 -1
  46. package/dist/runtime/run.d.ts.map +1 -1
  47. package/dist/runtime/run.js +96 -5
  48. package/dist/runtime/run.js.map +1 -1
  49. package/dist/runtime/upload.d.ts +1 -0
  50. package/dist/runtime/upload.d.ts.map +1 -1
  51. package/dist/runtime/upload.js.map +1 -1
  52. package/dist/runtime/wait.d.ts +32 -0
  53. package/dist/runtime/wait.d.ts.map +1 -0
  54. package/dist/runtime/wait.js +125 -0
  55. package/dist/runtime/wait.js.map +1 -0
  56. package/dist/runtime/world.d.ts.map +1 -1
  57. package/dist/runtime/world.js +2 -0
  58. package/dist/runtime/world.js.map +1 -1
  59. package/dist/spec/extensions.d.ts +16 -0
  60. package/dist/spec/extensions.d.ts.map +1 -1
  61. package/dist/spec/extensions.js +24 -1
  62. package/dist/spec/extensions.js.map +1 -1
  63. package/dist/spec/graph.d.ts +2 -1
  64. package/dist/spec/graph.d.ts.map +1 -1
  65. package/dist/spec/graph.js +2 -1
  66. package/dist/spec/graph.js.map +1 -1
  67. 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:
@@ -922,6 +1019,7 @@ What each tag **unlocks** (otherwise the check cannot run):
922
1019
  | `x-query` | `spec.declared-filterable-is-filterable`, `spec.declared-sortable-is-sortable`, `spec.declared-selectable-is-selectable` |
923
1020
  | `x-soft-delete` | `softdelete.absent-from-default-list` |
924
1021
  | `x-invite` | `auth.invite-grants-then-revokes` |
1022
+ | `x-wait` | `effects.side-effect-arrives` |
925
1023
 
926
1024
  What each tag **sharpens** (the check already runs, but the verdict changes):
927
1025
 
@@ -969,9 +1067,15 @@ x-invite:
969
1067
  granteeField: key
970
1068
  tokenPointer: $.token
971
1069
  grantPointer: $.grant_id
1070
+ tokenFrom: response # or outOfBand
1071
+ tokenKind: org-invite # only when tokenFrom is outOfBand; default `${entity}-invite`
972
1072
  ```
973
1073
 
974
- 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.
975
1079
 
976
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.
977
1081
 
@@ -1037,6 +1141,22 @@ x-effects:
1037
1141
 
1038
1142
  **Fallback:** derived from `x-entity.action` for this entity only.
1039
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
+
1040
1160
  ### `x-soft-delete`
1041
1161
 
1042
1162
  ```yaml
@@ -1249,6 +1369,7 @@ Order is fixed (foundations first) so cascade suppression has a cause to point a
1249
1369
  | `softdelete.absent-from-default-list` | a soft-deleted row is gone from the default list | `x-soft-delete` | `list.read-after-write` |
1250
1370
  | `invalidation.declared-route-changes` | after a write, the other entity's listed route actually changes | `x-invalidate` naming another entity | list, persist |
1251
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` |
1252
1373
  | `async.reaches-terminal-state` | `x-async` reaches `until` (poll, or a terminal SSE frame) before `timeoutMs` | `x-async` | — |
1253
1374
  | `async.receipt-identifies-the-job` | `idFrom` on the receipt (JSON object or SSE event JSON) resolves to a pollable job | `x-async` + `idFrom` | — |
1254
1375
  | `patch.minimality` | PATCH `{ name }` does not clear other writable fields | update + item route | — |
@@ -1531,7 +1652,7 @@ const { doc: resolved, externalRefs } = dereference(doc)
1531
1652
  const model = buildModel(resolved)
1532
1653
  ```
1533
1654
 
1534
- 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.
1535
1656
 
1536
1657
  ## CI
1537
1658
 
@@ -1636,7 +1757,7 @@ These are deliberate. An agent should not invent a flag for them.
1636
1757
  - **No request timeout.** `fetch` waits until the server answers. Watch `idle_ms`.
1637
1758
  - **No retry on 5xx / 429.** One 401 → force refresh + single retry. A second 401 is evidence.
1638
1759
  - **No OpenAPI `security`.** Put credentials in `principals`. Cookie auth is a `headers: { cookie: "…" }` (or a flow that sets that header).
1639
- - **No `servers[]`.** Always set `baseUrl`.
1760
+ - **No `servers[]`.** Always set `baseUrl`. Extra hosts are `origins[]`, each with its own `spec`.
1640
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.
1641
1762
  - **No webhook / callback / link-object following.**
1642
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));
@@ -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":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,WAAW,GAAsC;IAC7D,SAAS,EAAE,CAAC,8BAA8B,EAAE,kCAAkC,CAAC;IAC/E,WAAW,EAAE,CAAC,gCAAgC,CAAC;IAC/C,aAAa,EAAE,CAAC,gCAAgC,CAAC;IACjD,cAAc,EAAE,CAAC,qCAAqC,CAAC;IACvD;6FACyF;IACzF,SAAS,EAAE;QACV,wCAAwC;QACxC,oCAAoC;QACpC,wCAAwC;KACxC;IACD,eAAe,EAAE,CAAC,qCAAqC,CAAC;IACxD,UAAU,EAAE,CAAC,iCAAiC,CAAC;CAC/C,CAAA;AAED,mFAAmF;AACnF,MAAM,YAAY,GAA2B;IAC5C,SAAS,EACR,qFAAqF;QACrF,kEAAkE;IACnE,UAAU,EACT,qFAAqF;QACrF,4DAA4D;CAC7D,CAAA;AAED,MAAM,UAAU,GAA2B;IAC1C,SAAS,EAAE,wEAAwE;IACnF,UAAU,EAAE,gEAAgE;IAC5E,mBAAmB,EAAE,2CAA2C;IAChE,cAAc,EAAE,gDAAgD;IAChE,SAAS,EAAE,yEAAyE;IACpF,UAAU,EAAE,gEAAgE;IAC5E,UAAU,EAAE,oEAAoE;CAChF,CAAA;AAED,SAAS,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,KAAK,GAAG,EAAE;IACpD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC,CAAA;IAClD,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,CAAA;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,MAAmB;IAC3C,MAAM,KAAK,GAAwC;QAClD,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;QACpB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC;KACpB,CAAA;IACD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AACnF,CAAC;AAED,SAAS,IAAI,CAAC,KAAgB,EAAE,MAAe;IAC9C,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,GAAG,IAAI,CAAC,SAAS,CACvB;YACC,QAAQ,EAAE,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACtC,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK;SAClB,EACD,IAAI,EACJ,CAAC,CACD,IAAI,CAAA;IACN,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAE1F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,iBAAiB,QAAQ,CAAC,MAAM,WAAW,CAAC,CAAA;IACnF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;IAClE,KAAK,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;IACrF,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GACZ,MAAM,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAC9B,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,YAAY,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QAC/G,KAAK,CAAC,IAAI,CACT,KAAK,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE,CAC5G,CAAA;QACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,WAAW;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;QAC3E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC,CAAA;IACtE,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACd,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;QACzE,KAAK,MAAM,EAAE,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;IACzG,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACxB,CAAC;AAED,SAAS,MAAM,CAAC,KAAgB,EAAE,YAAsB,EAAE,MAAe;IACxE,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IAC1F,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACjF,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAC9D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkC,CAAA;IACvD,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACd,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACzB,CAAC;IAED,MAAM,QAAQ,GAAG,QAAQ,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAEtF,MAAM,YAAY,GAAG,KAAK,CAAC,UAAU;SACnC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,KAAK,IAAI,CAAC;SACvC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAA;IAE7E,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO;YACN,QAAQ;YACR,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CACtB;gBACC,QAAQ;gBACR,QAAQ,EAAE,QAAQ,CAAC,MAAM;gBACzB,YAAY;gBACZ,YAAY;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI;gBACrB,gBAAgB,EAAE,QAAQ,CAAC,MAAM;gBACjC,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,gBAAgB,EAAE,SAAS,CAAC,MAAM;gBAClC,iBAAiB,EAAE,SAAS,CAAC,MAAM;aACnC,EACD,IAAI,EACJ,CAAC,CACD,IAAI;SACL,CAAA;IACF,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CACT,gBAAgB,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG;QAChG,sCAAsC,CACvC,CAAA;IACD,KAAK,CAAC,IAAI,CACT,gBAAgB,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,GAAG;QAC9F,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,CAAC,kDAAkD;YACpD,CAAC,CAAC,+CAA+C,CAAC,CACpD,CAAA;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd;;;;OAIG;IACH,MAAM,QAAQ,GAAG,IAAI,GAAG,CACvB,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;QAChC,GAAG,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/C,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACnD,GAAG,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,GAAG,CAAC,EAAE,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACpD,GAAG,CAAC,EAAE,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAClD,CAAC,CACF,CAAA;IACD,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;YAAE,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;IACrD,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/E,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACxE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,KAAK,YAAY,CAAC,MAAM,4CAA4C,CAAC,CAAA;QAChF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACxF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IACD,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,YAAY,KAAK,IAAI,CAAC,CAAA;IAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QACtD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QACnC,IAAI,GAAG,KAAK,SAAS;YAAE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAA;QACjD,IAAI,GAAG,KAAK,UAAU;YAAE,OAAO,cAAc,CAAA;QAC7C,OAAO,IAAI,CAAA;IACZ,CAAC,CAAC,CAAA;IACF,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAA;QACpD,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC/D,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAClE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;QAC7B,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;YAClC,MAAM,MAAM,GACX,MAAM,CAAC,QAAQ,KAAK,IAAI;gBACvB,CAAC,CAAC,uEAAuE;gBACzE,CAAC,CAAC,gDAAgD,CAAA;YACpD,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,CAAA;QACtD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAC9D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,KAAK,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;QACzE,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAA;YACvE,KAAK,CAAC,IAAI,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,CAAA;QACrD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;QAC/E,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAA;QACzD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAA;QAC5E,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,oBAAoB,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;QACrF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,iBAAiB,IAAI,KAAK,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACpB,KAAK,CAAC,IAAI,CAAC,yBAAyB,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC5G,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;QAC5F,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAA;QAC/F,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,0FAA0F,CAAC,CAAA;QACtG,KAAK,MAAM,GAAG,IAAI,YAAY;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;QACxD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;QAC7E,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,MAAM,EAAE,CAAC;YACrC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,gBAAgB,CAAA;YAClD,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,OAAO,CAAC,MAAM,OAAO,MAAM,EAAE,CAAC,CAAA;YACxD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;YACtD,CAAC;YACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAA;QAC7E,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACf,CAAC;IAED,IAAI,QAAQ,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IAE3F,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAA;AAC5C,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
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"}
@@ -125,7 +125,8 @@ export function renderMarkdown(input) {
125
125
  lines.push(`> ${VERDICT_NOTE[verdict]}`);
126
126
  lines.push("");
127
127
  for (const finding of group) {
128
- lines.push(`### ${finding.entity} — ${finding.summary}`);
128
+ const entityLabel = finding.origin === undefined || finding.origin === "" ? finding.entity : `${finding.origin}/${finding.entity}`;
129
+ lines.push(`### ${entityLabel} — ${finding.summary}`);
129
130
  lines.push("");
130
131
  lines.push(`\`${finding.check}\``);
131
132
  lines.push("");
@@ -365,7 +366,8 @@ export function renderConsole(input) {
365
366
  continue;
366
367
  lines.push(` ${VERDICT_LABEL[verdict].toUpperCase()} (${group.length})`);
367
368
  for (const finding of group) {
368
- lines.push(` ${finding.entity.padEnd(16)} ${finding.summary}`);
369
+ const entityLabel = finding.origin === undefined || finding.origin === "" ? finding.entity : `${finding.origin}/${finding.entity}`;
370
+ lines.push(` ${entityLabel.padEnd(16)} ${finding.summary}`);
369
371
  lines.push(` ${"".padEnd(16)} ${finding.check}`);
370
372
  }
371
373
  lines.push("");