docs: update docs with new autonomous tasks and security
This commit is contained in:
parent
c312a30461
commit
2cbe5ecc88
13 changed files with 3440 additions and 6 deletions
|
|
@ -307,12 +307,30 @@ These conversations show how the sales pipeline template works in real-world sce
|
||||||
|
|
||||||
| Stage | Win Probability | Description |
|
| Stage | Win Probability | Description |
|
||||||
|-------|-----------------|-------------|
|
|-------|-----------------|-------------|
|
||||||
| Lead | 20% | Initial contact, not yet qualified |
|
| new | 10% | Initial contact, not qualified |
|
||||||
| Qualified | 40% | BANT criteria confirmed |
|
| qualified | 30% | BANT criteria confirmed |
|
||||||
| Proposal | 50% | Quote or proposal sent |
|
| proposal | 50% | Quote or proposal sent |
|
||||||
| Negotiation | 80% | Active deal discussions |
|
| negotiation | 70% | Active deal discussions |
|
||||||
| Closed Won | 100% | Deal successfully closed |
|
| won | 100% | Deal successfully closed |
|
||||||
| Closed Lost | 0% | Deal lost or abandoned |
|
| lost | 0% | Deal lost or abandoned |
|
||||||
|
|
||||||
|
> **Note**: The new unified CRM uses `crm_deals` table with stages: `new`, `qualified`, `proposal`, `negotiation`, `won`, `lost`. Use `department_id` to filter by business unit (e.g., Comercial SP, Inside Sales, Enterprise).
|
||||||
|
|
||||||
|
## Department Filtering
|
||||||
|
|
||||||
|
Filter deals by business unit using `department_id`:
|
||||||
|
|
||||||
|
```basic
|
||||||
|
' Filter deals by department
|
||||||
|
deals = FIND "crm_deals", "department_id = '" + departmentId + "' AND stage != 'won' AND stage != 'lost'"
|
||||||
|
|
||||||
|
' Get department stats
|
||||||
|
SELECT pd.name, COUNT(cd.id) AS total_deals, COALESCE(SUM(cd.value), 0) AS total_value
|
||||||
|
FROM people_departments pd
|
||||||
|
LEFT JOIN crm_deals cd ON cd.department_id = pd.id
|
||||||
|
WHERE pd.org_id = $1
|
||||||
|
GROUP BY pd.id, pd.name
|
||||||
|
```
|
||||||
|
|
||||||
## Template Structure
|
## Template Structure
|
||||||
|
|
||||||
|
|
@ -336,15 +354,23 @@ sales-pipeline.gbai/
|
||||||
|
|
||||||
## Create Deal Tool: create-deal.bas
|
## Create Deal Tool: create-deal.bas
|
||||||
|
|
||||||
|
> **Updated for CRM v2.5**: Uses unified `crm_deals` table. Include `department_id` to assign to business unit.
|
||||||
|
|
||||||
```basic
|
```basic
|
||||||
PARAM company AS STRING LIKE "Acme Corp" DESCRIPTION "Company or account name"
|
PARAM company AS STRING LIKE "Acme Corp" DESCRIPTION "Company or account name"
|
||||||
PARAM value AS NUMBER LIKE 50000 DESCRIPTION "Deal value in dollars"
|
PARAM value AS NUMBER LIKE 50000 DESCRIPTION "Deal value in dollars"
|
||||||
PARAM close_date AS DATE LIKE "2025-03-31" DESCRIPTION "Expected close date"
|
PARAM close_date AS DATE LIKE "2025-03-31" DESCRIPTION "Expected close date"
|
||||||
|
PARAM department_id AS STRING DESCRIPTION "Business unit ID (e.g., Comercial SP)" OPTIONAL
|
||||||
PARAM contact AS STRING DESCRIPTION "Primary contact name" OPTIONAL
|
PARAM contact AS STRING DESCRIPTION "Primary contact name" OPTIONAL
|
||||||
PARAM notes AS STRING DESCRIPTION "Deal notes" OPTIONAL
|
PARAM notes AS STRING DESCRIPTION "Deal notes" OPTIONAL
|
||||||
|
|
||||||
DESCRIPTION "Create a new deal in the sales pipeline"
|
DESCRIPTION "Create a new deal in the sales pipeline"
|
||||||
|
|
||||||
|
' Get department if not provided
|
||||||
|
IF NOT department_id THEN
|
||||||
|
department_id = GET USER MEMORY("default_department")
|
||||||
|
END IF
|
||||||
|
|
||||||
' Generate deal ID
|
' Generate deal ID
|
||||||
dealId = "DEAL-" + FORMAT(NOW(), "YYYY") + "-" + FORMAT(RANDOM(1000, 9999))
|
dealId = "DEAL-" + FORMAT(NOW(), "YYYY") + "-" + FORMAT(RANDOM(1000, 9999))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@ General Bots integrates with botmodels—a Python service for multimodal AI task
|
||||||
│ - VIDEO │ - Zeroscope
|
│ - VIDEO │ - Zeroscope
|
||||||
│ - AUDIO │ - TTS/Whisper
|
│ - AUDIO │ - TTS/Whisper
|
||||||
│ - SEE │ - BLIP2
|
│ - SEE │ - BLIP2
|
||||||
|
│ │ - Real-time Audio (S2S)
|
||||||
```
|
```
|
||||||
|
|
||||||
When a BASIC script calls a multimodal keyword, botserver forwards the request to botmodels, which runs the appropriate AI model and returns the generated content.
|
When a BASIC script calls a multimodal keyword, botserver forwards the request to botmodels, which runs the appropriate AI model and returns the generated content.
|
||||||
|
|
@ -58,6 +59,13 @@ Add these settings to your bot's `config.csv` file to enable multimodal capabili
|
||||||
| `video-generator-gpu-layers` | `15` | Layers to offload to GPU |
|
| `video-generator-gpu-layers` | `15` | Layers to offload to GPU |
|
||||||
| `video-generator-batch-size` | `1` | Batch size for generation |
|
| `video-generator-batch-size` | `1` | Batch size for generation |
|
||||||
|
|
||||||
|
### Real-time Audio (S2S)
|
||||||
|
|
||||||
|
| Key | Default | Description |
|
||||||
|
|-----|---------|-------------|
|
||||||
|
| `realtime-audio-model` | — | Path to Real-time S2S model |
|
||||||
|
| `realtime-audio-enabled` | `false` | Enable real-time audio processing |
|
||||||
|
|
||||||
## Example Configuration
|
## Example Configuration
|
||||||
|
|
||||||
```csv
|
```csv
|
||||||
|
|
@ -160,6 +168,7 @@ The botmodels service exposes these REST endpoints:
|
||||||
| `/api/vision/describe` | POST | Describe an image |
|
| `/api/vision/describe` | POST | Describe an image |
|
||||||
| `/api/vision/describe_video` | POST | Describe a video |
|
| `/api/vision/describe_video` | POST | Describe a video |
|
||||||
| `/api/vision/vqa` | POST | Visual question answering |
|
| `/api/vision/vqa` | POST | Visual question answering |
|
||||||
|
| `/api/speech/realtime` | POST | Real-time speech-to-speech interaction |
|
||||||
| `/api/health` | GET | Health check |
|
| `/api/health` | GET | Health check |
|
||||||
|
|
||||||
All endpoints except `/api/health` require the `X-API-Key` header for authentication.
|
All endpoints except `/api/health` require the `X-API-Key` header for authentication.
|
||||||
|
|
|
||||||
|
|
@ -195,6 +195,13 @@ These parameters configure external database connections for use with BASIC keyw
|
||||||
| `video-generator-gpu-layers` | GPU offload layers | `15` | Number |
|
| `video-generator-gpu-layers` | GPU offload layers | `15` | Number |
|
||||||
| `video-generator-batch-size` | Batch size | `1` | Number |
|
| `video-generator-batch-size` | Batch size | `1` | Number |
|
||||||
|
|
||||||
|
## Real-time Audio Parameters
|
||||||
|
|
||||||
|
| Parameter | Description | Default | Type |
|
||||||
|
|-----------|-------------|---------|------|
|
||||||
|
| `realtime-audio-model` | Real-time S2S audio model path | Not set | Path |
|
||||||
|
| `realtime-audio-enabled` | Enable real-time audio processing | `false` | Boolean |
|
||||||
|
|
||||||
## BotModels Service Parameters
|
## BotModels Service Parameters
|
||||||
|
|
||||||
| Parameter | Description | Default | Type |
|
| Parameter | Description | Default | Type |
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,20 @@ The AutoTask system uses an LLM-powered intent classifier to understand your req
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Vibe Mode
|
||||||
|
|
||||||
|
For a complete AI-powered development environment, use **Vibe** - the visual interface with multi-agent orchestration.
|
||||||
|
|
||||||
|
### Vibe Documentation
|
||||||
|
- [Vibe Guide](./vibe.md) - Main documentation
|
||||||
|
- [Vibe Terminal](./vibe-terminal.md) - Isolated container terminal
|
||||||
|
- [Vibe Editor](./vibe-editor.md) - Monaco editor
|
||||||
|
- [Vibe Database](./vibe-database.md) - PostgreSQL browser
|
||||||
|
- [Vibe Git](./vibe-git.md) - Git operations
|
||||||
|
- [Vibe MCP](./vibe-mcp.md) - MCP integrations
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Intent Types
|
## Intent Types
|
||||||
|
|
||||||
| Type | Example | What Gets Created |
|
| Type | Example | What Gets Created |
|
||||||
|
|
|
||||||
164
src/17-autonomous-tasks/vibe-database.md
Normal file
164
src/17-autonomous-tasks/vibe-database.md
Normal file
|
|
@ -0,0 +1,164 @@
|
||||||
|
# Vibe Database
|
||||||
|
|
||||||
|
Visual PostgreSQL schema browser and SQL editor.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Vibe Database provides a visual interface for exploring your bot's PostgreSQL database. View tables, relationships, run queries, and manage data.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. Click **Database** button in Vibe window
|
||||||
|
2. Browse tables in left panel
|
||||||
|
3. Click table to see schema
|
||||||
|
4. Run SQL queries in editor
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Schema Browser
|
||||||
|
- List all tables in database
|
||||||
|
- View column definitions
|
||||||
|
- See data types and constraints
|
||||||
|
- View indexes and foreign keys
|
||||||
|
|
||||||
|
### Table Viewer
|
||||||
|
- Browse table data
|
||||||
|
- Filter and sort
|
||||||
|
- Pagination controls
|
||||||
|
- Export to CSV
|
||||||
|
|
||||||
|
### SQL Editor
|
||||||
|
- Write and execute queries
|
||||||
|
- Syntax highlighting
|
||||||
|
- Query history
|
||||||
|
- Results visualization
|
||||||
|
|
||||||
|
### Relationship Viewer
|
||||||
|
- Visual foreign key relationships
|
||||||
|
- ER diagram view
|
||||||
|
- Click to navigate related tables
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Interface
|
||||||
|
|
||||||
|
### Left Panel - Tables List
|
||||||
|
```
|
||||||
|
📦 customers
|
||||||
|
├─ id (UUID, PK)
|
||||||
|
├─ name (VARCHAR)
|
||||||
|
├─ email (VARCHAR, UNIQUE)
|
||||||
|
├─ created_at (TIMESTAMP)
|
||||||
|
└─ updated_at (TIMESTAMP)
|
||||||
|
|
||||||
|
📦 orders
|
||||||
|
├─ id (UUID, PK)
|
||||||
|
├─ customer_id (UUID, FK → customers)
|
||||||
|
├─ total (DECIMAL)
|
||||||
|
├─ status (VARCHAR)
|
||||||
|
└─ created_at (TIMESTAMP)
|
||||||
|
```
|
||||||
|
|
||||||
|
### Main Panel - Table Data
|
||||||
|
| id | name | email | created_at |
|
||||||
|
|----|------|-------|------------|
|
||||||
|
| xxx | John | john@... | 2024-01-01 |
|
||||||
|
| xxx | Jane | jane@... | 2024-01-02 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## SQL Query Examples
|
||||||
|
|
||||||
|
### Select All
|
||||||
|
```sql
|
||||||
|
SELECT * FROM customers;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Join Tables
|
||||||
|
```sql
|
||||||
|
SELECT o.id, c.name, o.total
|
||||||
|
FROM orders o
|
||||||
|
JOIN customers c ON o.customer_id = c.id;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Insert
|
||||||
|
```sql
|
||||||
|
INSERT INTO customers (name, email)
|
||||||
|
VALUES ('New Customer', 'new@example.com');
|
||||||
|
```
|
||||||
|
|
||||||
|
### Update
|
||||||
|
```sql
|
||||||
|
UPDATE customers
|
||||||
|
SET name = 'Updated Name'
|
||||||
|
WHERE id = 'xxx';
|
||||||
|
```
|
||||||
|
|
||||||
|
### Delete
|
||||||
|
```sql
|
||||||
|
DELETE FROM customers
|
||||||
|
WHERE id = 'xxx';
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keyboard Shortcuts
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `Ctrl+Enter` | Execute query |
|
||||||
|
| `Ctrl+S` | Save query |
|
||||||
|
| `Ctrl+L` | Clear editor |
|
||||||
|
| `Ctrl+H` | Toggle history |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Connection Settings
|
||||||
|
The database connects using bot configuration:
|
||||||
|
- Host: PostgreSQL server
|
||||||
|
- Port: 5432
|
||||||
|
- Database: `{bot_id}_botserver`
|
||||||
|
- User: Configured in bot settings
|
||||||
|
|
||||||
|
### Query Limits
|
||||||
|
- Default: 100 rows
|
||||||
|
- Configurable: 10 - 10000 rows
|
||||||
|
- Export: Unlimited
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
- Read-only mode available
|
||||||
|
- SQL injection protection
|
||||||
|
- Query logging for audit
|
||||||
|
- Row-level access control
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Connection Failed
|
||||||
|
- Check PostgreSQL is running
|
||||||
|
- Verify bot has database credentials
|
||||||
|
- Check network connectivity
|
||||||
|
|
||||||
|
### Query Error
|
||||||
|
- Check SQL syntax
|
||||||
|
- Verify table/column names
|
||||||
|
- Review error message details
|
||||||
|
|
||||||
|
### No Tables Visible
|
||||||
|
- Bot may have no tables yet
|
||||||
|
- AI hasn't generated database schema
|
||||||
|
- Try creating app first
|
||||||
147
src/17-autonomous-tasks/vibe-editor.md
Normal file
147
src/17-autonomous-tasks/vibe-editor.md
Normal file
|
|
@ -0,0 +1,147 @@
|
||||||
|
# Vibe Editor
|
||||||
|
|
||||||
|
Monaco-powered code editor with full IDE features.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Vibe Editor is based on Monaco (the same editor that powers VS Code). It provides a full IDE experience with syntax highlighting, IntelliSense, multi-file editing, and more.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Syntax Highlighting
|
||||||
|
Supports 70+ languages including:
|
||||||
|
- JavaScript/TypeScript
|
||||||
|
- Python
|
||||||
|
- Rust
|
||||||
|
- Go
|
||||||
|
- HTML/CSS
|
||||||
|
- SQL
|
||||||
|
- JSON/YAML
|
||||||
|
- And many more
|
||||||
|
|
||||||
|
### IntelliSense
|
||||||
|
- Auto-completion
|
||||||
|
- Parameter hints
|
||||||
|
- Signature help
|
||||||
|
- Quick fixes
|
||||||
|
|
||||||
|
### Multi-Cursor Editing
|
||||||
|
- `Ctrl+D` - Select next occurrence
|
||||||
|
- `Alt+Click` - Add cursor
|
||||||
|
- `Ctrl+Alt+Down` - Add line below
|
||||||
|
|
||||||
|
### Search & Replace
|
||||||
|
- `Ctrl+F` - Find
|
||||||
|
- `Ctrl+H` - Replace
|
||||||
|
- `Ctrl+Shift+F` - Find in files
|
||||||
|
- Regex support enabled
|
||||||
|
|
||||||
|
### Minimap
|
||||||
|
- Code overview on right side
|
||||||
|
- Click to navigate
|
||||||
|
- Draggable viewport
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keyboard Shortcuts
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `Ctrl+S` | Save file |
|
||||||
|
| `Ctrl+P` | Quick open file |
|
||||||
|
| `Ctrl+Shift+P` | Command palette |
|
||||||
|
| `Ctrl+F` | Find |
|
||||||
|
| `Ctrl+H` | Replace |
|
||||||
|
| `Ctrl+Shift+F` | Find in files |
|
||||||
|
| `Ctrl+D` | Select next occurrence |
|
||||||
|
| `Alt+Up/Down` | Move line up/down |
|
||||||
|
| `Ctrl+/` | Toggle comment |
|
||||||
|
| `Ctrl+Shift+K` | Delete line |
|
||||||
|
| `Ctrl+Enter` | Insert line below |
|
||||||
|
| `Ctrl+Shift+Enter` | Insert line above |
|
||||||
|
| `F12` | Go to definition |
|
||||||
|
| `Ctrl+Space` | Trigger IntelliSense |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## File Operations
|
||||||
|
|
||||||
|
### Opening Files
|
||||||
|
- Click file in file tree
|
||||||
|
- `Ctrl+P` for quick open
|
||||||
|
- Drag and drop files
|
||||||
|
|
||||||
|
### Saving Files
|
||||||
|
- `Ctrl+S` to save
|
||||||
|
- Auto-save on focus loss
|
||||||
|
- Shows unsaved indicator (dot on tab)
|
||||||
|
|
||||||
|
### Creating Files
|
||||||
|
- Right-click in file tree
|
||||||
|
- New file button in toolbar
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Workspace
|
||||||
|
|
||||||
|
### File Tree
|
||||||
|
Located on the left side:
|
||||||
|
- Expand/collapse folders
|
||||||
|
- File icons by type
|
||||||
|
- Right-click context menu
|
||||||
|
|
||||||
|
### Supported File Types
|
||||||
|
| Icon | Type |
|
||||||
|
|------|------|
|
||||||
|
| 📄 | Generic file |
|
||||||
|
| 📜 | Script (js, ts, py) |
|
||||||
|
| 🎨 | Style (css, scss) |
|
||||||
|
| 📦 | Config (json, yaml, toml) |
|
||||||
|
| 🔷 | Component (vue, svelte) |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Theme
|
||||||
|
- Dark (default)
|
||||||
|
- Light
|
||||||
|
- High contrast
|
||||||
|
|
||||||
|
### Font
|
||||||
|
- Fira Code (with ligatures)
|
||||||
|
- Customizable size
|
||||||
|
- Line height control
|
||||||
|
|
||||||
|
### Editor Settings
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"editor.fontSize": 14,
|
||||||
|
"editor.fontFamily": "Fira Code",
|
||||||
|
"editor.tabSize": 4,
|
||||||
|
"editor.minimap.enabled": true,
|
||||||
|
"editor.formatOnSave": true
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Integration
|
||||||
|
|
||||||
|
### With Vibe Pipeline
|
||||||
|
The editor integrates with the Vibe AI pipeline:
|
||||||
|
1. AI generates code in editor
|
||||||
|
2. Review agent checks code
|
||||||
|
3. You can edit manually
|
||||||
|
4. Changes tracked in Git
|
||||||
|
|
||||||
|
### With Terminal
|
||||||
|
- `Ctrl+`` - Toggle terminal panel
|
||||||
|
- Run code directly from editor
|
||||||
|
- See output in terminal
|
||||||
183
src/17-autonomous-tasks/vibe-git.md
Normal file
183
src/17-autonomous-tasks/vibe-git.md
Normal file
|
|
@ -0,0 +1,183 @@
|
||||||
|
# Vibe Git
|
||||||
|
|
||||||
|
Git operations integrated with Forgejo ALM.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
Vibe Git provides visual Git operations for version control of your generated applications. Connect to Forgejo for remote operations.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Local Operations
|
||||||
|
- Initialize repository
|
||||||
|
- Stage/unstage files
|
||||||
|
- Commit changes
|
||||||
|
- View diff
|
||||||
|
- Branch management
|
||||||
|
|
||||||
|
### Remote Operations
|
||||||
|
- Push to Forgejo
|
||||||
|
- Pull from remote
|
||||||
|
- Fetch updates
|
||||||
|
- Create pull requests
|
||||||
|
|
||||||
|
### History
|
||||||
|
- Commit log viewer
|
||||||
|
- Author and date display
|
||||||
|
- Message search
|
||||||
|
- File change history
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Interface
|
||||||
|
|
||||||
|
### Changes Panel
|
||||||
|
```
|
||||||
|
Changes:
|
||||||
|
M index.html
|
||||||
|
A styles.css
|
||||||
|
D old-file.js
|
||||||
|
|
||||||
|
Staged (2):
|
||||||
|
+ styles.css
|
||||||
|
M index.html
|
||||||
|
```
|
||||||
|
|
||||||
|
### Commit History
|
||||||
|
```
|
||||||
|
abc1234 (main) Add user authentication - John, 2h ago
|
||||||
|
def5678 Fix login validation - Jane, 5h ago
|
||||||
|
ghi9012 Initial commit - John, 1d ago
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
### 1. Initialize Repository
|
||||||
|
```bash
|
||||||
|
git init
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Add Files
|
||||||
|
```bash
|
||||||
|
git add .
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Commit
|
||||||
|
```bash
|
||||||
|
git commit -m "Initial commit"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Connect to Remote
|
||||||
|
```bash
|
||||||
|
git remote add origin https://forgejo.example/user/repo.git
|
||||||
|
git push -u origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Git Commands
|
||||||
|
|
||||||
|
### Status
|
||||||
|
```bash
|
||||||
|
git status
|
||||||
|
```
|
||||||
|
|
||||||
|
### Add Files
|
||||||
|
```bash
|
||||||
|
# Add specific file
|
||||||
|
git add file.txt
|
||||||
|
|
||||||
|
# Add all changes
|
||||||
|
git add -A
|
||||||
|
```
|
||||||
|
|
||||||
|
### Commit
|
||||||
|
```bash
|
||||||
|
git commit -m "Your message"
|
||||||
|
```
|
||||||
|
|
||||||
|
### Push
|
||||||
|
```bash
|
||||||
|
git push origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Pull
|
||||||
|
```bash
|
||||||
|
git pull origin main
|
||||||
|
```
|
||||||
|
|
||||||
|
### Branch
|
||||||
|
```bash
|
||||||
|
# List branches
|
||||||
|
git branch
|
||||||
|
|
||||||
|
# Create branch
|
||||||
|
git branch feature-name
|
||||||
|
|
||||||
|
# Switch branch
|
||||||
|
git checkout feature-name
|
||||||
|
|
||||||
|
# Create and switch
|
||||||
|
git checkout -b feature-name
|
||||||
|
```
|
||||||
|
|
||||||
|
### Merge
|
||||||
|
```bash
|
||||||
|
git merge feature-name
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Forgejo Integration
|
||||||
|
|
||||||
|
### Configure Remote
|
||||||
|
```
|
||||||
|
Remote URL: https://forgejo.example/owner/repo.git
|
||||||
|
Username: Your Forgejo username
|
||||||
|
Token: Your API token
|
||||||
|
```
|
||||||
|
|
||||||
|
### Create Pull Request
|
||||||
|
1. Push branch to Forgejo
|
||||||
|
2. Click "Create PR" button
|
||||||
|
3. Fill title and description
|
||||||
|
4. Submit
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keyboard Shortcuts
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `Ctrl+S` | Stage current file |
|
||||||
|
| `Ctrl+Shift+S` | Stage all |
|
||||||
|
| `Ctrl+C` | Commit |
|
||||||
|
| `Ctrl+P` | Push |
|
||||||
|
| `Ctrl+U` | Pull |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Push Failed
|
||||||
|
- Check remote URL is correct
|
||||||
|
- Verify Forgejo credentials
|
||||||
|
- Check network connectivity
|
||||||
|
|
||||||
|
### Merge Conflicts
|
||||||
|
- View conflicting files
|
||||||
|
- Edit to resolve
|
||||||
|
- Stage and commit
|
||||||
|
|
||||||
|
### Empty History
|
||||||
|
- Repository may be new
|
||||||
|
- Check correct directory
|
||||||
|
- Verify .git exists
|
||||||
181
src/17-autonomous-tasks/vibe-mcp.md
Normal file
181
src/17-autonomous-tasks/vibe-mcp.md
Normal file
|
|
@ -0,0 +1,181 @@
|
||||||
|
# Vibe MCP
|
||||||
|
|
||||||
|
Model Context Protocol integrations for extended AI capabilities.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
MCP (Model Context Protocol) allows Vibe to connect to external tools and services. Extend AI capabilities with databases, APIs, and custom tools.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## What is MCP?
|
||||||
|
|
||||||
|
MCP is a protocol that lets AI models interact with external systems:
|
||||||
|
- **Filesystem** - Read/write local files
|
||||||
|
- **Database** - Query databases directly
|
||||||
|
- **HTTP** - Make API requests
|
||||||
|
- **Custom** - Your own tools
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Supported Integrations
|
||||||
|
|
||||||
|
### Filesystem
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "filesystem",
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### PostgreSQL
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "postgres",
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgres://user:pass@localhost/db"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Browser Automation
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "browser",
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "npx",
|
||||||
|
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Add MCP Server
|
||||||
|
|
||||||
|
1. Go to **Sources → MCP**
|
||||||
|
2. Click **Add Server**
|
||||||
|
3. Select server type or enter custom
|
||||||
|
4. Configure connection
|
||||||
|
5. Save and connect
|
||||||
|
|
||||||
|
### Server Types
|
||||||
|
|
||||||
|
| Type | Description |
|
||||||
|
|------|-------------|
|
||||||
|
| `stdio` | Local command-line tool |
|
||||||
|
| `sse` | Server-Sent Events endpoint |
|
||||||
|
| `websocket` | WebSocket connection |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Using MCP Tools
|
||||||
|
|
||||||
|
### In Vibe Chat
|
||||||
|
```
|
||||||
|
User: Show me all orders from the database
|
||||||
|
|
||||||
|
AI: (uses postgres MCP to query)
|
||||||
|
Orders:
|
||||||
|
| id | customer | total |
|
||||||
|
|----|----------|-------|
|
||||||
|
| 1 | John | 99.00 |
|
||||||
|
```
|
||||||
|
|
||||||
|
### Available Actions
|
||||||
|
|
||||||
|
- **Read** - Query data
|
||||||
|
- **Write** - Insert/Update/Delete
|
||||||
|
- **Search** - Full-text search
|
||||||
|
- **Analyze** - Run computations
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## MCP Panel
|
||||||
|
|
||||||
|
Access MCP panel in Vibe:
|
||||||
|
1. Click **MCP** button in toolbar
|
||||||
|
2. View connected servers
|
||||||
|
3. Test tools
|
||||||
|
4. View logs
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Creating Custom MCP Server
|
||||||
|
|
||||||
|
### 1. Create Server Script
|
||||||
|
```javascript
|
||||||
|
// my-server.js
|
||||||
|
const { Server } = require('@modelcontextprotocol/sdk/server');
|
||||||
|
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio');
|
||||||
|
|
||||||
|
const server = new Server({
|
||||||
|
name: 'my-custom-server',
|
||||||
|
version: '1.0.0'
|
||||||
|
}, {
|
||||||
|
capabilities: {
|
||||||
|
tools: {}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
server.setRequestHandler('tools/list', async () => {
|
||||||
|
return {
|
||||||
|
tools: [{
|
||||||
|
name: 'my_tool',
|
||||||
|
description: 'Does something useful',
|
||||||
|
inputSchema: {
|
||||||
|
type: 'object',
|
||||||
|
properties: {
|
||||||
|
param: { type: 'string' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
server.setRequestHandler('tools/call', async (request) => {
|
||||||
|
const { name, arguments: args } = request.params;
|
||||||
|
if (name === 'my_tool') {
|
||||||
|
return { content: [{ type: 'text', text: 'Result' }] };
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const transport = new StdioServerTransport();
|
||||||
|
await server.connect(transport);
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Register in Vibe
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "my-server",
|
||||||
|
"type": "stdio",
|
||||||
|
"command": "node",
|
||||||
|
"args": ["/path/to/my-server.js"]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Connection Failed
|
||||||
|
- Check server is installed
|
||||||
|
- Verify command/path
|
||||||
|
- Check logs for errors
|
||||||
|
|
||||||
|
### Tool Not Working
|
||||||
|
- Verify input format
|
||||||
|
- Check server logs
|
||||||
|
- Test with simpler parameters
|
||||||
|
|
||||||
|
### Server Not Listed
|
||||||
|
- Restart Vibe
|
||||||
|
- Check configuration
|
||||||
|
- Review server status
|
||||||
113
src/17-autonomous-tasks/vibe-terminal.md
Normal file
113
src/17-autonomous-tasks/vibe-terminal.md
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
# Vibe Terminal
|
||||||
|
|
||||||
|
Full-featured terminal with isolated LXC containers for each session.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
The Vibe terminal provides an isolated Ubuntu 22.04 container for each session. Your commands run in a secure, sandboxed environment that is automatically created on connect and destroyed on disconnect.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. Click **Terminal** icon on desktop or in Vibe window
|
||||||
|
2. Terminal connects to a new LXC container
|
||||||
|
3. Type commands as normal bash shell
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ pwd
|
||||||
|
/root
|
||||||
|
$ whoami
|
||||||
|
root
|
||||||
|
$ uname -a
|
||||||
|
Linux term-abc123 5.15.0 #1 SMP x86_64 GNU/Linux
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Isolated Containers
|
||||||
|
- Each terminal session gets its own Ubuntu 22.04 container
|
||||||
|
- Containers are ephemeral - destroyed on disconnect
|
||||||
|
- Full root access within container
|
||||||
|
|
||||||
|
### 256-Color Support
|
||||||
|
- Full xterm-256color support
|
||||||
|
- Works with vim, tmux, htop, etc.
|
||||||
|
|
||||||
|
### WebSocket Protocol
|
||||||
|
- Connects via WebSocket for real-time I/O
|
||||||
|
- Automatic reconnection on disconnect
|
||||||
|
- Session persistence during network issues
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## API Endpoints
|
||||||
|
|
||||||
|
| Method | Endpoint | Description |
|
||||||
|
|--------|----------|-------------|
|
||||||
|
| `WS` | `/api/terminal/ws?session_id=xxx` | Terminal WebSocket |
|
||||||
|
| `GET` | `/api/terminal/list` | List active terminals |
|
||||||
|
| `POST` | `/api/terminal/create` | Create new terminal |
|
||||||
|
| `POST` | `/api/terminal/kill` | Kill terminal session |
|
||||||
|
|
||||||
|
### WebSocket Commands
|
||||||
|
|
||||||
|
Send text to execute commands:
|
||||||
|
```
|
||||||
|
ls -la
|
||||||
|
```
|
||||||
|
|
||||||
|
Special commands:
|
||||||
|
- `resize COLS ROWS` - Resize terminal
|
||||||
|
- `exit` - Close terminal session
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
### Container Settings
|
||||||
|
|
||||||
|
The terminal uses these LXC commands:
|
||||||
|
- `lxc launch ubuntu:22.04 {name}` - Create container
|
||||||
|
- `lxc exec {name} -- bash` - Execute shell
|
||||||
|
- `lxc stop {name} -f` - Stop container
|
||||||
|
- `lxc delete {name} -f` - Delete container
|
||||||
|
|
||||||
|
### Environment Variables
|
||||||
|
|
||||||
|
| Variable | Default | Description |
|
||||||
|
|----------|---------|-------------|
|
||||||
|
| `TERM` | `xterm-256color` | Terminal type |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Troubleshooting
|
||||||
|
|
||||||
|
### Connection Failed
|
||||||
|
- Check that LXC is installed and running
|
||||||
|
- Verify network connectivity
|
||||||
|
- Check botserver logs for errors
|
||||||
|
|
||||||
|
### Container Won't Start
|
||||||
|
- Ensure LXC daemon is running: `systemctl status lxc`
|
||||||
|
- Check LXC configuration: `lxc list`
|
||||||
|
- Review container logs: `lxc info {name}`
|
||||||
|
|
||||||
|
### Commands Not Working
|
||||||
|
- Container may have been destroyed - reconnect
|
||||||
|
- Check WebSocket connection status
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Security
|
||||||
|
|
||||||
|
- Container names are sanitized (alphanumeric + dash only)
|
||||||
|
- Containers are isolated from host network by default
|
||||||
|
- Sessions are cleaned up on disconnect
|
||||||
|
- No persistent storage between sessions
|
||||||
148
src/17-autonomous-tasks/vibe.md
Normal file
148
src/17-autonomous-tasks/vibe.md
Normal file
|
|
@ -0,0 +1,148 @@
|
||||||
|
# Vibe - AI-Powered Development Environment
|
||||||
|
|
||||||
|
Vibe is the autonomous coding mode that transforms your development workflow. Describe what you want to build, and AI agents create it automatically.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Quick Start
|
||||||
|
|
||||||
|
1. Click **Vibe** icon on desktop
|
||||||
|
2. Describe your project in the chat
|
||||||
|
3. Watch agents build, review, and deploy
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Example: Create an e-commerce app
|
||||||
|
"Build an e-commerce app for handmade crafts with shopping cart"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Pipeline Stages
|
||||||
|
|
||||||
|
| Stage | Agent | Description |
|
||||||
|
|-------|-------|-------------|
|
||||||
|
| **PLAN** | Architect | Analyzes requirements, creates spec |
|
||||||
|
| **BUILD** | Developer | Generates code, creates database |
|
||||||
|
| **REVIEW** | Reviewer | Security scan, quality checks |
|
||||||
|
| **DEPLOY** | DevOps | Pushes to Forgejo, deploys |
|
||||||
|
| **MONITOR** | QA | Runs tests, validates |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Features
|
||||||
|
|
||||||
|
### Monaco Editor
|
||||||
|
- Full IDE editing with syntax highlighting
|
||||||
|
- Multi-file workspace support
|
||||||
|
- File tree navigation
|
||||||
|
|
||||||
|
### Database UI
|
||||||
|
- Visual PostgreSQL schema browser
|
||||||
|
- SQL query editor
|
||||||
|
- Table relationship viewer
|
||||||
|
|
||||||
|
### Git Operations
|
||||||
|
- Branch management
|
||||||
|
- Commit history
|
||||||
|
- Pull/push to Forgejo
|
||||||
|
|
||||||
|
### Terminal
|
||||||
|
- Isolated LXC container per session
|
||||||
|
- Full shell access
|
||||||
|
- Persistent workspace
|
||||||
|
|
||||||
|
### Browser Automation
|
||||||
|
- Chromiumoxide integration
|
||||||
|
- Visual test runner
|
||||||
|
- Screenshot capture
|
||||||
|
|
||||||
|
### MCP Integration
|
||||||
|
- Connect external tools
|
||||||
|
- AI model integration
|
||||||
|
- Custom tool definitions
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## BYOK (Bring Your Own Key)
|
||||||
|
|
||||||
|
Configure your own LLM API keys in **Sources → API Keys**:
|
||||||
|
|
||||||
|
- OpenAI
|
||||||
|
- Anthropic (Claude)
|
||||||
|
- Google Gemini
|
||||||
|
- Azure OpenAI
|
||||||
|
- OpenAI Compatible
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Use Cases
|
||||||
|
|
||||||
|
### 1. Rapid Prototyping
|
||||||
|
```bash
|
||||||
|
"Create a CRM with contacts, leads, and deal pipeline"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. Full-Stack Apps
|
||||||
|
```bash
|
||||||
|
"Build an e-commerce store with cart, checkout, and Stripe payments"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 3. Internal Tools
|
||||||
|
```bash
|
||||||
|
"Make an employee onboarding checklist app with approvals"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 4. Data Dashboards
|
||||||
|
```bash
|
||||||
|
"Create a sales analytics dashboard with charts and exports"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Architecture
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────┐
|
||||||
|
│ Vibe UI │
|
||||||
|
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
|
||||||
|
│ │ PLAN │→ │ BUILD │→ │ REVIEW │→ │ DEPLOY │ │
|
||||||
|
│ └─────────┘ └─────────┘ └─────────┘ └─────────┘ │
|
||||||
|
└─────────────────────────────────────────────────────────┘
|
||||||
|
↓
|
||||||
|
┌─────────────────────────────────────────────────────────┐
|
||||||
|
│ Orchestrator (5 Agents) │
|
||||||
|
│ Architect → Developer → Reviewer → QA → DevOps │
|
||||||
|
└─────────────────────────────────────────────────────────┘
|
||||||
|
↓
|
||||||
|
┌─────────────────────────────────────────────────────────┐
|
||||||
|
│ BotServer │
|
||||||
|
│ - AppGenerator (code gen) │
|
||||||
|
│ - Database Manager │
|
||||||
|
│ - File System │
|
||||||
|
└─────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Keyboard Shortcuts
|
||||||
|
|
||||||
|
| Shortcut | Action |
|
||||||
|
|----------|--------|
|
||||||
|
| `Ctrl+S` | Save file |
|
||||||
|
| `Ctrl+P` | Quick open |
|
||||||
|
| `Ctrl+Shift+P` | Command palette |
|
||||||
|
| `Ctrl+`` | Toggle terminal |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Related Documentation
|
||||||
|
|
||||||
|
- [Vibe Terminal](./vibe-terminal.md) - Isolated container terminal
|
||||||
|
- [Vibe Editor](./vibe-editor.md) - Monaco editor guide
|
||||||
|
- [Vibe Database](./vibe-database.md) - Database UI
|
||||||
|
- [Vibe Git](./vibe-git.md) - Git operations
|
||||||
|
- [Vibe MCP](./vibe-mcp.md) - MCP integrations
|
||||||
|
- [Designer](./designer.md) - Visual app editor
|
||||||
|
- [App Generation](./app-generation.md) - Code generation
|
||||||
65
src/23-security/endpoint-checklist.md
Normal file
65
src/23-security/endpoint-checklist.md
Normal file
|
|
@ -0,0 +1,65 @@
|
||||||
|
# Endpoint Security Checklist
|
||||||
|
|
||||||
|
When adding new endpoints to the `.gbai` and BotServer APIs, ensure you adhere to this standard security checklist. All state-changing endpoints (those using `POST`, `PUT`, `PATCH`, or `DELETE` methods) must be protected against common Web vulnerabilities, including CSRF.
|
||||||
|
|
||||||
|
## 1. CSRF Protection for State-Changing Endpoints
|
||||||
|
|
||||||
|
Cross-Site Request Forgery (CSRF) protection must be applied to any endpoint that alters system state. Evaluate if the endpoint falls under one of the following exemptions:
|
||||||
|
|
||||||
|
* **Exemptions:**
|
||||||
|
* API endpoints exclusively utilizing **Bearer Token** authentication (stateless requests that do not rely on cookies).
|
||||||
|
* Webhooks from external systems that provide their own authentication mechanisms (e.g., HMAC signatures like WhatsApp/Meta).
|
||||||
|
* Publicly fully accessible endpoints that do not affect any user data or system state.
|
||||||
|
* **Requirements:**
|
||||||
|
* All web-facing or cookie-authenticated endpoints must enforce CSRF checks.
|
||||||
|
* Tokens must be bound to the user session.
|
||||||
|
* Utilize double-submit cookie pattern or header-based token verification via the `CsrfManager`.
|
||||||
|
|
||||||
|
## 2. Authentication & Authorization (RBAC) Requirements
|
||||||
|
|
||||||
|
Do not expose new endpoints without explicitly defining their necessary permissions.
|
||||||
|
|
||||||
|
* Ensure the endpoint is behind the `require_authentication_middleware` or similar authentication flow unless it is strictly intended to be public (e.g., `/api/auth/login`).
|
||||||
|
* Assign appropriate RBAC (Role-Based Access Control) permissions and ensure `require_role_middleware` is validated.
|
||||||
|
* Validate resource ownership. If a user tries to edit or delete an entity (e.g., a Bot, Document, or File), the backend must confirm they own the entity or possess tenant/admin privileges.
|
||||||
|
|
||||||
|
## 3. Strict Security Headers
|
||||||
|
|
||||||
|
All HTTP responses returning HTML content must include standard security headers.
|
||||||
|
|
||||||
|
* Ensure the router uses `security_headers_middleware`.
|
||||||
|
* Mandatory Headers:
|
||||||
|
* `Content-Security-Policy`: Must clearly restrict `script-src`, `connect-src`, and `frame-ancestors`.
|
||||||
|
* `X-Frame-Options: DENY` (or `SAMEORIGIN` if absolutely necessary for the suite).
|
||||||
|
* `X-Content-Type-Options: nosniff`.
|
||||||
|
* `Strict-Transport-Security` (HSTS).
|
||||||
|
* `Referrer-Policy: strict-origin-when-cross-origin`.
|
||||||
|
|
||||||
|
## 4. Input Validation & Sanitization
|
||||||
|
|
||||||
|
Do not rely exclusively on client-side validation.
|
||||||
|
|
||||||
|
* Validate the schema, length, and format of all incoming request payloads (`JSON`, `Query`, `Form`).
|
||||||
|
* Sanitize inputs that might be used inside SQL queries, though using ORMs (like Diesel) or parameterized queries safely mitigates straightforward SQL injection. Avoid dynamic SQL string formatting.
|
||||||
|
* Sanitize any output bound for HTML parsing to prevent Stored or Reflected XSS.
|
||||||
|
|
||||||
|
## 5. Rate Limiting
|
||||||
|
|
||||||
|
Endpoints must prevent brute force and DDoS abuse.
|
||||||
|
|
||||||
|
* Apply or ensure that globally the `rate_limit_middleware` covers the new route.
|
||||||
|
* Authentication endpoints (like login forms) should have significantly stricter rate limits.
|
||||||
|
* Consider adding secondary quotas per underlying resource if dealing with expensive generation tasks (like LLM interactions).
|
||||||
|
|
||||||
|
## 6. Secure Error Handling
|
||||||
|
|
||||||
|
Never leak internal traces or paths.
|
||||||
|
|
||||||
|
* Do not `unwrap()`, `expect()`, or `panic!()`. Use Rust's `?` operator.
|
||||||
|
* Use `ErrorSanitizer` logic, or return generalized application errors like `(StatusCode::INTERNAL_SERVER_ERROR, "An internal error occurred")` instead of specific database schema details.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Process for Review
|
||||||
|
|
||||||
|
When submitting a PR incorporating new endpoints, mention that you have completed this checklist in your PR description.
|
||||||
|
|
@ -324,6 +324,7 @@
|
||||||
- [Hybrid RAG Search](./11-features/hybrid-search.md)
|
- [Hybrid RAG Search](./11-features/hybrid-search.md)
|
||||||
- [Transfer to Human](./11-features/transfer-to-human.md)
|
- [Transfer to Human](./11-features/transfer-to-human.md)
|
||||||
- [LLM-Assisted Attendant](./11-features/attendant-llm-assist.md)
|
- [LLM-Assisted Attendant](./11-features/attendant-llm-assist.md)
|
||||||
|
- [Attendance Suite](./attendance.md)
|
||||||
|
|
||||||
# Part XI - Security
|
# Part XI - Security
|
||||||
|
|
||||||
|
|
@ -352,6 +353,7 @@
|
||||||
- [Protection Tools](./23-security/protection-tools.md)
|
- [Protection Tools](./23-security/protection-tools.md)
|
||||||
- [SOC 2 Compliance](./23-security/soc2-compliance.md)
|
- [SOC 2 Compliance](./23-security/soc2-compliance.md)
|
||||||
- [Security Matrix Reference](./23-security/security-matrix.md)
|
- [Security Matrix Reference](./23-security/security-matrix.md)
|
||||||
|
- [Endpoint Security Checklist](./23-security/endpoint-checklist.md)
|
||||||
|
|
||||||
# Part XII - Device & Offline Deployment
|
# Part XII - Device & Offline Deployment
|
||||||
|
|
||||||
|
|
|
||||||
2375
src/attendance.md
Normal file
2375
src/attendance.md
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue