botserver/prompts/dev/docs/docs-summary.md

167 lines
5.9 KiB
Markdown
Raw Normal View History

# Prompt for Generating GeneralBots mdBook Documentation
**Goal**
Generate a complete **mdBook** that documents the GeneralBots application for a user with basic knowledge of largelanguage models (LLM).
**Rules**
- Use **only real keywords** and features that exist in the source code (no invented commands).
- Include Rust code **exclusively** in the **gbapp** chapter.
- Keep the tone simple, beginnerfriendly, and instructional.
- Base all information on the actual code base:
- Keywords in `src/basic/keywords/`
- Database models in `src/shared/models.rs`
- Example scripts in `templates/`
**Required Markdown Structure (headings)**
1. **Run and Talk** How to start the server and interact using `TALK` / `HEAR`.
2. **About Packages** Overview of the four package types (`.gbdialog`, `.gbkb`, `.gbtheme`, `.gbot`).
3. **gbkb Reference** Explain `ADD_KB`, `SET_KB`, `ADD_WEBSITE`.
4. **gbtheme Reference** Describe UI theming via CSS/HTML.
5. **gbdialog Reference** List the three example scripts (`start.bas`, `auth.bas`, `update-summary.bas`) and the core keywords (`TALK`, `HEAR`, `LLM`, etc.).
6. **gbapp Reference** Show a minimal Rust snippet that registers a keyword (e.g., `ADD_TOOL`).
7. **gbot Reference** Explain the `config.csv` format and editable parameters.
8. **Tooling** Table of all builtin keywords with oneline descriptions.
9. **FeatureMatrix** Table mapping features to the chapters/keywords that implement them.
10. **Contributing** Steps for contributors (fork, branch, tests, formatting).
11. **AppendixI Database Model** Summarise the main tables from `src/shared/models.rs`.
12. **Glossary** Definitions of extensions and key concepts.
**Output Requirements**
- Produce **only** the markdown content (no surrounding explanations).
- Use fenced code blocks with appropriate language tags (`bas` for BASIC scripts, `rust` for Rust snippets).
- Include a **Table of Contents** with markdown links to each chapter.
- Ensure the document can be built directly with `mdbook build docs/src`.
**Example Skeleton (to be expanded by the generator)**
```markdown
# GeneralBots User Documentation (mdBook)
## Table of Contents
- [Run and Talk](#run-and-talk)
- [About Packages](#about-packages)
- [gbkb Reference](#gbkb-reference)
- [gbtheme Reference](#gbtheme-reference)
- [gbdialog Reference](#gbdialog-reference)
- [gbapp Reference](#gbapp-reference)
- [gbot Reference](#gbot-reference)
- [Tooling](#tooling)
- [FeatureMatrix](#feature-matrix)
- [Contributing](#contributing)
- [AppendixI Database Model](#appendixi---database-model)
- [Glossary](#glossary)
## Run and Talk
```bas
TALK "Welcome! How can I help you today?"
HEAR user_input
```
*Start the server:* `cargo run --release`
## About Packages
| Component | Extension | Role |
|-----------|-----------|------|
| Dialog scripts | `.gbdialog` | BASICstyle conversational logic |
| Knowledge bases | `.gbkb` | VectorDB collections |
| UI themes | `.gbtheme` | CSS/HTML assets |
| Bot config | `.gbot` | CSV mapping to `UserSession` |
## gbkb Reference
...
## gbapp Reference
```rust
pub fn add_tool_keyword(state: Arc<AppState>, user: UserSession, engine: &mut Engine) {
// registration logic …
}
```
When you are ready, output the full markdown document that satisfies the specifications above.
*Do not include any commentary outside the markdown itself.*
# FORMAT Keyword
The **FORMAT** keyword formats numbers, dates, and text for display. Use it when you need a quick, readable representation without writing custom code.
## Syntax
```basic
RESULT = FORMAT(VALUE, PATTERN)
```
## BASIC EXAMPLE
```basic
NUMBER = 1234.56
TEXT = "John"
DATE = "2024-03-15 14:30:00"
TALK FORMAT(NUMBER, "n") ' 1234.56
TALK FORMAT(TEXT, "Hello @!") ' Hello John!
TALK FORMAT(DATE, "dd/MM/yyyy") ' 15/03/2024
```
- **VALUE** any number, date string (`YYYYMMDD HH:MM:SS`), or text.
- **PATTERN** a short format string (see tables below).
## Quick Reference
### Numeric Patterns
| Pattern | Example | Output |
|---------|---------|--------|
| `n` | `FORMAT(1234.5, "n")` | `1234.50` |
| `F` | `FORMAT(1234.5, "F")` | `1234.50` |
| `f` | `FORMAT(1234.5, "f")` | `1234` |
| `0%` | `FORMAT(0.85, "0%")` | `85%` |
| `C2[en]` | `FORMAT(1234.5, "C2[en]")` | `$1,234.50` |
| `C2[pt]` | `FORMAT(1234.5, "C2[pt]")` | `R$ 1.234,50` |
### Date Patterns
| Code | Meaning | Example |
|------|---------|---------|
| `yyyy` | 4digit year | `2024` |
| `yy` | 2digit year | `24` |
| `MM` | month (0112) | `03` |
| `M` | month (112) | `3` |
| `dd` | day (0131) | `05` |
| `d` | day (131) | `5` |
| `HH` | 24hour (0023) | `14` |
| `hh` | 12hour (0112) | `02` |
| `mm` | minutes (0059) | `05` |
| `ss` | seconds (0059) | `09` |
| `tt` | AM/PM | `PM` |
**Example**
```basic
DATE = "2024-03-15 14:30:25"
TALK FORMAT(DATE, "dd/MM/yyyy HH:mm") ' 15/03/2024 14:30
```
### Text Patterns
| Placeholder | Effect |
|-------------|--------|
| `@` | Insert original text |
| `!` | Uppercase |
| `&` | Lowercase |
**Example**
```basic
NAME = "Maria"
TALK FORMAT(NAME, "Hello, !") ' Hello, MARIA
```
## Practical Tips
- **Test each pattern** in isolation before combining.
- **Locale codes** (`en`, `pt`, `fr`, …) go inside `C2[…]` for currency.
- **Dates must follow** `YYYYMMDD HH:MM:SS`; otherwise formatting fails.
- **Combine patterns** by nesting calls:
```basic
TALK FORMAT(FORMAT(VALUE, "C2[en]"), "!") ' $1,234.50 (uppercase not needed here)
```
## Common Pitfalls
- Using a date pattern on a nondate string → returns the original string.
- Forgetting locale brackets (`C2[en]`) → defaults to system locale.
- Mixing placeholders (`@`, `!`, `&`) in the same pattern only the last one applies.
Use **FORMAT** whenever you need a clean, userfriendly output without extra code. It keeps scripts short and readable.