@vitronai/alethia 0.8.1 → 0.8.2
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/README.md +4 -3
- package/demo/admin-panel.html +326 -36
- package/demo/agent-oversight.html +354 -49
- package/demo/claude-code-app.html +688 -94
- package/demo/crypto-readiness.html +611 -177
- package/demo/ea1-stress-test.html +262 -34
- package/demo/ecommerce.html +1116 -0
- package/demo/financial-dashboard.html +298 -34
- package/demo/incident-response.html +636 -196
- package/demo/intentional-failures.html +157 -0
- package/demo/nist-compliance.html +458 -102
- package/demo/threat-intel.html +310 -51
- package/demo/wcag-audit.html +495 -84
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>Negative Test Surface — Alethia</title>
|
|
6
|
+
<style>
|
|
7
|
+
* { box-sizing: border-box; margin: 0; padding: 0; }
|
|
8
|
+
body {
|
|
9
|
+
font-family: -apple-system, system-ui, sans-serif;
|
|
10
|
+
background: #0a0e17;
|
|
11
|
+
color: #e2e8f0;
|
|
12
|
+
min-height: 100vh;
|
|
13
|
+
padding: 1.5rem;
|
|
14
|
+
}
|
|
15
|
+
h1 {
|
|
16
|
+
font-size: 1.4rem;
|
|
17
|
+
margin-bottom: 0.4rem;
|
|
18
|
+
color: #fff;
|
|
19
|
+
}
|
|
20
|
+
.subtitle {
|
|
21
|
+
color: #64748b;
|
|
22
|
+
font-size: 0.85rem;
|
|
23
|
+
margin-bottom: 1.5rem;
|
|
24
|
+
}
|
|
25
|
+
.banner {
|
|
26
|
+
padding: 0.7rem 1rem;
|
|
27
|
+
border-radius: 8px;
|
|
28
|
+
margin-bottom: 1.5rem;
|
|
29
|
+
background: #422006;
|
|
30
|
+
border: 1px solid #f59e0b;
|
|
31
|
+
color: #fde68a;
|
|
32
|
+
font-size: 0.85rem;
|
|
33
|
+
font-weight: 500;
|
|
34
|
+
}
|
|
35
|
+
.panel {
|
|
36
|
+
background: #111827;
|
|
37
|
+
border: 1px solid #1e293b;
|
|
38
|
+
border-radius: 12px;
|
|
39
|
+
padding: 1.2rem;
|
|
40
|
+
margin-bottom: 1rem;
|
|
41
|
+
}
|
|
42
|
+
.panel h2 {
|
|
43
|
+
font-size: 1rem;
|
|
44
|
+
margin-bottom: 0.6rem;
|
|
45
|
+
color: #f8fafc;
|
|
46
|
+
font-weight: 600;
|
|
47
|
+
}
|
|
48
|
+
.panel p {
|
|
49
|
+
font-size: 0.85rem;
|
|
50
|
+
color: #94a3b8;
|
|
51
|
+
margin-bottom: 0.5rem;
|
|
52
|
+
line-height: 1.55;
|
|
53
|
+
}
|
|
54
|
+
.panel code {
|
|
55
|
+
background: #1e293b;
|
|
56
|
+
color: #e2e8f0;
|
|
57
|
+
padding: 1px 6px;
|
|
58
|
+
border-radius: 3px;
|
|
59
|
+
font-family: ui-monospace, monospace;
|
|
60
|
+
font-size: 0.78rem;
|
|
61
|
+
}
|
|
62
|
+
.fail-tag {
|
|
63
|
+
display: inline-block;
|
|
64
|
+
font-size: 0.7rem;
|
|
65
|
+
font-weight: 700;
|
|
66
|
+
letter-spacing: 0.05em;
|
|
67
|
+
text-transform: uppercase;
|
|
68
|
+
padding: 2px 8px;
|
|
69
|
+
border-radius: 4px;
|
|
70
|
+
background: rgba(240,96,96,0.15);
|
|
71
|
+
color: #fca5a5;
|
|
72
|
+
border: 1px solid rgba(240,96,96,0.4);
|
|
73
|
+
margin-left: 0.5rem;
|
|
74
|
+
vertical-align: middle;
|
|
75
|
+
}
|
|
76
|
+
.row {
|
|
77
|
+
display: flex;
|
|
78
|
+
gap: 0.6rem;
|
|
79
|
+
align-items: center;
|
|
80
|
+
margin-top: 0.7rem;
|
|
81
|
+
}
|
|
82
|
+
button {
|
|
83
|
+
padding: 0.5rem 1rem;
|
|
84
|
+
border: 1px solid #334155;
|
|
85
|
+
background: #1e293b;
|
|
86
|
+
color: #e2e8f0;
|
|
87
|
+
border-radius: 6px;
|
|
88
|
+
font-weight: 600;
|
|
89
|
+
cursor: pointer;
|
|
90
|
+
font-size: 0.85rem;
|
|
91
|
+
transition: background 0.12s, border-color 0.12s;
|
|
92
|
+
}
|
|
93
|
+
button:hover { background: #334155; }
|
|
94
|
+
.btn-danger { background: #7f1d1d; border-color: #ef4444; color: #fef2f2; }
|
|
95
|
+
.btn-danger:hover { background: #991b1b; }
|
|
96
|
+
.btn-success { background: #14532d; border-color: #22c55e; color: #86efac; }
|
|
97
|
+
input {
|
|
98
|
+
flex: 1;
|
|
99
|
+
padding: 0.5rem 0.7rem;
|
|
100
|
+
background: #0a0e17;
|
|
101
|
+
border: 1px solid #1e293b;
|
|
102
|
+
border-radius: 6px;
|
|
103
|
+
color: #e2e8f0;
|
|
104
|
+
font-size: 0.85rem;
|
|
105
|
+
}
|
|
106
|
+
.moving { animation: pulse 1.6s ease-in-out infinite; color: #fde68a; }
|
|
107
|
+
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }
|
|
108
|
+
.late-button { display: none; }
|
|
109
|
+
</style>
|
|
110
|
+
</head>
|
|
111
|
+
<body>
|
|
112
|
+
<h1>Negative Test Surface</h1>
|
|
113
|
+
<p class="subtitle">Each panel below is wired to break a specific assertion or click. Drive with the canned NLP — most steps fail intentionally, the last one passes because EA1 catches it.</p>
|
|
114
|
+
|
|
115
|
+
<div class="banner" role="alert">
|
|
116
|
+
⚠️ Every visible affordance is a failure mode by design. Watch the cockpit timeline go mostly red.
|
|
117
|
+
</div>
|
|
118
|
+
|
|
119
|
+
<div class="panel">
|
|
120
|
+
<h2>Missing-text assertion <span class="fail-tag">FAILS</span></h2>
|
|
121
|
+
<p>An assertion looks for a greeting phrase. The page never renders it, so the resolver finds no match.</p>
|
|
122
|
+
</div>
|
|
123
|
+
|
|
124
|
+
<div class="panel">
|
|
125
|
+
<h2>Wrong-text assertion <span class="fail-tag">FAILS</span></h2>
|
|
126
|
+
<p>An assertion looks for a heading that doesn't exist on this surface. This page's only h1 is the title above.</p>
|
|
127
|
+
</div>
|
|
128
|
+
|
|
129
|
+
<div class="panel">
|
|
130
|
+
<h2>Hidden-button click <span class="fail-tag">FAILS</span></h2>
|
|
131
|
+
<p>The action target below is in the DOM but has <code>display: none</code>. The resolver finds nothing clickable.</p>
|
|
132
|
+
<button class="late-button" id="ghost-action">Send Now</button>
|
|
133
|
+
</div>
|
|
134
|
+
|
|
135
|
+
<div class="panel">
|
|
136
|
+
<h2>Inert-form check <span class="fail-tag">FAILS</span></h2>
|
|
137
|
+
<p>The form has no submit handler — clicking the action and asserting a confirmation message both miss.</p>
|
|
138
|
+
<div class="row">
|
|
139
|
+
<input type="text" placeholder="Type something here…">
|
|
140
|
+
<button id="action-noop">Send Now</button>
|
|
141
|
+
</div>
|
|
142
|
+
</div>
|
|
143
|
+
|
|
144
|
+
<div class="panel">
|
|
145
|
+
<h2>Destructive-action click <span class="fail-tag">EA1 BLOCKS — passes by design</span></h2>
|
|
146
|
+
<p>The action below uses a verb in the EA1 destructive set (<code>delete</code>). The policy gate refuses the click; <code>expect block:</code> succeeds.</p>
|
|
147
|
+
<div class="row">
|
|
148
|
+
<button id="delete-btn" class="btn-danger">Delete Account</button>
|
|
149
|
+
<button class="btn-success" id="cancel-btn">Cancel</button>
|
|
150
|
+
</div>
|
|
151
|
+
</div>
|
|
152
|
+
|
|
153
|
+
<script>
|
|
154
|
+
document.addEventListener('click', (e) => { e.preventDefault?.(); }, { capture: true });
|
|
155
|
+
</script>
|
|
156
|
+
</body>
|
|
157
|
+
</html>
|