jenkins 3bca7b7465 hermes(hux): inline approval prompts and ask-not-deny defaults
Re-enforcement prerequisites, code-side complete: the autonomy runtime
now docks pending-approval cards above the composer (newest first, cap
three, aria-live, allow-once / always / deny wired to the existing
decide route with idempotency; polling gated to active turns and
fail-tolerant), so parked tool calls are never silent. The default
capability matrix no longer denies by default: network and web_search
ask below autonomous (visible prompt) and nothing resolves to deny
except explicit grants or private mode; SO-39 stays intact - deploy and
external side effects always ask and external never auto-allows.
rules.py at 100% line+branch; 744 hux-lane tests green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BvMSXH8VH2tMWXanb8SJdf
2026-08-24 13:53:00 -03:00

174 lines
3.6 KiB
CSS

/* Scoped vanilla-JS HUX-05/HUX-10 runtime presentation. */
.hux-runtime-title {
font-size: 0.875rem;
margin: 0 0 0.65rem;
}
.hux-runtime-field {
align-items: center;
display: flex;
flex-wrap: wrap;
font-size: 0.6875rem;
gap: 0.45rem;
}
.hux-runtime-field select,
.hux-runtime-field button,
.hux-runtime-actions button,
.hux-runtime-stop {
background: color-mix(in srgb, currentColor 4%, transparent);
border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
border-radius: 0.5rem;
color: inherit;
font: inherit;
min-height: 2rem;
padding: 0.35rem 0.55rem;
}
.hux-runtime-field button,
.hux-runtime-actions button,
.hux-runtime-stop {
cursor: pointer;
}
.hux-runtime-field button:focus-visible,
.hux-runtime-field select:focus-visible,
.hux-runtime-actions button:focus-visible,
.hux-runtime-stop:focus-visible {
outline: 2px solid #22d3ee;
outline-offset: 2px;
}
.hux-runtime-approval,
.hux-runtime-receipt,
.hux-runtime-notice {
border: 1px solid color-mix(in srgb, currentColor 13%, transparent);
border-radius: 0.65rem;
margin-top: 0.55rem;
padding: 0.6rem;
}
.hux-runtime-approval.risk-high {
border-color: color-mix(in srgb, #fb7185 48%, currentColor);
}
.hux-runtime-approval p,
.hux-runtime-notice p,
.hux-runtime-minimize,
.hux-runtime-status {
color: color-mix(in srgb, currentColor 66%, transparent);
font-size: 0.6875rem;
line-height: 1.45;
margin: 0.25rem 0;
}
.hux-runtime-actions {
display: flex;
flex-wrap: wrap;
gap: 0.35rem;
margin-top: 0.5rem;
}
.hux-runtime-actions button:last-child,
.hux-runtime-stop {
border-color: color-mix(in srgb, #fb7185 42%, currentColor);
}
.hux-runtime-receipt {
border-color: color-mix(in srgb, #22d3ee 42%, currentColor);
}
.hux-runtime-receipt h3,
.hux-runtime-notice h3 {
font-size: 0.75rem;
margin: 0;
}
.hux-runtime-receipt ul {
font-size: 0.6875rem;
margin: 0.35rem 0 0;
padding-left: 1.2rem;
}
.hux-runtime-summary {
display: grid;
gap: 0.4rem;
grid-template-columns: repeat(2, minmax(0, 1fr));
margin: 0;
}
.hux-runtime-summary div {
border-bottom: 1px solid color-mix(in srgb, currentColor 10%, transparent);
padding: 0.3rem 0;
}
.hux-runtime-summary dt {
color: color-mix(in srgb, currentColor 58%, transparent);
font-size: 0.625rem;
}
.hux-runtime-summary dd {
font-size: 0.6875rem;
margin: 0.1rem 0 0;
}
.hux-runtime-notice {
background: color-mix(in srgb, #22d3ee 5%, transparent);
border-color: color-mix(in srgb, #22d3ee 30%, currentColor);
}
/* Inline approval prompts: a fixed dock near the composer so parked tool
calls surface in the chat flow instead of hiding in the drawer. */
.hux-runtime-inline-dock {
bottom: 6.5rem;
display: flex;
flex-direction: column;
gap: 0.45rem;
left: 0;
margin: 0 auto;
max-height: 50vh;
max-width: 44rem;
overflow-y: auto;
padding: 0 0.75rem;
pointer-events: none;
position: fixed;
right: 0;
z-index: 60;
}
.hux-runtime-inline-dock[hidden] {
display: none;
}
.hux-runtime-inline-title {
align-self: flex-start;
background: Canvas;
border: 1px solid color-mix(in srgb, currentColor 18%, transparent);
border-radius: 999px;
color: CanvasText;
font-size: 0.625rem;
margin: 0;
padding: 0.15rem 0.6rem;
}
.hux-runtime-approval.hux-runtime-inline-card {
background: Canvas;
box-shadow: 0 0.5rem 1.5rem rgb(0 0 0 / 0.25);
color: CanvasText;
margin-top: 0;
pointer-events: auto;
}
@container (max-width: 34rem) {
.hux-runtime-summary {
grid-template-columns: 1fr;
}
}
@media (prefers-reduced-motion: reduce) {
.hux-runtime-field *,
.hux-runtime-actions * {
scroll-behavior: auto;
}
}