feat: chat
This commit is contained in:
+114
-11
@@ -25,6 +25,20 @@
|
||||
<div class="rail-heading">Chats</div>
|
||||
<div class="chat-list" id="chat-list"></div>
|
||||
</section>
|
||||
<section class="chat-nav-section">
|
||||
<div class="rail-heading-row">
|
||||
<div class="rail-heading">Negotiations</div>
|
||||
<div class="rail-heading-actions">
|
||||
<button class="rail-icon-button" id="negotiations-refresh-all" type="button" title="Refresh all negotiations">
|
||||
<i data-lucide="refresh-cw" aria-hidden="true"></i>
|
||||
</button>
|
||||
<button class="rail-icon-button" id="negotiations-toggle" type="button" title="Negotiations" aria-expanded="false" aria-controls="negotiation-panel">
|
||||
<i data-lucide="messages-square" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="plans-rail-list" id="negotiation-list"></div>
|
||||
</section>
|
||||
<section class="chat-nav-section">
|
||||
<div class="rail-heading-row">
|
||||
<div class="rail-heading">Plans</div>
|
||||
@@ -82,6 +96,7 @@
|
||||
<label>UEX API URL<input id="config-uex-base-url" name="uex_base_url" type="text"></label>
|
||||
<label>UEX Secret Key<input id="config-uex-secret-key" name="uex_secret_key" type="password" autocomplete="off"></label>
|
||||
<label>UEX Bearer Token<input id="config-uex-bearer-token" name="uex_bearer_token" type="password" autocomplete="off"></label>
|
||||
<label>UEX Close Endpoint<input id="config-uex-negotiation-close-endpoint" name="uex_negotiation_close_endpoint" type="text"></label>
|
||||
<label>UEX Username<input id="config-traderai-user-name" name="traderai_user_name" type="text"></label>
|
||||
<label>Memory DB Path<input id="config-traderai-memory-path" name="traderai_memory_path" type="text"></label>
|
||||
<label>Notification Poll Seconds<input id="config-uex-notification-poll-seconds" name="uex_notification_poll_seconds" type="number" min="15" step="15"></label>
|
||||
@@ -170,19 +185,107 @@
|
||||
<div class="floating-panel" id="negotiation-panel" hidden>
|
||||
<div class="floating-panel-header">
|
||||
<div>
|
||||
<p class="eyebrow">UEX negotiation</p>
|
||||
<h2 id="negotiation-title">Negotiation</h2>
|
||||
<p class="eyebrow">UEX negotiations</p>
|
||||
<h2 id="negotiation-title">Negotiation workspace</h2>
|
||||
</div>
|
||||
<div class="floating-panel-actions">
|
||||
<div class="negotiation-sync-pill" id="negotiation-sync-pill">Local sync</div>
|
||||
<button class="icon-button light" id="negotiation-close" type="button" title="Close">
|
||||
<i data-lucide="x" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
<button class="icon-button light" id="negotiation-close" type="button" title="Close">
|
||||
<i data-lucide="x" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
<div class="negotiation-messages" id="negotiation-messages"></div>
|
||||
<form class="negotiation-composer" id="negotiation-form">
|
||||
<textarea id="negotiation-input" rows="2" placeholder="Reply to the other party..."></textarea>
|
||||
<button type="submit">Send</button>
|
||||
</form>
|
||||
<div class="config-status" id="negotiation-status"></div>
|
||||
<div class="negotiation-workspace">
|
||||
<aside class="negotiation-sidebar">
|
||||
<div class="negotiation-sidebar-controls">
|
||||
<input id="negotiation-search" type="text" placeholder="Search negotiations">
|
||||
<select id="negotiation-filter">
|
||||
<option value="open">Open</option>
|
||||
<option value="all">All</option>
|
||||
<option value="closed">Closed</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="negotiation-list-panel" id="negotiation-panel-list"></div>
|
||||
</aside>
|
||||
<section class="negotiation-thread-shell">
|
||||
<div class="negotiation-thread-header" id="negotiation-thread-header">
|
||||
<div class="muted">Select a negotiation to load the local thread.</div>
|
||||
</div>
|
||||
<div class="negotiation-messages" id="negotiation-messages"></div>
|
||||
<form class="negotiation-composer" id="negotiation-form">
|
||||
<textarea id="negotiation-input" rows="2" placeholder="Reply to the other party..."></textarea>
|
||||
<div class="negotiation-composer-actions">
|
||||
<button class="secondary small-button" id="negotiation-draft-button" type="button">Ask AI to Draft</button>
|
||||
<button type="submit">Send</button>
|
||||
</div>
|
||||
</form>
|
||||
<div class="config-status" id="negotiation-status"></div>
|
||||
</section>
|
||||
<aside class="negotiation-detail-rail">
|
||||
<div class="negotiation-detail-card" id="negotiation-meta-card">
|
||||
<h3>Deal</h3>
|
||||
<div class="muted">No negotiation selected.</div>
|
||||
</div>
|
||||
<div class="negotiation-detail-card" id="negotiation-user-card">
|
||||
<h3>User</h3>
|
||||
<div class="muted">No negotiation selected.</div>
|
||||
</div>
|
||||
<div class="negotiation-detail-card">
|
||||
<h3>Actions</h3>
|
||||
<div class="negotiation-action-stack">
|
||||
<button class="secondary small-button" id="negotiation-open-chat" type="button">Open in AI Chat</button>
|
||||
<button class="small-button" id="negotiation-refresh-button" type="button">Refresh Thread</button>
|
||||
<button class="danger-button small-button" id="negotiation-end-deal" type="button">End Deal</button>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
</div>
|
||||
</div>
|
||||
<div class="modal-backdrop" id="negotiation-close-modal" hidden>
|
||||
<section class="update-modal-card negotiation-close-card">
|
||||
<div class="section-title-row">
|
||||
<h2>End Deal</h2>
|
||||
<button class="icon-button light" id="negotiation-close-modal-close" type="button" title="Close">
|
||||
<i data-lucide="x" aria-hidden="true"></i>
|
||||
</button>
|
||||
</div>
|
||||
<form class="config-form" id="negotiation-close-form">
|
||||
<label>Did you close a deal?
|
||||
<select id="close-deal-closed">
|
||||
<option value="true">Yes</option>
|
||||
<option value="false">No</option>
|
||||
</select>
|
||||
</label>
|
||||
<div class="plan-form-split">
|
||||
<label>Deal value
|
||||
<input id="close-deal-value" type="number" min="0" step="1" placeholder="1000000">
|
||||
</label>
|
||||
<label>Currency
|
||||
<input id="close-currency" type="text" value="UEC">
|
||||
</label>
|
||||
</div>
|
||||
<label>Clear, timely, and honest?
|
||||
<input id="close-clarity" type="number" min="1" max="5" step="1" value="5">
|
||||
</label>
|
||||
<label>Delivery or response time?
|
||||
<input id="close-speed" type="number" min="1" max="5" step="1" value="5">
|
||||
</label>
|
||||
<label>Respectful and easy to deal with?
|
||||
<input id="close-respect" type="number" min="1" max="5" step="1" value="5">
|
||||
</label>
|
||||
<label>Price or offer fairness?
|
||||
<input id="close-fairness" type="number" min="1" max="5" step="1" value="5">
|
||||
</label>
|
||||
<label>Comments
|
||||
<textarea id="close-comment" rows="3" placeholder="Optional note"></textarea>
|
||||
</label>
|
||||
<div class="plan-form-actions">
|
||||
<button class="secondary" id="close-draft-button" type="button">Draft for Approval</button>
|
||||
<button type="submit">Rate Deal</button>
|
||||
</div>
|
||||
<div class="config-status" id="negotiation-close-status"></div>
|
||||
</form>
|
||||
</section>
|
||||
</div>
|
||||
<div class="floating-panel plans-floating-panel" id="plans-panel" hidden>
|
||||
<div class="floating-panel-header">
|
||||
|
||||
Reference in New Issue
Block a user