aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
157 lines (144 loc) • 7.15 kB
CSS
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--bg: #1a1a2e;
--bg2: #16213e;
--bg3: #0f3460;
--bg-alt: #1e1e38;
--text: #e0e0e0;
--muted: #8888aa;
--code: #c8d8f0;
--accent: #00d4aa;
--acc-dim: #009977;
--border: #2a2a4a;
--s-run: #00d4aa;
--s-que: #f0c040;
--s-fail: #e05050;
--s-done: #606080;
--radius: 4px;
--mono: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
--ui: system-ui, -apple-system, 'Segoe UI', sans-serif;
}
body {
background: var(--bg); color: var(--text); font-family: var(--ui);
font-size: 14px; line-height: 1.5; min-height: 100vh;
display: flex; flex-direction: column;
}
/* Header */
header {
background: var(--bg2); border-bottom: 1px solid var(--border);
padding: 10px 20px; display: flex; align-items: center; gap: 16px; flex-shrink: 0;
}
header h1 { font-size: 15px; font-weight: 600; color: var(--accent); font-family: var(--mono); letter-spacing: .05em; }
#daemon-status-badge {
font-size: 12px; font-family: var(--mono); color: var(--muted);
padding: 2px 8px; border: 1px solid var(--border); border-radius: var(--radius);
}
#daemon-status-badge.healthy { color: var(--s-run); border-color: var(--s-run); }
#daemon-status-badge.degraded { color: var(--s-que); border-color: var(--s-que); }
#daemon-status-badge.error { color: var(--s-fail); border-color: var(--s-fail); }
header .spacer { flex: 1; }
#uptime { font-size: 12px; color: var(--muted); font-family: var(--mono); }
/* Tabs */
nav#tabs {
background: var(--bg2); border-bottom: 1px solid var(--border);
display: flex; padding: 0 20px; gap: 2px; flex-shrink: 0;
}
nav#tabs button {
background: none; border: none; border-bottom: 2px solid transparent;
color: var(--muted); cursor: pointer; font-family: var(--ui); font-size: 13px;
padding: 10px 16px; transition: color .15s, border-color .15s;
}
nav#tabs button:hover { color: var(--text); }
nav#tabs button.active { color: var(--accent); border-bottom-color: var(--accent); }
/* Layout */
main { flex: 1; overflow: hidden; display: flex; flex-direction: column; }
.tab-panel { display: none; flex: 1; overflow: auto; padding: 20px; flex-direction: column; }
.tab-panel.active { display: flex; }
h2 {
font-size: 12px; font-weight: 700; color: var(--muted);
letter-spacing: .07em; text-transform: uppercase; margin-bottom: 12px;
}
/* Tables */
.table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
thead tr { background: var(--bg3); }
thead th {
padding: 8px 12px; text-align: left; font-weight: 600;
color: var(--muted); font-size: 11px; letter-spacing: .06em;
text-transform: uppercase; white-space: nowrap;
}
tbody tr { border-top: 1px solid var(--border); cursor: pointer; transition: background .1s; }
tbody tr:nth-child(even) { background: var(--bg-alt); }
tbody tr:hover { background: var(--bg3); }
tbody tr.selected { background: #0f3460; outline: 1px solid var(--accent); }
td { padding: 8px 12px; font-family: var(--mono); font-size: 12px; white-space: nowrap; }
td.wrap { white-space: normal; word-break: break-word; max-width: 300px; }
/* Status dots */
.dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; vertical-align: middle; }
.dot-running { background: var(--s-run); box-shadow: 0 0 6px var(--s-run); }
.dot-queued { background: var(--s-que); }
.dot-failed { background: var(--s-fail); }
.dot-completed { background: var(--s-done); }
.dot-permanently-failed { background: #c03030; }
/* Buttons */
.btn {
background: none; border: 1px solid var(--border); border-radius: var(--radius);
color: var(--text); cursor: pointer; font-family: var(--ui); font-size: 13px;
padding: 6px 14px; transition: background .15s, border-color .15s;
}
.btn:hover { background: var(--bg3); border-color: var(--accent); }
.btn-accent { background: var(--acc-dim); border-color: var(--accent); color: #fff; }
.btn-accent:hover { background: var(--accent); }
.btn-danger { border-color: var(--s-fail); color: var(--s-fail); }
.btn-danger:hover { background: rgba(224,80,80,.15); }
.btn-sm { padding: 3px 10px; font-size: 12px; }
/* Output */
#output-panel { display: flex; flex-direction: column; gap: 12px; }
#output-toolbar { display: flex; align-items: center; gap: 12px; }
#output-loop-id { font-family: var(--mono); color: var(--accent); font-size: 13px; }
#output-stream {
flex: 1; background: #0d0d1a; border: 1px solid var(--border);
border-radius: var(--radius); font-family: var(--mono); font-size: 12px;
color: var(--code); padding: 12px; overflow-y: auto;
white-space: pre-wrap; word-break: break-all;
min-height: 300px; max-height: calc(100vh - 240px);
}
#output-stream .line { display: block; line-height: 1.6; }
/* Submit form */
#submit-panel { max-width: 560px; }
.form-group { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.form-group label { font-size: 12px; color: var(--muted); font-weight: 600; letter-spacing: .04em; }
.form-group textarea,
.form-group input,
.form-group select {
background: var(--bg2); border: 1px solid var(--border); border-radius: var(--radius);
color: var(--text); font-family: var(--ui); font-size: 13px; padding: 8px 10px;
transition: border-color .15s; width: 100%;
}
.form-group textarea { min-height: 80px; resize: vertical; }
.form-group textarea:focus,
.form-group input:focus,
.form-group select:focus { border-color: var(--accent); outline: none; }
.form-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; margin-bottom: 16px; }
#submit-result {
font-family: var(--mono); font-size: 12px; margin-top: 12px;
padding: 8px 12px; border-radius: var(--radius); display: none;
}
#submit-result.ok { background: rgba(0,212,170,.1); color: var(--accent); }
#submit-result.err { background: rgba(224,80,80,.1); color: var(--s-fail); }
/* Resources */
#resources-panel { max-width: 640px; }
.metrics-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 12px; margin-bottom: 20px; }
.metric-card { background: var(--bg2); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 16px; }
.metric-card .label { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: .06em; margin-bottom: 6px; }
.metric-card .value { font-family: var(--mono); font-size: 22px; color: var(--accent); font-weight: 700; }
.metric-card .sub { font-size: 11px; color: var(--muted); margin-top: 2px; font-family: var(--mono); }
.progress-bar { height: 6px; background: var(--border); border-radius: 3px; margin-top: 8px; overflow: hidden; }
.progress-fill { height: 100%; background: var(--accent); border-radius: 3px; transition: width .4s; }
.progress-fill.warn { background: var(--s-que); }
.progress-fill.crit { background: var(--s-fail); }
/* Responsive */
@media (max-width: 640px) {
.form-row { grid-template-columns: 1fr; }
.metrics-grid { grid-template-columns: 1fr; }
}