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
174 lines
3.6 KiB
CSS
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;
|
|
}
|
|
}
|