| <!DOCTYPE html>
|
| <html lang="en">
|
|
|
| <head>
|
| <meta charset="UTF-8">
|
| <meta name="viewport" content="width=device-width, initial-scale=1.0">
|
| <meta name="description" content="Agent Bridge -- Webapp-to-Antigravity-CLI bridging framework">
|
| <title>Agent Bridge</title>
|
| <link rel="preconnect" href="https://fonts.googleapis.com">
|
| <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
| <link
|
| href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,300;0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500&display=swap"
|
| rel="stylesheet">
|
| <link rel="stylesheet" href="src/style.css">
|
| </head>
|
|
|
| <body>
|
|
|
| <div id="app">
|
|
|
| <aside id="tool-rail"></aside>
|
|
|
|
|
| <main id="canvas">
|
|
|
| <div id="status-bar">
|
| <span id="connection-indicator"></span>
|
| <span id="status-text">Connecting...</span>
|
| <button id="settings-toggle" class="settings-btn" title="Settings">
|
| <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"
|
| stroke-linecap="round" stroke-linejoin="round">
|
| <circle cx="12" cy="12" r="3"></circle>
|
| <path
|
| d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 0 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 0 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 0 1-2.83-2.83l.06-.06A1.65 1.65 0 0 0 4.68 15a1.65 1.65 0 0 0-1.51-1H3a2 2 0 0 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 0 1 2.83-2.83l.06.06A1.65 1.65 0 0 0 9 4.68a1.65 1.65 0 0 0 1-1.51V3a2 2 0 0 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 0 1 2.83 2.83l-.06.06A1.65 1.65 0 0 0 19.4 9a1.65 1.65 0 0 0 1.51 1H21a2 2 0 0 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z">
|
| </path>
|
| </svg>
|
| </button>
|
| </div>
|
|
|
|
|
| <div id="settings-panel" class="hidden">
|
| <div class="settings-card">
|
| <div class="settings-header">
|
| <h2>Antigravity Settings</h2>
|
| <button id="settings-close" aria-label="Close">×</button>
|
| </div>
|
|
|
| <div class="settings-body">
|
| <label class="settings-label">CLI Executable Path</label>
|
| <div class="settings-input-row">
|
| <input type="text" id="cli-path-input"
|
| placeholder="e.g. C:\Users\You\AppData\Local\Programs\antigravity\antigravity.exe" spellcheck="false">
|
| <button id="save-path-btn" class="btn-primary">Save</button>
|
| </div>
|
| <p class="settings-hint">Full path to the Antigravity CLI binary on your computer.</p>
|
|
|
| <div class="settings-divider"></div>
|
|
|
| <label class="settings-label">Detection Status</label>
|
| <div id="detection-status" class="detection-box">
|
| <span id="detect-indicator" class="detect-dot"></span>
|
| <span id="detect-text">Checking...</span>
|
| </div>
|
| <div id="detect-details" class="detect-details"></div>
|
|
|
| <button id="redetect-btn" class="btn-outline">Re-detect CLI</button>
|
|
|
| <div class="settings-divider"></div>
|
|
|
| <label class="settings-label">CLI Session</label>
|
| <div class="settings-actions">
|
| <button id="connect-btn" class="btn-primary">Connect to CLI</button>
|
| <button id="disconnect-btn" class="btn-outline btn-danger" disabled>Disconnect</button>
|
| </div>
|
| <p id="session-status" class="settings-hint">No active session.</p>
|
| </div>
|
| </div>
|
| </div>
|
|
|
|
|
| <div id="center-card">
|
| <button id="card-close" aria-label="Close">×</button>
|
| <h1 id="greeting">Hey, what are we working on today?</h1>
|
|
|
| <div id="prompt-container">
|
| <input type="text" id="prompt-input" placeholder="I want to create..." autocomplete="off" spellcheck="false">
|
| <button id="send-btn" title="Send">
|
| <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
|
| stroke-linecap="round" stroke-linejoin="round">
|
| <line x1="5" y1="12" x2="19" y2="12"></line>
|
| <polyline points="12 5 19 12 12 19"></polyline>
|
| </svg>
|
| </button>
|
| </div>
|
|
|
| <div id="icon-bar"></div>
|
|
|
| <div id="suggestion-chips"></div>
|
|
|
| <div id="bottom-links">
|
| <a href="#" id="link-tools" class="bottom-link">
|
| <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
| <rect x="3" y="3" width="7" height="7"></rect>
|
| <rect x="14" y="3" width="7" height="7"></rect>
|
| <rect x="14" y="14" width="7" height="7"></rect>
|
| <rect x="3" y="14" width="7" height="7"></rect>
|
| </svg>
|
| Explore Tools
|
| </a>
|
| <a href="#" id="link-bridge" class="bottom-link">
|
| <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
| <circle cx="12" cy="12" r="10"></circle>
|
| <line x1="2" y1="12" x2="22" y2="12"></line>
|
| <path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z">
|
| </path>
|
| </svg>
|
| Bridge Status
|
| </a>
|
| </div>
|
| </div>
|
|
|
|
|
| <div id="conversation" class="hidden">
|
| <div id="messages"></div>
|
|
|
| <div id="output-area" class="hidden">
|
| <div id="output-header">
|
| <span>Output</span>
|
| <button id="close-output" aria-label="Close">×</button>
|
| </div>
|
| <div id="output-content"></div>
|
| </div>
|
|
|
| <div id="conv-input-bar">
|
| <input type="text" id="conv-input" placeholder="Type a prompt or tool command..." autocomplete="off"
|
| spellcheck="false">
|
| <button id="conv-send-btn" title="Send">
|
| <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5"
|
| stroke-linecap="round" stroke-linejoin="round">
|
| <line x1="5" y1="12" x2="19" y2="12"></line>
|
| <polyline points="12 5 19 12 12 19"></polyline>
|
| </svg>
|
| </button>
|
| </div>
|
| </div>
|
| </main>
|
| </div>
|
|
|
| <script src="/socket.io/socket.io.js"></script>
|
| <script src="src/main.js"></script>
|
| </body>
|
|
|
| </html> |