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
3 changes: 1 addition & 2 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
.git/
.venv/
.entire/
.claude/
.secret.*
*.wormhole
Expand All @@ -14,4 +13,4 @@ dist/
build/
*.db
.env
docs/plans/
docs/
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ Sessions auto-transition based on inactivity: `active → idle → suspended →
|---|---|---|
| `WARREN_ADMIN_TOKEN` | (required) | Token for admin operations (pairing, config) |
| `WARREN_INTERNAL_SECRET` | (recommended) | Token required of agents connecting to `/api/agent/ws` |
| `WARREN_BACKEND` | `websocket` | Backend adapter: `websocket` or `orca` |
| `WARREN_BACKEND` | `websocket` | Backend adapter: `websocket` (default) or `orca` (experimental, single local terminal) |
| `WARREN_CONFIG` | `config.yaml` | Path to YAML config file |
| `WARREN_DB` | `warren.db` | Path to SQLite database |
| `WARREN_HOST` | `0.0.0.0` | Server bind address |
Expand Down Expand Up @@ -139,7 +139,7 @@ uv run pytest tests/ -v # Unit tests
|---|---|
| `server/src/warren/app.py` | FastAPI app, endpoints, SSE streaming |
| `server/src/warren/adapters/websocket.py` | WebSocket agent proxy adapter (default) |
| `server/src/warren/adapters/orca.py` | Local Orca terminal adapter |
| `server/src/warren/adapters/orca.py` | Local Orca terminal adapter (experimental, single-session) |
| `server/src/warren/voice.py` | Voice WebSocket handler (OpenClaw protocol) |
| `server/src/warren/bus.py` | SessionBus pub/sub (multi-consumer events) |
| `server/src/warren/lifecycle.py` | Background session lifecycle sweep |
Expand Down
6 changes: 0 additions & 6 deletions creation/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@
<span class="title">NEW SESSION</span>
</div>
<div class="form-area">
<label for="repo-select">REPO</label>
<select id="repo-select" class="input"></select>
<label for="initial-msg">PROMPT</label>
<input id="initial-msg" type="text" placeholder="enter command..." class="input">
</div>
Expand All @@ -75,10 +73,6 @@
<div class="monitor-section-title">AGENTS</div>
<div id="monitor-agents"></div>
</div>
<div class="monitor-section">
<div class="monitor-section-title">TASKS</div>
<div id="monitor-tasks"></div>
</div>
</div>
<div class="footer">
<button id="btn-monitor-refresh" class="btn-primary">[ REFRESH ]</button>
Expand Down
22 changes: 1 addition & 21 deletions creation/js/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ const Warren = (() => {

/**
* Initialize from URL token (?token=DEVICE_TOKEN).
* Returns { ok, reason } for debugging on screen.
* Returns { ok, reason }.
*/
function initFromUrl() {
const token = new URLSearchParams(window.location.search).get("token");
Expand All @@ -46,10 +46,6 @@ const Warren = (() => {
return { ok: true };
}

async function fetchRepos() {
return _fetch("/repos");
}

async function listSessions() {
return _fetch("/sessions");
}
Expand Down Expand Up @@ -131,22 +127,9 @@ const Warren = (() => {
return _fetch("/monitor/agents");
}

async function fetchMonitorTasks() {
return _fetch("/monitor/tasks");
}

async function pauseTask(taskId) {
return _fetch(`/monitor/tasks/${taskId}/pause`, { method: "POST" });
}

async function resumeTask(taskId) {
return _fetch(`/monitor/tasks/${taskId}/resume`, { method: "POST" });
}

return {
init,
initFromUrl,
fetchRepos,
listSessions,
createSession,
sendMessage,
Expand All @@ -158,9 +141,6 @@ const Warren = (() => {
fetchSessionMessages,
fetchMonitorHealth,
fetchMonitorAgents,
fetchMonitorTasks,
pauseTask,
resumeTask,
get serverUrl() { return _serverUrl; },
get connected() { return !!_token; },
};
Expand Down
68 changes: 5 additions & 63 deletions creation/js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,10 @@
const msgInput = document.getElementById("msg-input");
const pttIndicator = document.getElementById("ptt-indicator");
const connDot = document.getElementById("connection-dot");
const repoSelect = document.getElementById("repo-select");
const initialMsg = document.getElementById("initial-msg");
const monitorContent = document.getElementById("monitor-content");
const monitorHealth = document.getElementById("monitor-health");
const monitorAgents = document.getElementById("monitor-agents");
const monitorTasks = document.getElementById("monitor-tasks");
const monitorStatus = document.getElementById("monitor-status");

// -- Helpers --
Expand Down Expand Up @@ -70,7 +68,7 @@
selectedIndex = 0;

if (name === "sessions") refreshSessions();
if (name === "new") loadRepos();
if (name === "new") initialMsg.focus();
if (name === "monitor") refreshMonitor();
}

Expand Down Expand Up @@ -226,7 +224,7 @@
}
});
} catch (err) {
console.error("Failed to load message history:", err);
// History is best-effort; ignore load failures (no console on the R1).
}
renderStepProgress();

Expand Down Expand Up @@ -360,14 +358,12 @@
async function refreshMonitor() {
monitorStatus.className = "dot dot-yellow";
try {
const [health, agents, tasks] = await Promise.all([
const [health, agents] = await Promise.all([
Warren.fetchMonitorHealth(),
Warren.fetchMonitorAgents(),
Warren.fetchMonitorTasks(),
]);
renderMonitorHealth(health);
renderMonitorAgents(agents);
renderMonitorTasks(tasks);
monitorStatus.className = "dot dot-green";
} catch (err) {
monitorStatus.className = "dot dot-red";
Expand Down Expand Up @@ -436,45 +432,6 @@
});
}

function renderMonitorTasks(data) {
monitorTasks.textContent = "";
const taskList = data.tasks || [];
if (taskList.length === 0) {
const empty = document.createElement("div");
empty.className = "monitor-empty";
empty.textContent = "No scheduled tasks";
monitorTasks.appendChild(empty);
return;
}
taskList.forEach((task) => {
const item = document.createElement("div");
item.className = "monitor-item";

const dot = document.createElement("span");
dot.className = "dot " + (task.status === "active" ? "dot-green" : "dot-yellow");

const label = document.createElement("span");
label.className = "label";
label.textContent = task.id;

const value = document.createElement("span");
value.className = "value";
if (task.status === "paused") {
value.textContent = "paused";
} else if (task.next_run) {
const next = new Date(task.next_run);
value.textContent = next.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
} else {
value.textContent = task.schedule_value;
}

item.appendChild(dot);
item.appendChild(label);
item.appendChild(value);
monitorTasks.appendChild(item);
});
}

// -- Command Palette --

const paletteOverlay = document.getElementById("view-palette");
Expand Down Expand Up @@ -708,15 +665,7 @@

// -- New Session View --

function loadRepos() {
const repoLabel = repoSelect.previousElementSibling;
repoSelect.style.display = "none";
if (repoLabel) repoLabel.style.display = "none";
initialMsg.focus();
}

async function startSession() {
const repo = repoSelect.value || "";
const msg = initialMsg.value.trim();
if (!msg) return;

Expand All @@ -730,7 +679,7 @@
}

try {
const data = await Warren.createSession(repo, finalMsg);
const data = await Warren.createSession("", finalMsg);
initialMsg.value = "";
openSession({ id: data.session_id, name: data.name, repo: data.repo });
} catch (err) {
Expand Down Expand Up @@ -915,15 +864,8 @@
sessionList.textContent = "";
const empty = document.createElement("div");
empty.className = "empty-state";
empty.textContent = "ERR: " + result.reason;
empty.textContent = "NOT PAIRED — re-scan the pairing QR code";
sessionList.appendChild(empty);

const debug = document.createElement("div");
debug.className = "empty-state";
debug.style.fontSize = "10px";
debug.style.wordBreak = "break-all";
debug.textContent = window.location.href;
sessionList.appendChild(debug);
}

initialize();
Expand Down
15 changes: 3 additions & 12 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,17 @@ services:
ports:
- "4030:4030"
volumes:
- /home/deploy/repos:/home/deploy/repos
- /home/deploy/.ssh:/home/appuser/.ssh:ro
- /home/deploy/.gitconfig:/home/appuser/.gitconfig:ro
- /home/deploy/.claude:/home/appuser/.claude
- warren-data:/data
# Optional: mount host SSH/git config if the orca backend needs repo access.
# - ${HOME}/.ssh:/home/appuser/.ssh:ro
environment:
- ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}
- WARREN_CONFIG=/data/config.yaml
- WARREN_DB=/data/warren.db
- WARREN_ADMIN_TOKEN=${WARREN_ADMIN_TOKEN}
- WARREN_INTERNAL_SECRET=${WARREN_INTERNAL_SECRET}
- WARREN_VOICE_ENABLED=${WARREN_VOICE_ENABLED:-false}
- WARREN_VOICE_PORT=${WARREN_VOICE_PORT:-443}
- WARREN_INTERNAL_SECRET=${WARREN_INTERNAL_SECRET}
restart: unless-stopped
networks:
- dokploy-network

volumes:
warren-data:

networks:
dokploy-network:
external: true
87 changes: 0 additions & 87 deletions docs/plans/2026-02-19-ux-context-improvements-design.md

This file was deleted.

Loading
Loading