@shield-agent/kya 0.15.0 → 0.18.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.
- package/.mcp.json +1 -1
- package/README.md +6 -4
- package/amp/settings.example.json +1 -1
- package/assets/activity-receipt.png +0 -0
- package/assets/report-activity.png +0 -0
- package/assets/report-certify.png +0 -0
- package/assets/report-changes.png +0 -0
- package/assets/report-gateway-backends.png +0 -0
- package/assets/report-gateway-listeners.png +0 -0
- package/assets/report-gateway-playground.png +0 -0
- package/assets/report-gateway-policies.png +0 -0
- package/assets/report-gateway-routes.png +0 -0
- package/assets/report-gateway.png +0 -0
- package/assets/report-overview.png +0 -0
- package/claude/claude_desktop_config.example.json +1 -1
- package/cline/cline_mcp_settings.example.json +1 -1
- package/copilot/mcp-config.example.json +1 -1
- package/dist/receipt/enrich.d.ts +1 -0
- package/dist/receipt/enrich.d.ts.map +1 -1
- package/dist/receipt/enrich.js +1 -0
- package/dist/receipt/enrich.js.map +1 -1
- package/dist/receipt/gate-card.d.ts +2 -0
- package/dist/receipt/gate-card.d.ts.map +1 -1
- package/dist/receipt/gate-card.js +1 -1
- package/dist/receipt/gate-card.js.map +1 -1
- package/dist/receipt/gate-page.d.ts +86 -0
- package/dist/receipt/gate-page.d.ts.map +1 -0
- package/dist/receipt/gate-page.js +175 -0
- package/dist/receipt/gate-page.js.map +1 -0
- package/dist/receipt/live-server.d.ts +8 -0
- package/dist/receipt/live-server.d.ts.map +1 -1
- package/dist/receipt/live-server.js +180 -2
- package/dist/receipt/live-server.js.map +1 -1
- package/dist/receipt/receipt-css.d.ts +6 -5
- package/dist/receipt/receipt-css.d.ts.map +1 -1
- package/dist/receipt/receipt-css.js +330 -80
- package/dist/receipt/receipt-css.js.map +1 -1
- package/dist/receipt/render-receipt.d.ts +19 -2
- package/dist/receipt/render-receipt.d.ts.map +1 -1
- package/dist/receipt/render-receipt.js +758 -135
- package/dist/receipt/render-receipt.js.map +1 -1
- package/droid/README.md +1 -1
- package/droid/mcp.example.json +1 -1
- package/gemini/settings.example.json +1 -1
- package/grok/README.md +1 -1
- package/kilo/kilo.example.json +1 -1
- package/kimi/mcp.example.json +1 -1
- package/kiro/mcp.example.json +1 -1
- package/manifest.json +1 -1
- package/mastracode/mcp.example.json +1 -1
- package/mcp.json +1 -1
- package/openai/codex.config.example.toml +1 -1
- package/opencode/opencode.example.json +1 -1
- package/package.json +1 -1
- package/qwen/settings.example.json +1 -1
- 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
|
|
8
|
-
*
|
|
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
|
-
*
|
|
11
|
-
* #activity/#system and :target shows the
|
|
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,102 @@ export function receiptCss() {
|
|
|
51
66
|
color: var(--fg);
|
|
52
67
|
line-height: 1.4;
|
|
53
68
|
}
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
background:
|
|
60
|
-
-
|
|
61
|
-
|
|
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
|
-
|
|
66
|
-
|
|
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-group { display: flex; flex-direction: column; gap: 0.05rem; margin-top: 0.35rem; }
|
|
113
|
+
.nav-group-label {
|
|
114
|
+
display: inline-flex; align-items: center; gap: 0.4rem;
|
|
115
|
+
padding: 0.45rem 0.75rem 0.25rem;
|
|
116
|
+
font-size: 0.72rem; font-weight: 700; letter-spacing: 0.06em;
|
|
117
|
+
text-transform: uppercase; color: var(--day);
|
|
118
|
+
}
|
|
119
|
+
.nav-sub { margin-left: 0.75rem; font-size: 0.78rem; font-weight: 500; }
|
|
120
|
+
.nav-count {
|
|
121
|
+
font-size: 0.72rem; font-variant-numeric: tabular-nums; font-weight: 650;
|
|
122
|
+
color: var(--mute); background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
123
|
+
border: 1px solid var(--line); border-radius: 999px;
|
|
124
|
+
padding: 0.08rem 0.45rem;
|
|
125
|
+
}
|
|
126
|
+
.status-dot {
|
|
127
|
+
width: 0.45rem; height: 0.45rem; border-radius: 50%;
|
|
128
|
+
background: var(--ok);
|
|
129
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--ok) 22%, transparent);
|
|
130
|
+
}
|
|
131
|
+
.sidebar-footer {
|
|
132
|
+
padding: 0.9rem 1.25rem;
|
|
133
|
+
border-top: 1px solid var(--line);
|
|
134
|
+
display: flex; align-items: center; justify-content: space-between; gap: 0.75rem;
|
|
135
|
+
}
|
|
136
|
+
.theme-toggle {
|
|
137
|
+
font-family: inherit; font-size: 0.75rem; font-weight: 600;
|
|
138
|
+
color: var(--fg); background: var(--bg);
|
|
139
|
+
border: 1px solid var(--line); border-radius: 8px;
|
|
140
|
+
padding: 0.35rem 0.7rem; cursor: pointer;
|
|
141
|
+
appearance: none; -webkit-appearance: none;
|
|
142
|
+
}
|
|
143
|
+
.theme-toggle:hover { border-color: var(--mute); }
|
|
144
|
+
.theme-toggle:focus-visible {
|
|
145
|
+
outline: 2px solid var(--ok);
|
|
146
|
+
outline-offset: 2px;
|
|
147
|
+
}
|
|
148
|
+
.sidebar-footer a {
|
|
149
|
+
font-size: 0.75rem; font-weight: 600; color: var(--mute);
|
|
150
|
+
text-decoration: none;
|
|
67
151
|
}
|
|
152
|
+
.sidebar-footer a:hover { color: var(--fg); }
|
|
153
|
+
.sidebar-footer a:focus-visible {
|
|
154
|
+
outline: 2px solid var(--ok);
|
|
155
|
+
outline-offset: 2px;
|
|
156
|
+
color: var(--fg);
|
|
157
|
+
}
|
|
158
|
+
main {
|
|
159
|
+
margin-left: var(--sidebar-width);
|
|
160
|
+
max-width: 74rem;
|
|
161
|
+
margin-right: auto;
|
|
162
|
+
padding: 1.35rem 1.25rem 3.5rem;
|
|
163
|
+
}
|
|
164
|
+
.page-header { margin-bottom: 1.25rem; }
|
|
68
165
|
.title-row {
|
|
69
166
|
display: flex; align-items: baseline; justify-content: space-between;
|
|
70
167
|
gap: 0.75rem; flex-wrap: wrap;
|
|
@@ -95,14 +192,48 @@ export function receiptCss() {
|
|
|
95
192
|
@media (prefers-reduced-motion: reduce) {
|
|
96
193
|
.live::before { animation: none; }
|
|
97
194
|
}
|
|
98
|
-
/* Hero KPI grid: Certify spans two columns on wide layouts, 4→2→1. Every
|
|
99
|
-
hero card is a direct .panel child — one chrome, no wrapper special-cases. */
|
|
100
195
|
.hero {
|
|
101
|
-
display:
|
|
102
|
-
|
|
196
|
+
display: flex;
|
|
197
|
+
flex-direction: column;
|
|
198
|
+
gap: 1rem;
|
|
199
|
+
margin-bottom: 1.25rem;
|
|
200
|
+
}
|
|
201
|
+
.hero > .panel { margin-bottom: 0; }
|
|
202
|
+
.hero-tiles {
|
|
203
|
+
display: grid;
|
|
204
|
+
grid-template-columns: repeat(4, 1fr);
|
|
205
|
+
gap: 1rem;
|
|
206
|
+
}
|
|
207
|
+
.hero-tiles > .panel { margin-bottom: 0; height: 100%; }
|
|
208
|
+
@media (max-width: 1100px) {
|
|
209
|
+
.hero-tiles { grid-template-columns: repeat(2, 1fr); }
|
|
210
|
+
}
|
|
211
|
+
@media (max-width: 900px) {
|
|
212
|
+
.sidebar {
|
|
213
|
+
position: sticky; top: 0;
|
|
214
|
+
width: 100%; height: auto; flex-direction: row; flex-wrap: wrap;
|
|
215
|
+
border-right: none; border-bottom: 1px solid var(--line);
|
|
216
|
+
}
|
|
217
|
+
.sidebar-header {
|
|
218
|
+
border-bottom: none; border-right: 1px solid var(--line);
|
|
219
|
+
padding: 0.75rem 1rem;
|
|
220
|
+
}
|
|
221
|
+
.sidebar-nav {
|
|
222
|
+
flex-direction: row; flex-wrap: wrap; overflow-x: auto;
|
|
223
|
+
flex: 1 1 auto; padding: 0.6rem;
|
|
224
|
+
}
|
|
225
|
+
.sidebar-footer {
|
|
226
|
+
border-top: none; border-left: 1px solid var(--line);
|
|
227
|
+
padding: 0.75rem 1rem;
|
|
228
|
+
}
|
|
229
|
+
main { margin-left: 0; padding-top: 1rem; }
|
|
230
|
+
}
|
|
231
|
+
@media (max-width: 720px) {
|
|
232
|
+
main { padding: 1.1rem 0.85rem 3rem; }
|
|
233
|
+
}
|
|
234
|
+
@media (max-width: 480px) {
|
|
235
|
+
.hero-tiles { grid-template-columns: 1fr; }
|
|
103
236
|
}
|
|
104
|
-
.hero > .panel { margin-bottom: 0; height: 100%; }
|
|
105
|
-
.hero-certify { grid-column: span 2; min-width: 0; }
|
|
106
237
|
/* Result-tone accent: inset bar so the border box never shifts. */
|
|
107
238
|
.hero-certify.pass {
|
|
108
239
|
border-color: color-mix(in srgb, var(--ok) 40%, var(--line));
|
|
@@ -114,33 +245,16 @@ export function receiptCss() {
|
|
|
114
245
|
}
|
|
115
246
|
/* Hero result pill reads larger than inline status pills. */
|
|
116
247
|
.hero-certify .pill { font-size: 0.82rem; padding: 0.22rem 0.75rem; }
|
|
117
|
-
/* Status legend + attested summary: small muted single lines under the
|
|
118
|
-
count tiles; allowed to wrap on narrow viewports. */
|
|
248
|
+
/* Status legend + attested summary: small muted single lines under the count tiles. */
|
|
119
249
|
.hero-certify .legend, .hero-certify .att-line {
|
|
120
250
|
margin: 0.3rem 0 0; font-size: 0.72rem; color: var(--mute);
|
|
121
251
|
overflow-wrap: break-word;
|
|
122
252
|
}
|
|
123
|
-
/* Evidence one-liner sits beneath its gap row
|
|
253
|
+
/* Evidence one-liner sits beneath its gap row. */
|
|
124
254
|
.hero-certify .rows .gap-ev {
|
|
125
255
|
flex-basis: 100%; color: var(--mute); font-size: 0.74rem;
|
|
126
256
|
overflow-wrap: break-word;
|
|
127
257
|
}
|
|
128
|
-
/* Gateway quickstart: compact numbered steps under the not-set-up line. */
|
|
129
|
-
.gate .steps {
|
|
130
|
-
margin: 0.4rem 0 0; padding-left: 1.25rem;
|
|
131
|
-
font-size: 0.78rem; color: var(--mute);
|
|
132
|
-
display: flex; flex-direction: column; gap: 0.15rem;
|
|
133
|
-
}
|
|
134
|
-
@media (max-width: 1100px) {
|
|
135
|
-
.hero { grid-template-columns: repeat(2, 1fr); }
|
|
136
|
-
}
|
|
137
|
-
@media (max-width: 720px) {
|
|
138
|
-
main { padding: 1.1rem 0.85rem 3rem; }
|
|
139
|
-
}
|
|
140
|
-
@media (max-width: 480px) {
|
|
141
|
-
.hero { grid-template-columns: 1fr; }
|
|
142
|
-
.hero-certify { grid-column: span 1; }
|
|
143
|
-
}
|
|
144
258
|
.kpi-row { display: flex; flex-wrap: wrap; gap: 0.8rem 1.2rem; }
|
|
145
259
|
.kpi { display: flex; flex-direction: column; gap: 0.1rem; min-width: 2.8rem; }
|
|
146
260
|
.kpi-num {
|
|
@@ -187,51 +301,42 @@ export function receiptCss() {
|
|
|
187
301
|
.sev.high { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
|
|
188
302
|
.sev.medium { color: var(--day); }
|
|
189
303
|
.sev.low { color: var(--mute); }
|
|
190
|
-
/*
|
|
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
|
-
}
|
|
304
|
+
/* Sidebar nav: pure-CSS :target switching, no JS. Without :has() support
|
|
305
|
+
the hide rules never apply and every zone stays visible (degraded but complete). */
|
|
218
306
|
.zone { scroll-margin-top: 6.4rem; }
|
|
219
307
|
.zone-empty { margin: 0.25rem 0 0.5rem; }
|
|
220
308
|
@supports selector(body:has(*)) {
|
|
221
|
-
#
|
|
222
|
-
#
|
|
223
|
-
|
|
309
|
+
#activity, #changes, #certify,
|
|
310
|
+
#gateway-home, #gateway-listeners, #gateway-routes, #gateway-backends, #gateway-policies, #gateway-playground,
|
|
311
|
+
#system { display: none; }
|
|
312
|
+
#overview:target,
|
|
313
|
+
#activity:target, #changes:target, #certify:target,
|
|
314
|
+
#gateway-home:target, #gateway-listeners:target, #gateway-routes:target, #gateway-backends:target, #gateway-policies:target, #gateway-playground:target,
|
|
315
|
+
#system:target { display: block; }
|
|
224
316
|
body:has(#activity:target) #overview,
|
|
317
|
+
body:has(#changes:target) #overview,
|
|
225
318
|
body:has(#certify:target) #overview,
|
|
319
|
+
body:has(#gateway-home:target) #overview,
|
|
320
|
+
body:has(#gateway-listeners:target) #overview,
|
|
321
|
+
body:has(#gateway-routes:target) #overview,
|
|
322
|
+
body:has(#gateway-backends:target) #overview,
|
|
323
|
+
body:has(#gateway-policies:target) #overview,
|
|
324
|
+
body:has(#gateway-playground:target) #overview,
|
|
226
325
|
body:has(#system:target) #overview { display: none; }
|
|
227
|
-
body:not(:has(.zone:target)) .
|
|
228
|
-
body:has(#overview:target) .
|
|
229
|
-
body:has(#
|
|
230
|
-
body:has(#
|
|
231
|
-
body:has(#
|
|
232
|
-
body:has(#system:target) .
|
|
326
|
+
body:not(:has(.zone:target)) .nav-link[href="#overview"],
|
|
327
|
+
body:has(#overview:target) .nav-link[href="#overview"],
|
|
328
|
+
body:has(#activity:target) .nav-link[href="#activity"],
|
|
329
|
+
body:has(#changes:target) .nav-link[href="#changes"],
|
|
330
|
+
body:has(#certify:target) .nav-link[href="#certify"],
|
|
331
|
+
body:has(#system:target) .nav-link[href="#system"],
|
|
332
|
+
body:has(#gateway-home:target) .nav-link[href="#gateway-home"],
|
|
333
|
+
body:has(#gateway-listeners:target) .nav-link[href="#gateway-listeners"],
|
|
334
|
+
body:has(#gateway-routes:target) .nav-link[href="#gateway-routes"],
|
|
335
|
+
body:has(#gateway-backends:target) .nav-link[href="#gateway-backends"],
|
|
336
|
+
body:has(#gateway-policies:target) .nav-link[href="#gateway-policies"],
|
|
337
|
+
body:has(#gateway-playground:target) .nav-link[href="#gateway-playground"] {
|
|
233
338
|
color: var(--fg);
|
|
234
|
-
background: var(--
|
|
339
|
+
background: var(--bg);
|
|
235
340
|
border-color: var(--line);
|
|
236
341
|
}
|
|
237
342
|
}
|
|
@@ -597,6 +702,151 @@ export function receiptCss() {
|
|
|
597
702
|
font-size: 0.72rem; color: var(--mute);
|
|
598
703
|
background: var(--card); border: 1px solid var(--line);
|
|
599
704
|
border-radius: 6px; padding: 0.18rem 0.4rem;
|
|
705
|
+
}
|
|
706
|
+
/* Gateway zone dashboard */
|
|
707
|
+
.gate-zone { display: flex; flex-direction: column; gap: 1rem; }
|
|
708
|
+
.gate-zone h2 { margin: 0 0 0.15rem; }
|
|
709
|
+
.gate-zone > .sub,
|
|
710
|
+
.page-sub {
|
|
711
|
+
margin: 0 0 0.9rem; color: var(--mute); font-size: 0.82rem;
|
|
712
|
+
}
|
|
713
|
+
.page-title {
|
|
714
|
+
margin: 0 0 0.15rem; font-size: 1.1rem; font-weight: 600;
|
|
715
|
+
letter-spacing: -0.02em;
|
|
716
|
+
}
|
|
717
|
+
.gate-status-header {
|
|
718
|
+
display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.55rem;
|
|
719
|
+
}
|
|
720
|
+
.gate-status-title {
|
|
721
|
+
font-size: 1.25rem; font-weight: 600; letter-spacing: -0.025em;
|
|
722
|
+
}
|
|
723
|
+
.gate-status-meta {
|
|
724
|
+
display: inline-flex; flex-wrap: wrap; align-items: center; gap: 0.45rem;
|
|
725
|
+
color: var(--mute); font-size: 0.84rem;
|
|
726
|
+
}
|
|
727
|
+
.gate-status-meta .pill { font-size: 0.68rem; }
|
|
728
|
+
.stat-cards {
|
|
729
|
+
display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem;
|
|
730
|
+
margin-bottom: 1rem;
|
|
731
|
+
}
|
|
732
|
+
.stat-card {
|
|
733
|
+
background: var(--card); border: 1px solid var(--line);
|
|
734
|
+
border-radius: 12px; padding: 0.7rem 0.9rem;
|
|
735
|
+
display: flex; flex-direction: column; gap: 0.35rem;
|
|
736
|
+
}
|
|
737
|
+
.stat-card .lab {
|
|
738
|
+
font-size: 0.66rem; font-weight: 700; letter-spacing: 0.07em;
|
|
739
|
+
text-transform: uppercase; color: var(--mute);
|
|
740
|
+
}
|
|
741
|
+
.stat-card .num {
|
|
742
|
+
font-size: 1.6rem; font-weight: 700; line-height: 1.15;
|
|
743
|
+
font-variant-numeric: tabular-nums; letter-spacing: -0.02em;
|
|
744
|
+
color: var(--fg);
|
|
745
|
+
}
|
|
746
|
+
.stat-card .num.bad { color: var(--bad); }
|
|
747
|
+
.stat-card .val { display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center; }
|
|
748
|
+
.card-grid {
|
|
749
|
+
display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem;
|
|
750
|
+
margin-bottom: 1rem;
|
|
751
|
+
}
|
|
752
|
+
.card {
|
|
753
|
+
background: var(--card); border: 1px solid var(--line);
|
|
754
|
+
border-radius: 12px; padding: 0.7rem 0.9rem 0.8rem;
|
|
755
|
+
}
|
|
756
|
+
.card h3 {
|
|
757
|
+
margin: 0 0 0.55rem; font-size: 0.72rem; font-weight: 700;
|
|
758
|
+
letter-spacing: 0.07em; text-transform: uppercase; color: var(--day);
|
|
759
|
+
}
|
|
760
|
+
.card h3 .mute { text-transform: none; letter-spacing: 0.02em; font-weight: 600; }
|
|
761
|
+
.card .sub {
|
|
762
|
+
margin: 0.6rem 0 0.3rem; font-size: 0.66rem; font-weight: 700;
|
|
763
|
+
letter-spacing: 0.06em; text-transform: uppercase; color: var(--mute);
|
|
764
|
+
}
|
|
765
|
+
.card .line { margin: 0.25rem 0; font-size: 0.82rem; word-break: break-word; }
|
|
766
|
+
.card pre {
|
|
767
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
768
|
+
border: 1px solid var(--line); border-radius: 8px;
|
|
769
|
+
padding: 0.45rem 0.55rem; margin: 0.3rem 0 0.6rem;
|
|
770
|
+
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
|
|
771
|
+
font-size: 0.74rem; white-space: pre-wrap; word-break: break-word;
|
|
772
|
+
color: var(--fg);
|
|
773
|
+
}
|
|
774
|
+
.card details { margin: 0.25rem 0; }
|
|
775
|
+
.card details summary {
|
|
776
|
+
font-size: 0.8rem; cursor: pointer; color: var(--fg);
|
|
777
|
+
list-style: none;
|
|
778
|
+
}
|
|
779
|
+
.card details summary::-webkit-details-marker { display: none; }
|
|
780
|
+
.targets-table { margin-top: 0.35rem; }
|
|
781
|
+
.chip.bad {
|
|
782
|
+
color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, transparent);
|
|
783
|
+
background: color-mix(in srgb, var(--bad) 10%, var(--card));
|
|
784
|
+
}
|
|
785
|
+
.playground-form {
|
|
786
|
+
display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: stretch;
|
|
787
|
+
margin: 0.5rem 0;
|
|
788
|
+
}
|
|
789
|
+
.playground-form select,
|
|
790
|
+
.playground-form input {
|
|
791
|
+
font-family: inherit; font-size: 0.8rem; color: var(--fg); background: var(--bg);
|
|
792
|
+
border: 1px solid var(--line); border-radius: 8px; padding: 0.35rem 0.55rem;
|
|
793
|
+
appearance: none; -webkit-appearance: none;
|
|
794
|
+
}
|
|
795
|
+
.playground-form select { min-width: 8rem; }
|
|
796
|
+
.playground-form input { flex: 1 1 10rem; min-width: 8rem; }
|
|
797
|
+
.quick-actions {
|
|
798
|
+
display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
|
|
799
|
+
margin: 0.5rem 0;
|
|
800
|
+
}
|
|
801
|
+
.sr-only {
|
|
802
|
+
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
|
|
803
|
+
overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
|
|
804
|
+
}
|
|
805
|
+
@media (max-width: 900px) {
|
|
806
|
+
.stat-cards { grid-template-columns: repeat(2, 1fr); }
|
|
807
|
+
.card-grid { grid-template-columns: 1fr; }
|
|
808
|
+
}
|
|
809
|
+
@media (max-width: 480px) {
|
|
810
|
+
.stat-cards { grid-template-columns: 1fr; }
|
|
811
|
+
}
|
|
812
|
+
/* Gateway interactive result areas (playground + doctor/quick actions). */
|
|
813
|
+
.gate-result {
|
|
814
|
+
margin-top: 0.5rem;
|
|
815
|
+
padding: 0.45rem 0.6rem;
|
|
816
|
+
font-size: 0.8rem;
|
|
817
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
818
|
+
border: 1px solid var(--line);
|
|
819
|
+
border-radius: 8px;
|
|
820
|
+
word-break: break-word;
|
|
821
|
+
}
|
|
822
|
+
.gate-result p { margin: 0.15rem 0; }
|
|
823
|
+
.gate-result pre {
|
|
824
|
+
margin: 0;
|
|
825
|
+
white-space: pre-wrap;
|
|
826
|
+
word-break: break-word;
|
|
827
|
+
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
|
|
828
|
+
font-size: 0.74rem;
|
|
829
|
+
}
|
|
830
|
+
.gate-result.error {
|
|
831
|
+
background: color-mix(in srgb, var(--bad) 10%, var(--card));
|
|
832
|
+
border-color: color-mix(in srgb, var(--bad) 35%, var(--line));
|
|
833
|
+
}
|
|
834
|
+
button[disabled], .stat[disabled] {
|
|
835
|
+
opacity: 0.55;
|
|
836
|
+
cursor: not-allowed;
|
|
837
|
+
}
|
|
838
|
+
.pagination-bar {
|
|
839
|
+
display: flex;
|
|
840
|
+
flex-wrap: wrap;
|
|
841
|
+
align-items: center;
|
|
842
|
+
justify-content: center;
|
|
843
|
+
gap: 0.4rem;
|
|
844
|
+
margin-top: 0.9rem;
|
|
845
|
+
}
|
|
846
|
+
.pagination-bar .stat.active {
|
|
847
|
+
color: var(--fg);
|
|
848
|
+
border-color: color-mix(in srgb, var(--ok) 55%, var(--line));
|
|
849
|
+
background: color-mix(in srgb, var(--ok) 12%, var(--card));
|
|
600
850
|
}`;
|
|
601
851
|
}
|
|
602
852
|
//# sourceMappingURL=receipt-css.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAg0BL,CAAA;AACJ,CAAC"}
|
|
@@ -2,7 +2,9 @@ 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
|
|
5
|
+
import { type GatePage } from "./gate-page.js";
|
|
6
|
+
export declare const PAGE_SIZE = 50;
|
|
7
|
+
export declare function clampPage(page: number, total: number): number;
|
|
6
8
|
export interface ReceiptModel {
|
|
7
9
|
readonly title: string;
|
|
8
10
|
readonly rangeLabel: string;
|
|
@@ -20,6 +22,8 @@ export interface ReceiptModel {
|
|
|
20
22
|
readonly live?: boolean;
|
|
21
23
|
/** Loopback SSE token — set only by the live server, never in static renders. */
|
|
22
24
|
readonly liveToken?: string;
|
|
25
|
+
/** Page number for the Activity feed (1-based). */
|
|
26
|
+
readonly page: number;
|
|
23
27
|
/** Local identity from .kya/config.json (inert text; never a link). */
|
|
24
28
|
readonly identity?: KyaFileConfig;
|
|
25
29
|
/** Sandbox state + configured KYA_SANDBOX backend. */
|
|
@@ -27,7 +31,7 @@ export interface ReceiptModel {
|
|
|
27
31
|
/** Per-host wiring status across the connect registry. */
|
|
28
32
|
readonly wiredHosts?: readonly WiredHostRow[];
|
|
29
33
|
/** Local gateway state + per-server activity in the window. */
|
|
30
|
-
readonly gate?:
|
|
34
|
+
readonly gate?: GatePage;
|
|
31
35
|
/** Slim ORR card from orr-report/report.json. */
|
|
32
36
|
readonly orr?: OrrCard;
|
|
33
37
|
/** Live Agent Trust Baseline card, recomputed on every model load. */
|
|
@@ -84,7 +88,20 @@ export declare function loadReceiptModel(input: {
|
|
|
84
88
|
readonly days: number;
|
|
85
89
|
readonly live?: boolean;
|
|
86
90
|
readonly liveToken?: string;
|
|
91
|
+
readonly page?: number;
|
|
87
92
|
}): ReceiptModel;
|
|
93
|
+
export declare function gatewayHeroCard(page: GatePage | undefined, _nowMs: number): string;
|
|
94
|
+
export interface FeedFilters {
|
|
95
|
+
readonly [group: string]: readonly string[];
|
|
96
|
+
}
|
|
97
|
+
export interface FeedPageResult {
|
|
98
|
+
readonly feedHtml: string;
|
|
99
|
+
readonly paginationHtml: string;
|
|
100
|
+
readonly total: number;
|
|
101
|
+
readonly page: number;
|
|
102
|
+
readonly pages: number;
|
|
103
|
+
}
|
|
104
|
+
export declare function renderFeedPage(events: readonly TrailEvent[], filters: FeedFilters, page: number, nowMs: number, live: boolean): FeedPageResult;
|
|
88
105
|
export declare function renderReceiptHtml(model: ReceiptModel): string;
|
|
89
106
|
export declare function renderReceiptMarkdown(model: ReceiptModel): string;
|
|
90
107
|
//# sourceMappingURL=render-receipt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"AAUA,OAAO,EAA2C,KAAK,UAAU,EAAqB,MAAM,aAAa,CAAC;AAE1G,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAEL,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAGtC,OAAO,
|
|
1
|
+
{"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}
|