Commit Graph

23 Commits

Author SHA1 Message Date
Austin aa7fd2b886 fix: enable opencode agent + wire dashboard Terminal to live /ws/terminal
- settings.json: opencode enabled true (binary already installed; was disabled)
- terminal.js: point WebSocket at /ws/terminal on the main server (was dead 8082),
  switch message protocol action:/type: -> type: to match PtySession backend
2026-07-26 10:40:40 -07:00
Austin 29eaa7f801 feat(orchestration): multi-angle workflow — 5+ parallel subagents, converge, log + index runs
- skills/multi-angle-orchestration/SKILL.md: SOP for single-source fan-out
  (delegate_task leaf workers, NO external AIs) of >=5 angles + converge.
- brain-core: ingest orchestration-runs/*.json as source 'orchestration'
  so past runs are searchable in Brain Search.
- server.py: POST /api/orchestrate (optional headless fan-out of the 3
  built-in agents) + GET /api/orchestrate/runs; persist runs to
  data/orchestration-runs/<id>.json and upsert to brain.
- dashboard/pages/orchestration.js: launch runs + review past runs.
- skills/multi-agent-run/SKILL.md + api helpers + nav entry.
2026-07-25 18:07:51 -07:00
Austin 257d64327a feat(brain): brain search dashboard + scheduled auto-ingest + skill-run auto-upsert
1) Brain Search page (dashboard/pages/brain-search.js): mirrors Agent
   Insights; queries /api/brain-index/search with source filter + live
   index stats; nav entry + PAGE_TITLES added.
2) Scheduled auto-ingest: scheduler gains endpoint-style jobs
   (run_endpoint_via_api) so non-skill maintenance tasks can be cron'd;
   new job brain-index-ingest-job.json re-indexes every 30 min.
3) Agents auto-upsert learnings: run_skill wrap-up now calls
   record_brain_learning() so each skill run is immediately searchable
   in the unified index (best-effort, never breaks the run).

Fixed a regression where AGENT_STATS_FILE def was dropped during the
brain-learning helper insertion (would have broken all skill runs).

Verified live: brain search returns ranked results; run_skill wrap-up
upserts a searchable doc; scheduler imports + job validates.
2026-07-25 15:49:14 -07:00
Austin bc8094be77 feat(dashboard): add Agent Insights page — live AI-agent usage analytics
New /api/agent-insights endpoint aggregates real data (chat-history,
cost-history, agent-time, agent-registry, router-keywords) to show:
- which agent you chat with most (user turns)
- which agent spends the most time on tasks (derived agent-time)
- which agent is best suited for what (registry desc + router keywords + roles)
- which models you use most per agent (cost-history)

Dashboard page (agent-insights.js) with stat cards, two Chart.js bar
charts, suite cards, models-per-agent table, and full per-agent
breakdown. Verified live in browser against real data.
2026-07-25 14:34:30 -07:00
Austin 96d8281b9b Wire up dynamic agent registry, integrations, agent-time tracking, UI modernization
- server.py: dynamic agent execution engine (cli/http/mcp), live agent
  registry (/api/agents register/unregister), integrations API, agent stats
  & skill scoring, kanban task delete, plugin uninstall, agent-time tracking
  + /test page
- dashboard: modernized agent-health, plugins marketplace, smart-router,
  styles; added agent-time monitor page + terminal page
- scheduler.py rewrite; start.sh / start-agentic-os.sh improvements
- skills: added firebase-*, notion-knowledge-capture, xcode-project-setup,
  audit/test plugins; updated learnings across skills
- brain/ docs + data registry files (agent-registry, integrations, router-keywords)
- .gitignore: exclude runtime artifacts (pid, graphify-out, logs)

Verified live on :8081 - all new endpoints return 200 and register/unregister
persists to data/agent-registry.json.
2026-07-25 12:27:26 -07:00
zumayaaustin-creator d7ea76cf99 Merge pull request #15 from zumayaaustin-creator/claude/agentic-os-setup-5ubuao
Fix critical WebSocket origin bypass and other review findings
2026-07-08 18:47:31 -07:00
zumayaaustin-creator 8253f78e69 Merge pull request #14 from zumayaaustin-creator/devin/1783552205-dedup-shared-utils
* Refactor duplicated patterns into shared utilities

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* Harden user-controlled paths with containment check (CodeQL)

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* Limit shared JSON helpers to fixed-path callers to avoid path-injection alerts

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

---------

Co-authored-by: zumayaaustin <zumayaaustin@gmail.com>
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-07-08 18:10:41 -07:00
Claude d149356a22 Fix critical WebSocket origin bypass, zombie processes, and review findings
Addresses findings from Devin and Codex reviews on the merged PR #10:

- CRITICAL: /ws/terminal accepted connections from any origin - Starlette's
  CORSMiddleware does not protect WebSocket handshakes, so any webpage could
  open a socket to the dashboard's terminal and get an interactive shell on
  the user's machine. Now validates the Origin header against the same
  allowed-origins list used for CORS before accepting.
- PtySession.close() sent SIGKILL to the shell's PID but never reaped it via
  os.waitpid(), leaking a zombie process per closed terminal session.
- hermes_available() ran a real subprocess (possibly bridged through WSL) on
  every /api/status poll, which the dashboard hits every 15s. Added a 60s
  TTL cache.
- create_skill() now also creates learnings.md and the context/ directory,
  matching the standard skill template (_template/) instead of only
  writing SKILL.md.
- The '+ New Skill' button stayed visible in the Skills Hub detail view
  since only its sibling filter input was hidden; both now live under a
  shared #skillActions container that's hidden/shown together.

Verified: malicious/missing-origin WebSocket connections are rejected at
the handshake (HTTP 403) before any shell spawns; a valid dashboard origin
still connects and works; closing a session leaves no zombie/orphaned
process; the hermes availability cache avoids repeat subprocess spawns.
2026-07-09 00:07:17 +00:00
zumayaaustin 2e7bb73807 Refactor duplicated patterns into shared utilities
Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-07-08 23:10:05 +00:00
Claude d36785c7ee Make Skills Hub context files editable and add skill creation
Two real gaps: the Skills Hub had no way to create a new skill (with
a SKILL.md) at all - the only 'Install' flow was the Plugin registry,
which just records a name in a JSON file, not an actual skill folder.
And the Context Files panel was read-only, just listing filenames
with no way to view, edit, add, or delete their contents.

Adds POST /api/skills (create, with SKILL.md content), PUT
/api/skills/{name} (edit SKILL.md), and GET/PUT/DELETE
/api/skills/{name}/context/{filename} for context files - all
validated through the same regex-allowlist + resolved-path
containment pattern already used for kanban tasks. Dashboard gets a
'+ New Skill' button, an editable SKILL.md view, and per-file
edit/delete plus 'Add File' in the Context Files panel.
2026-07-07 17:22:41 +00:00
Claude 2a5f0aee74 Add missing DELETE /api/kanban/tasks/{id} endpoint
The Kanban detail modal's Delete button called api.deleteKanbanTask(),
which didn't exist on the client, and there was no backend route for
it either - clicking Delete just threw 'api.deleteKanbanTask is not
a function'. Add both the client method and the backend endpoint.
2026-07-06 15:39:35 +00:00
Claude d7a1cbd292 Replace command-runner Terminal with a real interactive PTY
The previous Terminal ran one command at a time via subprocess.run
and returned its output - it couldn't run interactive programs
(colors, live input, TUIs like gemini's chat/auth flow), which is
what a terminal actually needs to do.

Backend: new /ws/terminal WebSocket endpoint spawns a real shell
attached to a pseudo-terminal (stdlib pty on POSIX, pywinpty/ConPTY
on Windows) and streams raw I/O bidirectionally, with resize support.
Replaces the old POST /api/terminal/run and GET /api/terminal/session
endpoints entirely.

Frontend: terminal.js now loads xterm.js + the fit addon from CDN
and renders a real terminal emulator wired to the WebSocket, instead
of a scrollback div with a single input line.

Verified on this Linux sandbox via raw WebSocket tests: shell spawns
correctly, commands execute and echo real output, resize propagates
to the PTY (confirmed via ), and closing the connection
cleanly kills the shell process with no orphans (interactive bash
ignores SIGTERM by default, so cleanup uses SIGKILL). Could not
visually verify the xterm.js browser rendering in this sandbox since
its egress policy blocks the CDN (cdn.jsdelivr.net) outright - same
CDN this app already uses for chart.js, so expected to work on a
normal machine; please confirm on Windows.
2026-07-06 05:12:54 +00:00
Claude b11da78097 Wire up autonomous agent dispatch for Kanban tasks
Assigning a task to opencode, hermes, or gemini now actually runs it:
creating or PATCHing a task with one of those assignees moves it to
in_progress and hands the title+body to execute_agent() in a
background thread. On completion the agent's response is appended as
a task comment and the task is marked done (success) or blocked
(timeout/error), matching the existing block/complete state machine.

Adds POST /api/kanban/tasks/{id}/dispatch for manual dispatch/retry,
and makes the previously-stubbed POST /api/kanban/dispatch actually
scan todo/ready tasks with an agent assignee and dispatch each one.

Dashboard: the assignee field is now a select of the three agents,
the task detail modal shows an activity log of past agent runs and a
Dispatch button, and polls every 3s while a task is in_progress. Also
fixed a pre-existing bug where the detail modal read a nonexistent
kanbanData.tasks field (the board API only returns columns), so
clicking a card silently did nothing before this fix.
2026-07-05 23:16:46 +00:00
Claude fec0601722 Add a Terminal page to the dashboard
Adds a real shell terminal to the dashboard sidebar: POST
/api/terminal/run executes a command via subprocess in a
server-tracked working directory (with cd support), and GET
/api/terminal/session returns the current cwd. The frontend renders
a scrollback panel with command history (up/down arrows) styled to
match the existing chat UI.

Local-only power feature: it executes arbitrary shell commands, same
trust model as the existing agent CLIs the dashboard already shells
out to.
2026-07-05 22:15:47 +00:00
modimihir07 1b14c2866b v0.2.0: 7 new features + UI modernization
New features:
- Kanban Board: Visual task management with drag-and-drop, filter, priority, block/unblock
- Goals: Project targets with progress tracking, auto-sync to brain/active-projects.md
- Journal: Daily entries stored as brain/journal/YYYY-MM-DD.md with search
- Agent Health: Real-time monitoring of 3 agents (opencode/hermes/gemini)
- Smart Router: Keyword-based task routing with confidence scoring
- Learning Analytics: Skill evaluation scores and performance trends
- Session Replay: Browse and replay past opencode sessions

Technical changes:
- 30 new API endpoints across all 7 features
- api.patch() method added for PATCH support
- UI modernization: glass morphism cards, gradients, glow effects, skeleton loaders, empty states
- New CSS section (v0.2.0) with kanban board, goal cards, journal entries, agent health cards, smart router suggestions, chart cards, session messages
- 7 new sidebar nav items under Workflow and Monitoring sections
- All changes are additive (zero breaking changes to existing 13 pages / 28 endpoints)
- Full smoke test verified: every endpoint returns correct data
2026-06-05 15:22:40 +05:30
modimihir07 2bf866b0b1 Fix skill execution: wire run_skill to actually invoke agent, show results in modal 2026-05-18 11:22:34 +05:30
modimihir07 f7b13f3772 Security & polish: untrack settings.json, fix CORS, remove broken og:image, replace console.error with toast 2026-05-18 01:32:24 +05:30
modimihir07 2b3083308f v1.2.0: opencode JSON mode, 180s Hermes timeout, client AbortController, SEO README, badge/CSS fixes, prompt clipboard fix 2026-05-17 23:43:18 +05:30
modimihir07 828a6ab38a Production polish: logo, favicon, sidebar, UI, chat order, perf cache
- New Agentic OS logo: SVG hexagon with gradient (replaces unicode)
- Modern sidebar toggle: SVG chevron with 180° rotation animation
- Favicon: proper SVG favicon returning 200 with browser icon
- Agent status cache (15s TTL) eliminates slow subprocess on every status call
- Chat moved to top of sidebar nav (Primary section, before Dashboard)
- Reorganized sidebar: Primary > Agents > Management > System sections
- Glassmorphism card effects with gradient overlays
- Stat values with gradient text, enhanced stat icons with glow
- Button micro-interactions: scale, shadow, gradient overlay on hover
- Table polish: better row transitions, border-spacing
- Chat sidebar: active agent indicator, hover animations
- Gradient logo text matching SVG accent
- All 13 pages verified 200, zero console errors
2026-05-17 16:32:26 +05:30
modimihir07 18fdb6b478 Add AI Chat interface + sidebar toggle fix + production polish
- New Chat page with 3-agent terminal interface (opencode/hermes/gemini)
- Chat sidebar with agent selection, status indicators, quick prompts
- Message bubbles with typing indicator animation
- Full chat history persistence via /api/chat endpoint
- Agent CLI execution with timeout fallback messaging
- Sidebar toggle: minimize ◀ / maximize ▶ with dynamic icon
- Collapsed sidebar: centered icons, tighter padding, cleaner alignment
- Fixed chat agent execution for interactive CLIs (non-blocking)
- Added /api/chat and /api/chat/history API endpoints
- All 13 dashboard pages serving 200
2026-05-17 16:13:23 +05:30
modimihir07 ab1dc3d228 Fix: page script 404 due to relative path, sidebar collapsed alignment, add favicon
- Fixed app.js: changed page script path from 'pages/' to '/dashboard/pages/'
- Fixed collapsed sidebar: icon alignment, cleaner padding, centered footer
- Removed inverted media query logic for responsive sidebar
- Added favicon endpoint to suppress 404
- Renamed cost-analytics.js to cost.js to match hash routing
2026-05-17 15:56:30 +05:30
modimihir07 43c3413bca Complete dashboard revamp: modern glassmorphism UI, all 12 pages functional
- Complete CSS redesign with glassmorphism, gradients, animations
- All 12 SPA pages rewritten with working forms, modals, charts
- Fixed server.py static file serving for dashboard assets
- Enhanced utils: modal system, toast with icons, skeletons
- Dashboard: stat cards, agent status, activity feed, quick run
- Skills: grid/list views, filter, detail with performance chart
- Memory: browse/edit brain files inline
- Scheduler: CRUD jobs with cron input
- Audit: filterable log viewer
- Cost: Chart.js agent/time charts, test recording, free-tier alerts
- Plugins: registry browser with install flow
- Backups: create/restore with confirmation dialog
- Prompts: card grid with preview, copy-to-clipboard
- Standards: index + detail cards, pattern discovery
- Settings: agent toggle, API keys, free-tier limits, dark mode
- Setup Wizard: 4-step guided configuration
2026-05-17 15:48:54 +05:30
modimihir07 73efe0f7e4 Initial commit: Agentic OS v1.0.0
- AGENTS.md single source of truth with 51+10 features
- FastAPI backend with 20+ REST endpoints
- 15 skills with self-improvement (eval + learnings)
- Web SPA dashboard with 12 pages
- Agent configs for opencode, Hermes, Gemini CLI
- APScheduler, plugin registry, standards system
- 10 prompt templates, cost analytics, backup/restore
2026-05-17 15:23:44 +05:30