@shield-agent/kya 0.7.0 → 0.8.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 +5 -3
- package/amp/settings.example.json +1 -1
- 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/receipt-css.d.ts +16 -0
- package/dist/receipt/receipt-css.d.ts.map +1 -0
- package/dist/receipt/receipt-css.js +508 -0
- package/dist/receipt/receipt-css.js.map +1 -0
- package/dist/receipt/render-receipt.d.ts.map +1 -1
- package/dist/receipt/render-receipt.js +199 -426
- 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
package/.mcp.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"shield-kya": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--no-install", "@shield-agent/kya@0.
|
|
5
|
+
"args": ["--no-install", "@shield-agent/kya@0.8.0", "serve-mcp", "--stdio"],
|
|
6
6
|
"env": {
|
|
7
7
|
"KYA_BASE_URL": "https://shield-agent.com",
|
|
8
8
|
"KYA_API_KEY": "${KYA_API_KEY}",
|
package/README.md
CHANGED
|
@@ -107,6 +107,8 @@ Install hub: [https://shield-agent.com/install](https://shield-agent.com/install
|
|
|
107
107
|
|
|
108
108
|
One trail for all projects: `~/.kya/trail.jsonl` (`KYA_HOME` overrides `~`). `kya receipt --open` from any directory shows activity from every project. Each event carries its project folder name — the report adds a Projects rollup once two or more projects appear, and shows the project on each feed entry. Older per-project `<project>/.kya/trail.jsonl` files are still read and merged; no migration. The trail is capped at 1 MB (tail-read: oldest events drop away), shared across all projects.
|
|
109
109
|
|
|
110
|
+
The report itself is a dashboard: a hero row on top (live **Certify** result, verdict mix, activity sparkline, showback) with tabbed sections below — **Overview** (analytics, sessions, reasons), **Activity** (the filterable event feed), **System** (wired hosts, sandboxes, ORR). Everything is one standalone offline HTML page; the live daemon from `kya start` re-renders it on every event.
|
|
111
|
+
|
|
110
112
|
## Dual plane
|
|
111
113
|
|
|
112
114
|
```
|
|
@@ -157,7 +159,7 @@ MCP Registry entry: `server.json` plus package `mcpName` `io.github.The-Pixel-Bo
|
|
|
157
159
|
"mcpServers": {
|
|
158
160
|
"shield-kya": {
|
|
159
161
|
"command": "npx",
|
|
160
|
-
"args": ["--no-install", "@shield-agent/kya@0.
|
|
162
|
+
"args": ["--no-install", "@shield-agent/kya@0.8.0", "serve-mcp", "--stdio"],
|
|
161
163
|
"env": {
|
|
162
164
|
"KYA_BASE_URL": "http://127.0.0.1:8090",
|
|
163
165
|
"KYA_API_KEY": "${KYA_API_KEY}",
|
|
@@ -184,7 +186,7 @@ npx @shield-agent/kya reject --id <approval-id>
|
|
|
184
186
|
|
|
185
187
|
```bash
|
|
186
188
|
# Prefer a preinstalled package (no registry auto-install):
|
|
187
|
-
npx --no-install @shield-agent/kya@0.
|
|
189
|
+
npx --no-install @shield-agent/kya@0.8.0 serve-mcp --stdio
|
|
188
190
|
# Or after npm i -g / local install:
|
|
189
191
|
kya serve-mcp --stdio
|
|
190
192
|
```
|
|
@@ -195,7 +197,7 @@ Copy `claude/claude_desktop_config.example.json` into Claude Desktop MCP setting
|
|
|
195
197
|
|
|
196
198
|
## OpenAI (Codex / Responses)
|
|
197
199
|
|
|
198
|
-
**Codex CLI / IDE:** copy `openai/codex.config.example.toml` into `~/.codex/config.toml`. Local stdio uses `npx --no-install @shield-agent/kya@0.
|
|
200
|
+
**Codex CLI / IDE:** copy `openai/codex.config.example.toml` into `~/.codex/config.toml`. Local stdio uses `npx --no-install @shield-agent/kya@0.8.0 serve-mcp --stdio`. Hosted Codex uses `url = "https://shield-agent.com/mcp"` with `bearer_token_env_var = "KYA_API_KEY"`.
|
|
199
201
|
|
|
200
202
|
**Responses API:** see `openai/responses-mcp.example.json` (`server_url` + `Authorization: Bearer <KYA_API_KEY>`).
|
|
201
203
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"amp.mcpServers": {
|
|
3
3
|
"shield-kya": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--no-install", "@shield-agent/kya@0.
|
|
5
|
+
"args": ["--no-install", "@shield-agent/kya@0.8.0", "serve-mcp", "--stdio"],
|
|
6
6
|
"env": {
|
|
7
7
|
"KYA_BASE_URL": "https://shield-agent.com",
|
|
8
8
|
"KYA_API_KEY": "${KYA_API_KEY}",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"shield-kya": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--no-install", "@shield-agent/kya@0.
|
|
5
|
+
"args": ["--no-install", "@shield-agent/kya@0.8.0", "serve-mcp", "--stdio"],
|
|
6
6
|
"env": {
|
|
7
7
|
"KYA_BASE_URL": "https://shield-agent.com",
|
|
8
8
|
"KYA_API_KEY": "${KYA_API_KEY}",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"shield-kya": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--no-install", "@shield-agent/kya@0.
|
|
5
|
+
"args": ["--no-install", "@shield-agent/kya@0.8.0", "serve-mcp", "--stdio"],
|
|
6
6
|
"env": {
|
|
7
7
|
"KYA_BASE_URL": "https://shield-agent.com",
|
|
8
8
|
"KYA_API_KEY": "${KYA_API_KEY}",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"mcpServers": {
|
|
3
3
|
"shield-kya": {
|
|
4
4
|
"command": "npx",
|
|
5
|
-
"args": ["--no-install", "@shield-agent/kya@0.
|
|
5
|
+
"args": ["--no-install", "@shield-agent/kya@0.8.0", "serve-mcp", "--stdio"],
|
|
6
6
|
"env": {
|
|
7
7
|
"KYA_BASE_URL": "https://shield-agent.com",
|
|
8
8
|
"KYA_API_KEY": "${KYA_API_KEY}",
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complete stylesheet for the receipt report HTML artifact.
|
|
3
|
+
*
|
|
4
|
+
* The page must stay fully offline/standalone: system font stacks only, no
|
|
5
|
+
* external URLs of any kind. Colors come from the --bg/--fg/--mute/--line/
|
|
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.
|
|
9
|
+
*
|
|
10
|
+
* Tab switching is pure CSS: nav links point at #overview/#activity/#system
|
|
11
|
+
* and :target shows the matching zone. The hide rules are gated behind
|
|
12
|
+
* `@supports selector(body:has(*))`, so a browser without :has() simply shows
|
|
13
|
+
* every zone stacked — degraded, but nothing is ever hidden unreachable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function receiptCss(): string;
|
|
16
|
+
//# sourceMappingURL=receipt-css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipt-css.d.ts","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA4enC"}
|
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Complete stylesheet for the receipt report HTML artifact.
|
|
3
|
+
*
|
|
4
|
+
* The page must stay fully offline/standalone: system font stacks only, no
|
|
5
|
+
* external URLs of any kind. Colors come from the --bg/--fg/--mute/--line/
|
|
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.
|
|
9
|
+
*
|
|
10
|
+
* Tab switching is pure CSS: nav links point at #overview/#activity/#system
|
|
11
|
+
* and :target shows the matching zone. The hide rules are gated behind
|
|
12
|
+
* `@supports selector(body:has(*))`, so a browser without :has() simply shows
|
|
13
|
+
* every zone stacked — degraded, but nothing is ever hidden unreachable.
|
|
14
|
+
*/
|
|
15
|
+
export function receiptCss() {
|
|
16
|
+
return `
|
|
17
|
+
:root {
|
|
18
|
+
color-scheme: dark;
|
|
19
|
+
--bg: #0a0c10;
|
|
20
|
+
--fg: #eef2f7;
|
|
21
|
+
--mute: #8b95a8;
|
|
22
|
+
--line: #1c2330;
|
|
23
|
+
--card: #10141c;
|
|
24
|
+
--ok: #3ecf8e;
|
|
25
|
+
--bad: #ff5d5d;
|
|
26
|
+
--warn: #f0b429;
|
|
27
|
+
--rail: #2a3344;
|
|
28
|
+
--day: #6b7280;
|
|
29
|
+
}
|
|
30
|
+
@media (prefers-color-scheme: light) {
|
|
31
|
+
:root {
|
|
32
|
+
color-scheme: light;
|
|
33
|
+
--bg: #f3f5f8;
|
|
34
|
+
--fg: #0f172a;
|
|
35
|
+
--mute: #64748b;
|
|
36
|
+
--line: #e2e8f0;
|
|
37
|
+
--card: #ffffff;
|
|
38
|
+
--ok: #059669;
|
|
39
|
+
--bad: #dc2626;
|
|
40
|
+
--warn: #d97706;
|
|
41
|
+
--rail: #cbd5e1;
|
|
42
|
+
--day: #64748b;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
* { box-sizing: border-box; }
|
|
46
|
+
body {
|
|
47
|
+
margin: 0;
|
|
48
|
+
font-family: "IBM Plex Sans", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
49
|
+
background: var(--bg);
|
|
50
|
+
color: var(--fg);
|
|
51
|
+
line-height: 1.4;
|
|
52
|
+
}
|
|
53
|
+
main { max-width: 74rem; margin: 0 auto; padding: 1.35rem 1.25rem 3.5rem; }
|
|
54
|
+
/* Sticky top zone: header + tab nav stay pinned as one unit, so a fragment
|
|
55
|
+
jump to a zone never strands the nav behind the header. */
|
|
56
|
+
.topstick {
|
|
57
|
+
position: sticky; top: 0; z-index: 6;
|
|
58
|
+
background: color-mix(in srgb, var(--bg) 88%, transparent);
|
|
59
|
+
-webkit-backdrop-filter: blur(10px);
|
|
60
|
+
backdrop-filter: blur(10px);
|
|
61
|
+
border-bottom: 1px solid var(--line);
|
|
62
|
+
margin-bottom: 1rem;
|
|
63
|
+
}
|
|
64
|
+
header.bar {
|
|
65
|
+
padding: 0.85rem 0 0.4rem;
|
|
66
|
+
}
|
|
67
|
+
.title-row {
|
|
68
|
+
display: flex; align-items: baseline; justify-content: space-between;
|
|
69
|
+
gap: 0.75rem; flex-wrap: wrap;
|
|
70
|
+
}
|
|
71
|
+
h1 {
|
|
72
|
+
margin: 0; font-size: 1.2rem; font-weight: 600;
|
|
73
|
+
letter-spacing: -0.025em;
|
|
74
|
+
}
|
|
75
|
+
.range { color: var(--mute); font-size: 0.85rem; display: inline-flex; align-items: center; gap: 0.5rem; }
|
|
76
|
+
.live {
|
|
77
|
+
display: inline-flex; align-items: center; gap: 0.35rem;
|
|
78
|
+
font-size: 0.7rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase;
|
|
79
|
+
color: var(--ok); border: 1px solid color-mix(in srgb, var(--ok) 40%, transparent);
|
|
80
|
+
border-radius: 999px; padding: 0.12rem 0.5rem;
|
|
81
|
+
}
|
|
82
|
+
.live::before {
|
|
83
|
+
content: ""; width: 0.4rem; height: 0.4rem; border-radius: 50%;
|
|
84
|
+
background: var(--ok);
|
|
85
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--ok) 22%, transparent);
|
|
86
|
+
animation: pulse 1.6s ease-in-out infinite;
|
|
87
|
+
}
|
|
88
|
+
.live.off { color: var(--mute); border-color: var(--line); }
|
|
89
|
+
.live.off::before { background: var(--mute); box-shadow: none; animation: none; }
|
|
90
|
+
@keyframes pulse {
|
|
91
|
+
0%, 100% { opacity: 1; }
|
|
92
|
+
50% { opacity: 0.45; }
|
|
93
|
+
}
|
|
94
|
+
@media (prefers-reduced-motion: reduce) {
|
|
95
|
+
.live::before { animation: none; }
|
|
96
|
+
}
|
|
97
|
+
/* Hero KPI grid: Certify spans two columns on wide layouts, 4→2→1. Every
|
|
98
|
+
hero card is a direct .panel child — one chrome, no wrapper special-cases. */
|
|
99
|
+
.hero {
|
|
100
|
+
display: grid; grid-template-columns: repeat(4, 1fr);
|
|
101
|
+
gap: 1rem; margin-bottom: 1.25rem; align-items: stretch;
|
|
102
|
+
}
|
|
103
|
+
.hero > .panel { margin-bottom: 0; height: 100%; }
|
|
104
|
+
.hero-certify { grid-column: span 2; min-width: 0; }
|
|
105
|
+
/* Result-tone accent: inset bar so the border box never shifts. */
|
|
106
|
+
.hero-certify.pass {
|
|
107
|
+
border-color: color-mix(in srgb, var(--ok) 40%, var(--line));
|
|
108
|
+
box-shadow: inset 3px 0 0 var(--ok);
|
|
109
|
+
}
|
|
110
|
+
.hero-certify.gap {
|
|
111
|
+
border-color: color-mix(in srgb, var(--warn) 40%, var(--line));
|
|
112
|
+
box-shadow: inset 3px 0 0 var(--warn);
|
|
113
|
+
}
|
|
114
|
+
/* Hero result pill reads larger than inline status pills. */
|
|
115
|
+
.hero-certify .pill { font-size: 0.82rem; padding: 0.22rem 0.75rem; }
|
|
116
|
+
@media (max-width: 1100px) {
|
|
117
|
+
.hero { grid-template-columns: repeat(2, 1fr); }
|
|
118
|
+
}
|
|
119
|
+
@media (max-width: 720px) {
|
|
120
|
+
main { padding: 1.1rem 0.85rem 3rem; }
|
|
121
|
+
}
|
|
122
|
+
@media (max-width: 480px) {
|
|
123
|
+
.hero { grid-template-columns: 1fr; }
|
|
124
|
+
.hero-certify { grid-column: span 1; }
|
|
125
|
+
}
|
|
126
|
+
.kpi-row { display: flex; flex-wrap: wrap; gap: 0.8rem 1.2rem; }
|
|
127
|
+
.kpi { display: flex; flex-direction: column; gap: 0.1rem; min-width: 2.8rem; }
|
|
128
|
+
.kpi-num {
|
|
129
|
+
font-size: 1.55rem; font-weight: 700; line-height: 1.15;
|
|
130
|
+
font-variant-numeric: tabular-nums; letter-spacing: -0.02em;
|
|
131
|
+
}
|
|
132
|
+
.kpi-num.ok { color: var(--ok); }
|
|
133
|
+
.kpi-num.warn { color: var(--warn); }
|
|
134
|
+
.kpi-num.bad { color: var(--bad); }
|
|
135
|
+
.kpi-num.mute { color: var(--mute); }
|
|
136
|
+
.kpi-lab {
|
|
137
|
+
font-size: 0.66rem; font-weight: 700; letter-spacing: 0.07em;
|
|
138
|
+
text-transform: uppercase; color: var(--mute);
|
|
139
|
+
}
|
|
140
|
+
/* Static verdict mix bars (hero) — same visual language as .db-item but
|
|
141
|
+
non-interactive: no hover, no aria-pressed, no data-fgroup. */
|
|
142
|
+
.mix { display: flex; flex-direction: column; gap: 0.32rem; }
|
|
143
|
+
.mix-row {
|
|
144
|
+
display: grid; grid-template-columns: 3.4rem 1fr minmax(1.8rem, auto);
|
|
145
|
+
gap: 0.55rem; align-items: center; font-size: 0.76rem;
|
|
146
|
+
}
|
|
147
|
+
.mix-lab { color: var(--mute); font-weight: 600; }
|
|
148
|
+
.mix-bar {
|
|
149
|
+
height: 0.55rem; border-radius: 4px; overflow: hidden;
|
|
150
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
151
|
+
}
|
|
152
|
+
.mix-fill { display: block; height: 100%; border-radius: 4px; }
|
|
153
|
+
.mix-fill.ok { background: var(--ok); }
|
|
154
|
+
.mix-fill.warn { background: var(--warn); }
|
|
155
|
+
.mix-fill.bad { background: var(--bad); }
|
|
156
|
+
.mix-num { text-align: right; color: var(--fg); font-variant-numeric: tabular-nums; }
|
|
157
|
+
/* Inline SVG sparkline: bars normalized to viewBox height, flat baseline. */
|
|
158
|
+
.spark { display: block; width: 100%; height: 2.2rem; margin-top: 0.5rem; }
|
|
159
|
+
.spark rect { fill: color-mix(in srgb, var(--ok) 65%, var(--mute)); }
|
|
160
|
+
.spark line.base { stroke: var(--rail); stroke-width: 1; }
|
|
161
|
+
/* Severity chips (certify gap rows): critical/high signal, medium/low quiet. */
|
|
162
|
+
.sev {
|
|
163
|
+
display: inline-block; font-size: 0.62rem; font-weight: 700;
|
|
164
|
+
letter-spacing: 0.05em; text-transform: uppercase; line-height: 1.05rem;
|
|
165
|
+
border: 1px solid var(--line); border-radius: 4px; padding: 0 0.35rem;
|
|
166
|
+
color: var(--mute);
|
|
167
|
+
}
|
|
168
|
+
.sev.critical { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, transparent); }
|
|
169
|
+
.sev.high { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
|
|
170
|
+
.sev.medium { color: var(--day); }
|
|
171
|
+
.sev.low { color: var(--mute); }
|
|
172
|
+
/* Tabs: pure-CSS :target switching, no JS. Without :has() support the hide
|
|
173
|
+
rules never apply and every zone stays visible (degraded but complete). */
|
|
174
|
+
.tabs {
|
|
175
|
+
display: flex; gap: 0.25rem; flex-wrap: wrap;
|
|
176
|
+
}
|
|
177
|
+
.tab {
|
|
178
|
+
padding: 0.45rem 0.85rem; margin-bottom: -1px;
|
|
179
|
+
font-size: 0.8rem; font-weight: 600; color: var(--mute);
|
|
180
|
+
text-decoration: none;
|
|
181
|
+
border: 1px solid transparent; border-bottom: none;
|
|
182
|
+
border-radius: 8px 8px 0 0;
|
|
183
|
+
}
|
|
184
|
+
.tab:hover { color: var(--fg); }
|
|
185
|
+
.tab:focus-visible {
|
|
186
|
+
outline: 2px solid var(--ok);
|
|
187
|
+
outline-offset: 2px;
|
|
188
|
+
color: var(--fg);
|
|
189
|
+
}
|
|
190
|
+
/* Narrow screens: tabs stop wrapping and scroll horizontally instead.
|
|
191
|
+
Padding keeps the focus outline (2px + 2px offset) inside the scrollport. */
|
|
192
|
+
@media (max-width: 480px) {
|
|
193
|
+
.tabs {
|
|
194
|
+
flex-wrap: nowrap; overflow-x: auto;
|
|
195
|
+
scrollbar-width: thin;
|
|
196
|
+
padding: 4px;
|
|
197
|
+
}
|
|
198
|
+
.tab { flex: none; }
|
|
199
|
+
}
|
|
200
|
+
.zone { scroll-margin-top: 6.4rem; }
|
|
201
|
+
.zone-empty { margin: 0.25rem 0 0.5rem; }
|
|
202
|
+
@supports selector(body:has(*)) {
|
|
203
|
+
#activity, #system { display: none; }
|
|
204
|
+
#overview:target, #activity:target, #system:target { display: block; }
|
|
205
|
+
body:has(#activity:target) #overview,
|
|
206
|
+
body:has(#system:target) #overview { display: none; }
|
|
207
|
+
body:not(:has(.zone:target)) .tab[href="#overview"],
|
|
208
|
+
body:has(#overview:target) .tab[href="#overview"],
|
|
209
|
+
body:has(#activity:target) .tab[href="#activity"],
|
|
210
|
+
body:has(#system:target) .tab[href="#system"] {
|
|
211
|
+
color: var(--fg);
|
|
212
|
+
background: var(--card);
|
|
213
|
+
border-color: var(--line);
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
.feed-head { margin-bottom: 0.9rem; }
|
|
217
|
+
.stats {
|
|
218
|
+
display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.7rem;
|
|
219
|
+
}
|
|
220
|
+
.feed-head .stats:first-child { margin-top: 0; }
|
|
221
|
+
.stat {
|
|
222
|
+
font-size: 0.75rem; font-variant-numeric: tabular-nums;
|
|
223
|
+
color: var(--mute); background: var(--card);
|
|
224
|
+
border: 1px solid var(--line); border-radius: 999px;
|
|
225
|
+
padding: 0.2rem 0.6rem;
|
|
226
|
+
}
|
|
227
|
+
.stat b { color: var(--fg); font-weight: 650; margin-left: 0.25rem; }
|
|
228
|
+
.stat.bad b { color: var(--bad); }
|
|
229
|
+
.stat.warn b { color: var(--warn); }
|
|
230
|
+
.stat.ok b { color: var(--ok); }
|
|
231
|
+
button.stat {
|
|
232
|
+
font-family: inherit; cursor: pointer;
|
|
233
|
+
appearance: none; -webkit-appearance: none;
|
|
234
|
+
}
|
|
235
|
+
button.stat:hover { border-color: var(--mute); }
|
|
236
|
+
.stat[aria-pressed="true"] {
|
|
237
|
+
color: var(--fg);
|
|
238
|
+
border-color: color-mix(in srgb, var(--ok) 55%, var(--line));
|
|
239
|
+
background: color-mix(in srgb, var(--ok) 12%, var(--card));
|
|
240
|
+
}
|
|
241
|
+
.stat[hidden] { display: none; }
|
|
242
|
+
.clear-filters { color: var(--mute); font-size: 0.72rem; }
|
|
243
|
+
/* Analytics dashboard: 2×2 card grid, collapses to one column on narrow. */
|
|
244
|
+
.db-grid {
|
|
245
|
+
display: grid; grid-template-columns: 1fr 1fr; gap: 0.9rem 1.1rem;
|
|
246
|
+
}
|
|
247
|
+
@media (max-width: 700px) {
|
|
248
|
+
.db-grid { grid-template-columns: 1fr; }
|
|
249
|
+
}
|
|
250
|
+
.db-card { min-width: 0; }
|
|
251
|
+
.db-card h3 {
|
|
252
|
+
margin: 0 0 0.4rem; font-size: 0.68rem; font-weight: 700;
|
|
253
|
+
letter-spacing: 0.06em; text-transform: uppercase; color: var(--mute);
|
|
254
|
+
}
|
|
255
|
+
.db-card h3 .mute { text-transform: none; letter-spacing: 0.02em; font-weight: 600; }
|
|
256
|
+
.db-card .sub {
|
|
257
|
+
margin: 0.35rem 0 0.15rem; font-size: 0.66rem; font-weight: 700;
|
|
258
|
+
letter-spacing: 0.05em; text-transform: uppercase; color: var(--day);
|
|
259
|
+
}
|
|
260
|
+
/* Filter-linked bar row: block variant of .stat's hover/active contract. */
|
|
261
|
+
.db-item {
|
|
262
|
+
display: grid; grid-template-columns: 6.5rem 1fr 2.4rem;
|
|
263
|
+
gap: 0.5rem; align-items: center; width: 100%;
|
|
264
|
+
font-family: inherit; font-size: 0.76rem; font-variant-numeric: tabular-nums;
|
|
265
|
+
color: var(--mute); text-align: left;
|
|
266
|
+
background: transparent; border: 1px solid transparent; border-radius: 8px;
|
|
267
|
+
padding: 0.14rem 0.3rem; cursor: pointer;
|
|
268
|
+
appearance: none; -webkit-appearance: none;
|
|
269
|
+
}
|
|
270
|
+
.db-item:hover { border-color: var(--line); background: color-mix(in srgb, var(--bg) 55%, var(--card)); }
|
|
271
|
+
.db-item[aria-pressed="true"] {
|
|
272
|
+
color: var(--fg);
|
|
273
|
+
border-color: color-mix(in srgb, var(--ok) 55%, var(--line));
|
|
274
|
+
background: color-mix(in srgb, var(--ok) 12%, var(--card));
|
|
275
|
+
}
|
|
276
|
+
.db-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
277
|
+
.db-bar {
|
|
278
|
+
height: 0.55rem; border-radius: 4px; overflow: hidden;
|
|
279
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
280
|
+
}
|
|
281
|
+
.db-fill { display: block; height: 100%; border-radius: 4px; }
|
|
282
|
+
.db-fill.ok { background: var(--ok); }
|
|
283
|
+
.db-fill.warn { background: var(--warn); }
|
|
284
|
+
.db-fill.bad { background: var(--bad); }
|
|
285
|
+
.db-num { text-align: right; color: var(--fg); }
|
|
286
|
+
/* Vertical mini-bar timeline (not clickable — no time filter exists). */
|
|
287
|
+
.db-tl { display: flex; align-items: stretch; gap: 2px; height: 4.6rem; }
|
|
288
|
+
.db-tl .col {
|
|
289
|
+
flex: 1 1 0; min-width: 0; display: flex; flex-direction: column;
|
|
290
|
+
align-items: center; justify-content: flex-end; gap: 0.15rem;
|
|
291
|
+
}
|
|
292
|
+
.db-vbar {
|
|
293
|
+
width: 100%; min-height: 2px; border-radius: 2px 2px 0 0;
|
|
294
|
+
background: color-mix(in srgb, var(--ok) 75%, var(--mute));
|
|
295
|
+
}
|
|
296
|
+
.db-tl .lab {
|
|
297
|
+
font-size: 0.52rem; color: var(--mute); white-space: nowrap;
|
|
298
|
+
overflow: hidden; max-width: 100%; font-variant-numeric: tabular-nums;
|
|
299
|
+
}
|
|
300
|
+
/* utility: must beat .ev's display:grid (same specificity, later rule would win) */
|
|
301
|
+
.filtered-out { display: none !important; }
|
|
302
|
+
.identity {
|
|
303
|
+
margin-top: 0.45rem; color: var(--mute); font-size: 0.78rem;
|
|
304
|
+
word-break: break-word;
|
|
305
|
+
}
|
|
306
|
+
.modeb {
|
|
307
|
+
display: inline-block; font-size: 0.6rem; font-weight: 700;
|
|
308
|
+
color: var(--mute); border: 1px solid var(--line); border-radius: 4px;
|
|
309
|
+
padding: 0 0.28rem; line-height: 1.1rem; vertical-align: baseline;
|
|
310
|
+
}
|
|
311
|
+
.panel {
|
|
312
|
+
background: var(--card); border: 1px solid var(--line);
|
|
313
|
+
border-radius: 12px; padding: 0.7rem 0.9rem 0.8rem; margin-bottom: 1rem;
|
|
314
|
+
}
|
|
315
|
+
.panel h2 {
|
|
316
|
+
margin: 0 0 0.5rem; font-size: 0.72rem; font-weight: 700;
|
|
317
|
+
letter-spacing: 0.07em; text-transform: uppercase; color: var(--day);
|
|
318
|
+
}
|
|
319
|
+
.panel .sub { margin: 0 0 0.45rem; color: var(--mute); font-size: 0.8rem; }
|
|
320
|
+
.panel .line { margin: 0.25rem 0; font-size: 0.84rem; word-break: break-word; }
|
|
321
|
+
.panel .mute { color: var(--mute); }
|
|
322
|
+
.panel .small { font-size: 0.74rem; }
|
|
323
|
+
.rows {
|
|
324
|
+
list-style: none; margin: 0; padding: 0;
|
|
325
|
+
display: flex; flex-direction: column; gap: 0.3rem;
|
|
326
|
+
font-size: 0.82rem;
|
|
327
|
+
}
|
|
328
|
+
.rows li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.45rem; min-width: 0; }
|
|
329
|
+
.rows li.mute { color: var(--mute); }
|
|
330
|
+
.rows .sid, .rows code {
|
|
331
|
+
font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
332
|
+
font-size: 0.78rem; word-break: break-all;
|
|
333
|
+
}
|
|
334
|
+
.rows .cnt { color: var(--mute); font-size: 0.76rem; }
|
|
335
|
+
.rows .rel { margin-left: auto; color: var(--mute); font-size: 0.74rem; white-space: nowrap; }
|
|
336
|
+
.rows .hint {
|
|
337
|
+
font-size: 0.72rem; border-bottom: 1px dotted var(--mute); cursor: help;
|
|
338
|
+
}
|
|
339
|
+
.wdot {
|
|
340
|
+
width: 0.5rem; height: 0.5rem; border-radius: 50%; flex: none;
|
|
341
|
+
align-self: center; background: var(--mute);
|
|
342
|
+
}
|
|
343
|
+
.wdot.allow { background: var(--ok); }
|
|
344
|
+
.wdot.hold { background: var(--warn); }
|
|
345
|
+
.wdot.deny, .wdot.never { background: var(--bad); }
|
|
346
|
+
.chiprow { display: flex; flex-wrap: wrap; gap: 0.35rem; }
|
|
347
|
+
.chip {
|
|
348
|
+
font-size: 0.76rem; font-variant-numeric: tabular-nums; color: var(--mute);
|
|
349
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
350
|
+
border: 1px solid var(--line); border-radius: 999px; padding: 0.15rem 0.55rem;
|
|
351
|
+
}
|
|
352
|
+
.chip code {
|
|
353
|
+
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
|
|
354
|
+
color: var(--fg); font-size: 0.74rem;
|
|
355
|
+
}
|
|
356
|
+
.tbl {
|
|
357
|
+
width: 100%; border-collapse: collapse; font-size: 0.8rem;
|
|
358
|
+
font-variant-numeric: tabular-nums;
|
|
359
|
+
}
|
|
360
|
+
.tbl th {
|
|
361
|
+
text-align: left; font-size: 0.66rem; font-weight: 700; letter-spacing: 0.06em;
|
|
362
|
+
text-transform: uppercase; color: var(--mute); padding: 0.15rem 0.5rem 0.3rem 0;
|
|
363
|
+
}
|
|
364
|
+
.tbl td { padding: 0.2rem 0.5rem 0.2rem 0; border-top: 1px solid var(--line); }
|
|
365
|
+
.tbl tbody tr:hover { background: color-mix(in srgb, var(--bg) 55%, var(--card)); }
|
|
366
|
+
.tbl code {
|
|
367
|
+
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace; font-size: 0.76rem;
|
|
368
|
+
}
|
|
369
|
+
.pill {
|
|
370
|
+
display: inline-block; font-size: 0.7rem; font-weight: 700;
|
|
371
|
+
letter-spacing: 0.04em; text-transform: uppercase;
|
|
372
|
+
border-radius: 999px; padding: 0.1rem 0.55rem;
|
|
373
|
+
border: 1px solid var(--line); color: var(--mute);
|
|
374
|
+
}
|
|
375
|
+
.pill.ok { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 40%, transparent); }
|
|
376
|
+
.pill.orr-green { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 40%, transparent); }
|
|
377
|
+
.pill.orr-amber { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 40%, transparent); }
|
|
378
|
+
.pill.orr-red { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 40%, transparent); }
|
|
379
|
+
.orrline { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.55rem; }
|
|
380
|
+
.orrline .disp { font-size: 0.84rem; font-weight: 600; }
|
|
381
|
+
.alert {
|
|
382
|
+
display: flex; flex-wrap: wrap; gap: 0.45rem 0.75rem; align-items: baseline;
|
|
383
|
+
background: color-mix(in srgb, var(--bad) 12%, var(--card));
|
|
384
|
+
border: 1px solid color-mix(in srgb, var(--bad) 35%, var(--line));
|
|
385
|
+
border-radius: 10px; padding: 0.65rem 0.85rem; margin-bottom: 1rem;
|
|
386
|
+
font-size: 0.85rem;
|
|
387
|
+
}
|
|
388
|
+
.alert strong { color: var(--bad); font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.04em; }
|
|
389
|
+
.alert code {
|
|
390
|
+
font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
391
|
+
font-size: 0.78rem;
|
|
392
|
+
}
|
|
393
|
+
.feed {
|
|
394
|
+
background: var(--card);
|
|
395
|
+
border: 1px solid var(--line);
|
|
396
|
+
border-radius: 12px;
|
|
397
|
+
overflow: hidden;
|
|
398
|
+
}
|
|
399
|
+
.day {
|
|
400
|
+
padding: 0.55rem 0.9rem 0.35rem;
|
|
401
|
+
font-size: 0.68rem; font-weight: 700; letter-spacing: 0.08em;
|
|
402
|
+
text-transform: uppercase; color: var(--day);
|
|
403
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
404
|
+
border-bottom: 1px solid var(--line);
|
|
405
|
+
}
|
|
406
|
+
.ev {
|
|
407
|
+
display: grid; grid-template-columns: 1.1rem 1fr; gap: 0;
|
|
408
|
+
border-bottom: 1px solid var(--line);
|
|
409
|
+
}
|
|
410
|
+
.ev:last-child { border-bottom: none; }
|
|
411
|
+
.rail {
|
|
412
|
+
position: relative;
|
|
413
|
+
display: flex; justify-content: center;
|
|
414
|
+
padding-top: 1.05rem;
|
|
415
|
+
}
|
|
416
|
+
.rail::before {
|
|
417
|
+
content: ""; position: absolute; top: 0; bottom: 0; left: 50%;
|
|
418
|
+
width: 1px; background: var(--rail); transform: translateX(-50%);
|
|
419
|
+
}
|
|
420
|
+
.tick {
|
|
421
|
+
width: 0.55rem; height: 0.55rem; border-radius: 50%;
|
|
422
|
+
background: var(--mute); position: relative; z-index: 1;
|
|
423
|
+
box-shadow: 0 0 0 3px var(--card);
|
|
424
|
+
}
|
|
425
|
+
.ev.ok .tick { background: var(--ok); }
|
|
426
|
+
.ev.bad .tick { background: var(--bad); }
|
|
427
|
+
.ev.warn .tick { background: var(--warn); }
|
|
428
|
+
.ev.never { background: color-mix(in srgb, var(--bad) 7%, transparent); }
|
|
429
|
+
.main { padding: 0.7rem 0.85rem 0.7rem 0.35rem; min-width: 0; }
|
|
430
|
+
.top {
|
|
431
|
+
display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.35rem 0.55rem;
|
|
432
|
+
}
|
|
433
|
+
@media (max-width: 480px) {
|
|
434
|
+
.when { flex-basis: 100%; margin-left: 0; margin-top: 0.1rem; }
|
|
435
|
+
}
|
|
436
|
+
.verdict {
|
|
437
|
+
font-size: 0.68rem; font-weight: 750; letter-spacing: 0.05em;
|
|
438
|
+
min-width: 2.6rem;
|
|
439
|
+
}
|
|
440
|
+
.ev.ok .verdict { color: var(--ok); }
|
|
441
|
+
.ev.bad .verdict { color: var(--bad); }
|
|
442
|
+
.ev.warn .verdict { color: var(--warn); }
|
|
443
|
+
.tool {
|
|
444
|
+
font-family: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace;
|
|
445
|
+
font-size: 0.84rem; word-break: break-word; flex: 1 1 auto;
|
|
446
|
+
}
|
|
447
|
+
.when {
|
|
448
|
+
margin-left: auto; color: var(--mute); font-size: 0.72rem;
|
|
449
|
+
font-variant-numeric: tabular-nums; white-space: nowrap;
|
|
450
|
+
}
|
|
451
|
+
.when .rel { opacity: 0.85; margin-left: 0.35rem; }
|
|
452
|
+
.summary {
|
|
453
|
+
margin-top: 0.2rem;
|
|
454
|
+
font-size: 0.84rem;
|
|
455
|
+
color: var(--fg);
|
|
456
|
+
word-break: break-word;
|
|
457
|
+
max-width: 68ch;
|
|
458
|
+
}
|
|
459
|
+
details.diff {
|
|
460
|
+
margin-top: 0.35rem;
|
|
461
|
+
border: 1px solid var(--line);
|
|
462
|
+
border-radius: 8px;
|
|
463
|
+
background: color-mix(in srgb, var(--bg) 55%, var(--card));
|
|
464
|
+
overflow: hidden;
|
|
465
|
+
}
|
|
466
|
+
details.diff > summary {
|
|
467
|
+
cursor: pointer;
|
|
468
|
+
list-style: none;
|
|
469
|
+
padding: 0.35rem 0.55rem;
|
|
470
|
+
font-size: 0.72rem;
|
|
471
|
+
font-weight: 650;
|
|
472
|
+
letter-spacing: 0.04em;
|
|
473
|
+
text-transform: uppercase;
|
|
474
|
+
color: var(--mute);
|
|
475
|
+
}
|
|
476
|
+
details.diff > summary::-webkit-details-marker { display: none; }
|
|
477
|
+
details.diff pre {
|
|
478
|
+
margin: 0;
|
|
479
|
+
padding: 0.45rem 0.55rem 0.6rem;
|
|
480
|
+
border-top: 1px solid var(--line);
|
|
481
|
+
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
|
|
482
|
+
font-size: 0.72rem;
|
|
483
|
+
line-height: 1.35;
|
|
484
|
+
white-space: pre-wrap;
|
|
485
|
+
word-break: break-word;
|
|
486
|
+
color: var(--fg);
|
|
487
|
+
}
|
|
488
|
+
.meta {
|
|
489
|
+
margin-top: 0.18rem; color: var(--mute); font-size: 0.76rem;
|
|
490
|
+
display: flex; flex-wrap: wrap; gap: 0.25rem; align-items: baseline;
|
|
491
|
+
}
|
|
492
|
+
.dot { opacity: 0.55; }
|
|
493
|
+
.empty { margin: 0; padding: 1.25rem 1rem; color: var(--mute); font-size: 0.9rem; }
|
|
494
|
+
.tools {
|
|
495
|
+
margin-top: 1.1rem; display: flex; flex-wrap: wrap; gap: 0.35rem; align-items: center;
|
|
496
|
+
}
|
|
497
|
+
.tools .label {
|
|
498
|
+
font-size: 0.68rem; font-weight: 700; letter-spacing: 0.06em;
|
|
499
|
+
text-transform: uppercase; color: var(--mute); margin-right: 0.25rem;
|
|
500
|
+
}
|
|
501
|
+
.tools code {
|
|
502
|
+
font-family: "IBM Plex Mono", ui-monospace, Menlo, monospace;
|
|
503
|
+
font-size: 0.72rem; color: var(--mute);
|
|
504
|
+
background: var(--card); border: 1px solid var(--line);
|
|
505
|
+
border-radius: 6px; padding: 0.18rem 0.4rem;
|
|
506
|
+
}`;
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=receipt-css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0eL,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"AAKA,OAAO,EAA2C,KAAK,UAAU,EAAqB,MAAM,aAAa,CAAC;AAC1G,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;
|
|
1
|
+
{"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}
|