@shield-agent/kya 0.15.0 → 0.16.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 (45) hide show
  1. package/.mcp.json +1 -1
  2. package/README.md +3 -3
  3. package/amp/settings.example.json +1 -1
  4. package/claude/claude_desktop_config.example.json +1 -1
  5. package/cline/cline_mcp_settings.example.json +1 -1
  6. package/copilot/mcp-config.example.json +1 -1
  7. package/dist/receipt/enrich.d.ts +1 -0
  8. package/dist/receipt/enrich.d.ts.map +1 -1
  9. package/dist/receipt/enrich.js +1 -0
  10. package/dist/receipt/enrich.js.map +1 -1
  11. package/dist/receipt/gate-card.d.ts +2 -0
  12. package/dist/receipt/gate-card.d.ts.map +1 -1
  13. package/dist/receipt/gate-card.js +1 -1
  14. package/dist/receipt/gate-card.js.map +1 -1
  15. package/dist/receipt/gate-page.d.ts +47 -0
  16. package/dist/receipt/gate-page.d.ts.map +1 -0
  17. package/dist/receipt/gate-page.js +116 -0
  18. package/dist/receipt/gate-page.js.map +1 -0
  19. package/dist/receipt/live-server.d.ts +8 -0
  20. package/dist/receipt/live-server.d.ts.map +1 -1
  21. package/dist/receipt/live-server.js +134 -1
  22. package/dist/receipt/live-server.js.map +1 -1
  23. package/dist/receipt/receipt-css.d.ts +6 -5
  24. package/dist/receipt/receipt-css.d.ts.map +1 -1
  25. package/dist/receipt/receipt-css.js +255 -55
  26. package/dist/receipt/receipt-css.js.map +1 -1
  27. package/dist/receipt/render-receipt.d.ts +2 -2
  28. package/dist/receipt/render-receipt.d.ts.map +1 -1
  29. package/dist/receipt/render-receipt.js +414 -49
  30. package/dist/receipt/render-receipt.js.map +1 -1
  31. package/droid/README.md +1 -1
  32. package/droid/mcp.example.json +1 -1
  33. package/gemini/settings.example.json +1 -1
  34. package/grok/README.md +1 -1
  35. package/kilo/kilo.example.json +1 -1
  36. package/kimi/mcp.example.json +1 -1
  37. package/kiro/mcp.example.json +1 -1
  38. package/manifest.json +1 -1
  39. package/mastracode/mcp.example.json +1 -1
  40. package/mcp.json +1 -1
  41. package/openai/codex.config.example.toml +1 -1
  42. package/opencode/opencode.example.json +1 -1
  43. package/package.json +1 -1
  44. package/qwen/settings.example.json +1 -1
  45. package/server.json +2 -2
@@ -4,12 +4,13 @@
4
4
  * The page must stay fully offline/standalone: system font stacks only, no
5
5
  * external URLs of any kind. Colors come from the --bg/--fg/--mute/--line/
6
6
  * --card base tokens plus the --ok/--warn/--bad tone family; dark is the
7
- * default and light rides on prefers-color-scheme, with translucency done via
8
- * color-mix so both schemes share one rule set.
7
+ * default and light rides on prefers-color-scheme or an explicit
8
+ * html[data-theme="light"] attribute, with translucency done via color-mix so
9
+ * both schemes share one rule set.
9
10
  *
10
- * Tab switching is pure CSS: nav links point at #overview/#changes/#certify/
11
- * #activity/#system and :target shows the matching zone. The hide rules are
12
- * gated behind
11
+ * Zone switching is pure CSS: nav links point at
12
+ * #overview/#activity/#changes/#certify/#gateway/#system and :target shows the
13
+ * matching zone. The hide rules are gated behind
13
14
  * `@supports selector(body:has(*))`, so a browser without :has() simply shows
14
15
  * every zone stacked — degraded, but nothing is ever hidden unreachable.
15
16
  */
@@ -1 +1 @@
1
- {"version":3,"file":"receipt-css.d.ts","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAykBnC"}
1
+ {"version":3,"file":"receipt-css.d.ts","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAgxBnC"}
@@ -4,12 +4,13 @@
4
4
  * The page must stay fully offline/standalone: system font stacks only, no
5
5
  * external URLs of any kind. Colors come from the --bg/--fg/--mute/--line/
6
6
  * --card base tokens plus the --ok/--warn/--bad tone family; dark is the
7
- * default and light rides on prefers-color-scheme, with translucency done via
8
- * color-mix so both schemes share one rule set.
7
+ * default and light rides on prefers-color-scheme or an explicit
8
+ * html[data-theme="light"] attribute, with translucency done via color-mix so
9
+ * both schemes share one rule set.
9
10
  *
10
- * Tab switching is pure CSS: nav links point at #overview/#changes/#certify/
11
- * #activity/#system and :target shows the matching zone. The hide rules are
12
- * gated behind
11
+ * Zone switching is pure CSS: nav links point at
12
+ * #overview/#activity/#changes/#certify/#gateway/#system and :target shows the
13
+ * matching zone. The hide rules are gated behind
13
14
  * `@supports selector(body:has(*))`, so a browser without :has() simply shows
14
15
  * every zone stacked — degraded, but nothing is ever hidden unreachable.
15
16
  */
@@ -17,6 +18,7 @@ export function receiptCss() {
17
18
  return `
18
19
  :root {
19
20
  color-scheme: dark;
21
+ --sidebar-width: 15rem;
20
22
  --bg: #0a0c10;
21
23
  --fg: #eef2f7;
22
24
  --mute: #8b95a8;
@@ -28,8 +30,21 @@ export function receiptCss() {
28
30
  --rail: #2a3344;
29
31
  --day: #6b7280;
30
32
  }
33
+ :root[data-theme="light"] {
34
+ color-scheme: light;
35
+ --bg: #f3f5f8;
36
+ --fg: #0f172a;
37
+ --mute: #64748b;
38
+ --line: #e2e8f0;
39
+ --card: #ffffff;
40
+ --ok: #059669;
41
+ --bad: #dc2626;
42
+ --warn: #d97706;
43
+ --rail: #cbd5e1;
44
+ --day: #64748b;
45
+ }
31
46
  @media (prefers-color-scheme: light) {
32
- :root {
47
+ :root:not([data-theme]) {
33
48
  color-scheme: light;
34
49
  --bg: #f3f5f8;
35
50
  --fg: #0f172a;
@@ -51,20 +66,94 @@ export function receiptCss() {
51
66
  color: var(--fg);
52
67
  line-height: 1.4;
53
68
  }
54
- main { max-width: 74rem; margin: 0 auto; padding: 1.35rem 1.25rem 3.5rem; }
55
- /* Sticky top zone: header + tab nav stay pinned as one unit, so a fragment
56
- jump to a zone never strands the nav behind the header. */
57
- .topstick {
58
- position: sticky; top: 0; z-index: 6;
59
- background: color-mix(in srgb, var(--bg) 88%, transparent);
60
- -webkit-backdrop-filter: blur(10px);
61
- backdrop-filter: blur(10px);
69
+ /* Fixed left sidebar: brand, vertical nav, footer actions. */
70
+ .sidebar {
71
+ position: fixed; top: 0; left: 0; bottom: 0;
72
+ width: var(--sidebar-width);
73
+ display: flex; flex-direction: column;
74
+ background: var(--card);
75
+ border-right: 1px solid var(--line);
76
+ z-index: 10;
77
+ }
78
+ .sidebar-header {
79
+ padding: 1.1rem 1.25rem;
62
80
  border-bottom: 1px solid var(--line);
63
- margin-bottom: 1rem;
64
81
  }
65
- header.bar {
66
- padding: 0.85rem 0 0.4rem;
82
+ .brand {
83
+ display: inline-flex; align-items: center; gap: 0.55rem;
84
+ font-weight: 800; font-size: 1.1rem; letter-spacing: -0.02em;
85
+ }
86
+ .mark {
87
+ display: inline-flex; align-items: center; justify-content: center;
88
+ width: 1.6rem; height: 1.6rem; border-radius: 6px;
89
+ background: var(--fg); color: var(--card);
90
+ font-size: 1rem; line-height: 1;
91
+ }
92
+ .wordmark { color: var(--fg); }
93
+ .sidebar-nav {
94
+ flex: 1 1 auto; overflow-y: auto;
95
+ padding: 0.75rem; display: flex; flex-direction: column; gap: 0.15rem;
96
+ }
97
+ .nav-link {
98
+ display: flex; align-items: center; justify-content: space-between;
99
+ gap: 0.5rem;
100
+ padding: 0.55rem 0.75rem;
101
+ font-size: 0.82rem; font-weight: 600; color: var(--mute);
102
+ text-decoration: none; border-radius: 8px;
103
+ border: 1px solid transparent;
104
+ }
105
+ .nav-link:hover { color: var(--fg); background: color-mix(in srgb, var(--bg) 55%, var(--card)); }
106
+ .nav-link:focus-visible {
107
+ outline: 2px solid var(--ok);
108
+ outline-offset: 2px;
109
+ color: var(--fg);
110
+ }
111
+ .nav-label { display: inline-flex; align-items: center; gap: 0.4rem; }
112
+ .nav-count {
113
+ font-size: 0.72rem; font-variant-numeric: tabular-nums; font-weight: 650;
114
+ color: var(--mute); background: color-mix(in srgb, var(--bg) 55%, var(--card));
115
+ border: 1px solid var(--line); border-radius: 999px;
116
+ padding: 0.08rem 0.45rem;
117
+ }
118
+ .status-dot {
119
+ width: 0.45rem; height: 0.45rem; border-radius: 50%;
120
+ background: var(--ok);
121
+ box-shadow: 0 0 0 2px color-mix(in srgb, var(--ok) 22%, transparent);
122
+ }
123
+ .sidebar-footer {
124
+ padding: 0.9rem 1.25rem;
125
+ border-top: 1px solid var(--line);
126
+ display: flex; align-items: center; justify-content: space-between; gap: 0.75rem;
127
+ }
128
+ .theme-toggle {
129
+ font-family: inherit; font-size: 0.75rem; font-weight: 600;
130
+ color: var(--fg); background: var(--bg);
131
+ border: 1px solid var(--line); border-radius: 8px;
132
+ padding: 0.35rem 0.7rem; cursor: pointer;
133
+ appearance: none; -webkit-appearance: none;
134
+ }
135
+ .theme-toggle:hover { border-color: var(--mute); }
136
+ .theme-toggle:focus-visible {
137
+ outline: 2px solid var(--ok);
138
+ outline-offset: 2px;
139
+ }
140
+ .sidebar-footer a {
141
+ font-size: 0.75rem; font-weight: 600; color: var(--mute);
142
+ text-decoration: none;
143
+ }
144
+ .sidebar-footer a:hover { color: var(--fg); }
145
+ .sidebar-footer a:focus-visible {
146
+ outline: 2px solid var(--ok);
147
+ outline-offset: 2px;
148
+ color: var(--fg);
149
+ }
150
+ main {
151
+ margin-left: var(--sidebar-width);
152
+ max-width: 74rem;
153
+ margin-right: auto;
154
+ padding: 1.35rem 1.25rem 3.5rem;
67
155
  }
156
+ .page-header { margin-bottom: 1.25rem; }
68
157
  .title-row {
69
158
  display: flex; align-items: baseline; justify-content: space-between;
70
159
  gap: 0.75rem; flex-wrap: wrap;
@@ -134,6 +223,26 @@ export function receiptCss() {
134
223
  @media (max-width: 1100px) {
135
224
  .hero { grid-template-columns: repeat(2, 1fr); }
136
225
  }
226
+ @media (max-width: 900px) {
227
+ .sidebar {
228
+ position: sticky; top: 0;
229
+ width: 100%; height: auto; flex-direction: row; flex-wrap: wrap;
230
+ border-right: none; border-bottom: 1px solid var(--line);
231
+ }
232
+ .sidebar-header {
233
+ border-bottom: none; border-right: 1px solid var(--line);
234
+ padding: 0.75rem 1rem;
235
+ }
236
+ .sidebar-nav {
237
+ flex-direction: row; flex-wrap: wrap; overflow-x: auto;
238
+ flex: 1 1 auto; padding: 0.6rem;
239
+ }
240
+ .sidebar-footer {
241
+ border-top: none; border-left: 1px solid var(--line);
242
+ padding: 0.75rem 1rem;
243
+ }
244
+ main { margin-left: 0; padding-top: 1rem; }
245
+ }
137
246
  @media (max-width: 720px) {
138
247
  main { padding: 1.1rem 0.85rem 3rem; }
139
248
  }
@@ -187,51 +296,27 @@ export function receiptCss() {
187
296
  .sev.high { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
188
297
  .sev.medium { color: var(--day); }
189
298
  .sev.low { color: var(--mute); }
190
- /* Tabs: pure-CSS :target switching, no JS. Without :has() support the hide
191
- rules never apply and every zone stays visible (degraded but complete). */
192
- .tabs {
193
- display: flex; gap: 0.25rem; flex-wrap: wrap;
194
- }
195
- .tab {
196
- padding: 0.45rem 0.85rem; margin-bottom: -1px;
197
- font-size: 0.8rem; font-weight: 600; color: var(--mute);
198
- text-decoration: none;
199
- border: 1px solid transparent; border-bottom: none;
200
- border-radius: 8px 8px 0 0;
201
- }
202
- .tab:hover { color: var(--fg); }
203
- .tab:focus-visible {
204
- outline: 2px solid var(--ok);
205
- outline-offset: 2px;
206
- color: var(--fg);
207
- }
208
- /* Narrow screens: tabs stop wrapping and scroll horizontally instead.
209
- Padding keeps the focus outline (2px + 2px offset) inside the scrollport. */
210
- @media (max-width: 480px) {
211
- .tabs {
212
- flex-wrap: nowrap; overflow-x: auto;
213
- scrollbar-width: thin;
214
- padding: 4px;
215
- }
216
- .tab { flex: none; }
217
- }
299
+ /* Sidebar nav: pure-CSS :target switching, no JS. Without :has() support
300
+ the hide rules never apply and every zone stays visible (degraded but complete). */
218
301
  .zone { scroll-margin-top: 6.4rem; }
219
302
  .zone-empty { margin: 0.25rem 0 0.5rem; }
220
303
  @supports selector(body:has(*)) {
221
- #changes, #activity, #certify, #system { display: none; }
222
- #overview:target, #changes:target, #activity:target, #certify:target, #system:target { display: block; }
223
- body:has(#changes:target) #overview,
304
+ #activity, #changes, #certify, #gateway, #system { display: none; }
305
+ #overview:target, #activity:target, #changes:target, #certify:target, #gateway:target, #system:target { display: block; }
224
306
  body:has(#activity:target) #overview,
307
+ body:has(#changes:target) #overview,
225
308
  body:has(#certify:target) #overview,
309
+ body:has(#gateway:target) #overview,
226
310
  body:has(#system:target) #overview { display: none; }
227
- body:not(:has(.zone:target)) .tab[href="#overview"],
228
- body:has(#overview:target) .tab[href="#overview"],
229
- body:has(#changes:target) .tab[href="#changes"],
230
- body:has(#certify:target) .tab[href="#certify"],
231
- body:has(#activity:target) .tab[href="#activity"],
232
- body:has(#system:target) .tab[href="#system"] {
311
+ body:not(:has(.zone:target)) .nav-link[href="#overview"],
312
+ body:has(#overview:target) .nav-link[href="#overview"],
313
+ body:has(#activity:target) .nav-link[href="#activity"],
314
+ body:has(#changes:target) .nav-link[href="#changes"],
315
+ body:has(#certify:target) .nav-link[href="#certify"],
316
+ body:has(#gateway:target) .nav-link[href="#gateway"],
317
+ body:has(#system:target) .nav-link[href="#system"] {
233
318
  color: var(--fg);
234
- background: var(--card);
319
+ background: var(--bg);
235
320
  border-color: var(--line);
236
321
  }
237
322
  }
@@ -597,6 +682,121 @@ export function receiptCss() {
597
682
  font-size: 0.72rem; color: var(--mute);
598
683
  background: var(--card); border: 1px solid var(--line);
599
684
  border-radius: 6px; padding: 0.18rem 0.4rem;
685
+ }
686
+ /* Gateway zone dashboard */
687
+ .gate-zone h2 { margin: 0 0 0.15rem; }
688
+ .gate-zone > .sub {
689
+ margin: 0 0 0.9rem; color: var(--mute); font-size: 0.82rem;
690
+ }
691
+ .stat-cards {
692
+ display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem;
693
+ margin-bottom: 1rem;
694
+ }
695
+ .stat-card {
696
+ background: var(--card); border: 1px solid var(--line);
697
+ border-radius: 12px; padding: 0.7rem 0.9rem;
698
+ display: flex; flex-direction: column; gap: 0.35rem;
699
+ }
700
+ .stat-card .lab {
701
+ font-size: 0.66rem; font-weight: 700; letter-spacing: 0.07em;
702
+ text-transform: uppercase; color: var(--mute);
703
+ }
704
+ .stat-card .num {
705
+ font-size: 1.6rem; font-weight: 700; line-height: 1.15;
706
+ font-variant-numeric: tabular-nums; letter-spacing: -0.02em;
707
+ color: var(--fg);
708
+ }
709
+ .stat-card .num.bad { color: var(--bad); }
710
+ .stat-card .val { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
711
+ .card-grid {
712
+ display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem;
713
+ margin-bottom: 1rem;
714
+ }
715
+ .card {
716
+ background: var(--card); border: 1px solid var(--line);
717
+ border-radius: 12px; padding: 0.7rem 0.9rem 0.8rem;
718
+ }
719
+ .card h3 {
720
+ margin: 0 0 0.55rem; font-size: 0.72rem; font-weight: 700;
721
+ letter-spacing: 0.07em; text-transform: uppercase; color: var(--day);
722
+ }
723
+ .card h3 .mute { text-transform: none; letter-spacing: 0.02em; font-weight: 600; }
724
+ .card .sub {
725
+ margin: 0.6rem 0 0.3rem; font-size: 0.66rem; font-weight: 700;
726
+ letter-spacing: 0.06em; text-transform: uppercase; color: var(--mute);
727
+ }
728
+ .card .line { margin: 0.25rem 0; font-size: 0.82rem; word-break: break-word; }
729
+ .card pre {
730
+ background: color-mix(in srgb, var(--bg) 55%, var(--card));
731
+ border: 1px solid var(--line); border-radius: 8px;
732
+ padding: 0.45rem 0.55rem; margin: 0.3rem 0 0.6rem;
733
+ font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
734
+ font-size: 0.74rem; white-space: pre-wrap; word-break: break-word;
735
+ color: var(--fg);
736
+ }
737
+ .card details { margin: 0.25rem 0; }
738
+ .card details summary {
739
+ font-size: 0.8rem; cursor: pointer; color: var(--fg);
740
+ list-style: none;
741
+ }
742
+ .card details summary::-webkit-details-marker { display: none; }
743
+ .targets-table { margin-top: 0.35rem; }
744
+ .chip.bad {
745
+ color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, transparent);
746
+ background: color-mix(in srgb, var(--bad) 10%, var(--card));
747
+ }
748
+ .playground-form {
749
+ display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: stretch;
750
+ margin: 0.5rem 0;
751
+ }
752
+ .playground-form select,
753
+ .playground-form input {
754
+ font-family: inherit; font-size: 0.8rem; color: var(--fg); background: var(--bg);
755
+ border: 1px solid var(--line); border-radius: 8px; padding: 0.35rem 0.55rem;
756
+ appearance: none; -webkit-appearance: none;
757
+ }
758
+ .playground-form select { min-width: 8rem; }
759
+ .playground-form input { flex: 1 1 10rem; min-width: 8rem; }
760
+ .quick-actions {
761
+ display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
762
+ margin: 0.5rem 0;
763
+ }
764
+ .sr-only {
765
+ position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
766
+ overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
767
+ }
768
+ @media (max-width: 900px) {
769
+ .stat-cards { grid-template-columns: repeat(2, 1fr); }
770
+ .card-grid { grid-template-columns: 1fr; }
771
+ }
772
+ @media (max-width: 480px) {
773
+ .stat-cards { grid-template-columns: 1fr; }
774
+ }
775
+ /* Gateway interactive result areas (playground + doctor/quick actions). */
776
+ .gate-result {
777
+ margin-top: 0.5rem;
778
+ padding: 0.45rem 0.6rem;
779
+ font-size: 0.8rem;
780
+ background: color-mix(in srgb, var(--bg) 55%, var(--card));
781
+ border: 1px solid var(--line);
782
+ border-radius: 8px;
783
+ word-break: break-word;
784
+ }
785
+ .gate-result p { margin: 0.15rem 0; }
786
+ .gate-result pre {
787
+ margin: 0;
788
+ white-space: pre-wrap;
789
+ word-break: break-word;
790
+ font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
791
+ font-size: 0.74rem;
792
+ }
793
+ .gate-result.error {
794
+ background: color-mix(in srgb, var(--bad) 10%, var(--card));
795
+ border-color: color-mix(in srgb, var(--bad) 35%, var(--line));
796
+ }
797
+ button[disabled], .stat[disabled] {
798
+ opacity: 0.55;
799
+ cursor: not-allowed;
600
800
  }`;
601
801
  }
602
802
  //# sourceMappingURL=receipt-css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAukBL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8wBL,CAAA;AACJ,CAAC"}
@@ -2,7 +2,7 @@ import { type TrailEvent } from "../trail.js";
2
2
  import type { KyaFileConfig } from "../config.js";
3
3
  import { type CertifyCard, type OrrCard, type SandboxCard, type WiredHostRow } from "./enrich.js";
4
4
  import { type ShowbackReport } from "../showback/cost-per-task.js";
5
- import { type GateCard } from "./gate-card.js";
5
+ import { type GatePage } from "./gate-page.js";
6
6
  export interface ReceiptModel {
7
7
  readonly title: string;
8
8
  readonly rangeLabel: string;
@@ -27,7 +27,7 @@ export interface ReceiptModel {
27
27
  /** Per-host wiring status across the connect registry. */
28
28
  readonly wiredHosts?: readonly WiredHostRow[];
29
29
  /** Local gateway state + per-server activity in the window. */
30
- readonly gate?: GateCard;
30
+ readonly gate?: GatePage;
31
31
  /** Slim ORR card from orr-report/report.json. */
32
32
  readonly orr?: OrrCard;
33
33
  /** Live Agent Trust Baseline card, recomputed on every model load. */
@@ -1 +1 @@
1
- {"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}