Files
pentagi/frontend
Sergey KozyrenkoandCursor 012cb741ad refactor(file-manager): chevron drill-in, responsive bulk bar and tri-state toggle fix
- File manager core:
  - Chevron click on folder rows now drills in via `onOpenDirectory`
    (when set), matching the existing double-click / Enter semantics.
    Consumers that don't wire the prop keep the legacy expand/collapse
    behaviour, so flow-files / resources trees stay unchanged.
  - Bulk actions bar wraps and collapses to icon-only buttons (Cancel
    included) on small viewports so the bar stays usable on mobile.
  - Fix tri-state subtree toggle requiring two clicks when the
    directory's own path was never in the selection (e.g. user ticked
    children one-by-one). \`toggleSubtreeOnSet\` now accepts an optional
    \`rootPath\` and ignores it for the "all selected?" check, mirroring
    what \`computeDirSelectionState\` shows on the visible checkbox.
    Covered by new regression tests in \`file-manager-utils.test.ts\`.
  - Built-in icons swapped: copy-path uses \`ClipboardCopy\` instead of
    \`Copy\`; bulk \"Save as resources\" uses \`FolderOutput\` instead of
    \`BookmarkPlus\`.

- Pull dialog: flatten the container listing (\`name\` as \`path\`,
  absolute path in \`id\`) so the chevron / double-click drill into
  real subfolders instead of toggling a synthetic \`work/\` wrapper that
  has no meaningful navigation target. Selection is mapped back to
  absolute paths via a name → absolute lookup before pulling.

- Resources page: drop the focus-derived \`currentDir\` plumbing —
  toolbar mkdir / upload always target the library root, row context
  menu loses \"Upload files here\" and renames \"New folder here\" to
  \"New folder\". Page wraps in \`h-[calc(100dvh-3rem)]\` so the bulk
  bar stays inside the viewport. Tooltips simplified accordingly.

- Flow files toolbar: replace the standalone Info icon with rich
  per-button tooltips that explain where each gesture lands
  (/work/uploads, /work/resources, separate Container snapshot area);
  upload button uses the standard \`Upload\` glyph.

- Attach resources dialog: switch the ad-hoc footer to a proper
  \`DialogFooter\` with responsive layout, tighten the dialog title.

- \`Dialog\` / \`Sheet\` footers always apply the inter-button gap,
  not only at the \`sm+\` breakpoint.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-08 17:55:37 +07:00
..
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-04-21 01:59:08 +07:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00
2026-03-26 06:16:07 +03:00

PentAGI Frontend

A chat application built with React, TypeScript, and GraphQL that enables intelligent conversations with AI agents.

Features

  • 💬 Real-time chat interface with AI agents
  • 🤖 Multiple AI agent support and management
  • 📊 Real-time terminal output monitoring
  • 🎯 Task and subtask tracking system
  • 🔍 Integrated search capabilities
  • 📚 Vector store for knowledge base management
  • 📸 Screenshot capture and management
  • 🌓 Dark/Light theme support
  • 📱 Responsive design (mobile, tablet, desktop)
  • 🔐 Authentication system with multiple providers
  • 🔄 Real-time updates via GraphQL subscriptions
  • ⚡ High-performance React components

Tech Stack

  • Framework: React 18 with TypeScript
  • Build Tool: Vite
  • Styling: Tailwind CSS
  • UI Components:
    • shadcn/ui
    • Radix UI primitives
    • Lucide icons
  • State Management:
    • React Context
    • Custom Hooks
  • API Integration:
    • GraphQL
    • Apollo Client
    • WebSocket subscriptions
  • Type Safety: TypeScript
  • Authentication: Multiple provider support
  • Code Quality:
    • ESLint
    • Prettier
    • TypeScript strict mode

Project Structure

src/ ├── components/ # Shared UI components │ ├── ui/ # Base UI components │ └── icons/ # SVG icons and logo ├── features/ # Feature-based modules │ ├── chat/ # Chat related components │ ├── authentication/ # Auth related components ├── hooks/ # Custom React hooks ├── lib/ # Utilities and configurations ├── graphql/ # GraphQL operations and types ├── models/ # TypeScript interfaces └── pages/ # Application routes

Key Components

Chat Interface

  • Split view with messages and tools panels
  • Resizable panels for desktop
  • Mobile-optimized view with tabs
  • Real-time message updates

Task System

  • Real-time task tracking
  • Subtask management
  • Progress monitoring
  • Status updates

Terminal

  • Command output display
  • Real-time updates
  • Scrollable history
  • Syntax highlighting

Vector Store

  • Knowledge base integration
  • Search capabilities
  • Data management

Agent System

  • Multi-agent support
  • Agent status monitoring
  • Agent communication logs

Development

Prerequisites

  • Node.js 18+
  • pnpm 10+

Installation

  1. Clone the repository
  2. Install dependencies: pnpm install
  3. Start the development server: pnpm run dev

Building for Production

pnpm run build

Environment Variables

Create a .env file in the root directory:

VITE_API_URL=your_api_url

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request