docs: Update AGENTS.md with bot scripts architecture and TOOL_EXEC info
This commit is contained in:
parent
d28510a632
commit
4f510d1196
1 changed files with 54 additions and 0 deletions
54
AGENTS.md
54
AGENTS.md
|
|
@ -409,6 +409,60 @@ cd .. && git add botserver && git commit -m "Update botserver: <desc>" && git pu
|
||||||
- **GIT WORKFLOW** — always push to ALL repositories
|
- **GIT WORKFLOW** — always push to ALL repositories
|
||||||
- **0 warnings, 0 errors** — loop until clean
|
- **0 warnings, 0 errors** — loop until clean
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 🔧 Bot Scripts Architecture
|
||||||
|
|
||||||
|
### File Types
|
||||||
|
| File | Purpose |
|
||||||
|
|------|---------|
|
||||||
|
| `start.bas` | Entry point, executed on session start |
|
||||||
|
| `{tool}.bas` | Tool implementation (e.g., `detecta.bas`) |
|
||||||
|
| `tables.bas` | **SPECIAL** - Defines database tables, auto-creates on compile |
|
||||||
|
| `init_folha.bas` | Initialization script for specific features |
|
||||||
|
|
||||||
|
### tables.bas — SPECIAL FILE
|
||||||
|
- **DO NOT call via CALL keyword** - it's processed automatically
|
||||||
|
- Parsed at compile time by `process_table_definitions()`
|
||||||
|
- Tables are created/updated in database via `sync_bot_tables()`
|
||||||
|
- Location: `/opt/gbo/data/{bot}.gbai/{bot}.gbdialog/tables.bas`
|
||||||
|
|
||||||
|
### Tool Button Execution (TOOL_EXEC)
|
||||||
|
- Frontend sends `message_type: 6` via WebSocket
|
||||||
|
- Backend handles in `stream_response()` when `message_type == MessageType::TOOL_EXEC`
|
||||||
|
- Tool executes directly, skips KB injection and LLM
|
||||||
|
- Result appears in chat (tool output), no "/tool" text shown
|
||||||
|
|
||||||
|
### CALL Keyword
|
||||||
|
- Can call in-memory procedures OR .bas scripts
|
||||||
|
- Syntax: `CALL "script_name"` or `CALL "procedure_name"`
|
||||||
|
- If not in memory, looks for `{name}.bas` in bot's gbdialog folder
|
||||||
|
|
||||||
|
### DETECT Keyword
|
||||||
|
- Analyzes database table for anomalies
|
||||||
|
- Requires table to exist (defined in tables.bas)
|
||||||
|
- Example: `result = DETECT "folha_salarios"`
|
||||||
|
- Calls BotModels API at `/api/anomaly/detect`
|
||||||
|
|
||||||
|
### start.bas Execution
|
||||||
|
- Executed on WebSocket connect (for web clients)
|
||||||
|
- Also on first user message (blocking, once per session)
|
||||||
|
- Loads suggestions via `ADD_SUGGESTION_TOOL`
|
||||||
|
- Marks session with Redis key to prevent re-run
|
||||||
|
|
||||||
|
### MessageType Enum (botlib/src/message_types.rs)
|
||||||
|
| ID | Name | Purpose |
|
||||||
|
|----|------|---------|
|
||||||
|
| 0 | EXTERNAL | External message |
|
||||||
|
| 1 | USER | User message |
|
||||||
|
| 2 | BOT_RESPONSE | Bot response |
|
||||||
|
| 3 | CONTINUE | Continue processing |
|
||||||
|
| 4 | SUGGESTION | Suggestion button |
|
||||||
|
| 5 | CONTEXT_CHANGE | Context change |
|
||||||
|
| 6 | TOOL_EXEC | Direct tool execution (skips KB/LLM) |
|
||||||
|
|
||||||
|
**Usage:** When frontend sends `message_type: 6`, backend executes tool directly without going through LLM.
|
||||||
|
|
||||||
### 🚨 FUNDAMENTAL: Submodule Push Rule (MANDATORY)
|
### 🚨 FUNDAMENTAL: Submodule Push Rule (MANDATORY)
|
||||||
|
|
||||||
**Every time you push the main repo, you MUST also push ALL submodules!**
|
**Every time you push the main repo, you MUST also push ALL submodules!**
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue