diff --git a/Launch-Dashboard.bat b/Launch-Dashboard.bat new file mode 100644 index 0000000..adc52e1 --- /dev/null +++ b/Launch-Dashboard.bat @@ -0,0 +1,4 @@ +@echo off +cd /d "%~dp0" +powershell -NoLogo -ExecutionPolicy Bypass -File "%~dp0start.ps1" +pause diff --git a/README.md b/README.md index 8dc2e9a..35bf948 100644 --- a/README.md +++ b/README.md @@ -107,7 +107,7 @@ chmod +x install.sh && ./install.sh git clone https://github.com/modimihir07/agentic-os.git cd agentic-os .\install.ps1 -python .\server.py +.\start.ps1 # Open http://127.0.0.1:8080 ``` @@ -119,15 +119,14 @@ python .\server.py | Tool | Required? | Install | |------|-----------|---------| -| Python 3.10+ | ✅ Required | Install from your OS package manager or [python.org](https://www.python.org/downloads/) | -| Node.js 18+ | ⚠ For opencode and Gemini CLI | Install from your OS package manager or [nodejs.org](https://nodejs.org/) | -| Python 3.10+ | ✅ Required | Linux/macOS: install from your package manager or `python.org`. Windows: install from `python.org` and select **Add Python to PATH**. Verify with `python --version` or `py -3 --version`. | -| Node.js 18+ | ⚠ For opencode | `curl -fsSL https://deb.nodesource.com/setup_20.x \| sudo bash - && sudo apt install -y nodejs` | +| Python 3.10+ | ✅ Required | Install from your package manager or [python.org](https://www.python.org/downloads/). Verify with `python3 --version`. | +| Node.js 18+ | ⚠ For opencode and Gemini CLI | `curl -fsSL https://deb.nodesource.com/setup_20.x \| sudo bash - && sudo apt install -y nodejs` | | opencode | ⚠ For code tasks | `npm install -g @opencode/cli` | | Hermes Agent | ⚠ For memory/scheduling | Follow the upstream Hermes Agent documentation. If native Windows support is unavailable, use WSL for Hermes. | | Gemini CLI | ⚠ For Google AI | `npm install -g @google/gemini-cli` | > ⚠ = Optional — the dashboard starts and core pages work without all agent CLIs installed. Agent-specific chat, routing, health, and skill execution features will show offline or warning status until the relevant CLI is installed and authenticated. + ### Windows | Tool | Required? | Install | Verify / Next Step | @@ -140,16 +139,6 @@ python .\server.py > ⚠ = Optional — the dashboard works with any subset of installed agents. -### Windows Quick Start - -```powershell -git clone https://github.com/modimihir07/agentic-os.git -cd agentic-os -.\install.ps1 -.\start.ps1 -# Open http://127.0.0.1:8080 -``` - The PowerShell launchers resolve Python in this order: `py -3.10`, `py -3`, then `python`. For manual commands, prefer `python -m pip install -r requirements.txt` and `python server.py --port 8080` so the same interpreter runs both dependency installation and the server. > **PowerShell execution policy:** if you use PowerShell scripts, allow local scripts for your user with `Set-ExecutionPolicy -Scope CurrentUser RemoteSigned`, or run a single installer invocation with `powershell -ExecutionPolicy Bypass -File .\install.ps1`. diff --git a/dashboard/api.js b/dashboard/api.js index bdb2284..a54e4ad 100644 --- a/dashboard/api.js +++ b/dashboard/api.js @@ -34,6 +34,11 @@ const api = { getSkill: (name) => api.get(`/api/skills/${encodeURIComponent(name)}`), runSkill: (name, input = '', agent = 'auto') => api.post(`/api/skills/${encodeURIComponent(name)}/run`, { input, agent }), getSkillEval: (name) => api.get(`/api/skills/${encodeURIComponent(name)}/eval`), + createSkill: (name, skillMd) => api.post('/api/skills', { name, skill_md: skillMd }), + updateSkill: (name, skillMd) => api.put(`/api/skills/${encodeURIComponent(name)}`, { skill_md: skillMd }), + getSkillContextFile: (name, filename) => api.get(`/api/skills/${encodeURIComponent(name)}/context/${encodeURIComponent(filename)}`), + putSkillContextFile: (name, filename, content) => api.put(`/api/skills/${encodeURIComponent(name)}/context/${encodeURIComponent(filename)}`, { content }), + deleteSkillContextFile: (name, filename) => api.del(`/api/skills/${encodeURIComponent(name)}/context/${encodeURIComponent(filename)}`), getJobs: () => api.get('/api/scheduler/jobs'), createJob: (job) => api.post('/api/scheduler/jobs', job), deleteJob: (id) => api.del(`/api/scheduler/jobs/${encodeURIComponent(id)}`), @@ -55,6 +60,7 @@ const api = { // Kanban getKanbanBoard: (status) => api.get(status ? `/api/kanban/board?status=${encodeURIComponent(status)}` : '/api/kanban/board'), getKanbanTask: (id) => api.get(`/api/kanban/tasks/${encodeURIComponent(id)}`), + deleteKanbanTask: (id) => api.del(`/api/kanban/tasks/${encodeURIComponent(id)}`), createKanbanTask: (data) => api.post('/api/kanban/tasks', data), updateKanbanTask: (id, data) => api.patch(`/api/kanban/tasks/${encodeURIComponent(id)}`, data), completeKanbanTask: (id, summary) => api.post(`/api/kanban/tasks/${encodeURIComponent(id)}/complete`, { summary }), @@ -64,6 +70,7 @@ const api = { linkKanbanTasks: (parentId, childId) => api.post('/api/kanban/links', { parent_id: parentId, child_id: childId }), unlinkKanbanTasks: (parentId, childId) => api.del(`/api/kanban/links?parent_id=${encodeURIComponent(parentId)}&child_id=${encodeURIComponent(childId)}`), dispatchKanban: () => api.post('/api/kanban/dispatch', {}), + dispatchKanbanTask: (id) => api.post(`/api/kanban/tasks/${encodeURIComponent(id)}/dispatch`, {}), specifyKanbanTask: (id) => api.post(`/api/kanban/tasks/${encodeURIComponent(id)}/specify`, {}), decomposeKanbanTask: (id) => api.post(`/api/kanban/tasks/${encodeURIComponent(id)}/decompose`, {}), // Goals diff --git a/dashboard/index.html b/dashboard/index.html index 4f7899e..6a600ba 100644 --- a/dashboard/index.html +++ b/dashboard/index.html @@ -33,6 +33,7 @@