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

166 lines
5.9 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.