Skip to content

Conversation

@marrouchi
Copy link
Contributor

@marrouchi marrouchi commented Sep 13, 2024

Motivation

This PR syncs documentation with gitbook

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist:

  • I have performed a self-review of my own code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation (Storybook)
  • I have added unit tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

Summary by CodeRabbit

  • Documentation
    • Introduced a complete docs site: new homepage and structured navigation.
    • Quickstart: installation and “Create your first flow” tutorial.
    • User Guide: Visual Editor and blocks, Flows, NLU (training, entities, engines, match scoring), Localization (languages, translations), Knowledge Base (content types, media, persistent menu), Context Variables, Chat Inbox, Subscribers, Users & Roles, Settings (Email, Global Fallback, NLU Provider, Web Channel, Live Chat Widget; Messenger/Analytics placeholders).
    • Developer Guide: CLI reference, contributor setup, Docker/NVM/SMTP, extensions/plugins (build your first), integrations, NLU engines (LLM, Ludwig, TensorFlow), Hexabot NLU Engine, training with Ludwig AI.
    • FAQ: embed chat widget, NGINX deployment.

@marrouchi marrouchi changed the title GITBOOK-28: No subject GITBOOK-28: Initial Documentation Sep 13, 2024
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Sep 3, 2025

Walkthrough

Adds a comprehensive documentation set for Hexabot: a docs homepage, summary navigation, quickstart guides, user guides (visual editor, flows, NLU, localization, knowledge base, subscribers, settings), developer guides (CLI, contributors, Docker, NVM, SMTP, extensions, integrations, NLU engines), FAQs, key concepts placeholders, and numerous GitBook includes/assets. No code or API changes.

Changes

Cohort / File(s) Summary
Docs scaffolding & navigation
docs/README.md, docs/SUMMARY.md, docs/.gitbook/includes/untitled.md, docs/.gitbook/includes/untitled (1).md
Introduces docs landing page, site-wide table of contents, and includes for navigation.
Quickstart
docs/quickstart/installation.md, docs/quickstart/create-your-first-flow.md
Adds installation and first-flow tutorials, including CLI usage, dev services (e.g., Ollama), and step-by-step visual editor guide.
Introduction
docs/introduction/overview.md, docs/introduction/features.md
Provides product overview and detailed feature breakdown with images.
Key Concepts (placeholders)
docs/key-concepts/nlu.md, docs/key-concepts/intent.md
Adds WIP placeholders for NLU and Intent concepts.
User Guide — Visual Editor
docs/user-guide/visual-editor/README.md, docs/user-guide/visual-editor/using-the-visual-editor.md
Introduces visual editor, UI components, and end-to-end flow-building guidance.
User Guide — Regular Blocks
docs/user-guide/visual-editor/regular-blocks/README.md, .../using-simple-text-block.md, .../using-quick-replies-block.md, .../using-buttons-block.md, .../using-attachment-block.md
Documents Simple Text, Quick Replies, Buttons, and Attachment blocks with configuration and examples.
User Guide — Advanced Blocks
docs/user-guide/visual-editor/using-advanced-blocks.md
Adds List block guide with configuration (list/carousel) and example.
User Guide — Flows & Chat
docs/user-guide/flows.md, docs/user-guide/chat-inbox.md, docs/user-guide/analytics-dashboard.md
Adds flows management, chat inbox workflow, and analytics dashboard (WIP).
User Guide — NLU (overview & training)
docs/user-guide/nlu/README.md, docs/user-guide/nlu-training.md, docs/user-guide/nlu/nlu-match-scoring.md
Adds NLU overview, training workflow, and block scoring methodology.
User Guide — NLU Engines
docs/user-guide/nlu/nlu-engines/README.md, .../llm-nlu-engine.md, .../ludwig-nlu-engine.md, .../tensorflow-nlu-engine.md
Documents engine options (LLM, Ludwig, TensorFlow), setup, configuration, and testing.
User Guide — NLU Entities
docs/user-guide/nlu/manage-nlu-entities.md
Adds entity management guide, categories, UI workflow, and bulk import notes.
User Guide — Knowledge Base
docs/user-guide/knowledge-base/README.md, .../content-types.md, .../manage-persistent-menu.md, .../media-library.md
Adds KB overview, content types/fields, persistent menu, and media library usage.
User Guide — Localization
docs/user-guide/localization/README.md, .../languages.md, .../translations.md
Adds localization overview, languages management, and translation workflow.
User Guide — Settings
docs/user-guide/manage-settings/README.md, .../email.md, .../chatbot-global-fallback.md, .../nlu-provider.md, .../web-channel.md, .../live-chat-widget.md, .../facebook-messenger.md
Adds platform settings guides (email, fallback, NLU provider, web channel, live chat widget, FB Messenger placeholder).
User Guide — Subscribers & Roles
docs/user-guide/subscribers.md, docs/user-guide/users-and-roles/README.md, .../manage-users.md, .../manage-roles.md
Adds subscribers management, users/roles overview, invite/manage users, and role permissions.
Developer Guide — Getting started
docs/developer-guide/contributors-installation-guide.md, docs/developer-guide/cli-command-reference.md
Adds contributor setup and CLI reference with commands and examples.
Developer Guide — Environment
docs/developer-guide/setup-node.js-with-nvm.md, docs/developer-guide/setting-up-docker-for-development-and-production.md, docs/developer-guide/smtp-configuration-and-emails.md
Adds NVM-based Node.js setup, Docker install steps, and SMTP config for dev/prod.
Developer Guide — Extensions & Integrations
docs/developer-guide/extensions.md, docs/developer-guide/integrations/README.md, .../hexabot-plugin-development.md, .../build-your-first-plugin.md
Adds extensions model, plugin development overview, and a “first plugin” build guide.
Developer Guide — NLU Engines internals
docs/developer-guide/hexabot-nlu-engine.md, docs/developer-guide/training-custom-nlu-models-with-ludwig-ai.md
Documents Hexabot NLU Engine architecture and Ludwig-based custom model training paths.
FAQ
docs/faq/how-can-i-add-the-chatbot-widget-to-my-website.md, docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md
Adds widget embedding guide and NGINX-based deployment methods (service and Docker).
GitBook includes (assets/snippets)
docs/.gitbook/includes/*.md (buttons-block.md, quick-replies-block.md, list-block.md, simle-text-block.md, attachement-block.md, visual-editor-.md, time-plugin-settings.md, add-edit-.md, add-new-content-type-form.md, nlu-samples-tab.md, ...)
Adds reusable figures/snippets for UI screenshots, forms, and settings; used across docs pages.

Sequence Diagram(s)

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~15 minutes

Suggested reviewers

  • yassinedorbozgithub

Poem

A nibble of docs, a hop through flows,
I thump with joy where the knowledge grows.
Pages like lettuce, crispy and new—
Click, scroll, munch: a feast to chew.
With blocks and bots, I bound with glee—
Ship it! says this bunny 🐇📚✨

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description Check ⚠️ Warning The PR description provides a brief motivation but omits required template details: it does not include a "Fixes #" reference, leaves the Type of change checkboxes unchanged instead of marking that this is a documentation update, and does not list dependencies or additional context; the checklist is only partially completed with many items unchecked. Please update the PR description to add the related issue reference (e.g., "Fixes #"), mark the appropriate Type of change (check "This change requires a documentation update"), list any dependencies or relevant context, and complete or explain the remaining checklist items (self-review, tests, etc.).
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title "GITBOOK-28: Initial Documentation" concisely identifies the primary change (synchronizing documentation with GitBook) and includes the issue key, making it clear and relevant to reviewers.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch documentation

📜 Recent review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between c53580b and ff1ede0.

📒 Files selected for processing (1)
  • docs/SUMMARY.md (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • docs/SUMMARY.md
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Frontend Tests
  • GitHub Check: API-Tests

Tip

👮 Agentic pre-merge checks are now available in preview!

Pro plan users can now enable pre-merge checks in their settings to enforce checklists before merging PRs.

  • Built-in checks – Quickly apply ready-made checks to enforce title conventions, require pull request descriptions that follow templates, validate linked issues for compliance, and more.
  • Custom agentic checks – Define your own rules using CodeRabbit’s advanced agentic capabilities to enforce organization-specific policies and workflows. For example, you can instruct CodeRabbit’s agent to verify that API documentation is updated whenever API schema files are modified in a PR. Note: Upto 5 custom checks are currently allowed during the preview period. Pricing for this feature will be announced in a few weeks.

Please see the documentation for more information.

Example:

reviews:
  pre_merge_checks:
    custom_checks:
      - name: "Undocumented Breaking Changes"
        mode: "warning"
        instructions: |
          Pass/fail criteria: All breaking changes to public APIs, CLI flags, environment variables, configuration keys, database schemas, or HTTP/GraphQL endpoints must be documented in the "Breaking Change" section of the PR description and in CHANGELOG.md. Exclude purely internal or private changes (e.g., code not exported from package entry points or explicitly marked as internal).

Please share your feedback with us on this Discord post.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 50

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (3)
docs/key-concepts/nlu.md (1)

7-7: Remove stray character at EOF

A lone "7" will render on the page.

Apply this diff:

-7
+
docs/key-concepts/intent.md (1)

7-7: Remove stray character at EOF

A lone "7" will render on the page.

-7
+
docs/user-guide/analytics-dashboard.md (1)

11-11: Remove stray character at EOF

A lone "11" will render on the page.

-11
+


{% tabs %}
{% tab title="Simple Text" %}
<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add meaningful alt text to images (MD045).

Improves accessibility and SEO.

-<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../../../.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png" alt="Simple Text block screenshot"><figcaption></figcaption></figure>
...
-<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../../../.gitbook/assets/image (2) (1) (1) (1).png" alt="Quick Replies block screenshot"><figcaption></figcaption></figure>
...
-<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../../../.gitbook/assets/image (3) (1) (1).png" alt="Buttons block screenshot"><figcaption></figcaption></figure>
...
-<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../../../.gitbook/assets/image (4) (1) (1).png" alt="Attachment block screenshot"><figcaption></figcaption></figure>

Also applies to: 27-27, 43-43, 57-57

🤖 Prompt for AI Agents
In docs/user-guide/visual-editor/regular-blocks/README.md around lines 7, 27, 43
and 57, several <img> tags currently have empty alt attributes and empty
<figcaption>, triggering MD045; replace the empty alt="" with concise,
meaningful descriptive text for each image (e.g., describe what's shown and its
purpose in the UI), and either fill the corresponding <figcaption> with a short
caption or remove the empty <figcaption> elements; ensure each image has a
non-empty alt attribute that accurately conveys the content for accessibility
and SEO.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review continued from previous batch...

Comment on lines +156 to +158
git lfs install
git lfs track "model/model_weights"
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Correct Git LFS pattern to track files, not a literal path.

Use a glob so weights are actually tracked.

Apply:

-git lfs install
-git lfs track "model/model_weights"
+git lfs install
+git lfs track "model/model_weights/*"
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
git lfs install
git lfs track "model/model_weights"
```
git lfs install
git lfs track "model/model_weights/*"
🤖 Prompt for AI Agents
In docs/developer-guide/training-custom-nlu-models-with-ludwig-ai.md around
lines 156 to 158, the git lfs track command uses a literal directory path which
won't match files; replace it with a glob pattern to track files (for example
use git lfs track "model/model_weights/**" or a specific extension like git lfs
track "model/model_weights/*.pt"), then ensure the resulting .gitattributes
entry is committed so LFS actually tracks the weight files.

* [NLU Engines](user-guide/nlu/nlu-engines/README.md)
* [LLM NLU Engine](user-guide/nlu/nlu-engines/llm-nlu-engine.md)
* [Ludwig NLU Engine](user-guide/nlu/nlu-engines/ludwig-nlu-engine.md)
* [Tensorflow NLU Engine](user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Correct proper noun capitalization: TensorFlow

Spelling should be “TensorFlow”.

-    * [Tensorflow NLU Engine](user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md)
+    * [TensorFlow NLU Engine](user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md)
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* [Tensorflow NLU Engine](user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md)
* [TensorFlow NLU Engine](user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md)
🧰 Tools
🪛 LanguageTool

[grammar] ~31-~31: There might be a mistake here.
Context: ...-engine.md) * Tensorflow NLU Engine * [NLU Training](user-guide/nlu-training.md...

(QB_NEW_EN)

🤖 Prompt for AI Agents
In docs/SUMMARY.md around line 31 the proper noun "Tensorflow" is incorrectly
capitalized; change it to "TensorFlow" in the list entry so the line reads "*
[TensorFlow NLU Engine](user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md)" to
correct the spelling/capitalization.

Comment on lines +53 to +58
1. Navigate to “**Settings**” from the main menu.
2. Select the “**Ludwig NLU Engine**” tab.
3. Update NLU Engine Settings :
1. The Ludwig NLU engine is already pre-configured to connect with the Ludwig NLU API provided in the template. You only need to update the **Ludwig NLU engine's endpoint** and **API token** if you are not using the default setup.
2. A Probability Threshold is also available, it’s set by default to 0.1, this value is the minimum probability required for a prediction to be accepted. Be sure to adjust this threshold based on the specific model you are using and your desired balance of precision and recall.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Add a note about keeping API tokens secret.

Readers should avoid committing tokens to repos or docs.

 3. Update NLU Engine Settings :
    1. The Ludwig NLU engine is already pre-configured to connect with the Ludwig NLU API provided in the template. You only need to update the **Ludwig NLU engine's endpoint** and **API token** if you are not using the default setup.
    2. A Probability Threshold is also available, it’s set by default to 0.1, this value is the minimum probability required for a prediction to be accepted. Be sure to adjust this threshold based on the specific model you are using and your desired balance of precision and recall.
+
+{% hint style="warning" %}
+Security: Store the API token in environment variables or a secrets manager. Do not commit tokens to source control.
+{% endhint %}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
1. Navigate to “**Settings**” from the main menu.
2. Select the “**Ludwig NLU Engine**” tab.
3. Update NLU Engine Settings :
1. The Ludwig NLU engine is already pre-configured to connect with the Ludwig NLU API provided in the template. You only need to update the **Ludwig NLU engine's endpoint** and **API token** if you are not using the default setup.
2. A Probability Threshold is also available, it’s set by default to 0.1, this value is the minimum probability required for a prediction to be accepted. Be sure to adjust this threshold based on the specific model you are using and your desired balance of precision and recall.
3. Update NLU Engine Settings :
1. The Ludwig NLU engine is already pre-configured to connect with the Ludwig NLU API provided in the template. You only need to update the **Ludwig NLU engine's endpoint** and **API token** if you are not using the default setup.
2. A Probability Threshold is also available, it’s set by default to 0.1, this value is the minimum probability required for a prediction to be accepted. Be sure to adjust this threshold based on the specific model you are using and your desired balance of precision and recall.
{% hint style="warning" %}
Security: Store the API token in environment variables or a secrets manager. Do not commit tokens to source control.
{% endhint %}
🤖 Prompt for AI Agents
docs/user-guide/nlu/nlu-engines/ludwig-nlu-engine.md around lines 53 to 58: add
a short security note warning users to keep the Ludwig NLU API token secret and
not to commit it to repos or documentation; instruct to store tokens in
environment variables or a secure secrets manager, redact tokens from
screenshots/examples, and remind them to rotate tokens if accidentally exposed.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (11)
docs/user-guide/localization/languages.md (1)

40-40: Tighten grammar and constraint wording in the Note.

This mirrors a prior comment; apply the improved phrasing.

-> **Note**: Deleting a language will remove its translations from the chatbot. All NLU samples will be set to the default language which cannot be deleted. You need always to have at least one language.
+> **Note**: Deleting a language removes its translations from the chatbot. All NLU samples will be set to the default language, which cannot be deleted. You must always have at least one language.
docs/introduction/features.md (2)

35-36: Fix broken NLU link (replace placeholder).

Swap the “Broken link” placeholder with the actual NLU docs path.

-{% hint style="info" %}
-**What is NLU ?** In simple terms, NLU is a branch of AI that focuses on enabling computers to understand, interpret, and respond to human language in a way that is both meaningful and useful. You can read more about NLU in the [Broken link](broken-reference "mention") section.
-{% endhint %}
+{% hint style="info" %}
+**What is NLU ?** In simple terms, NLU enables computers to understand, interpret, and respond to human language. Learn more in the [NLU Engines](../user-guide/nlu/nlu-engines/README.md) section.
+{% endhint %}

104-106: Fix broken API/plugins docs link in hint.

Replace placeholder with the plugins/dev guide.

-{% hint style="info" %}
-Check the [Broken link](broken-reference "mention") to learn more about Hexabot's API and how to develop plugins.
-{% endhint %}
+{% hint style="info" %}
+See the Developer Guide on [Extensions & Plugins](../developer-guide/integrations/hexabot-plugin-development.md) to learn more about Hexabot's API and plugin development.
+{% endhint %}
docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (5)

5-5: Fix spacing before the question mark.
Remove the extra space before “?”.

-# How can I deploy my Hexabot using NGINX ?
+# How can I deploy my Hexabot using NGINX?

9-9: Punctuation and pluralization.
Remove the extra space before the colon and use “certificates”.

-This documentation outlines two methods for deploying your Hexabot project in a production environment using NGINX and Let's Encrypt for SSL certificate : 
+This documentation outlines two methods for deploying your Hexabot project in a production environment using Nginx and Let's Encrypt for SSL certificates:

142-149: Use $scheme for X-Forwarded-Proto.
Avoid hardcoding https; reflect the actual request protocol.

-    location / {
-        proxy_set_header X-Forwarded-Proto https;
+    location / {
+        proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Url-Scheme $scheme;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header Host $http_host;
         proxy_redirect off;
         proxy_pass http://localhost:8080; # Make sure to use the port configured in .env file
     }

71-74: Add a prominent security warning about secrets.
Readers may copy the example secrets; add a warning and suggest secure generation.

 Note that you can also adjust the default token expirations durations as needed.
+
+{% hint style="warning" %}
+Security: Replace all example secret values (JWT, session, invitation, password reset, confirm account, AUTH_TOKEN) with strong, unique secrets. Do not reuse examples. Keep your `.env` private and out of version control.
+Quick generate: `openssl rand -hex 32`
+{% endhint %}

167-180: Target Socket.IO explicitly; remove brittle regex/rewrite.
Match /socket.io/ and keep only necessary WebSocket headers.

-    location ~* \.io {
-        rewrite ^/api/?(.*)$ /$1 break;
-        proxy_set_header X-Real-IP $remote_addr;
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-        proxy_set_header Host $http_host;
-        proxy_set_header X-NginX-Proxy false;
-
-        proxy_pass http://localhost:4000; # Make sure to use the port configured in .env file
-        proxy_redirect off;
-
-        proxy_http_version 1.1;
-        proxy_set_header Upgrade $http_upgrade;
-        proxy_set_header Connection "upgrade";
-    }
+    location /socket.io/ {
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header Host $http_host;
+        proxy_pass http://localhost:4000;
+        proxy_read_timeout 300s;
+        proxy_send_timeout 300s;
+    }
docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md (2)

12-16: Fix quoting/spacing and clarify ports sentence.

Removes stray space in "Simple Text", fixes colon spacing, tightens port descriptions.

-* **Start of a Flow:** If the "Simple Text "block is the beginning of your conversation, it doesn't need to be connected to another block. It will be the first message the user receives when they interact with the chatbot. You just need to toggle on the ![](<../../../.gitbook/assets/image (17).png>) "**Entrypoint**" option.
-* **Continuing a Flow:** If the block is part of a longer conversation, connect it to the preceding block to define when the text message should be sent. This connection could be from any type of block, like a Quick Replies block, a User Input block, or another Simple Text block. Each block has a single input port and two types of output ports : 
-  * ![](<../../../.gitbook/assets/image (15).png>) **Next/Previous Block(s) Port:** Defines which block(s) should be triggered next depending on the user input/reply.
-  * ![](<../../../.gitbook/assets/image (16).png>) **Attached Block Port:** This should be used if you would like to send subsequent messages.
+* **Start of a flow:** If the "Simple Text" block starts the conversation, it doesn't need an incoming connection. Toggle ![](<../../../.gitbook/assets/image (17).png>) **Entrypoint**.
+* **Continuing a flow:** Connect it to the preceding block to control when the text is sent. Any block type can connect (e.g., Quick Replies, User Input, Simple Text). Each block has one input port and two output port types:
+  * ![](<../../../.gitbook/assets/image (15).png>) **Next/Previous Block(s) Port:** Chooses which block(s) to trigger next based on user input/flow.
+  * ![](<../../../.gitbook/assets/image (16).png>) **Attached Block Port:** Chain subsequent messages without advancing the flow.

21-31: Grammar/conciseness in Triggers/Message/Options.

Pluralize “message(s)”, simplify headers and typing indicator text; minor clarity tweaks.

-* **Triggers Tab (Optional):**
+* **Triggers (optional):**
   * If you only want the text message to be sent under certain conditions, define those conditions in the "Triggers" tab.
   * You can use triggers based on the user's previous message, the presence of specific data, or other contextual factors.
-  * You can also choose to target users by a specific label or limit the block scope to a given channel.
+  * You can also target users by specific labels or limit the block scope to a given channel.
 * **Message Tab:**
-  * Enter the text message you want to send to the user in the "Message" field.
-  * You can define one or multiple text message and the chatbot will send randomly one of them.
-* **Options Tab (Optional):**
-  * **Typing Indicator:** Choose whether to show a typing indicator before sending the message, making the interaction feel more human-like.
+  * Enter the text you want to send in the "Message" field.
+  * You can define one or multiple messages; the chatbot will randomly send one of them.
+* **Options (optional):**
+  * **Typing indicator:** Show a typing indicator before sending the message.
   * **Assign Labels:** Associate the block with specific user labels. This enables you to send different messages to users based on their categories or characteristics.
   * **Fallback Responses:** Define messages to send if the user's input doesn't meet any defined triggers, preventing dead ends in the conversation.
docs/user-guide/visual-editor/using-advanced-blocks.md (1)

16-20: Step numbering starts at 2 — add Step 1.

Add an intro step so the sequence starts at 1.

-**2. Add the List Block:**
+**1. Open the Visual Editor:**
+
+* Open your bot project and launch the Visual Editor from the Hexabot Admin.
+
+**2. Add the List Block:**
🧹 Nitpick comments (24)
docs/user-guide/localization/languages.md (6)

11-11: Fix heading level jumps (MD001).

Change H3 to H2 so levels increment by one from the H1 “Languages.”

-### Adding a Language
+## Adding a Language
-### Updating a Language
+## Updating a Language
-### Deleting a Language
+## Deleting a Language
-### Default Language
+## Default Language

Also applies to: 23-23, 32-32, 42-42


7-7: Clarify detection vs. preference and simplify phrasing.

Current text mixes “preference” and “detection.” Be explicit about fallback.

-Once you have added multiple languages, your chatbot will dynamically respond to users based on their language preference. If the end-user’s language is detected, the chatbot will automatically switch to that language. Otherwise, the default language will be used.
+After you add multiple languages, the chatbot detects the end user's language and automatically responds in that language; if detection fails, it falls back to the default language.

9-9: Add meaningful alt text for accessibility.

Empty alt hides information for screen readers.

-<figure><img src="../../.gitbook/assets/a3dfdaf5-5e9f-4d1d-894a-a08d2dbed9c0 (1).png" alt=""><figcaption><p>Manage Languages</p></figcaption></figure>
+<figure><img src="../../.gitbook/assets/a3dfdaf5-5e9f-4d1d-894a-a08d2dbed9c0 (1).png" alt="Manage Languages screen"><figcaption><p>Manage Languages</p></figcaption></figure>

19-20: Specify code format and expand RTL label.

Clarify ISO 639‑1 and optionally mention BCP 47 if supported; make RTL label explicit with examples.

-   * **Code**: The language code (e.g., `en` for English, `fr` for French, `ar` for Arabic). It is recommended to use the ISO 639-1 code for each language.
-   * **RTL**: Toggle whether the language is a right-to-left language.
+   * **Code**: The language code (e.g., `en`, `fr`, `ar`). Use the ISO 639‑1 two‑letter code. If you need regional variants, use a BCP 47 tag (e.g., `en-US`, `fr-CA`). 
+   * **Right‑to‑left (RTL)**: Turn on for languages such as Arabic, Hebrew, or Persian.

Please confirm whether the product accepts only ISO 639‑1 codes or full BCP 47 tags so we can align the docs.


27-31: Warn about side effects when changing a language Code.

Changing codes can orphan translations/NLU data if referenced by code.

 3. Modify the **Title**, **Code**, or **RTL** setting as needed.
 4. Click **Save** to apply your changes.
+
+> **Warning**: Changing a language **Code** may affect existing translations, NLU samples, and any integrations that reference the old code. Review impacts before saving.

50-50: Standardize “end user” styling.

Use “end user” (noun, no hyphen) for consistency with Line 7 change.

-The default language will be used when the chatbot cannot detect the language of the end-user.
+The default language is used when the chatbot cannot detect the end user's language.
docs/introduction/features.md (9)

71-78: Ensure in-page anchor resolves for “User Segmentation & Targeting”.

The table links to #user-segmentation-and-targeting. Add an explicit slug to avoid “&” slugging inconsistencies.

-## **User Segmentation & Targeting** 
+## **User Segmentation & Targeting** {#user-segmentation-and-targeting}

78-87: Ensure in-page anchor resolves for “Live Chat & Agent Takeover”.

Add an explicit slug to match the table link target.

-## **Live Chat & Agent Takeover** 
+## **Live Chat & Agent Takeover** {#live-chat-and-agent-takeover}

25-26: Use gender‑neutral language.

-**What is a conversation ?** When the user interacts with the chatbot, he can have one or many conversations. Each conversation is subject specific and is defined by a set of blocks that are linked together.
+**What is a conversation?** When users interact with the chatbot, they may have one or multiple conversations. Each conversation is subject‑specific and defined by a set of linked blocks.

61-61: Small grammar fix.

-Hexabot provides comprehensive tools for managing multilingual chatbots. Our translation management system allows you to easily translate your chatbot's messages, prompts, and responses. Combined with advanced NLU capabilities for language detection and intent understanding, Hexabot empowers to build chatbots that seamlessly communicate with users in their preferred language.
+Hexabot provides comprehensive tools for managing multilingual chatbots. Our translation management system allows you to easily translate your chatbot's messages, prompts, and responses. Combined with advanced NLU capabilities for language detection and intent understanding, Hexabot empowers you to build chatbots that seamlessly communicate with users in their preferred language.

65-65: Avoid time‑sensitive phrasing.

Make this evergreen or link to a roadmap.

-Deploy your Hexabot chatbot across multiple platforms, including on your website, Facebook Messenger, and other external services with ease. We're also working on adding even more direct integrations in the near future, to ensure you can reach even more users.
+Deploy your Hexabot chatbot across multiple platforms, including your website, Facebook Messenger, and other external services. Additional direct integrations are planned; see the project roadmap for updates.

59-61: Add descriptive alt text for accessibility.

-<figure><img src="../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../.gitbook/assets/image (10).png" alt="Localization and translation management UI"><figcaption></figcaption></figure>

80-82: Add descriptive alt text for accessibility.

-<figure><img src="../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../.gitbook/assets/image (11).png" alt="Live chat inbox and agent takeover UI"><figcaption></figcaption></figure>

110-112: Add descriptive alt text for accessibility.

-<figure><img src="../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../.gitbook/assets/image (9).png" alt="Analytics dashboard with KPIs and charts"><figcaption></figcaption></figure>

9-9: Minor wording consistency: “Multichannel” vs “Multi‑channel”.

Use one spelling across table/section to aid search.

-...<tr><td>Multichannel Communication</td><td></td><td><a href="features.md#multi-channel-communication">#multi-channel-communication</a></td>...
+...<tr><td>Multi-channel Communication</td><td></td><td><a href="features.md#multi-channel-communication">#multi-channel-communication</a></td>...
docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (5)

7-7: Fix heading hierarchy, trailing punctuation, and markdownlint issues.
Align levels with MD001/MD026, convert emphasis-as-heading, add code fence language, and avoid bare URLs.

-### Introduction
+## Introduction

-### Pre-requisites
+## Prerequisites

-### **Method 1 : Using Nginx as a service and Certbot for SSL**
+## Method 1: Using Nginx as a service and Certbot for SSL

-#### Step 1: Run your Hexabot project in production mode:
+### Step 1: Run your Hexabot project in production mode

-```
+```bash
 0 12 * * * certbot renew --quiet

-Step 5: Reload Nginx with new configuration
+### Step 5: Reload Nginx with new configuration

-Access your domain using HTTPS (eg. https://mychatbot.ai) to check if you have successfully deployed your Hexabot project using Nginx! 🚀🎉. Feel free to ask for support from the community on our Discord channel.
+Access your domain using HTTPS (e.g., https://mychatbot.ai) to check if you have successfully deployed your Hexabot project using Nginx! 🚀🎉 Feel free to ask for support from the community on our Discord channel.

-## Method 2: Using Dockerized Nginx and Certbot services :
+## Method 2: Using Dockerized Nginx and Certbot services

-#### Step 1: Copy Required Files for Dockerized Nginx and Certbot
+### Step 1: Copy Required Files for Dockerized Nginx and Certbot



Also applies to: 14-14, 79-79, 81-81, 206-206, 210-210, 228-228, 230-230, 234-234

---

`71-71`: **Correct FRONTEND_BASE_URL description and clarify FRONTEND_ORIGIN format.**
Current text mislabels the frontend URL and the origin list. 

```diff
-<tr><td>FRONTEND_BASE_URL</td><td>https://mychatbot.ai</td><td>The API endpoint will be used to communicate with the frontend</td><td></td></tr><tr><td>FRONTEND_ORIGIN</td><td>http://mychatbot.ai, https://mychatbot.ai</td><td>The origins that will be accepted by the API. A list of permitted origins for cross-origin requests</td><td></td></tr>
+<tr><td>FRONTEND_BASE_URL</td><td>https://mychatbot.ai</td><td>Base URL of the frontend application</td><td></td></tr><tr><td>FRONTEND_ORIGIN</td><td>"https://mychatbot.ai,http://mychatbot.ai"</td><td>Comma‑separated list of allowed origins accepted by the API (CORS)</td><td></td></tr>

136-141: Support both apex and www hostnames.
Add the www alias to server_name.

-    server_name mychatbot.ai; # You will need to update this to use your own domain 
+    server_name mychatbot.ai www.mychatbot.ai; # Update to your domains

97-99: Tighten grammar and terminology.
Use “set up”, “an HTTP”, and SSL/TLS wording.

-Deploying an Hexabot project on production requires you to setup a HTTP Web Server like Apache2, HAProxy or Nginx to secure communications using SSL, establish access per domain name, and a lot of other capabilities such as rate limiting for example to help protect against abuse and prevent server overload. In this guide, we will walk you through a typical HTTP Web Server setup using Nginx and Certbot for SSL certificate generation.
+Deploying a Hexabot project to production requires you to set up an HTTP web server (e.g., Apache, HAProxy, or Nginx) to secure communications with SSL/TLS, configure virtual hosts, and enable features like rate limiting to help prevent abuse and server overload. This guide walks you through a typical setup using Nginx and Certbot for certificate management.

288-293: Minor copyedits.
Small grammar fixes.

-Now you will be able to run the script
+Now you can run the script

-Once the script completes, run `docker ps` verify that your Nginx and Certbot docker containers are up and running.
+Once the script completes, run `docker ps` to verify that your Nginx and Certbot containers are up and running.

Also applies to: 296-296

docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md (1)

47-51: Fix MD007 list indentation under hint.

Indent bullets by two spaces inside the hint to satisfy markdownlint.

- * **Be Clear and Concise:** Keep messages short, focused, and easy to understand.
- * **Use a Natural Tone:** Write in a friendly and conversational style.
- * **Personalize When Possible:** Use information you know about the user (e.g., name) to tailor messages.
- * **Provide Context:** Make sure the user knows why they are receiving a message and what they should do next.
+  * **Be clear and concise:** Keep messages short, focused, and easy to understand.
+  * **Use a natural tone:** Write in a friendly and conversational style.
+  * **Personalize when possible:** Use information you know about the user (e.g., name) to tailor messages.
+  * **Provide context:** Make sure the user knows why they are receiving a message and what they should do next.
docs/user-guide/visual-editor/using-advanced-blocks.md (3)

5-12: Consistent capitalization: “List Block”.

Capitalize “Block” for consistency with headings.

-The List block in Hexabot provides a dynamic way
+The List Block in Hexabot provides a dynamic way
@@
-The List block is ideal when you need to:
+The List Block is ideal when you need to:

21-43: Tighten connection/config text; minor wording.

Small clarity/consistency edits.

-* **Preceding Connection:** Connect the List block to the block that precedes it in the conversation flow. This connection determines when the list will be shown to the user. It can be linked to any block that prompts user interaction or provides information, such as a Simple Text block or a Quick Replies block.
+* **Preceding connection:** Connect the List Block to the prior block to determine when it’s shown. It can follow any block (e.g., Simple Text, Quick Replies).
@@
-* **Click "Edit":** The configuration panel for the List block will open, allowing you to customize the list's appearance and content.
+* **Click "Edit":** Open the configuration panel to customize appearance and content.
@@
-* **Message Tab:** This tab is where you define the items in your list and how they should be presented:
+* **Message Tab:** Define the items and how they are presented:
@@
-  * **Button (Optional):** Include a button to allow users to interact with the list item directly. You can set the button type (Postback or Web URL) and define a payload to trigger actions or open external links.
+  * **Button (Optional):** Add a button for user interaction. Set type (Postback or Web URL) and payload/action.
@@
-* **Options Tab (Optional):**
+* **Options (optional):**

53-58: Restructure example “Items” as nested bullets; clarify Button fields.

Improves readability and rendering.

-* **Items:**
-  * **Title:** "Modern 3-Bedroom House"
-  * **Subtitle:** "Spacious garden, prime location"
-  * **Image:** Upload an image of the house.
-  * **Button:** Title: "View Details" Payload: "property_details_123" Type: Postback
+* **Items:**
+  * Item 1
+    * **Title:** Modern 3‑Bedroom House
+    * **Subtitle:** Spacious garden, prime location
+    * **Image:** Upload an image of the house.
+    * **Button:**
+      * **Title:** View Details
+      * **Type:** Postback
+      * **Payload:** property_details_123
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 449faef and 26cccb4.

⛔ Files ignored due to path filters (16)
  • docs/.gitbook/assets/1f0a335a-af75-4fab-8ee9-ce54d9e22a8d (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/1f0a335a-af75-4fab-8ee9-ce54d9e22a8d.png is excluded by !**/*.png
  • docs/.gitbook/assets/Dark.png is excluded by !**/*.png
  • docs/.gitbook/assets/Hexabot Visual Editor - v2.2.3.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-39-05 Hexabot (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-39-05 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-42-40 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-44-44 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-46-02 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-47-12 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-48-45 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-15 at 16-55-40 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/a3395a9f-7dba-4f4b-8dd8-46dbc331717f.png is excluded by !**/*.png
  • docs/.gitbook/assets/a3dfdaf5-5e9f-4d1d-894a-a08d2dbed9c0 (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/bb20d6a1-cfd5-48ca-a3a9-da27bcf521be.png is excluded by !**/*.png
  • docs/.gitbook/assets/image (34).png is excluded by !**/*.png
📒 Files selected for processing (27)
  • docs/.gitbook/includes/attachement-block.md (1 hunks)
  • docs/.gitbook/includes/buttons-block.md (1 hunks)
  • docs/.gitbook/includes/list-block.md (1 hunks)
  • docs/.gitbook/includes/quick-replies-block.md (1 hunks)
  • docs/.gitbook/includes/simle-text-block.md (1 hunks)
  • docs/.gitbook/includes/visual-editor-screenshot.md (1 hunks)
  • docs/.gitbook/includes/visual-editor-ui.md (1 hunks)
  • docs/.gitbook/includes/visuel-editor-ui.md (1 hunks)
  • docs/.gitbook/includes/visuel-editor-with-simple-text-block.md (1 hunks)
  • docs/README.md (1 hunks)
  • docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (1 hunks)
  • docs/introduction/features.md (1 hunks)
  • docs/user-guide/analytics-dashboard.md (1 hunks)
  • docs/user-guide/flows.md (1 hunks)
  • docs/user-guide/localization/languages.md (1 hunks)
  • docs/user-guide/localization/translations.md (1 hunks)
  • docs/user-guide/manage-settings/chatbot-global-fallback.md (1 hunks)
  • docs/user-guide/manage-settings/email.md (1 hunks)
  • docs/user-guide/manage-settings/facebook-messenger.md (1 hunks)
  • docs/user-guide/users-and-roles/README.md (1 hunks)
  • docs/user-guide/visual-editor/README.md (1 hunks)
  • docs/user-guide/visual-editor/regular-blocks/README.md (1 hunks)
  • docs/user-guide/visual-editor/regular-blocks/using-attachment-block.md (1 hunks)
  • docs/user-guide/visual-editor/regular-blocks/using-buttons-block.md (1 hunks)
  • docs/user-guide/visual-editor/regular-blocks/using-quick-replies-block.md (1 hunks)
  • docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md (1 hunks)
  • docs/user-guide/visual-editor/using-advanced-blocks.md (1 hunks)
✅ Files skipped from review due to trivial changes (12)
  • docs/.gitbook/includes/visuel-editor-ui.md
  • docs/.gitbook/includes/list-block.md
  • docs/.gitbook/includes/buttons-block.md
  • docs/.gitbook/includes/quick-replies-block.md
  • docs/.gitbook/includes/simle-text-block.md
  • docs/.gitbook/includes/visual-editor-ui.md
  • docs/.gitbook/includes/attachement-block.md
  • docs/user-guide/manage-settings/chatbot-global-fallback.md
  • docs/.gitbook/includes/visual-editor-screenshot.md
  • docs/user-guide/analytics-dashboard.md
  • docs/.gitbook/includes/visuel-editor-with-simple-text-block.md
  • docs/user-guide/flows.md
🚧 Files skipped from review as they are similar to previous changes (10)
  • docs/user-guide/visual-editor/regular-blocks/README.md
  • docs/user-guide/visual-editor/regular-blocks/using-buttons-block.md
  • docs/user-guide/manage-settings/facebook-messenger.md
  • docs/user-guide/users-and-roles/README.md
  • docs/user-guide/visual-editor/README.md
  • docs/user-guide/manage-settings/email.md
  • docs/user-guide/visual-editor/regular-blocks/using-attachment-block.md
  • docs/README.md
  • docs/user-guide/visual-editor/regular-blocks/using-quick-replies-block.md
  • docs/user-guide/localization/translations.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md

7-7: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


81-81: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


206-206: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


210-210: Emphasis used instead of a heading

(MD036, no-emphasis-as-heading)


228-228: Bare URL used

(MD034, no-bare-urls)


230-230: Trailing punctuation in heading
Punctuation: ' :'

(MD026, no-trailing-punctuation)


234-234: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)

docs/user-guide/localization/languages.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md

48-48: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


49-49: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


50-50: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)


51-51: Unordered list indentation
Expected: 2; Actual: 4

(MD007, ul-indent)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Frontend Tests
  • GitHub Check: API-Tests
🔇 Additional comments (1)
docs/introduction/features.md (1)

13-13: Confirm include filename: "visuel" vs "visual"

docs/introduction/features.md:13 contains {% include "../.gitbook/includes/visuel-editor-with-simple-text-block.md" %}; repository search returned no matches — verify the included file exists or correct the filename.

@@ -0,0 +1,51 @@
# Using Simple Text Block

{% include "../../../.gitbook/includes/simle-text-block.md" %}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

Fix include filename (typo) or confirm actual path.

simle-text-block.md looks misspelled; likely simple-text-block.md. Broken include will fail GitBook build.

Proposed fix:

-{% include "../../../.gitbook/includes/simle-text-block.md" %}
+{% include "../../../.gitbook/includes/simple-text-block.md" %}

To verify:


🏁 Script executed:

#!/bin/bash
# Confirm include target exists and find all include references.
fd -a 'sim*text-block.md' docs/.gitbook/includes || true
rg -nP '\{\%\s*include\s+["'\'']\.\.\/\.\.\/\.\.\/\.gitbook\/includes\/[^"'\'' ]+["'\'']\s*\%\}'

Length of output: 1029


Fix misspelled include filenames in regular-blocks (breaks GitBook build).

Multiple files reference misspelled include names — update references or rename the include files under docs/.gitbook/includes.

  • docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md — change simle-text-block.md → simple-text-block.md.
  • docs/user-guide/visual-editor/regular-blocks/using-attachment-block.md — change attachement-block.md → attachment-block.md.
  • docs/user-guide/visual-editor/regular-blocks/README.md — occurrences at lines shown by your scan: change simle-text-block.md → simple-text-block.md and attachement-block.md → attachment-block.md.

Proposed fix (still valid for the simple-text typo):

-{% include "../../../.gitbook/includes/simle-text-block.md" %}
+{% include "../../../.gitbook/includes/simple-text-block.md" %}

Confirm the corrected files exist under docs/.gitbook/includes (simple-text-block.md, attachment-block.md) or apply symmetric renames to the include files.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
{% include "../../../.gitbook/includes/simle-text-block.md" %}
{% include "../../../.gitbook/includes/simple-text-block.md" %}
🤖 Prompt for AI Agents
In docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md
around line 3, the include reference is misspelled as
"../../../.gitbook/includes/simle-text-block.md"; update it to
"../../../.gitbook/includes/simple-text-block.md" and verify that
docs/.gitbook/includes/simple-text-block.md exists (or rename the include file
to match). Also update the analogous typos referenced in
docs/user-guide/visual-editor/regular-blocks/using-attachment-block.md (change
attachement-block.md → attachment-block.md) and in
docs/user-guide/visual-editor/regular-blocks/README.md (change
simle-text-block.md → simple-text-block.md and attachement-block.md →
attachment-block.md); ensure the canonical include files under
docs/.gitbook/includes are named simple-text-block.md and attachment-block.md or
perform symmetric renames so all include references match actual filenames.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (7)
docs/user-guide/nlu/nlu-match-scoring.md (7)

3-3: Naming consistency: “Block Scoring” vs “Match Scoring”.

Header uses “NLU Match Scoring” (Line 1) but paragraph uses “NLU Block Scoring” (Line 3). Unify to a single term.

Apply:

-**NLU Block Scoring** is a mechanism used to select the most relevant response block based on:
+**NLU Match Scoring** is a mechanism used to select the most relevant response block based on:

11-11: Fix heading increments (MD001).

Headings jump levels. Use H2 under H1, and H3 under H2.

Apply:

-### Core Use Cases
+## Core Use Cases

-#### Standard Matching
+### Standard Matching

-#### High Confidence, Partial Match
+### High Confidence, Partial Match

-#### Multiple Blocks with Similar Patterns
+### Multiple Blocks with Similar Patterns

-#### Exclusion Due to Extra Patterns
+### Exclusion Due to Extra Patterns

-#### Tie-Breaking with Penalty Factors
+### Tie-Breaking with Penalty Factors

-### How Scoring Works
+## How Scoring Works

-#### Matching and Confidence
+### Matching and Confidence

-#### Penalty Factor
+### Penalty Factor

Also applies to: 76-76, 78-78, 99-99, 13-13, 23-23, 35-35, 44-44, 55-55


17-22: Add languages to fenced code blocks (MD040).

Specify a language for all fenced blocks; “text” fits these examples.

Apply:

-```
+```text
 Example: Input: intent = enquiry & subject = claim
 Block A: Patterns: intent: enquiry & subject: claim
 Block A will be selected.
-```
+```

-```
+```text
 Example:
 Input: intent = issue (confidence: 0.92) & subject = claim (confidence: 0.65)
 Block A: Pattern: intent: issue
 Block B: Pattern: subject: claim
 ➤ Block A gets a high score based on confidence × weight (assuming both weights are equal to 1).
-```
+```

-```
+```text
 Input: intent = issue & subject = insurance
 Block A: intent = enquiry & subject = insurance
 Block B: subject = insurance
 ➤ Block B is selected — Block A mismatches on intent.
-```
+```

-```
+```text
 Input: intent = issue & subject = insurance
 Block A: intent = enquiry & subject = insurance & location = office
 Block B: subject = insurance & time = morning
 ➤ Neither block is selected due to unmatched required patterns (`location`, `time`)
-```
+```

-```
+```text
 Input: intent = enquiry & subject = insurance

 Block A: intent = enquiry & subject = Any
 Block B: intent = enquiry & subject = insurance
 Block C: subject = insurance

 Scoring Summary:
 - Block A matches both patterns, but subject = Any is considered less specific.
 - Block B has a redundant but fully specific match.
 - Block C matches only one pattern.

 ➤ Block A and Block B have similar raw scores.
 ➤ A penalty factor is applied to Block A due to its use of Any, reducing its final score.
 ➤ Block B is selected.
-```
+```

-```
+```text
 score += confidence × weight × [optional penalty factor if wildcard]
-```
+```

Also applies to: 27-33, 37-42, 48-53, 59-74, 93-95


44-53: Clarify “required vs optional” patterns and wildcard semantics.

State explicitly that only required patterns cause exclusion, how optional patterns contribute, and how “Any” is specified/configured.

Apply:

 #### Exclusion Due to Extra Patterns
@@
 If a block contains patterns that require entities not present in the user input, the block is excluded from scoring altogether. No penalties are applied — the block simply isn't considered a valid candidate.
+
+Note:
+- Required patterns must be present in the user input; otherwise the block is excluded.
+- Optional patterns do not cause exclusion; if present, they contribute to the score normally.
+- Wildcards use the literal value `Any` in block definitions to accept any value for that entity.

80-88: Add a worked numeric example to disambiguate the formula.

A concrete calculation helps users tune weights and penalty factors.

Apply:

 For each entity in the block's pattern:
@@
 The total block score is the sum of all matched patterns in that block.
+
+Example:
+```text
+Input entities:
+  intent=issue (confidence: 0.90), subject=claim (confidence: 0.60)
+Weights:
+  intent=1.0, subject=1.5
+Penalty factor:
+  wildcard=0.8
+
+Block A pattern: intent=issue, subject=Any
+Score = (0.90 × 1.0) + (0.60 × 1.5 × 0.8) = 0.90 + 0.72 = 1.62
+
+Block B pattern: intent=issue
+Score = (0.90 × 1.0) = 0.90
+```

Also applies to: 91-98, 101-105


85-86: Link to configuration docs for weights and penalty factor.

Add cross‑references so users know where to set these values.

Proposed additions (update the paths to your actual pages):

-    * `Weight` (default value is `1`) is a configured importance factor for that specific entity type.
+    * `Weight` (default value is `1`) is a configured importance factor for that specific entity type (see: [NLU Configuration › Weights](../nlu-engines/README.md#weights)).
@@
 The **penalty factor** is a global multiplier (typically less than `1`, e.g., `0.8`) applied when the match type is less specific — such as wildcard or loose entity type matches. It allows the system to:
+See: [NLU Configuration › Penalty factor](../nlu-engines/README.md#penalty-factor).

Also applies to: 101-104


15-21: Inline code formatting for entity names and values.

For readability, wrap entity names/values (intent, subject, location, insurance, etc.) in backticks consistently.

I can push a follow‑up diff if you prefer bulk edits.

Also applies to: 28-33, 38-42, 49-53, 60-74

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between b98afd4 and 5d66fc1.

📒 Files selected for processing (2)
  • docs/SUMMARY.md (1 hunks)
  • docs/user-guide/nlu/nlu-match-scoring.md (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • docs/SUMMARY.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/user-guide/nlu/nlu-match-scoring.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


17-17: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


27-27: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


37-37: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


48-48: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


59-59: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


93-93: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Frontend Tests
  • GitHub Check: API-Tests
🔇 Additional comments (1)
docs/user-guide/nlu/nlu-match-scoring.md (1)

55-74: Document deterministic tie‑breaker when scores are equal after penalties.

Specify the exact rule (e.g., more specific matches > higher number of matched entities > explicit block priority > stable ID order).

I can draft the subsection once you confirm the actual engine behavior.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (2)
docs/introduction/features.md (2)

35-36: Replace broken NLU link with a working target.

Use the actual NLU docs path.

-{% hint style="info" %}
-**What is NLU ?** In simple terms, NLU is a branch of AI that focuses on enabling computers to understand, interpret, and respond to human language in a way that is both meaningful and useful. You can read more about NLU in the [Broken link](broken-reference "mention") section.
-{% endhint %}
+{% hint style="info" %}
+**What is NLU ?** In simple terms, NLU enables computers to understand, interpret, and respond to human language. Learn more in the [NLU Engines](../user-guide/nlu/nlu-engines/README.md) section.
+{% endhint %}

104-106: Fix broken link in the Plugins hint.

Point to the Developer Guide.

-{% hint style="info" %}
-Check the [Broken link](broken-reference "mention") to learn more about Hexabot's API and how to develop plugins.
-{% endhint %}
+{% hint style="info" %}
+See the Developer Guide on [Extensions & Plugins](../developer-guide/integrations/hexabot-plugin-development.md) to learn more about Hexabot's API and plugin development.
+{% endhint %}
🧹 Nitpick comments (8)
docs/introduction/features.md (8)

9-9: Standardize labels and asset filenames; fix potential image 404s.

  • Multichannel → Multi-channel (matches section header).
  • Multi-language → Multilingual (matches section).
  • Normalize asset names with spaces before parentheses.
-...<td>Multichannel Communication</td>...<a href="../.gitbook/assets/Cards Cover - Channels (2).png">...
-...<td>Multi-language Support</td>...<a href="../.gitbook/assets/Cards Cover - Channels (3).png">...
-...<td>Extensive Customization using Plugins</td>...<a href="../.gitbook/assets/Cards Cover - GenAi(2).png">Cards Cover - GenAi(2).png</a>...
-...<td>User and Role Management</td>...<a href="../.gitbook/assets/Cards Cover - Channels(1).png">Cards Cover - Channels(1).png</a>...
+...<td>Multi-channel Communication</td>...<a href="../.gitbook/assets/Cards Cover - Channels (2).png">...
+...<td>Multilingual Support</td>...<a href="../.gitbook/assets/Cards Cover - Channels (3).png">...
+...<td>Extensive Customization using Plugins</td>...<a href="../.gitbook/assets/Cards Cover - GenAi (2).png">Cards Cover - GenAi (2).png</a>...
+...<td>User and Role Management</td>...<a href="../.gitbook/assets/Cards Cover - Channels (1).png">Cards Cover - Channels (1).png</a>...

71-73: Align header with internal anchor used in the cards table.

“&” vs “and” can generate different slugs. Use “and” to match the link.

-## **User Segmentation & Targeting** 
+## **User Segmentation and Targeting**

21-23: Minor wording/grammar fixes.

Hyphenation and term consistency.

-* **Entrypoint:** Choose which blocks should be the starting point for a subject specific conversation.
-* **Categorization:** You can choose to organize your conversation flows in categories that can be subject or domain specific.
+* **Entry point:** Choose which blocks should be the starting point for a subject‑specific conversation.
+* **Categorization:** Organize your conversation flows into categories that can be subject‑ or domain‑specific.

24-26: Use inclusive language and tighten phrasing.

-{% hint style="info" %}
-**What is a conversation ?** When the user interacts with the chatbot, he can have one or many conversations. Each conversation is subject specific and is defined by a set of blocks that are linked together.
-{% endhint %}
+{% hint style="info" %}
+**What is a conversation?** When a user interacts with the chatbot, they can have one or many conversations. Each conversation is subject‑specific and defined by a set of linked blocks.
+{% endhint %}

45-46: Remove redundancy and polish the “LLM RAG” copy.

-By default, Hexabot comes with a default installed plugin that is called **"LLM RAG"** that integrates with _OpenAI ChatGPT_. You can choose of course to build your own plugin that integrates with a custom fine-tuned LLM or any other LLM. This plugin leverages cutting-edge Large Language Models (LLMs) and Generative AI techniques to enhance your chatbot's contextual understanding and responsiveness.
+Hexabot ships with a preinstalled plugin, **LLM RAG**, which integrates with _OpenAI ChatGPT_. You can, of course, build your own plugin that integrates with a fine‑tuned or alternative LLM. This plugin leverages cutting‑edge Large Language Models (LLMs) and Generative AI techniques to enhance contextual understanding and responsiveness.

59-61: Add descriptive alt text/caption for accessibility.

-<figure><img src="../.gitbook/assets/image (10).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../.gitbook/assets/image (10).png" alt="Translation management UI showing languages and statuses"><figcaption><p>Translation Management</p></figcaption></figure>
-
-Hexabot provides comprehensive tools for managing multilingual chatbots. Our translation management system allows you to easily translate your chatbot's messages, prompts, and responses. Combined with advanced NLU capabilities for language detection and intent understanding, Hexabot empowers to build chatbots that seamlessly communicate with users in their preferred language.
+Hexabot provides comprehensive tools for managing multilingual chatbots. Our translation management system allows you to easily translate your chatbot's messages, prompts, and responses. Combined with advanced NLU capabilities for language detection and intent understanding, Hexabot empowers you to build chatbots that seamlessly communicate with users in their preferred language.

80-87: Add descriptive alt text/caption for accessibility.

-<figure><img src="../.gitbook/assets/image (11).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../.gitbook/assets/image (11).png" alt="Inbox view with ongoing conversations and agent takeover controls"><figcaption><p>Agent Takeover Inbox</p></figcaption></figure>

110-116: Add alt text/caption; end final bullet with a period.

-<figure><img src="../.gitbook/assets/image (9).png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../.gitbook/assets/image (9).png" alt="Analytics dashboard with conversation metrics and charts"><figcaption><p>Analytics & Reporting</p></figcaption></figure>
@@
-* **User Behavior Insights:** Gain a deeper understanding of how users interact with your chatbot. Analyze common queries, identify user preferences, and inform chatbot optimization strategies
+* **User Behavior Insights:** Gain a deeper understanding of how users interact with your chatbot. Analyze common queries, identify user preferences, and inform chatbot optimization strategies.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5d66fc1 and b801789.

⛔ Files ignored due to path filters (17)
  • docs/.gitbook/assets/Cards Cover - Channels (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Channels (2).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Channels (3).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Channels(1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Channels-1.png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Channels.png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Flow (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Flow (2).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Flow-1.png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - Flow.png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi (2).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi(1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi(2).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi-1 (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi-1.png is excluded by !**/*.png
  • docs/.gitbook/assets/Cards Cover - GenAi.png is excluded by !**/*.png
📒 Files selected for processing (1)
  • docs/introduction/features.md (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: API-Tests
  • GitHub Check: Frontend Tests
🔇 Additional comments (1)
docs/introduction/features.md (1)

13-13: Include exists — no spelling change required

The include ./docs/.gitbook/includes/visuel-editor-with-simple-text-block.md is present, so "visuel" is not a typo in this repo. Verification did, however, find unrelated issues: 'broken-reference' placeholders in docs/user-guide/nlu-training.md, docs/introduction/features.md, docs/README.md, and multiple missing files under docs/.gitbook/assets (see script output) — address those separately.

Likely an incorrect or invalid review comment.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (17)
docs/developer-guide/integrations/build-your-first-plugin.md (17)

7-7: Fix heading level jump (MD001).
Change H3 to H2 to avoid skipping levels.

-### Prerequisites
+## Prerequisites

9-11: De-duplicate Node.js prerequisite.
Remove the redundant second Node.js bullet and keep one clear requirement.

 * **TypeScript, Node.js and Nest.js:** Being familiar with [TypeScript](https://www.typescriptlang.org/docs/), [Node.js](https://nodejs.org/en/learn/getting-started/introduction-to-nodejs) and [Nest.js](https://nestjs.com/) makes the process of plugin development smoother. But don't worry if you're just getting started – our detailed guide will walk you through creating your first plugin.
-* **Node.js:** Ensure you have Node.js and a package manager (npm or yarn) installed.
-
+* Ensure you have Node.js (LTS) and a package manager (npm or yarn) installed.

12-12: Replace placeholder include.
untitled.md looks like a stub; either link a real include or remove it.

-{% include "../../.gitbook/includes/untitled.md" %}

14-14: Fix punctuation.
Remove the extra space before the colon.

-* **Docker :** Ensure you have Docker installed.
+* **Docker:** Ensure you have Docker installed.

31-31: Remove out-of-context reference.
The “Google Gemini in this case” is unrelated to the time plugin.

-* **Integration Code:** Code that defines how the plugin interacts with Hexabot and external APIs (like Google Gemini in this case).
+* **Integration Code:** Code that defines how the plugin interacts with Hexabot and (optionally) external APIs.

35-35: Grammar fix.
Singular subject.

-A Hexabot plugins resides in the following directory  `/extensions/plugins/` within the root folder of the Hexabot project. Here's the recommended project structure:
+A Hexabot plugin resides in the `/extensions/plugins/` directory at the root of your Hexabot project. Here's the recommended project structure:

129-136: Fix typo and clarify i18n file path.

-This folder stores translation filess for your plugin to be multilingual. You can add as many languages as needed by creating a new folder for each language under `i18n`  folder. Place under each language file a JSON document that will define your translation for a specific language. For example, the file `title.json` includes the translation of your plugin name.
+This folder stores translation files to make your plugin multilingual. Add a folder per language under `i18n`. In each language folder, add a JSON file for your strings. For example, `i18n/en/title.json` contains your plugin name:
+
+Create `i18n/en/title.json` with:

140-143: Avoid bare URL (MD034); use descriptive link.
Replace the bare URL/embed with a standard markdown link.

-Refer to this example of Gemini Plugin to better understand how to define your i18n translation string : 
-
-{% embed url="https://github.com/Hexastack/hexabot-plugin-gemini/tree/main/i18n/en" %}
+Refer to the Gemini plugin i18n files for a concrete example:  
+[Gemini plugin — i18n/en](https://github.com/Hexastack/hexabot-plugin-gemini/tree/main/i18n/en)

213-216: Ensure __dirname exists; ESM builds need a fallback.
If the plugin is compiled as ESM, __dirname is undefined. Confirm the build emits CJS for plugins, or add an ESM‑safe fallback.

Example ESM‑safe pattern:

import { dirname } from 'node:path';
import { fileURLToPath } from 'node:url';

const DIRNAME =
  // @ts-ignore
  typeof __dirname !== 'undefined'
    // @ts-ignore
    ? __dirname
    : dirname(fileURLToPath(import.meta.url));

getPath(): string {
  return DIRNAME;
}

228-242: Localize time formatting using user/settings locale.
Prefer the user’s locale (or a setting) over hard‑coding 'en-US'.

-    const formattedTime = now.toLocaleTimeString('en-US', { hour12: false });
+    const locale =
+      // adjust to your actual context schema
+      (context as any)?.user?.locale ??
+      (settings as any)?.locale ??
+      'en-US';
+    const formattedTime = now.toLocaleTimeString(locale, { hour12: false });

Also applies to: 312-314


260-260: Remove trailing punctuation in heading (MD026).

-#### Final Code:
+#### Final Code

285-289: Fix typo in comment.

-    // default trigger for you custom block
+    // default trigger for your custom block

283-288: Consider defaulting starts_conversation to false.
Prevents accidental hijacking of entry flows; users can enable it per use case.

-    starts_conversation: true,
+    starts_conversation: false,

348-349: Consistency: capitalize “Visual Editor” and fix CLI formatting.

-Creating a new plugin will help you create a new custom block in the [Visual editor](../../user-guide/visual-editor/).
+Creating a new plugin will help you create a new custom block in the [Visual Editor](../../user-guide/visual-editor/).

-1. **Restart Hexabot API service** so that it recognises the newly added plugin. If you are using the development mode (using the `_**hexabot dev**_` CLI command), the API should restart automatically. In case you have installed extra node dependencies, then you may need to stop/start the service.
+1. **Restart Hexabot API service** so that it recognises the newly added plugin. If you are using development mode (the `hexabot dev` CLI command), the API should restart automatically. If you installed extra Node dependencies, you may need to stop/start the service.

Also applies to: 50-50


368-371: Avoid bare URLs (MD034) in examples section.
Use descriptive markdown links instead of embeds to satisfy the linter.

-{% embed url="https://github.com/Hexastack/hexabot-plugin-gemini" %}
-
-{% embed url="https://github.com/Hexastack/hexabot-plugin-chatgpt" %}
+* [Hexabot Plugin — Gemini](https://github.com/Hexastack/hexabot-plugin-gemini)
+* [Hexabot Plugin — ChatGPT](https://github.com/Hexastack/hexabot-plugin-chatgpt)

109-121: TS version note: uses satisfies (TS ≥ 4.9).
Add a prerequisite note to avoid build errors on older TypeScript versions.

Suggested addition under “Prerequisites”:

  • TypeScript 4.9+ (required for the satisfies operator used in settings.ts)

354-354: Asset present — rename file to avoid spaces.
Verified docs/.gitbook/assets/Screenshot from 2024-12-10 16-49-00.png exists. The src in docs/developer-guide/integrations/build-your-first-plugin.md:354 will resolve, but spaces are URL‑encoded — rename to screenshot-2024-12-10-16-49-00.png (or similar hyphenated name) and update the src.

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between d25eb98 and 0b047f1.

⛔ Files ignored due to path filters (1)
  • docs/.gitbook/assets/time-Plugin-settings.jpg is excluded by !**/*.jpg
📒 Files selected for processing (2)
  • docs/.gitbook/includes/time-plugin-settings.md (1 hunks)
  • docs/developer-guide/integrations/build-your-first-plugin.md (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • docs/.gitbook/includes/time-plugin-settings.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/developer-guide/integrations/build-your-first-plugin.md

7-7: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


142-142: Bare URL used

(MD034, no-bare-urls)


260-260: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


368-368: Bare URL used

(MD034, no-bare-urls)


370-370: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (1)
docs/developer-guide/integrations/build-your-first-plugin.md (1)

309-311: Confirm settings scope.
Validate that this.settingService.getSettings() returns plugin‑scoped settings; otherwise fetch by plugin/block identifier.

If needed, prefer a scoped call (example):

const settings = await this.settingService.getPluginSettings('currenttime-plugin');

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
docs/user-guide/users-and-roles/manage-roles.md (1)

1-36: Fix markdown lint and formatting nits in docs/user-guide/users-and-roles/manage-roles.md

  • Wrap long lines to ≤80 chars (MD013) — lines: 3, 14, 18, 20, 23, 30, 35.
  • Convert emphasis-used-as-heading to a real heading (MD036) — line 16: "3. Grant Permissions" → use a Markdown heading (e.g., ###).
  • Normalize list markers/indentation (MD030, MD007) — use a single space after list markers and 2-space nested indentation for the permissions list (lines 20–28).
  • Remove stray HTML entity ' ' and trailing non-breaking spaces — lines 26–28.
  • Remove extra space before colons in bold labels: change 'User :' / 'Role :' → 'User:' / 'Role:' (lines 26–27).
  • Normalize button label formatting and spacing around "+ Add" (collapse extra spaces) — line 14.
♻️ Duplicate comments (16)
docs/user-guide/manage-settings/chatbot-global-fallback.md (1)

18-20: Fix capitalization and punctuation in example messages.

Matches a prior comment; also remove “if” for clarity in the first example and add a terminal period to the second.

Apply:

-  * "I'm not sure if I understand your request. Could you please rephrase it?"
-  * "Sorry, but I didn't understand your request. Maybe you can check the menu"
+  * "I'm not sure I understand your request. Could you please rephrase it?"
+  * "Sorry, but I didn't understand your request. Maybe you can check the menu."
docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md (3)

12-15: Fix redundancy, colon spacing, and add image alt text (MD045).

Tighten wording, remove extra space before colon, and add alt text to images.

-* **Start of a Flow:** If a "Simple Text" block is the first step in your flow, enable the ![](<../../../.gitbook/assets/image (17).png>)  "**Entrypoint**" option to mark it as the starting point in your conversation flow. You just need to toggle on the "**Entrypoint**" option in the block edit form to designate it as the starting point in your conversation flow.
-* **Continuing a Flow:** If the block is part of a longer conversation, connect it to the preceding block to define when the text message should be sent. This connection could be from any type of block, like a Quick Replies block, a User Input block, or another Simple Text block. Each block has a single input port and two types of output ports :&#x20;
-  * ![](<../../../.gitbook/assets/image (15).png>) **Next/Previous Block(s) Port:** Defines which block(s) should be triggered next, depending on the user input/reply.
-  * ![](<../../../.gitbook/assets/image (16).png>) **Attached Block Port:** This should be used if you would like to send subsequent messages.
+* **Start of a Flow:** If the "Simple Text" block starts the conversation, toggle ![Entrypoint toggle](<../../../.gitbook/assets/image (17).png>) **Entrypoint** in the block edit form.
+* **Continuing a Flow:** If the block is part of a longer conversation, connect it to the preceding block. This can come from any block type (e.g., Quick Replies, User Input, Simple Text). Each block has one input port and two output port types:
+  * ![Next/Previous port](<../../../.gitbook/assets/image (15).png>) **Next/Previous Block(s) Port:** Determines which block(s) trigger next based on user input.
+  * ![Attached port](<../../../.gitbook/assets/image (16).png>) **Attached Block Port:** Use to send subsequent messages.

21-31: Grammar/style nits: tabs naming, message pluralization, concise options.

Align tab labels, fix plural, and tighten the typing indicator text.

-* **Triggers Tab (Optional):**
+* **Triggers (optional):**
@@
-* **Message Tab:**
-  * Enter the text you want to send to the user in the "Message" field.
-  * You can define one or multiple text message, the chatbot will randomly send one of them.
-* **Options Tab (Optional):**
-  * **Typing Indicator:** Show a typing indicator before sending the message.
+* **Message:**
+  * Enter the text you want to send in the "Message" field.
+  * You can define one or multiple messages; the chatbot will randomly send one.
+* **Options (optional):**
+  * **Typing indicator:** Toggle to show a typing indicator before sending the message.

3-3: Broken include: fix filename (GitBook build blocker).

Typo in include path prevents rendering.

Apply:

-{% include "../../../.gitbook/includes/simle-text-block.md" %}
+{% include "../../../.gitbook/includes/simple-text-block.md" %}

Verify includes across the docs:

#!/bin/bash
# Find likely misspelled include targets and unresolved include files.
rg -nP '\{\%\s*include\s+["'\'']\.\.\/\.\.\/\.\.\/\.gitbook\/includes\/[^"'\'' ]+["'\'']\s*\%\}'
fd -a 'simle-text-block.md|attachement-block.md' docs/.gitbook/includes || true
docs/faq/how-can-i-add-the-chatbot-widget-to-my-website.md (1)

62-70: Fix jsDelivr paths (point to concrete files) and include CSS in CDN examples.

Directory-only URLs under /dist/ won’t load. Also include the stylesheet. Pin versions rather than using @latest to avoid breaking changes.

Apply this diff:

-```
-<script src="https://cdn.jsdelivr.net/npm/hexabot-chat-widget@latest/dist/"></script>
-```
+```html
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/hexabot-chat-widget@latest/dist/style.css" crossorigin="anonymous">
+<script src="https://cdn.jsdelivr.net/npm/hexabot-chat-widget@latest/dist/hexabot-widget.umd.js" crossorigin="anonymous"></script>
+```

-```
-<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/"></script>
-```
+```html
+<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/style.css" crossorigin="anonymous">
+<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/hexabot-widget.umd.js" crossorigin="anonymous"></script>
+```

Optional: add SRI attributes for both tags once hashes are computed.

docs/user-guide/context-variables.md (1)

62-66: Scope note corrected — resolved

The note now correctly contrasts non‑permanent (conversation‑scoped) vs permanent (subscriber‑scoped).

docs/user-guide/users-and-roles/manage-roles.md (4)

5-32: Fix heading levels and normalize step titles (markdownlint MD001).

Use H2s for steps and sentence case; this also resolves MD001.

Apply:

-**1. Access Role Management:**
+## 1. Access role management
@@
-**2. Creating New Role:**
+## 2. Create a new role
@@
-**3. Grant Permissions**
+## 3. Grant permissions
@@
-**4. Deleting Roles:**
+## 4. Delete roles

3-3: Tighten intro phrasing.

Concise, active voice; remove “able to perform.”

-Roles in Hexabot define specific sets of permissions that determine what actions users can perform. By creating and assigning roles, you can control who has access to different parts of the system and what they are able to perform.
+Roles in Hexabot define sets of permissions that determine what actions users can perform. By creating and assigning roles, you control who can access different parts of the system and what they can do.

7-9: Add missing articles and simplify navigation wording.

-* Go to "Users" or "User Management" section.
-* Look for "Roles" or "Role Management" within the user management settings.
+* Go to the "Users" or "User Management" section.
+* Open "Roles" or "Role Management" within user management.

13-15: Normalize button formatting and tighten copy.

-* **Click  "+ Add "** This will open a form where you can define the new role.
-* **Enter Role Name:** Provide a clear and descriptive name for the role, like "Developer," "Content Manager," "Project Manager," etc.
+* Click **+ Add**. This opens a form where you can define the new role.
+* Enter a role name: Provide a clear, descriptive name (e.g., "Developer", "Content Manager", "Project Manager").
docs/developer-guide/contributors-installation-guide.md (1)

11-12: Tighten prerequisite bullets.

-* **Docker:** We recommend using Docker to start the app since multiple services are required (MongoDB, Redis, Prometheus, etc.). All the necessary Docker Compose files are located in the docker folder.
-* **Node.js:** For development purposes, ensure you have Node.js >= v18.17.0 installed. We recommend using nvm (Node Version Manager) to easily manage and update your Node.js versions.
+* **Docker:** We recommend using Docker to start the app since multiple services are required (MongoDB, Redis, Prometheus, etc.). All necessary Compose files are in the `docker/` folder.
+* **Node.js:** Ensure Node.js >= v18.17.0 for development. We recommend using `nvm` to manage Node.js versions.
docs/developer-guide/extensions.md (2)

9-15: Fix heading hierarchy (MD001).

Promote section headings to increment by one.

-### How to Install an Extension in Hexabot
+## How to Install an Extension in Hexabot
@@
-#### Steps to Install an Extension
+### Steps to Install an Extension
@@
-### Types of Extensions
+## Types of Extensions

Also applies to: 62-62


64-64: Add alt text to images (MD045).

-#### ![](<../.gitbook/assets/image (1).png>)Channels 
+#### ![Channels icon](<../.gitbook/assets/image (1).png>) Channels
@@
-#### ![](<../.gitbook/assets/image (1) (1).png>)Plugins
+#### ![Plugins icon](<../.gitbook/assets/image (1) (1).png>) Plugins
@@
-#### ![](<../.gitbook/assets/image (2).png>)Helpers
+#### ![Helpers icon](<../.gitbook/assets/image (2).png>) Helpers

Also applies to: 76-76, 86-86

docs/developer-guide/hexabot-api.md (2)

32-33: Grammar fix in Settings module.
[raise_nitpick_refactor]

-* **Settings:** A module for management all types of settings that can be adjusted to customize the chatbot.
+* **Settings:** A module for managing all types of settings that can be adjusted to customize the chatbot.

36-37: Typo: “Websicket” → “WebSocket”.

-* **WebSocket:** Adds support for Websicket with Socket.IO, enabling real-time communication for events like live chat and user interactions.
+* **WebSocket:** Adds support for WebSocket with Socket.IO, enabling real-time communication for events like live chat and user interactions.
docs/quickstart/installation.md (1)

25-35: Tighten Windows setup; fix link/spacing.

-<summary>Do you want to install Hexabot on a Windows machine?</summary>
+<summary>Installing on Windows (WSL2)</summary>
@@
-3. After installation, start Docker Desktop and verify that WSL integration is enabled:
-4. Open Docker Desktop and go to Settings. Under the General tab, ensure that "Use the WSL 2 based engine" is selected. Under Resources > WSL Integration, enable integration with your installed Linux distribution (e.g., Ubuntu). Restart your machine to finalize the Docker installation.
+3. After installation, start Docker Desktop and verify that WSL integration is enabled.
+4. In Docker Desktop → Settings: under General, enable "Use the WSL 2 based engine". Under Resources → WSL Integration, enable your Linux distribution (e.g., Ubuntu). Restart your machine to finalize the installation.
@@
-6. Follow Hexabot [installation ](installation.md#installation)steps below
+6. Follow the installation steps below.
@@
-Learn more : [https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers)
+Learn more: [https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers](https://learn.microsoft.com/en-us/windows/wsl/tutorials/wsl-containers)
🧹 Nitpick comments (41)
docs/user-guide/nlu/nlu-engines/README.md (11)

5-5: Fix heading level increments (MD001).

After an H1, next sections should be H2, not H3.

-### LLM NLU Engine
+## LLM NLU Engine
-### Ludwig NLU Engine
+## Ludwig NLU Engine
-### TensorFlow NLU Engine
+## TensorFlow NLU Engine
-### Building Your Own NLU Engine
+## Building Your Own NLU Engine
-### Summary
+## Summary

Also applies to: 20-20, 33-33, 47-47, 66-66


7-8: “Default NLU engine” — confirm and cross-link.

If LLM is truly the default in Settings, state where to change it and link to the dedicated LLM page.

-Leverages Large Language Models ... This is the default NLU engine ...
+Leverages Large Language Models ... This is the default NLU engine (Settings → NLU → Engine). See the detailed guide in [LLM NLU Engine](./llm-nlu-engine.md).

11-12: Bullet punctuation consistency.

End both bullets with periods.

-* No need to train your own models.
-* Quick setup and instant results for supported intents
+* No need to train your own models.
+* Quick setup and instant results for supported intents.

16-18: Clarify “no confidence score” and guide users to scoring/fallbacks.

Add a link to the match/scoring page and suggest alternatives (thresholds, heuristics).

-* Does not provide a confidence score (e.g., probability of accuracy).
+* Does not provide a native confidence score (probability). See [NLU Match Scoring](../nlu-match-scoring.md) for strategies to approximate confidence and design fallbacks.
-* Performance may vary for lesser-known languages and dialects.
+* Performance may vary for low‑resource languages and dialects.

22-28: Add deep-dive link and prerequisites for Ludwig.

Point to the Ludwig engine page and note minimal prerequisites (Python, CUDA optional).

-Uses [Ludwig] ... without diving deep into coding.
+Uses [Ludwig] ... without deep coding. See [Ludwig NLU Engine](./ludwig-nlu-engine.md) for setup, sample configs, and training tips. Prereqs: Python 3.10+, optional GPU/CUDA.

35-46: Reference the boilerplate and set expectations.

Link the boilerplate and call out maintenance burden and version assumptions.

-A Python boilerplate that we built ourselves is provided ...
+A Hexabot‑provided Python boilerplate is available (link in repo) to kickstart TensorFlow models. Expect hands‑on model/devops work; target Python and TF versions are noted in the boilerplate README.

51-60: Strengthen custom-engine integration with a minimal API schema.

Add a tiny request/response example plus auth/timeout guidance.

-* Develop an inference service that performs intent detection, entity recognition, or other NLU tasks.
-* The service should expose an API endpoint that accepts input text and returns predictions.
+* Develop an inference service (HTTP). Example:
+  Request: { "text": "Book a flight to Paris", "locale": "en" }
+  Response: { "intent": "book_flight", "entities": [{ "type": "location", "value": "Paris" }], "confidence": 0.82 }
+* Require auth (e.g., Bearer token). Document timeouts (≤2s) and error codes.

56-60: Mention how to register the helper extension.

Tell users where in Hexabot to wire the extension.

-* Implement a helper extension in Hexabot to call the custom NLU service.
+* Implement a helper extension in Hexabot to call the custom NLU service, then register it under Settings → Extensions and select it under Settings → NLU → Engine.

63-65: Add concrete links.

Replace “GitHub repository” with an actual link or relative paths to examples.

-* Source code is available on Hexabot’s GitHub repository.
+* See examples in the repository: docs/user-guide/nlu/nlu-engines/{llm-nlu-engine.md,ludwig-nlu-engine.md,tensorflow-nlu-engine.md} and the /examples/nlu-engines directory on GitHub.

68-68: Add a brief Privacy & Compliance note.

LLM/TensorFlow engines may send user text to external services; call out PII handling and data retention.

-... expanding the possibilities of natural language understanding in your conversational AI projects.
+... expanding the possibilities of NLU in your projects.
+
+Note: Review data handling and PII policies for each engine/provider. Configure redaction/anonymization, retention, and DPA/region settings as required by your compliance standards.

1-69: Optional: add a mini comparison table.

A compact feature matrix (training needed, confidence available, setup time, skills) improves scannability.

docs/user-guide/manage-settings/chatbot-global-fallback.md (5)

5-5: Use proper heading hierarchy (fix MD001).

Numbered section titles are bolded list text, not headings. Convert them to h2 to satisfy markdownlint MD001 and improve TOC/semantics.

Apply:

-**1. Access Global Fallback Settings:**
+## Access Global Fallback Settings
@@
-**2. Configure the Global Fallback Message:**
+## Configure the Global Fallback Message
@@
-**3. (Optional) Configure Fallback Triggers:**
+## Optional: Configure Fallback Triggers
@@
-**4. Enable Global Fallback**
+## Enable Global Fallback

Also applies to: 14-14, 21-21, 28-28


7-11: Remove stray backslashes and normalize list indentation.

The trailing backslashes introduce spurious line breaks and violate style consistency.

Apply:

-* Navigate to the "Settings" section.
-*   Select the "Chatbot" view.\
-    \
-
-
+* Navigate to the "Settings" section.
+* Select the "Chatbot" view.

12-12: Add descriptive alt text and a figcaption for accessibility.

Empty alt/caption hurts a11y and search.

Apply:

-<figure><img src="../../.gitbook/assets/image (34).png" alt=""><figcaption></figcaption></figure>
+<figure>
+  <img src="../../.gitbook/assets/image (34).png" alt="Hexabot Settings → Chatbot view showing the Global Fallback configuration">
+  <figcaption>Settings → Chatbot → Global Fallback</figcaption>
+</figure>

23-23: Grammar nit: “blocks configurations” → “block configurations”; “might” → “may”.

Small clarity polish.

Apply:

-* Some Hexabot blocks configurations might allow you to define specific conditions that trigger the global fallback message.
+* Some Hexabot block configurations may allow you to define specific conditions that trigger the global fallback message.

30-30: Consistent feature casing: “Global Fallback”.

Use title case when referring to the feature name; keep lowercase for generic uses.

Apply:

-* Click on the switch button to enable/disable your global fallback settings.
+* Click the switch to enable/disable your Global Fallback settings.
@@
-* Limit the number of times the global fallback message is triggered to prevent a frustrating user experience. If a user repeatedly sends confusing input, you might consider automatically redirecting them to a human agent.
+* Limit the number of times the Global Fallback message is triggered to prevent a frustrating user experience. If a user repeatedly sends confusing input, consider automatically redirecting them to a human agent.

Also applies to: 35-39

docs/faq/how-can-i-add-the-chatbot-widget-to-my-website.md (6)

19-23: Add languages to fenced code blocks (markdownlint MD040).

Tag blocks with html (and js where applicable) to satisfy lint and improve DX.

Example update for the first block:

-```
+```html
 <script crossorigin src="https://cdn.jsdelivr.net/npm/react@18/umd/react.production.min.js"></script>
 <script crossorigin src="https://cdn.jsdelivr.net/npm/react-dom@18/umd/react-dom.production.min.js"></script>
 <script src="<<WIDGET_URL>>/hexabot-widget.umd.js"></script>
-```
+```

Please apply similarly to other code blocks in this file.

Also applies to: 26-28, 32-56, 62-64, 68-70


11-16: Fix heading level increments (markdownlint MD001).

H3 follows H1; use H2, and bump subheadings accordingly.

-### Embedding the Chat Widget
+## Embedding the Chat Widget
-#### Step-by-Step Instructions
+### Step-by-Step Instructions
-#### Using the Official Widget CDN
+### Using the Official Widget CDN
-### Widget Settings
+## Widget Settings
-### Customizing the Widget
+## Customizing the Widget
-### Examples
+## Examples
-### Summary
+## Summary

Also applies to: 58-58, 74-74, 91-91, 100-100, 104-104


32-56: Use React 18 root API and make Shadow DOM attach idempotent.

Prevents errors on re-embed and aligns with React 18 best practices.

-    <script>
-      // Create the shadow root and attach it to the widget container
-      const createElement = (tag, props = {}) => Object.assign(document.createElement(tag), props);
-      const shadowContainer = createElement("div");
-      document
-          .getElementById('hb-chat-widget')
-          .attachShadow({ mode: 'open' })
-          .append(
-            shadowContainer,
-            createElement("link", {
-              rel: "stylesheet",
-              href: "<<WIDGET_URL>>/style.css"
-            })
-          );
-
-      // Render the widget inside the shadow root
-      ReactDOM.render(
-        React.createElement(HexabotWidget, {
-          apiUrl: 'https://api.yourdomain.com',
-          channel: 'web-channel'
-        }),
-        shadowContainer,
-      );
-    </script>
+    <script>
+      // Create or reuse shadow root and render
+      const host = document.getElementById('hb-chat-widget');
+      const sr = host.shadowRoot || host.attachShadow({ mode: 'open' });
+      const create = (tag, props = {}) => Object.assign(document.createElement(tag), props);
+      // Ensure stylesheet exists once
+      if (![...sr.querySelectorAll('link[rel="stylesheet"]')].some(l => l.href.includes('/style.css'))) {
+        sr.append(create('link', { rel: 'stylesheet', href: '<<WIDGET_URL>>/style.css', crossOrigin: 'anonymous' }));
+      }
+      // Mount container once
+      const container = sr.querySelector('#hb-container') || create('div', { id: 'hb-container' });
+      if (!container.isConnected) sr.append(container);
+      // React 18 root API
+      const root = container._root || ReactDOM.createRoot(container);
+      container._root = root;
+      root.render(React.createElement(HexabotWidget, {
+        apiUrl: 'https://api.yourdomain.com',
+        channel: 'web-channel'
+      }));
+    </script>

20-22: Pin React/ReactDOM versions and add defer; optional SRI.

Reduces breakage and avoids render-blocking.

-<script crossorigin src="https://cdn.jsdelivr.net/npm/react@18/umd/react.production.min.js"></script>
-<script crossorigin src="https://cdn.jsdelivr.net/npm/react-dom@18/umd/react-dom.production.min.js"></script>
+<script defer crossorigin="anonymous" src="https://cdn.jsdelivr.net/npm/[email protected]/umd/react.production.min.js"></script>
+<script defer crossorigin="anonymous" src="https://cdn.jsdelivr.net/npm/[email protected]/umd/react-dom.production.min.js"></script>

Optional: add integrity attributes once hashes are available.


72-72: Brand names casing.

Use “jsDelivr” and “npm” per brand style.

-These scripts will load the Hexabot widget directly from the JsDelivr CDN, which pulls from the package published on the [NPM registry](https://www.npmjs.com/package/hexabot-chat-widget).
+These scripts will load the Hexabot widget directly from the jsDelivr CDN, which pulls from the package published on the [npm registry](https://www.npmjs.com/package/hexabot-chat-widget).

88-90: Security nits: prefer HTTPS and clarify token sensitivity.

  • Show https in examples; avoid suggesting http localhost unless necessary.
  • Add a note that the “Verification Token” is non-secret and must not grant API access.
-* **Allowed Domains**: Define the domains where the widget can be embedded (e.g., `http://localhost:8080`).
-* **Verification Token**: Set a token for verifying widget requests.
+* **Allowed Domains**: Define the domains where the widget can be embedded (e.g., `https://localhost:8080` during development, production origins over HTTPS).
+* **Verification Token**: Set a non-secret token used only to verify embed requests (do not use API keys or secrets here).
docs/user-guide/context-variables.md (5)

13-16: Fix heading level increments (MD001) and normalize section hierarchy

Headings jump from H1 to H3. Use H2 for top-level sections under the page title; use H3 for sub-sections.

Apply:

-### 1. Types of Context Variables
+## 1. Types of Context Variables
@@
-#### 1. Non-Permanent Context Variables
+### 1. Non-Permanent Context Variables
@@
-#### 2. Permanent Context Variables
+### 2. Permanent Context Variables
@@
-### **2. Access Context Variables page**
+## 2. Access Context Variables page
@@
-### **3. Creating a New Context Variable**
+## 3. Creating a New Context Variable
@@
-### **4. Managing Existing Context Variables**
+## 4. Managing Existing Context Variables
@@
-### **5. Using Context Variables**
+## 5. Using Context Variables

Also applies to: 17-30, 31-35, 46-51, 52-60


33-33: Use a single term: “Context Variables”

Avoid switching between “Context Vars” and “Context Variables”.

-Navigate to the "Context Vars" or "Context Variables" section. This is typically found in the main menu.
+Navigate to the Context Variables section in the main menu.
@@
-* **View Existing Variables:** In the "Context Vars" section, you can view a list of the context variables you've created.
+* **View Existing Variables:** In the Context Variables section, you can view a list of the context variables you've created.

Also applies to: 48-49


49-50: Grammar/clarity: “its” and “internal name”

Minor wording fix; clarifies immutability of the internal identifier.

-* **Edit Variable label:** You can edit a variable's label. However, you cannot change it name once it's created.
+* **Edit variable label:** You can edit a variable's label. However, you cannot change its internal name after creation.

58-59: Grammar: “is triggered”, “will be able”, and “replaced”; remove stray entity

Tighten phrasing and remove the trailing .

-Once the block gets triggered, the value will be stored within the context variable and you would be able to access it through the context. For example, you can use it in a text message by injecting `{phone_number}` and it will be replace automatically by the value that has been captured:&#x20;
+Once the block is triggered, the value is stored in the context variable and you will be able to access it via the context. For example, inject `{phone_number}` in a text message and it will be replaced automatically by the captured value:

24-30: Add data-privacy note for permanent variables

Permanent variables may store PII (phone, email). Consider an explicit retention/consent reminder.

 * **Example**: If a user provides their preferred language or opts into notifications, the bot can store this preference permanently. The bot will retain this information for future use, without needing to ask the user again in subsequent conversations.
+
+{% hint style="warning" %}
+Privacy reminder: Permanent variables can include personal data (e.g., phone numbers, emails). Ensure you have consent, define retention/deletion policies, and comply with applicable regulations. Deleting a variable removes all stored values.
+{% endhint %}
docs/user-guide/users-and-roles/manage-roles.md (4)

18-21: Remove redundant subheading bullet; improve clarity and UI label styling.

-Newly created roles will initially have no granted permissions. Click the "Permissions" button to grant access to your new role or update the permissions for an existing role.
-
-*   **Grant Permissions:** The role management interface will typically provide a list of available permissions. Select the specific permissions you want to grant to users with this role (e.g., read, create, update, delete):
+New roles initially have no permissions. Click **Permissions** to grant access to the new role or update an existing role.
+
+The role management interface lists available permissions. Select the permissions to grant to this role (e.g., Read, Create, Update, Delete):

22-30: Fix colon spacing, stray HTML entities, and wording.

-    * **User :** Access to manage users&#x20;
-    * **Role :** Access to manage roles&#x20;
-    * ...&#x20;
-
-    **And other Permissions:** The specific permissions available may vary depending on the version of Hexabot.
+    * **User:** Access to manage users
+    * **Role:** Access to manage roles
+    * ...
+
+    Other permissions: The specific permissions available may vary by Hexabot version.

34-35: Clarify delete behavior and align casing.

-* **Locate the Role:** Find the role you want to delete.
-* **Click "Delete":** Be careful when deleting roles, as this will remove all permissions associated with the role. Users assigned to that role will lose their access to the specified features.
+* Locate the role: Find the role you want to delete.
+* Click **Delete**: Deleting a role removes all permissions associated with it. Users assigned to the role will lose access to those features.

36-36: Add cross-link to related page (helps navigation).

+
+See also: [Manage users](./manage-users.md).
docs/developer-guide/contributors-installation-guide.md (3)

18-20: Remove shell prompts and add bash fences (fix MD014).

Use plain commands in fenced blocks with a language.

-```bash
-$ git clone https://github.com/hexastack/hexabot.git
-```
+```bash
+git clone https://github.com/hexastack/hexabot.git
+```

-```bash
-$ npm i -g hexabot-cli
-$ cd hexabot/
-$ npm i
+```bash
+npm i -g hexabot-cli
+cd hexabot/
+npm i

-bash -$ hexabot init +bash
+hexabot init


-```bash
-$ hexabot dev
+```bash
+hexabot dev


Also applies to: 26-30, 36-38, 44-46

---

`34-41`: **“Makefile” vs CLI mismatch; clarify env init.**

Text says use Makefile but the command uses the CLI.

```diff
-To configure the environment variables, use the Makefile at the root folder for initialization:
+To configure environment variables, use the Hexabot CLI:
@@
-This will copy the `.env.example` file to `.env` in the `./docker` directory if the file does not already exist.
+Copies `.env.example` to `.env` in the `docker/` directory if it does not already exist.

Please confirm whether a Makefile target (e.g., make init) also exists and should be documented.


55-61: Add a security warning for default credentials.

Readers may reuse defaults outside localhost.

 Live Chat Widget is accessible via [http://localhost:5173](http://localhost:5173)
+
+{% hint style="danger" %}
+Security: Default credentials are for local development only. If you expose the app or run in production, create an admin user and change the password immediately.
+{% endhint %}
docs/developer-guide/extensions.md (1)

101-103: Fix typo: “liibrary” → “library”.

-Visit [hexabot.ai/extensions](https://hexabot.ai/extensions) to explore the liibrary of extensions available for installation and reuse.
+Visit [hexabot.ai/extensions](https://hexabot.ai/extensions) to explore the library of extensions available for installation and reuse.
docs/developer-guide/hexabot-api.md (1)

136-139: Minor: clarify wording.

-For detailed information about the API routes and usage, refer to the Swagger API documentation by visiting the API url `/docs` once run it in development mode.
+For detailed route information, open the Swagger UI at `/docs` when running in development mode.
@@
-It's also possible to access the API reference documentation by running `npm run doc`.
+You can also generate the API reference by running `npm run doc`.
docs/quickstart/installation.md (2)

84-90: Not “SSH into the container”.

Use “exec into the container” for Docker.

-Notice that we added an extra service called [Ollama](https://ollama.com/). Ollama makes it easy to get up and running with large language models locally. Make sure to SSH into the container and pull the model(s) you would like to use:
+Notice that we added an extra service called [Ollama](https://ollama.com/). Ollama makes it easy to run local LLMs. Exec into the container and pull the model(s) you want to use:

93-94: Terminate sentence with a period.

-**Note:** The first time you run the app, Docker will take some time to download all the required images
+**Note:** The first time you run the app, Docker will take some time to download all the required images.
docs/developer-guide/integrations/build-your-first-plugin.md (3)

35-37: Grammar/typos: singular/plural; “files”.

-A Hexabot plugins resides in the following directory  `/extensions/plugins/` within the root folder of the Hexabot project. Here's the recommended project structure:
+A Hexabot plugin resides in the `/extensions/plugins/` directory at the project root. Here's the recommended structure:
@@
-This folder stores translation filess for your plugin to be multilingual.
+This folder stores translation files for your plugin to be multilingual.

Also applies to: 129-131


348-350: Consistency: US English (“recognizes”).

-**Restart Hexabot API service** so that it recognises the newly added plugin.
+**Restart Hexabot API service** so that it recognizes the newly added plugin.

142-143: Avoid bare URLs (MD034) — add link text.

-{% embed url="https://github.com/Hexastack/hexabot-plugin-gemini/tree/main/i18n/en" %}
+{% embed url="https://github.com/Hexastack/hexabot-plugin-gemini/tree/main/i18n/en" %}
+[Gemini plugin i18n (en)](https://github.com/Hexastack/hexabot-plugin-gemini/tree/main/i18n/en)
@@
-{% embed url="https://github.com/Hexastack/hexabot-plugin-gemini" %}
+{% embed url="https://github.com/Hexastack/hexabot-plugin-gemini" %}
+[hexabot-plugin-gemini](https://github.com/Hexastack/hexabot-plugin-gemini)
@@
-{% embed url="https://github.com/Hexastack/hexabot-plugin-chatgpt" %}
+{% embed url="https://github.com/Hexastack/hexabot-plugin-chatgpt" %}
+[hexabot-plugin-chatgpt](https://github.com/Hexastack/hexabot-plugin-chatgpt)

Also applies to: 368-372

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 0b047f1 and ebe3bf9.

⛔ Files ignored due to path filters (11)
  • docs/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1) (1) (1) (1) (1) (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1) (1) (1) (1) (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1) (1) (1) (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1) (1) (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1) (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (35).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (36).png is excluded by !**/*.png
  • docs/.gitbook/assets/image.png is excluded by !**/*.png
📒 Files selected for processing (27)
  • docs/.gitbook/includes/add-new-content-type-form.md (1 hunks)
  • docs/.gitbook/includes/untitled (1).md (1 hunks)
  • docs/.gitbook/includes/untitled.md (1 hunks)
  • docs/developer-guide/contributors-installation-guide.md (1 hunks)
  • docs/developer-guide/extensions.md (1 hunks)
  • docs/developer-guide/hexabot-api.md (1 hunks)
  • docs/developer-guide/integrations/README.md (1 hunks)
  • docs/developer-guide/integrations/build-your-first-plugin.md (1 hunks)
  • docs/developer-guide/integrations/hexabot-plugin-development.md (1 hunks)
  • docs/faq/how-can-i-add-the-chatbot-widget-to-my-website.md (1 hunks)
  • docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (1 hunks)
  • docs/introduction/features.md (1 hunks)
  • docs/quickstart/installation.md (1 hunks)
  • docs/user-guide/context-variables.md (1 hunks)
  • docs/user-guide/knowledge-base/content-types.md (1 hunks)
  • docs/user-guide/knowledge-base/media-library.md (1 hunks)
  • docs/user-guide/manage-settings/chatbot-global-fallback.md (1 hunks)
  • docs/user-guide/manage-settings/web-channel.md (1 hunks)
  • docs/user-guide/nlu/README.md (1 hunks)
  • docs/user-guide/nlu/nlu-engines/README.md (1 hunks)
  • docs/user-guide/nlu/nlu-engines/ludwig-nlu-engine.md (1 hunks)
  • docs/user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md (1 hunks)
  • docs/user-guide/subscribers.md (1 hunks)
  • docs/user-guide/users-and-roles/manage-roles.md (1 hunks)
  • docs/user-guide/users-and-roles/manage-users.md (1 hunks)
  • docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md (1 hunks)
  • docs/user-guide/visual-editor/using-advanced-blocks.md (1 hunks)
✅ Files skipped from review due to trivial changes (4)
  • docs/.gitbook/includes/add-new-content-type-form.md
  • docs/.gitbook/includes/untitled (1).md
  • docs/user-guide/manage-settings/web-channel.md
  • docs/.gitbook/includes/untitled.md
🚧 Files skipped from review as they are similar to previous changes (12)
  • docs/user-guide/nlu/README.md
  • docs/user-guide/subscribers.md
  • docs/developer-guide/integrations/README.md
  • docs/user-guide/users-and-roles/manage-users.md
  • docs/user-guide/knowledge-base/media-library.md
  • docs/user-guide/knowledge-base/content-types.md
  • docs/user-guide/visual-editor/using-advanced-blocks.md
  • docs/user-guide/nlu/nlu-engines/ludwig-nlu-engine.md
  • docs/user-guide/nlu/nlu-engines/tensorflow-nlu-engine.md
  • docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md
  • docs/developer-guide/integrations/hexabot-plugin-development.md
  • docs/introduction/features.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/developer-guide/contributors-installation-guide.md

19-19: Dollar signs used before commands without showing output

(MD014, commands-show-output)


27-27: Dollar signs used before commands without showing output

(MD014, commands-show-output)


28-28: Dollar signs used before commands without showing output

(MD014, commands-show-output)


29-29: Dollar signs used before commands without showing output

(MD014, commands-show-output)


37-37: Dollar signs used before commands without showing output

(MD014, commands-show-output)


45-45: Dollar signs used before commands without showing output

(MD014, commands-show-output)

docs/developer-guide/extensions.md

9-9: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


64-64: Images should have alternate text (alt text)

(MD045, no-alt-text)


76-76: Images should have alternate text (alt text)

(MD045, no-alt-text)


86-86: Images should have alternate text (alt text)

(MD045, no-alt-text)

docs/developer-guide/hexabot-api.md

7-7: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


81-81: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

docs/developer-guide/integrations/build-your-first-plugin.md

7-7: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


142-142: Bare URL used

(MD034, no-bare-urls)


260-260: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


368-368: Bare URL used

(MD034, no-bare-urls)


370-370: Bare URL used

(MD034, no-bare-urls)

docs/faq/how-can-i-add-the-chatbot-widget-to-my-website.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


19-19: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


26-26: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


31-31: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


62-62: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


68-68: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/quickstart/installation.md

32-32: Spaces inside link text

(MD039, no-space-in-links)


42-42: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


48-48: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


54-54: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


60-60: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


68-68: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


80-80: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


86-86: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


101-101: Fenced code blocks should have a language specified

(MD040, fenced-code-language)


107-107: Fenced code blocks should have a language specified

(MD040, fenced-code-language)

docs/user-guide/context-variables.md

13-13: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

docs/user-guide/manage-settings/chatbot-global-fallback.md

7-7: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

docs/user-guide/nlu/nlu-engines/README.md

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

docs/user-guide/users-and-roles/manage-roles.md

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)

docs/user-guide/visual-editor/regular-blocks/using-simple-text-block.md

12-12: Images should have alternate text (alt text)

(MD045, no-alt-text)


14-14: Images should have alternate text (alt text)

(MD045, no-alt-text)


15-15: Images should have alternate text (alt text)

(MD045, no-alt-text)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: Frontend Tests
  • GitHub Check: API-Tests
🔇 Additional comments (10)
docs/user-guide/nlu/nlu-engines/README.md (1)

1-4: Nice overview and scope.

Clear framing of engine options and audience. Good addition.

docs/faq/how-can-i-add-the-chatbot-widget-to-my-website.md (1)

49-53: Confirm UMD global export name.

The snippet references HexabotWidget as a global from the UMD build. Please confirm that the UMD bundle indeed exposes window.HexabotWidget; adjust if the name differs.

docs/user-guide/context-variables.md (1)

7-7: Verify image asset paths resolve

Automated verification failed; confirm images referenced in docs/user-guide/context-variables.md (e.g. ../.gitbook/assets/image (21).png — lines 7, 56, 60) exist in docs/.gitbook/assets and fix paths or add missing files.

docs/user-guide/users-and-roles/manage-roles.md (1)

1-1: Good structure and scope.

Clear page purpose and placement within Users & Roles. No technical/API claims—safe to ship as docs.

docs/developer-guide/extensions.md (1)

38-41: Use proper markdown lists; replace “•” bullets.
[raise_nitpick_refactor]

-• Replace `[channel|plugin|helper]` with the appropriate type of extension.
-
-• Replace NAME with the specific name of the extension you want to install.
+* Replace `[channel|plugin|helper]` with the appropriate type of extension.
+* Replace `NAME` with the specific name of the extension you want to install.
@@
-• A plugin may require a specific helper to operate.
-
-• A channel might rely on a helper for authentication or data handling.
+* A plugin may require a specific helper to operate.
+* A channel might rely on a helper for authentication or data handling.

Also applies to: 54-58

docs/developer-guide/hexabot-api.md (2)

10-17: Normalize heading levels (MD001).

Use H2 after H1; keep sub-sections consistent.
[raise_nitpick_refactor]

-### Key Features
+## Key Features
@@
-### Installation
+## Installation
@@
-### Running the app in standalone
+## Running the app in standalone
@@
-### Test
+## Test
@@
-### Migrations
+## Migrations
@@
-### Documentation
+## Documentation

Also applies to: 39-56, 58-70, 71-75, 116-126, 134-139


42-56: Drop leading “$” in code blocks (MD014).
[raise_nitpick_refactor]

-```bash
-$ npm install
+```bash
+npm install

@@
-# development
-$ npm run start
+# development
+npm run start
@@
-# watch mode
-$ npm run start:dev
+# watch mode
+npm run start:dev
@@
-# production mode
-$ npm run start:prod
+# production mode
+npm run start:prod

```diff
-```bash
-# unit tests
-$ npm run test
+```bash
+# unit tests
+npm run test
@@
-# e2e tests
-$ npm run test:e2e
+# e2e tests
+npm run test:e2e
@@
-# test coverage
-$ npm run test:cov
+# test coverage
+npm run test:cov
-```bash
-$ npm run create-migration <migration-name>
+```bash
+npm run create-migration <migration-name>
-```bash
-$ npm run create-migration all-users-language-fr
+```bash
+npm run create-migration all-users-language-fr
-```bash
-$ make migrate-up
+```bash
+make migrate-up
-```bash
-$ npm run migrate -h
+```bash
+npm run migrate -h

Also applies to: 61-69, 80-87, 123-124, 131-132

docs/quickstart/installation.md (1)

42-44: Add code-fence languages (fix MD040) and minor phrasing.
[raise_nitpick_refactor]

-```
+```bash
 npm install -g hexabot-cli

@@
- +bash
hexabot create my-chatbot

@@
-```
+```bash
cd my-chatbot/

@@
- +bash
npm i

@@
-```
+```bash
hexabot init

@@
- +bash
hexabot dev --services ollama

@@
-```
+```bash
docker exec -it ollama ollama pull tinyllama

@@
-{% code title="Username" %}
- +{% code title="Username" %} +text
[email protected]

@@
-{% code title="Password" %}
-```
+{% code title="Password" %}
+```text
adminadmin


Also applies to: 48-50, 54-56, 60-62, 68-70, 80-82, 86-88, 101-103, 107-109

</blockquote></details>
<details>
<summary>docs/developer-guide/integrations/build-your-first-plugin.md (2)</summary><blockquote>

`7-11`: **Fix heading level (MD001) and wording.**
[raise_nitpick_refactor]
```diff
-### Prerequisites
+## Prerequisites
@@
-* **Node.js:** Ensure you have Node.js and a package manager (npm or yarn) installed.
+* **Node.js:** Ensure you have Node.js and a package manager (npm or Yarn) installed.

260-264: Remove trailing punctuation in heading (MD026).
[raise_nitpick_refactor]

-#### Final Code:
+#### Final Code

Comment on lines 116 to 126
#### Running Migrations Up

All migrations are run automatically when the app starts.

Alternatively, you can run the following command in the `root` directory to run all pending migrations:

```bash
$ make migrate-up
```

#### Running Migrations Manually
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

Migrations don’t auto-run; correct the docs.

“Automatically on app start” is misleading; document explicit commands.

-#### Running Migrations Up
-
-All migrations are run automatically when the app starts.
-
-Alternatively, you can run the following command in the `root` directory to run all pending migrations:
+#### Running Migrations Up
+
+Run all pending migrations from the repository root:
@@
-#### Running Migrations Manually
-
-If you want to run specific actions manually, you need to gain access to the `api` container and use the following command to run what you specifically want:
+#### Running Migrations Manually
+
+From the `api/` folder (or inside the `api` container), use the migration CLI:
@@
-```bash
-$ npm run migrate -h
+```bash
+npm run migrate -h




Also applies to: 128-133

---

🏁 Script executed:

```shell
#!/bin/bash
# Verify migration scripts and Makefile target
fd -t f package.json | xargs -I{} sh -c "echo '--- {}'; rg -n '\"migrate\"|\"create-migration\"' {} || true"
rg -n 'migrate-up' Makefile || true

Length of output: 286


Migrations don’t auto-run; correct the docs to show explicit commands.

Verified: api/package.json defines a "migrate" script and the repo Makefile has a migrate-up target — no evidence migrations are run automatically on app start.

File: docs/developer-guide/hexabot-api.md
Lines: 116-126 (also applies to: 128-133)

-#### Running Migrations Up
-
-All migrations are run automatically when the app starts.
-
-Alternatively, you can run the following command in the `root` directory to run all pending migrations:
+#### Running Migrations Up
+
+Run all pending migrations from the repository root:
@@
-#### Running Migrations Manually
-
-If you want to run specific actions manually, you need to gain access to the `api` container and use the following command to run what you specifically want:
+#### Running Migrations Manually
+
+From the `api/` folder (or inside the `api` container), use the migration CLI:
@@
-```bash
-$ npm run migrate -h
+```bash
+npm run migrate -h

<details>
<summary>🤖 Prompt for AI Agents</summary>

In docs/developer-guide/hexabot-api.md around lines 116-126 (and also update
128-133), remove the incorrect statement that "All migrations are run
automatically when the app starts" and instead document the explicit commands to
run migrations (e.g., make migrate-up and the npm script defined in
api/package.json). Replace the current example block with properly formatted
bash blocks and show both make migrate-up and npm run migrate -h (or npm run migrate) examples so users know how to invoke migrations manually; ensure
messaging clearly states migrations must be run explicitly and reference the
Makefile target and the api/package.json script.


</details>

<!-- fingerprinting:phantom:triton:chinchilla -->

<!-- This is an auto-generated comment by CodeRabbit -->

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (1)
docs/quickstart/create-your-first-flow.md (1)

33-41: Remove or clearly gate demo credentials; add an explicit danger note.

Publishing working admin creds is risky even in docs. Scope them to local/dev only, and instruct immediate rotation after first login.

-#### **0. Ent**er your login credentials.
-
-{% hint style="info" %}
-Default admin account credentials are 
-
-**Login :** [email protected]
-
-Pa**ssword :** adminadmin
-{% endhint %}
+### 0. Enter your login credentials
+
+{% hint style="danger" %}
+Demo only — local/dev environments. Change this password immediately after first login.
+
+**Login:** `[email protected]`  
+**Password:** `adminadmin`
+{% endhint %}
🧹 Nitpick comments (12)
docs/user-guide/nlu/manage-nlu-entities.md (5)

5-5: Fix heading levels and remove trailing punctuation to satisfy markdownlint (MD001, MD026).

Current structure jumps from H1 to H3 and has colons at the end of headings.

Apply this diff:

-### Trait Entities
+## Trait Entities
-### Keyword Entities
+## Keyword Entities
-### Pattern Entities
+## Pattern Entities
-#### Examples of Pattern Entities:
+### Examples of pattern entities
-### Manage NLU Entities
+## Manage NLU Entities
-### Managing Entity Values
+## Managing Entity Values
-### Bulk Import of NLU Entities and Values
+## Bulk import of NLU entities and values
-#### To access the bulk Import feature navigate to the NLU management view:
+### Accessing the bulk import feature

Also applies to: 15-15, 27-27, 40-40, 47-47, 81-81, 97-97, 101-101


9-11: Minor phrasing: “Below some examples” → “Here are some examples.”

Improves readability.

Apply this diff:

-Trait entities are inferred by analyzing the entire sentence or the overall context of the input. These entities represent high-level attributes or characteristics of the input and are not tied to specific words or phrases. Below some examples:
+Trait entities are inferred by analyzing the entire sentence or overall context. These entities represent high‑level attributes or characteristics and are not tied to specific words or phrases. Here are some examples:
-Keyword entities are specific words or phrases extracted from the input to identify important attributes and convert unstructured data into structured information. These entities are tied to identifiable patterns or specific terms within the user input. Below some examples:
+Keyword entities are specific words or phrases extracted from the input to identify important attributes and convert unstructured data into structured information. These entities are tied to identifiable patterns or specific terms within the user input. Here are some examples:

Also applies to: 19-26


122-125: Fix CSV example: trailing comma creates an extra empty column.

Removes an invalid sixth field in the second row.

Apply this diff:

 text,intent,language,destination,time
 "Hello, I want to book a flight tomorrow to Paris.",book_flight,en,Paris,tomorrow
-"I need a taxi to downtown now",book_taxi,en,downtown,now,
+"I need a taxi to downtown now",book_taxi,en,downtown,now

78-95: Value guidelines: add uniqueness and character policy.

Recommend stating whether values must be unique per entity and explicitly list allowed characters (a‑z, 0‑9, underscore). Helps avoid import errors and mixed locales.

Proposed addition after Line 89:

+* Values must be unique within an entity.
+* Allowed characters: lowercase letters, digits, and underscores (a–z, 0–9, _). Use synonyms to capture variants and diacritics.

137-140: HuggingFace dataset verified; add fallback/export instructions.
Hexastack/hexabot-smalltalk is public (Small_talk_Intent.en.csv, Small_talk_Intent.fr.csv; ~6,967 rows). Keep the HF URL and add a brief fallback: a mirror or include the CSVs, or add step‑by‑step "Export CSV" instructions for HuggingFace and a short note about possible rate limits/caching.
File: docs/user-guide/nlu/manage-nlu-entities.md (lines 137–140)

docs/quickstart/create-your-first-flow.md (7)

18-26: Fix heading levels (MD001) and the broken bold text.

Use consistent increments (H2 → H3) and remove the mid‑word bold split in “Enter”.

-#### 1. Configured NLU Engine
+### 1. Configured NLU Engine
-#### 2. Populated NLU Entities Database
+### 2. Populated NLU Entities Database
-#### **0. Ent**er your login credentials.
+### 0. Enter your login credentials

Also applies to: 33-33


45-45: Remove trailing punctuation in headings (MD026).

Headings should not end with “.” or “:”.

-#### 1. Go to Hexabot visual editor page.
+#### 1. Go to the Hexabot Visual Editor page
-#### 3. Double-click on a block to begin making changes
+#### 3. Double-click a block to begin making changes
-#### 11. Go to the 'Message' tab to configure responses.
+#### 11. Go to the “Message” tab to configure responses
-#### 31. Try out the new block by asking a question about the return policy in the chat widget.
+#### 31. Try out the new block by asking about the return policy in the chat widget
-#### 43. 🎉 By following this flow, the user was able to receive accurate information about return eligibility from the chatbot.
+#### 43. 🎉 The user receives accurate information about return eligibility

Also applies to: 49-49, 57-57, 61-61, 65-65, 69-69, 73-73, 77-77, 81-81, 85-85, 89-89, 109-109, 113-113, 117-117, 121-121, 125-125, 131-131, 135-135, 139-139, 143-143, 159-159, 183-183, 191-191, 199-199, 203-203


47-47: Add meaningful alt text to all images (MD045, a11y).

Most images have empty alt. Provide concise descriptions so the tutorial is usable with screen readers.

Example fixes:

-![](https://d16ev9qffqt5qm.cloudfront.net/?s3_key=.../hgU8qwtDbLiBmmO-mWrXk.jpeg&x=2054&y=713&fill=009185&color=009185)
+![Visual Editor workspace overview](https://d16ev9qffqt5qm.cloudfront.net/?s3_key=.../hgU8qwtDbLiBmmO-mWrXk.jpeg&x=2054&y=713&fill=009185&color=009185)

-![](<../.gitbook/assets/Screenshot from 2024-12-13 15-18-42.png>)
+![Editing block title in the Visual Editor](../.gitbook/assets/Screenshot%20from%202024-12-13%2015-18-42.png)

Also consider moving CDN images to GitBook assets for stability.

Also applies to: 51-51, 55-55, 59-59, 63-63, 67-67, 71-71, 75-75, 79-79, 83-83, 87-87, 91-91, 95-95, 99-99, 103-103, 107-107, 111-111, 115-115, 119-119, 123-123, 127-129, 133-133, 137-137, 141-141, 145-145, 149-153, 157-157, 161-163, 167-169, 173-177, 181-181, 185-185, 189-189, 193-193, 197-197, 201-201, 205-205, 209-209


9-9: Resolve “bare URL” lint (MD034) for embeds/links.

For the Supademo embed line, disable MD034 locally; for any visible bare links, convert to Markdown links.

+<!-- markdownlint-disable-next-line MD034 -->
 {% @supademo/embed demoId="cm1tjkxgn01jcjca2ufvh7l62" url="https://app.supademo.com/demo/cm1tjkxgn01jcjca2ufvh7l62" %}

Also applies to: 38-41


7-7: Tighten grammar and tokens.

  • “your chatbot first flow” → “your first chatbot flow”.
  • “answer question about a company return policy” → “answer questions about a company’s return policy”.
  • Remove space before “!” in “Hi {context.user.first_name}!”.
  • “by creating connecting a new block” → “by creating and connecting a new block”.
  • Fix broken bold split in “Enter”.
-...you'll have your chatbot first flow up and running...
+...you'll have your first chatbot flow up and running...

-...answer question about a company return policy.
+...answer questions about a company’s return policy.

-'Hi {context.user.first_name} !'
+'Hi {context.user.first_name}!'

-...by creating connecting a new block...
+...by creating and connecting a new block...

Also applies to: 45-45, 101-101, 207-207, 33-33


125-129: Step numbering is inconsistent (missing 22 and 34). Prefer auto‑numbered lists.

Either renumber headings or switch steps to an ordered list to avoid drift.

Example:

-#### 21. Let's modify the trigger...
-#### 23. We've previously created...
+1. Let's modify the trigger...
+2. We've previously created...

Also applies to: 131-131, 135-135, 171-171


43-43: CDN assets: consider localizing to GitBook assets.

External CDN links can break or change; storing media under docs/.gitbook/assets improves durability and reviews.

Also applies to: 47-47, 119-119, 157-157, 193-193

📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between ebe3bf9 and adcd387.

⛔ Files ignored due to path filters (6)
  • docs/.gitbook/assets/Cards Cover - Channels(1) (1).png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-16 at 15-40-00 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/Screenshot 2025-09-16 at 15-55-06 Hexabot.png is excluded by !**/*.png
  • docs/.gitbook/assets/image (37).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (38).png is excluded by !**/*.png
  • docs/.gitbook/assets/image (39).png is excluded by !**/*.png
📒 Files selected for processing (6)
  • docs/.gitbook/includes/add-edit-keyword-entity-form.md (1 hunks)
  • docs/.gitbook/includes/add-edit-nlu-trait-value-form.md (1 hunks)
  • docs/.gitbook/includes/add-edit-pattern-entity-form.md (1 hunks)
  • docs/.gitbook/includes/nlu-samples-tab.md (1 hunks)
  • docs/quickstart/create-your-first-flow.md (1 hunks)
  • docs/user-guide/nlu/manage-nlu-entities.md (1 hunks)
✅ Files skipped from review due to trivial changes (4)
  • docs/.gitbook/includes/add-edit-pattern-entity-form.md
  • docs/.gitbook/includes/add-edit-nlu-trait-value-form.md
  • docs/.gitbook/includes/nlu-samples-tab.md
  • docs/.gitbook/includes/add-edit-keyword-entity-form.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/quickstart/create-your-first-flow.md

9-9: Bare URL used

(MD034, no-bare-urls)


18-18: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)


33-33: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


38-38: Bare URL used

(MD034, no-bare-urls)


45-45: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


47-47: Images should have alternate text (alt text)

(MD045, no-alt-text)


49-49: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


51-51: Images should have alternate text (alt text)

(MD045, no-alt-text)


55-55: Images should have alternate text (alt text)

(MD045, no-alt-text)


57-57: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


59-59: Images should have alternate text (alt text)

(MD045, no-alt-text)


61-61: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


63-63: Images should have alternate text (alt text)

(MD045, no-alt-text)


65-65: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


67-67: Images should have alternate text (alt text)

(MD045, no-alt-text)


69-69: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


71-71: Images should have alternate text (alt text)

(MD045, no-alt-text)


73-73: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


75-75: Images should have alternate text (alt text)

(MD045, no-alt-text)


77-77: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


79-79: Images should have alternate text (alt text)

(MD045, no-alt-text)


81-81: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


83-83: Images should have alternate text (alt text)

(MD045, no-alt-text)


85-85: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


87-87: Images should have alternate text (alt text)

(MD045, no-alt-text)


89-89: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


91-91: Images should have alternate text (alt text)

(MD045, no-alt-text)


95-95: Images should have alternate text (alt text)

(MD045, no-alt-text)


99-99: Images should have alternate text (alt text)

(MD045, no-alt-text)


103-103: Images should have alternate text (alt text)

(MD045, no-alt-text)


107-107: Images should have alternate text (alt text)

(MD045, no-alt-text)


109-109: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


111-111: Images should have alternate text (alt text)

(MD045, no-alt-text)


113-113: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


115-115: Images should have alternate text (alt text)

(MD045, no-alt-text)


117-117: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


119-119: Images should have alternate text (alt text)

(MD045, no-alt-text)


121-121: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


123-123: Images should have alternate text (alt text)

(MD045, no-alt-text)


125-125: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


127-127: Images should have alternate text (alt text)

(MD045, no-alt-text)


129-129: Images should have alternate text (alt text)

(MD045, no-alt-text)


131-131: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


133-133: Images should have alternate text (alt text)

(MD045, no-alt-text)


135-135: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


137-137: Images should have alternate text (alt text)

(MD045, no-alt-text)


139-139: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


141-141: Images should have alternate text (alt text)

(MD045, no-alt-text)


143-143: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


145-145: Images should have alternate text (alt text)

(MD045, no-alt-text)


147-147: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


149-149: Images should have alternate text (alt text)

(MD045, no-alt-text)


151-151: Images should have alternate text (alt text)

(MD045, no-alt-text)


153-153: Images should have alternate text (alt text)

(MD045, no-alt-text)


157-157: Images should have alternate text (alt text)

(MD045, no-alt-text)


159-159: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


161-161: Images should have alternate text (alt text)

(MD045, no-alt-text)


163-163: Images should have alternate text (alt text)

(MD045, no-alt-text)


167-167: Images should have alternate text (alt text)

(MD045, no-alt-text)


169-169: Images should have alternate text (alt text)

(MD045, no-alt-text)


173-173: Images should have alternate text (alt text)

(MD045, no-alt-text)


177-177: Images should have alternate text (alt text)

(MD045, no-alt-text)


181-181: Images should have alternate text (alt text)

(MD045, no-alt-text)


183-183: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


185-185: Images should have alternate text (alt text)

(MD045, no-alt-text)


189-189: Images should have alternate text (alt text)

(MD045, no-alt-text)


191-191: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


193-193: Images should have alternate text (alt text)

(MD045, no-alt-text)


197-197: Images should have alternate text (alt text)

(MD045, no-alt-text)


199-199: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


201-201: Images should have alternate text (alt text)

(MD045, no-alt-text)


203-203: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


205-205: Images should have alternate text (alt text)

(MD045, no-alt-text)


209-209: Images should have alternate text (alt text)

(MD045, no-alt-text)

docs/user-guide/nlu/manage-nlu-entities.md

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


40-40: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


101-101: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

🔇 Additional comments (5)
docs/user-guide/nlu/manage-nlu-entities.md (3)

33-39: Confirm UI support/naming for preprocessing options.

Verify these toggles (word boundary, space removal, case normalization, diacritic stripping) exist with these exact labels in the UI; if not, adjust wording to match product.


113-118: Clarify CSV semantics: “intent” vs entity columns and auto‑creation strategy.

Current text conflates “intent” with “entity name” and asserts new entities default to “trait.” Confirm actual behavior and adjust:

  • “intent” should denote the sample’s intent.
  • Additional columns should map to entity names whose cells are values.
  • Auto‑created entity type: confirm whether non‑intent columns become Keyword (likely) and whether “intent” becomes Trait, or if this is configurable.

Apply this diff once verified:

-* **intent** (required): The primary intent or entity name
+* **intent** (required): The primary intent label for the sample
-1. **NLU Entity Creation**: If an entity mentioned in the CSV doesn't exist, Hexabot automatically creates it with the "trait" lookup strategy.
+1. **NLU Entity Creation**: If an entity mentioned in the CSV doesn't exist, Hexabot automatically creates it using the appropriate lookup strategy (based on your configuration).

Also applies to: 129-132


53-57: UI labels: “NLU Entities” vs “NLP Samples”.

Ensure the tab names match the product exactly (NLU vs NLP). If the UI says “NLU Samples,” align both occurrences and the include file name.

Also applies to: 103-107

docs/quickstart/create-your-first-flow.md (2)

11-11: Nice context-setting paragraph.

Clear guidance to explore features beyond the quickstart.


101-101: Verify replacement token syntax used by Hexabot (single { } vs double {{ }})

Automated repo search returned no matches for either {context.user.first_name} or {{context.user.first_name}}; confirm which syntax the runtime/template engine expects and align docs/UI accordingly.
Location: docs/quickstart/create-your-first-flow.md (line 101) — "Hi {context.user.first_name} !"

Comment on lines +20 to +21
You need a fully configured and running NLU (Natural Language Understanding) engine to use intent-based triggers in your conversation flows. The NLU engine is responsible for understanding user intents from natural language input. For detailed instructions on configuring your NLU engine refer to our [NLU Engines](../user-guide/nlu/nlu-engines/) documentation page.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

🧩 Analysis chain

Check internal links resolve in GitBook.

Validate paths for NLU Engines and nlu‑training pages relative to this file.

Also applies to: 26-27, 131-133


🏁 Script executed:

#!/bin/bash
# List candidate files and check for exact matches.
fd -t f -e md -a 'nlu-engines' docs || true
fd -t f -e md -a 'nlu-training' docs || true
# Grep the exact link targets to ensure they exist.
rg -nP '\.\./user-guide/nlu/nlu-engines/?\)?' docs/quickstart/create-your-first-flow.md
rg -nP '\.\./user-guide/nlu-training\.md' docs/quickstart/create-your-first-flow.md

Length of output: 790


Broken internal link: add or correct the NLU Engines target

  • docs/quickstart/create-your-first-flow.md — line 20: NLU Engines target not found in repo; update the link to the correct path or add the referenced page at docs/user-guide/nlu/nlu-engines/.
  • docs/quickstart/create-your-first-flow.md — line 131: nlu-training.md correctly resolves to docs/user-guide/nlu-training.md.

Comment on lines 42 to 46
* **Phone Numbers**: `(\+?\d{1,3}[-.\s]?)?\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})` - Captures various phone number formats like +1-555-123-4567, (555) 123-4567, or 555.123.4567
* **Email Addresses**: `[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}` - Matches standard email formats
* **Dates**: `\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b` - Captures dates in MM/DD/YYYY or DD-MM-YYYY format
* **Credit Card Numbers**: `\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b` - Matches credit card numbers with optional separators

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Add PCI/PII compliance warning when documenting credit‑card detection.

Documenting credit‑card regex without guidance risks unsafe collection/storage of PANs. Add a GitBook danger hint to warn against storing/logging sensitive data and to reference PCI DSS and privacy laws.

Apply this diff:

 * **Credit Card Numbers**: `\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b` - Matches credit card numbers with optional separators
+
+{% hint style="danger" %}
+Avoid collecting or storing full payment card numbers or other sensitive PII in Hexabot. Do not log matched values, and prefer masking or tokenization where detection is required (e.g., to block or redact). Ensure compliance with PCI DSS and applicable privacy regulations (e.g., GDPR/CCPA). Consult your security team before enabling such patterns in production.
+{% endhint %}
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* **Phone Numbers**: `(\+?\d{1,3}[-.\s]?)?\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})` - Captures various phone number formats like +1-555-123-4567, (555) 123-4567, or 555.123.4567
* **Email Addresses**: `[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}` - Matches standard email formats
* **Dates**: `\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b` - Captures dates in MM/DD/YYYY or DD-MM-YYYY format
* **Credit Card Numbers**: `\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b` - Matches credit card numbers with optional separators
* **Phone Numbers**: `(\+?\d{1,3}[-.\s]?)?\(?(\d{3})\)?[-.\s]?(\d{3})[-.\s]?(\d{4})` - Captures various phone number formats like +1-555-123-4567, (555) 123-4567, or 555.123.4567
* **Email Addresses**: `[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}` - Matches standard email formats
* **Dates**: `\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b` - Captures dates in MM/DD/YYYY or DD-MM-YYYY format
* **Credit Card Numbers**: `\b\d{4}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}\b` - Matches credit card numbers with optional separators
{% hint style="danger" %}
Avoid collecting or storing full payment card numbers or other sensitive PII in Hexabot. Do not log matched values, and prefer masking or tokenization where detection is required (e.g., to block or redact). Ensure compliance with PCI DSS and applicable privacy regulations (e.g., GDPR/CCPA). Consult your security team before enabling such patterns in production.
{% endhint %}
🤖 Prompt for AI Agents
In docs/user-guide/nlu/manage-nlu-entities.md around lines 42 to 46, add a
PCI/PII compliance warning next to the credit-card regex entry: insert a GitBook
“danger” hint (or equivalent callout) advising readers not to collect, store, or
log full Primary Account Numbers (PANs), to mask or tokenize card data, and to
follow PCI DSS and applicable privacy laws; include brief actionable guidance
(e.g., use tokenization, store only last 4 digits, encrypt in transit/at rest)
and a link/reference to PCI DSS and relevant privacy documentation.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (5)
docs/developer-guide/hexabot-live-chat-widget.md (5)

11-17: Fix heading hierarchy (MD001).

Headings jump levels. Align to H2 for main sections and H3 for subsections.

Apply:

-### Key Features
+## Key Features

-### Directory Structure
+## Directory Structure

-### Run the Live Chat Widget
+## Run the Live Chat Widget

-#### Dev Mode
+### Dev Mode

-#### Build for Production
+### Build for Production

-### Embed Chat Widget
+## Embed Chat Widget

-### Customization
+## Customization

Also applies to: 18-33, 34-45, 46-55, 56-82, 83-89


44-44: Avoid bare URL (MD034).

Wrap the dev URL.

-The live chat widget will be accessible at http://localhost:5173.
+The live chat widget will be accessible at <http://localhost:5173/>.

60-60: Use an appropriate code fence for mixed HTML/JS.

Switch to html for syntax highlighting.

-```js
+```html

61-78: Modernize React 18 embed: prefer createRoot over render.

Update the snippet to the React 18 API.

 <script crossorigin src="https://unpkg.com/react@18/umd/react.production.min.js"></script>
 <script crossorigin src="https://unpkg.com/react-dom@18/umd/react-dom.production.min.js"></script>
 <link rel="stylesheet" href="./style.css">
 <script src="<<WIDGET URL>>/hexabot-widget.umd.js"></script>

 <div id="hb-chat-widget"></div>
 <script>
-  const el = React.createElement;
   const domContainer = document.getElementById('hb-chat-widget');
-  ReactDOM.render(
-    el(HexabotWidget, {
-      apiUrl: 'https://api.yourdomain.com',
-      channel: 'web-channel',
-      token: 'token123',
-    }),
-    domContainer,
-  );
+  const root = ReactDOM.createRoot(domContainer);
+  root.render(
+    React.createElement(HexabotWidget, {
+      apiUrl: 'https://api.yourdomain.com',
+      channel: 'web-channel',
+      token: 'token123',
+    })
+  );
 </script>

24-32: Tighten wording and casing in directory bullets.

Minor clarity and consistency tweaks.

-* **src/constants:** Hard coded values that are used like colors.
+* **src/constants:** Hard‑coded constants (e.g., colors, breakpoints).
-* **src/translations:** Contains translation of a couple of strings.
+* **src/translations:** Internationalization (i18n) resource files.
-* **src/types:** Defines the typescript interfaces, types, and enums used.
+* **src/types:** Defines the TypeScript interfaces, types, and enums used.
-* **/public:** Contains static files that are publicly accessible. This includes the main HTML template where the widget is embedded for local development.
+* **public/**: Static files publicly served (e.g., the dev HTML template).
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between adcd387 and 3375edc.

📒 Files selected for processing (6)
  • docs/developer-guide/hexabot-api.md (1 hunks)
  • docs/developer-guide/hexabot-live-chat-widget.md (1 hunks)
  • docs/key-concepts/intent.md (1 hunks)
  • docs/key-concepts/nlu.md (1 hunks)
  • docs/user-guide/analytics-dashboard.md (1 hunks)
  • docs/user-guide/nlu-training.md (1 hunks)
✅ Files skipped from review due to trivial changes (2)
  • docs/user-guide/analytics-dashboard.md
  • docs/user-guide/nlu-training.md
🚧 Files skipped from review as they are similar to previous changes (3)
  • docs/key-concepts/intent.md
  • docs/developer-guide/hexabot-api.md
  • docs/key-concepts/nlu.md
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/developer-guide/hexabot-live-chat-widget.md

11-11: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


44-44: Bare URL used

(MD034, no-bare-urls)

🔇 Additional comments (3)
docs/developer-guide/hexabot-live-chat-widget.md (3)

63-65: Confirm stylesheet path.

The snippet references ./style.css. If the build emits a widget CSS (e.g., hexabot-widget.css), document that file; otherwise note that styles are bundled.


48-52: Clarify where to run the build command.

“at the widget folder level” may confuse mono‑repo users. Specify root vs. package path.

-To build the widget for production, execute the following command at the widget folder level:
+To build the widget for production, run the following from the project (or widget package) root:

2-5: Validate front‑matter visibility settings.

hidden: true and noIndex: true will hide this page from navigation and search. Intentional?

Comment on lines 81 to 82
Replace the values in `apiUrl` and token with your configuration details.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Include all configurable props and add a security note about tokens.

Also format token as code.

-Replace the values in `apiUrl` and token with your configuration details.
+Replace the values in `apiUrl`, `channel`, and `token` with your configuration details.
+
+> Security note: Do not embed long‑lived or privileged tokens in client HTML. Issue short‑lived, scope‑limited tokens from your backend per session/user and rotate them regularly.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Replace the values in `apiUrl` and token with your configuration details.
Replace the values in `apiUrl`, `channel`, and `token` with your configuration details.
> Security note: Do not embed long‑lived or privileged tokens in client HTML. Issue short‑lived, scope‑limited tokens from your backend per session/user and rotate them regularly.
🤖 Prompt for AI Agents
In docs/developer-guide/hexabot-live-chat-widget.md around lines 81-82, the doc
currently only instructs to replace apiUrl and token; update it to list and
describe all configurable props (e.g., apiUrl, token, theme, locale, userId,
enableLogging, timeout, etc.) with their expected types and defaults, format the
token value inline as code (backticks), and add a brief security note advising
to keep tokens secret, rotate them regularly, and never commit them to source
control or expose them in client-side code without proper protections.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (7)
docs/quickstart/create-your-first-flow.md (2)

20-21: Fix or create the NLU Engines target; current link likely 404s.

The link to ../user-guide/nlu/nlu-engines/ appears to miss a target. Point to an existing page (e.g., ../user-guide/nlu/ or a specific engine doc) or add an index at docs/user-guide/nlu/nlu-engines/README.md.

#!/bin/bash
# Verify targets exist
fd -t f -a 'nlu-engines' docs || true
rg -nP '\]\(\.\./user-guide/nlu/nlu-engines/\)' docs/quickstart/create-your-first-flow.md

Also applies to: 131-131


33-41: Remove working admin credentials; replace with a “demo-only” warning and placeholders.

Publishing real creds is a security risk. Use placeholders and instruct immediate password change.

-#### **0. Ent**er your login credentials.
-
-{% hint style="info" %}
-Default admin account credentials are 
-
-**Login :** [email protected]
-
-Pa**ssword :** adminadmin
-{% endhint %}
+#### 0. Enter your login credentials
+
+{% hint style="danger" %}
+Demo only (local/dev): use placeholder credentials and change the password immediately after first login.
+
+**Login:** `[email protected]`  
+**Password:** `change-me-now`
+
+Never use demo credentials in staging/production. Create a real admin via the onboarding screen or your provisioning script.
+{% endhint %}
docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (5)

5-5: Fix spacing before question mark.

-# How can I deploy my Hexabot using NGINX ?
+# How can I deploy my Hexabot using NGINX?

9-13: Remove extra space before colon and pluralize.

-This documentation outlines two methods for deploying your Hexabot project in a production environment using NGINX and Let's Encrypt for SSL certificate : 
+This documentation outlines two methods for deploying your Hexabot project in a production environment using NGINX and Let's Encrypt for SSL certificates:

136-149: Use $scheme for X-Forwarded-Proto.

Hardcoding https can mislead upstreams before TLS is configured.

     location / {
-        proxy_set_header X-Forwarded-Proto https;
+        proxy_set_header X-Forwarded-Proto $scheme;
         proxy_set_header X-Url-Scheme $scheme;

71-74: Add a security warning about secrets (do not reuse examples).

 Note that you can also adjust the default token expirations durations as needed.
+
+{% hint style="warning" %}
+Security: Generate strong, unique secrets for all JWT and session values. Do not reuse the example values shown here. Keep your `.env` private and out of version control.
+{% endhint %}

167-180: Fix Socket.IO location block.

Target the explicit path and remove brittle regex/rewrite.

-    location ~* \.io {
-        rewrite ^/api/?(.*)$ /$1 break;
-        proxy_set_header X-Real-IP $remote_addr;
-        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
-        proxy_set_header Host $http_host;
-        proxy_set_header X-NginX-Proxy false;
-
-        proxy_pass http://localhost:4000; # Make sure to use the port configured in .env file
-        proxy_redirect off;
-
-        proxy_http_version 1.1;
-        proxy_set_header Upgrade $http_upgrade;
-        proxy_set_header Connection "upgrade";
-    }
+    location /socket.io/ {
+        proxy_http_version 1.1;
+        proxy_set_header Upgrade $http_upgrade;
+        proxy_set_header Connection "upgrade";
+        proxy_set_header X-Real-IP $remote_addr;
+        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
+        proxy_set_header Host $http_host;
+        proxy_pass http://localhost:4000;
+    }
🧹 Nitpick comments (20)
docs/.gitbook/includes/untitled.md (3)

2-2: Title casing and wording consistency

Prefer “Set up Node.js with NVM” (verb) over “Setup …” (noun) to match common docs style.

-title: Setup Node.js with NVM
+title: Set up Node.js with NVM

5-5: Add meaningful alt text and a caption for a11y

Empty alt and figcaption hinder screen readers.

-<figure><img src="../assets/image.png" alt=""><figcaption></figcaption></figure>
+<figure><img src="../assets/image.png" alt="Install Node.js using NVM on macOS/Linux"><figcaption>Install Node.js using NVM</figcaption></figure>

1-5: Rename placeholder include to a descriptive slug; dedupe with related include

The filename “untitled.md” is non-descriptive and easy to duplicate/confuse (there’s also “untitled (1).md” per PR). Suggest renaming to “setup-nodejs-with-nvm.include.md” and updating references, or consolidating if both includes serve the same purpose.

docs/quickstart/create-your-first-flow.md (4)

33-33: Trim trailing punctuation in headings (markdownlint MD026).

Remove terminal “.” or “:” from step headings for consistency and to satisfy linters.

Also applies to: 45-45, 49-49, 57-57, 61-61, 65-65, 69-69, 73-73, 77-77, 81-81, 85-85, 89-89, 101-101, 109-109, 113-113, 117-117, 121-121, 125-125, 131-131, 135-135, 139-139, 143-143, 151-151, 153-153, 159-159, 183-183, 191-191, 199-199, 203-203


47-47: Add alt text to images (a11y; markdownlint MD045).

Provide brief, descriptive alt text (e.g., “Visual Editor canvas”, “Add trigger button”) to improve accessibility and SEO.

Also applies to: 51-51, 55-55, 59-59, 63-63, 67-67, 71-71, 75-75, 79-79, 83-83, 87-87, 91-91, 95-95, 99-99, 103-103, 107-107, 111-111, 115-115, 119-119, 123-123, 127-127, 129-129, 133-133, 137-137, 141-141, 145-145, 149-149, 151-151, 153-153, 157-157, 161-161, 163-163, 167-167, 169-169, 173-173, 177-177, 181-181, 185-185, 189-189, 193-193, 197-197, 201-201, 205-205, 209-209


9-9: Bare URLs flagged by linter (MD034).

Prefer markdown links with titles or GitBook assets; if embeds require raw URLs, ignore via linter config or add comments.

Also applies to: 43-43


33-33: Copy edits: fix typos/grammar.

  • Line 33: Bold markers split “Enter”.
  • Line 45: “answer question” → “answer questions”.
  • Line 207: “by creating connecting” → “by creating and connecting”.
-#### **0. Ent**er your login credentials.
+#### 0. Enter your login credentials

-... answer question about a company return policy.
+... answer questions about a company return policy.

-... by creating connecting a new block ...
+... by creating and connecting a new block ...

Also applies to: 45-45, 207-207

docs/user-guide/nlu/manage-nlu-entities.md (2)

48-49: Include Pattern Entities wherever entity types are enumerated.

These sections still say “Trait and Keyword”; add “Pattern” for consistency with the page intro and UI.

-Hexabot provides an intuitive interface to manage NLU entities efficiently, allowing you to create, update, and administer both Trait and Keyword entities.
+Hexabot provides an intuitive interface to manage NLU entities efficiently, allowing you to create, update, and administer Trait, Keyword, and Pattern entities.
...
-* A data grid will display all the existing entities, including both Trait and Keyword entities.
+* A data grid will display all existing entities, including Trait, Keyword, and Pattern entities.
...
-* Choose the type of entity by selecting the **Lookup Strategy**: **Trait** or **Keyword**.
+* Choose the type of entity by selecting the **Lookup Strategy**: **Trait**, **Keyword**, or **Pattern**.

Also applies to: 59-66


33-39: Add a short privacy/compliance note for PII patterns.

Regex examples (phones/emails/dates) often capture PII. Add a caution about not logging/storing sensitive data unmasked.

 #### Examples of Pattern Entities:
 ...
 * **Dates**: `\b\d{1,2}[/-]\d{1,2}[/-]\d{2,4}\b` - Captures dates in MM/DD/YYYY or DD-MM-YYYY format
+
+{% hint style="warning" %}
+Be careful when extracting PII (e.g., phone numbers, emails). Avoid logging raw values; prefer masking or tokenization and comply with applicable privacy regulations.
+{% endhint %}

Also applies to: 40-45

docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (11)

7-7: Fix heading level increment (MD001).

-### Introduction
+## Introduction

14-24: Normalize heading ladder and avoid headings inside list items.

  • Use H2 for “Prerequisites” and H3 for “Step x”. Avoid mixing “* #### …”.
-### Prerequisites
+## Prerequisites
...
-* #### Install NPM
+### Install Node.js and npm

71-71: Tidy env table wording and capitalization.

-<td>FRONTEND_BASE_URL</td><td>https://mychatbot.ai</td><td>The API endpoint will be used to communicate with the frontend</td>
+<td>FRONTEND_BASE_URL</td><td>https://mychatbot.ai</td><td>Base URL of the frontend application</td>
-<td>FRONTEND_ORIGIN</td><td>http://mychatbot.ai, https://mychatbot.ai</td><td>The origins that will be accepted by the API. A list of permitted origins for cross-origin requests</td>
+<td>FRONTEND_ORIGIN</td><td>http://mychatbot.ai, https://mychatbot.ai</td><td>Comma‑separated list of allowed origins for CORS</td>
-<td>HTTPS_ENABLED</td><td>true</td><td>Https setting</td>
+<td>HTTPS_ENABLED</td><td>true</td><td>HTTPS setting</td>
-<td>MONGO_USER</td><td>my_mongo_username</td><td>Mongodb username</td>
+<td>MONGO_USER</td><td>my_mongo_username</td><td>MongoDB username</td>
-<td>MONGO_PASSWORD</td><td>my_mongo_password</td><td>Mongodb password</td>
+<td>MONGO_PASSWORD</td><td>my_mongo_password</td><td>MongoDB password</td>

75-77: Clean up SMTP hint and duplicated link period.

-{% hint style="info" %}
-To be able to send email you will need to configure SMTP. Learn how to configure SMTP environment variables by following our detailed [SMTP setup guide](../developer-guide/smtp-configuration-and-emails.md)[.](../developer-guide/smtp-configuration-and-emails.md)
-{% endhint %}
+{% hint style="info" %}
+To send email, configure SMTP. See our [SMTP setup guide](../developer-guide/smtp-configuration-and-emails.md).
+{% endhint %}

79-79: Fix heading punctuation/spacing and level (MD026, MD001).

-### **Method 1 : Using Nginx as a service and Certbot for SSL**
+## Method 1: Nginx service with Certbot (SSL)

81-86: Remove trailing colon from heading (MD026).

-#### Step 1: Run your Hexabot project in production mode:
+### Step 1: Run your Hexabot project in production mode

97-98: Grammar and wording.

-Deploying an Hexabot project on production requires you to setup a HTTP Web Server like Apache2, HAProxy or Nginx...
+Deploying a Hexabot project to production requires you to set up an HTTP web server such as Apache, HAProxy, or Nginx...

151-165: Normalize Upgrade handling and trim legacy header.

  • Prefer lowercase “upgrade” value; drop non-standard X-NginX-Proxy.
         proxy_set_header Upgrade $http_upgrade;
-        proxy_set_header Connection "Upgrade";
-        proxy_set_header X-NginX-Proxy false;
+        proxy_set_header Connection "upgrade";

228-229: Tighten punctuation.

-Access your domain using HTTPS (eg. https://mychatbot.ai) to check if you have successfully deployed your Hexabot project using Nginx!  🚀🎉. 
+Access your domain using HTTPS (e.g., https://mychatbot.ai) to verify your deployment. 🚀🎉

230-231: Remove trailing colon and unnecessary bold (MD026).

-## **Method 2: Using Dockerized Nginx and Certbot services** :
+## Method 2: Dockerized Nginx and Certbot

296-297: Fix grammar.

-Once the script completes, run `docker ps` verify that your Nginx and Certbot docker containers are up and running.
+Once the script completes, run `docker ps` to verify that your Nginx and Certbot containers are running.
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 3375edc and c53580b.

📒 Files selected for processing (4)
  • docs/.gitbook/includes/untitled.md (1 hunks)
  • docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md (1 hunks)
  • docs/quickstart/create-your-first-flow.md (1 hunks)
  • docs/user-guide/nlu/manage-nlu-entities.md (1 hunks)
🧰 Additional context used
🪛 markdownlint-cli2 (0.17.2)
docs/quickstart/create-your-first-flow.md

9-9: Bare URL used

(MD034, no-bare-urls)


18-18: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4

(MD001, heading-increment)


33-33: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


38-38: Bare URL used

(MD034, no-bare-urls)


45-45: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


47-47: Images should have alternate text (alt text)

(MD045, no-alt-text)


49-49: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


51-51: Images should have alternate text (alt text)

(MD045, no-alt-text)


55-55: Images should have alternate text (alt text)

(MD045, no-alt-text)


57-57: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


59-59: Images should have alternate text (alt text)

(MD045, no-alt-text)


61-61: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


63-63: Images should have alternate text (alt text)

(MD045, no-alt-text)


65-65: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


67-67: Images should have alternate text (alt text)

(MD045, no-alt-text)


69-69: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


71-71: Images should have alternate text (alt text)

(MD045, no-alt-text)


73-73: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


75-75: Images should have alternate text (alt text)

(MD045, no-alt-text)


77-77: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


79-79: Images should have alternate text (alt text)

(MD045, no-alt-text)


81-81: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


83-83: Images should have alternate text (alt text)

(MD045, no-alt-text)


85-85: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


87-87: Images should have alternate text (alt text)

(MD045, no-alt-text)


89-89: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


91-91: Images should have alternate text (alt text)

(MD045, no-alt-text)


95-95: Images should have alternate text (alt text)

(MD045, no-alt-text)


99-99: Images should have alternate text (alt text)

(MD045, no-alt-text)


103-103: Images should have alternate text (alt text)

(MD045, no-alt-text)


107-107: Images should have alternate text (alt text)

(MD045, no-alt-text)


109-109: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


111-111: Images should have alternate text (alt text)

(MD045, no-alt-text)


113-113: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


115-115: Images should have alternate text (alt text)

(MD045, no-alt-text)


117-117: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


119-119: Images should have alternate text (alt text)

(MD045, no-alt-text)


121-121: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


123-123: Images should have alternate text (alt text)

(MD045, no-alt-text)


125-125: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


127-127: Images should have alternate text (alt text)

(MD045, no-alt-text)


129-129: Images should have alternate text (alt text)

(MD045, no-alt-text)


131-131: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


133-133: Images should have alternate text (alt text)

(MD045, no-alt-text)


135-135: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


137-137: Images should have alternate text (alt text)

(MD045, no-alt-text)


139-139: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


141-141: Images should have alternate text (alt text)

(MD045, no-alt-text)


143-143: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


145-145: Images should have alternate text (alt text)

(MD045, no-alt-text)


147-147: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


149-149: Images should have alternate text (alt text)

(MD045, no-alt-text)


151-151: Images should have alternate text (alt text)

(MD045, no-alt-text)


153-153: Images should have alternate text (alt text)

(MD045, no-alt-text)


157-157: Images should have alternate text (alt text)

(MD045, no-alt-text)


159-159: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


161-161: Images should have alternate text (alt text)

(MD045, no-alt-text)


163-163: Images should have alternate text (alt text)

(MD045, no-alt-text)


167-167: Images should have alternate text (alt text)

(MD045, no-alt-text)


169-169: Images should have alternate text (alt text)

(MD045, no-alt-text)


173-173: Images should have alternate text (alt text)

(MD045, no-alt-text)


177-177: Images should have alternate text (alt text)

(MD045, no-alt-text)


181-181: Images should have alternate text (alt text)

(MD045, no-alt-text)


183-183: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


185-185: Images should have alternate text (alt text)

(MD045, no-alt-text)


189-189: Images should have alternate text (alt text)

(MD045, no-alt-text)


191-191: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


193-193: Images should have alternate text (alt text)

(MD045, no-alt-text)


197-197: Images should have alternate text (alt text)

(MD045, no-alt-text)


199-199: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


201-201: Images should have alternate text (alt text)

(MD045, no-alt-text)


203-203: Trailing punctuation in heading
Punctuation: '.'

(MD026, no-trailing-punctuation)


205-205: Images should have alternate text (alt text)

(MD045, no-alt-text)


209-209: Images should have alternate text (alt text)

(MD045, no-alt-text)

docs/faq/how-can-i-deploy-my-hexabot-using-nginx.md

5-5: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3

(MD001, heading-increment)


40-40: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)


100-100: Trailing punctuation in heading
Punctuation: ':'

(MD026, no-trailing-punctuation)

⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
  • GitHub Check: API-Tests
  • GitHub Check: Frontend Tests
🔇 Additional comments (3)
docs/.gitbook/includes/untitled.md (1)

5-5: Confirm GitBook renders included image

docs/.gitbook/includes/untitled.md references ../assets/image.png and docs/.gitbook/assets/image.png exists — filesystem path is correct. Rendering can't be validated here; verify the image displays in the GitBook preview.

docs/quickstart/create-your-first-flow.md (1)

59-64: Broken local asset paths risk (future-dated filenames).

Ensure images under ../.gitbook/assets/ exist and publish with these exact names; otherwise replace with current asset names or relative links from GitBook media browser.

Also applies to: 127-130

docs/user-guide/nlu/manage-nlu-entities.md (1)

126-130: Confirm default lookup strategy during CSV import.

Docs say new entities are created with “trait” lookup strategy. If the product now supports inferring or selecting types, update accordingly; otherwise consider calling out the limitation.

@medchedli medchedli self-requested a review September 17, 2025 15:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants