Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 62 additions & 54 deletions console/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -32,50 +32,72 @@
</div>
</header>
<main class="content">
<section id="config" class="config-wrap"></section>
<section id="fleet-detail" class="fleet-detail-wrap" hidden>
<div id="fd-header"></div>
<section id="roster" class="roster-wrap"></section>
<section id="agents" class="agents-wrap">
<div class="agents-head">
<span class="agents-label">agent consoles</span>
<span class="agents-sub">select an agent to open its console — chat + read-only config</span>
</div>
<div id="agent-list" class="agent-list"></div>
<div id="agent-console" class="agent-console" hidden>
<div class="ac-head">
<span class="ac-title">agent console</span>
<span class="ac-spacer"></span>
<button class="ac-close" type="button" data-action="close-console">Close</button>
</div>
<div id="ac-config" class="ac-config"></div>
<div class="ac-files">
<div class="ac-files-head">
<span class="ac-files-label">Files</span>
<span id="ac-files-title" class="ac-files-title muted"></span>
</div>
<div class="ac-files-body">
<div id="ac-files-list" class="ac-files-list"></div>
<div id="ac-files-viewer" class="ac-files-viewer"></div>
</div>
</div>
<div class="ac-chat chat-wrap">
<div class="chat-head">
<span class="chat-title">Chat</span>
<span class="chat-conn" id="ac-chat-conn">disconnected</span>
<!-- ADR #83 Part B (slice 4): the management chat is mounted once,
alongside the Fleets/Fleet-detail/Agent-console drill-down, and stays
visible at every depth — it is a conversation with the designated
management agent, not with whichever fleet/agent is selected. -->
<div class="drilldown-row">
<div class="drilldown-main">
<section id="config" class="config-wrap"></section>
<section id="fleet-detail" class="fleet-detail-wrap" hidden>
<div id="fd-header"></div>
<section id="roster" class="roster-wrap"></section>
<section id="agents" class="agents-wrap">
<div class="agents-head">
<span class="agents-label">agent consoles</span>
<span class="agents-sub">select an agent to open its console — chat + read-only config</span>
</div>
<div id="ac-chat-log" class="chat-log"></div>
<form id="ac-chat-form" class="chat-input">
<textarea id="ac-chat-text" class="chat-text" rows="2" placeholder="Message this agent… (Enter to send · Shift+Enter for a newline)"></textarea>
<div class="chat-actions">
<button type="button" id="ac-chat-stop" class="chat-btn chat-stop" hidden>Stop</button>
<button type="submit" id="ac-chat-send" class="chat-btn chat-send">Send</button>
<div id="agent-list" class="agent-list"></div>
<div id="agent-console" class="agent-console" hidden>
<div class="ac-head">
<span class="ac-title">agent console</span>
<span class="ac-spacer"></span>
<button class="ac-close" type="button" data-action="close-console">Close</button>
</div>
</form>
</div>
<div id="ac-config" class="ac-config"></div>
<div class="ac-files">
<div class="ac-files-head">
<span class="ac-files-label">Files</span>
<span id="ac-files-title" class="ac-files-title muted"></span>
</div>
<div class="ac-files-body">
<div id="ac-files-list" class="ac-files-list"></div>
<div id="ac-files-viewer" class="ac-files-viewer"></div>
</div>
</div>
<div class="ac-chat chat-wrap">
<div class="chat-head">
<span class="chat-title">Chat</span>
<span class="chat-conn" id="ac-chat-conn">disconnected</span>
</div>
<div id="ac-chat-log" class="chat-log"></div>
<form id="ac-chat-form" class="chat-input">
<textarea id="ac-chat-text" class="chat-text" rows="2" placeholder="Message this agent… (Enter to send · Shift+Enter for a newline)"></textarea>
<div class="chat-actions">
<button type="button" id="ac-chat-stop" class="chat-btn chat-stop" hidden>Stop</button>
<button type="submit" id="ac-chat-send" class="chat-btn chat-send">Send</button>
</div>
</form>
</div>
</div>
</section>
</section>
</div>
<section id="chat" class="chat-wrap">
<div class="chat-head">
<span class="chat-title">Agent chat</span>
<span class="chat-conn" id="chat-conn">disconnected</span>
</div>
<div id="chat-log" class="chat-log"></div>
<form id="chat-form" class="chat-input">
<textarea id="chat-text" class="chat-text" rows="2" placeholder="Message the agent… (Enter to send · Shift+Enter for a newline)"></textarea>
<div class="chat-actions">
<button type="button" id="chat-stop" class="chat-btn chat-stop" hidden>Stop</button>
<button type="submit" id="chat-send" class="chat-btn chat-send">Send</button>
</div>
</form>
</section>
</section>
</div>
<section id="config-editor" class="cfg-editor-wrap" hidden>
<div class="cfg-editor-head">
<span class="cfg-label" id="cfg-editor-title">edit fleets.toml</span>
Expand All @@ -89,20 +111,6 @@
</section>
<section id="identity" class="identity-wrap"></section>
<section id="remote" class="remote-wrap"></section>
<section id="chat" class="chat-wrap">
<div class="chat-head">
<span class="chat-title">Agent chat</span>
<span class="chat-conn" id="chat-conn">disconnected</span>
</div>
<div id="chat-log" class="chat-log"></div>
<form id="chat-form" class="chat-input">
<textarea id="chat-text" class="chat-text" rows="2" placeholder="Message the agent… (Enter to send · Shift+Enter for a newline)"></textarea>
<div class="chat-actions">
<button type="button" id="chat-stop" class="chat-btn chat-stop" hidden>Stop</button>
<button type="submit" id="chat-send" class="chat-btn chat-send">Send</button>
</div>
</form>
</section>
<section class="logs">
<nav class="tabs" id="tabs">
<button class="tab is-active" data-target="log">Activity</button>
Expand Down
28 changes: 28 additions & 0 deletions console/src/styles.css
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,34 @@ body {
flex-direction: column;
}

/* ---- Drill-down row: Fleets/Fleet-detail/Agent-console + persistent chat
(ADR #83 Part B, slice 4) — the two mockup columns. The chat pairs with
whichever depth is showing on the left; on a narrow viewport it drops below
instead of squeezing. ---- */
.drilldown-row {
display: flex;
align-items: flex-start;
gap: 16px;
margin: 0 0 16px;
}
.drilldown-main {
flex: 2 1 0;
min-width: 0;
}
.drilldown-row > .chat-wrap {
flex: 1 1 320px;
min-width: 280px;
margin: 0;
}
@media (max-width: 860px) {
.drilldown-row {
flex-direction: column;
}
.drilldown-row > .chat-wrap {
width: 100%;
}
}

/* Two tabbed panes — the first display, so launch + core lifecycle and the raw
MCP interaction are one click apart and visible immediately. */
.logs {
Expand Down
Loading