Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 51 additions & 8 deletions application/single_app/admin_settings_nav.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,26 @@
"label": "Chat",
"icon": "bi-chat-square-text",
"tabs": [
{
"id": "chat-experience",
"label": "Chat Experience",
"icon": "bi-chat-square-dots",
"sections": [
{"id": "processing-thoughts-section", "label": "Processing Thoughts", "icon": "bi-stars"},
{"id": "chat-file-uploads-section", "label": "Chat File Uploads", "icon": "bi-paperclip"},
{"id": "conversation-contents-drawer-section", "label": "Conversation Contents Drawer", "icon": "bi-list-nested"},

Check warning on line 61 in application/single_app/admin_settings_nav.py

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
{"id": "workspace-scope-lock-section", "label": "Workspace Scope Lock", "icon": "bi-lock"},
],
},
{
"id": "feedback-alerts",
"label": "Feedback & Alerts",
"icon": "bi-chat-square-heart",
"sections": [
{"id": "user-feedback-section", "label": "User Feedback", "icon": "bi-chat-square-heart"},
{"id": "desktop-notifications-section", "label": "Desktop Conversation Notifications", "icon": "bi-bell"},

Check warning on line 71 in application/single_app/admin_settings_nav.py

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
],
},
{
"id": "citation",
"label": "Citations",
Expand All @@ -73,7 +93,6 @@
"icon": "bi-cpu",
"sections": [
{"id": "multi-endpoint-configuration", "label": "Model Endpoints", "icon": "bi-hdd-network"},
{"id": "processing-thoughts-section", "label": "Processing Thoughts", "icon": "bi-stars"},
{"id": "shared-conversation-file-approvals-section", "label": "Shared Conversation File Approvals", "icon": "bi-file-earmark-lock"},
{"id": "embeddings-config", "label": "Embeddings", "icon": "bi-vector-pen"},
{"id": "image-config", "label": "Image Generation", "icon": "bi-image"},
Expand Down Expand Up @@ -117,12 +136,8 @@
{"id": "group-workspaces-section", "label": "Group Workspaces", "icon": "bi-people"},
{"id": "public-workspaces-section", "label": "Public Workspaces", "icon": "bi-globe"},
{"id": "file-sharing-section", "label": "File Sharing", "icon": "bi-share"},
{"id": "chat-file-uploads-section", "label": "Chat File Uploads", "icon": "bi-paperclip"},
{"id": "metadata-extraction-section", "label": "Metadata Extraction", "icon": "bi-file-earmark-code"},
{"id": "multimodal-vision-section", "label": "Multi-Modal Vision Analysis", "icon": "bi-eye"},
{"id": "document-classification-section", "label": "Document Classification", "icon": "bi-tags"},
{"id": "retention-policy-section", "label": "Retention Policy", "icon": "bi-hourglass-split"},
{"id": "workspace-scope-lock-section", "label": "Workspace Scope Lock", "icon": "bi-lock"},
{"id": "user-agreement-section", "label": "User Agreement", "icon": "bi-file-earmark-check"},
],
},
Expand Down Expand Up @@ -187,10 +202,7 @@
"icon": "bi-shield-check",
"sections": [
{"id": "content-safety-section", "label": "Content Safety", "icon": "bi-shield-exclamation"},
{"id": "user-feedback-section", "label": "User Feedback", "icon": "bi-chat-square-heart"},
{"id": "desktop-notifications-section", "label": "Desktop Conversation Notifications", "icon": "bi-bell"},
{"id": "permissions-section", "label": "Permissions", "icon": "bi-person-check"},
{"id": "conversation-archiving-section", "label": "Conversation Archiving", "icon": "bi-archive"},
],
},
{
Expand Down Expand Up @@ -238,6 +250,37 @@
},
],
},
{
"id": "data-lifecycle",
"label": "Data Lifecycle",
"icon": "bi-hourglass-split",
"tabs": [
{
"id": "retention",
"label": "Retention",
"icon": "bi-hourglass-split",
"sections": [
{"id": "retention-policy-section", "label": "Retention Policy", "icon": "bi-hourglass-split"},

Check warning on line 263 in application/single_app/admin_settings_nav.py

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains security control, sanitization, or audit marker. Recommendation%3A Confirm the change does not weaken auth, CSRF, CSP, XSS defenses, settings sanitization, redaction, audit logging, or tests.
],
},
{
"id": "classification",
"label": "Classification",
"icon": "bi-tags",
"sections": [
{"id": "document-classification-section", "label": "Document Classification", "icon": "bi-tags"},
],
},
{
"id": "archiving",
"label": "Archiving",
"icon": "bi-archive",
"sections": [
{"id": "conversation-archiving-section", "label": "Conversation Archiving", "icon": "bi-archive"},

Check warning on line 279 in application/single_app/admin_settings_nav.py

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
],
},
],
},
{
"id": "backup-recovery",
"label": "Backup & Recovery",
Expand Down
2 changes: 1 addition & 1 deletion application/single_app/config.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
EXECUTOR_TYPE = 'thread'
EXECUTOR_MAX_WORKERS = 30
SESSION_TYPE = 'filesystem'
VERSION = "0.260.011"
VERSION = "0.260.012"
IS_DEVELOPMENT = is_development_env_enabled()

SESSION_COOKIE_SAMESITE = os.getenv('SESSION_COOKIE_SAMESITE', 'Lax')
Expand Down
21 changes: 0 additions & 21 deletions application/single_app/templates/admin/_panes/ai-models.html
Original file line number Diff line number Diff line change
Expand Up @@ -236,27 +236,6 @@ <h6 class="mb-0">Global Endpoints</h6>
</div>

<!-- Processing Thoughts Section -->
<div class="card p-3 mb-4" id="processing-thoughts-section">
<h5>
<i class="bi bi-stars me-2"></i>Processing Thoughts
</h5>
<p class="text-muted">When enabled, real-time processing steps are shown to users during chat responses and persisted for later review.</p>
<div class="form-group form-check form-switch mb-3">
<input
type="checkbox"
class="form-check-input"
id="enable_thoughts"
name="enable_thoughts"
{% if settings.enable_thoughts %}checked{% endif %}
>
<label class="form-check-label ms-2" for="enable_thoughts">
Enable Processing Thoughts
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Show real-time processing steps (searching documents, web search, agent calls, etc.) to users during chat. Steps are stored in Cosmos DB and can be reviewed per-message via a stars icon."></i>
</div>
</div>

<!-- Shared Conversation File Approvals Section -->
<div class="card p-3 mb-4" id="shared-conversation-file-approvals-section">
<h5>
<i class="bi bi-file-earmark-lock me-2"></i>Shared Conversation File Approvals
Expand Down
21 changes: 21 additions & 0 deletions application/single_app/templates/admin/_panes/archiving.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<div class="tab-pane fade" id="archiving" role="tabpanel" aria-labelledby="archiving-tab">

Check warning on line 1 in application/single_app/templates/admin/_panes/archiving.html

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains security control, sanitization, or audit marker. Recommendation%3A Confirm the change does not weaken auth, CSRF, CSP, XSS defenses, settings sanitization, redaction, audit logging, or tests.
<div class="card p-3 mb-3" id="conversation-archiving-section">

Check warning on line 2 in application/single_app/templates/admin/_panes/archiving.html

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
<h5>
<i class="bi bi-archive me-2"></i>Conversation Archiving

Check warning on line 4 in application/single_app/templates/admin/_panes/archiving.html

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
</h5>
<p class="text-muted">When enabled, conversation deletions will be archived instead of permanently deleted.</p>

Check warning on line 6 in application/single_app/templates/admin/_panes/archiving.html

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
<div class="form-group form-check form-switch mb-3">
<input
type="checkbox"
class="form-check-input"
id="enable_conversation_archiving"

Check warning on line 11 in application/single_app/templates/admin/_panes/archiving.html

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
name="enable_conversation_archiving"

Check warning on line 12 in application/single_app/templates/admin/_panes/archiving.html

View workflow job for this annotation

GitHub Actions / malicious-pr-security-review

Important - Changed line contains AI, plugin, agent, or workspace boundary marker. Recommendation%3A Check whether prompts, chat history, uploaded documents, embeddings, citations, settings, or identity can cross a new boundary.
{% if settings.enable_conversation_archiving %}checked{% endif %}
>
<label class="form-check-label ms-2" for="enable_conversation_archiving">
Enable Conversation Archiving
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Archive conversations instead of permanently deleting them, allowing for recovery and compliance with data retention policies."></i>
</div>
</div>
</div>
102 changes: 102 additions & 0 deletions application/single_app/templates/admin/_panes/chat-experience.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<div class="tab-pane fade" id="chat-experience" role="tabpanel" aria-labelledby="chat-experience-tab">
<div class="card p-3 mb-4" id="processing-thoughts-section">
<h5>
<i class="bi bi-stars me-2"></i>Processing Thoughts
</h5>
<p class="text-muted">When enabled, real-time processing steps are shown to users during chat responses and persisted for later review.</p>
<div class="form-group form-check form-switch mb-3">
<input
type="checkbox"
class="form-check-input"
id="enable_thoughts"
name="enable_thoughts"
{% if settings.enable_thoughts %}checked{% endif %}
>
<label class="form-check-label ms-2" for="enable_thoughts">
Enable Processing Thoughts
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Show real-time processing steps (searching documents, web search, agent calls, etc.) to users during chat. Steps are stored in Cosmos DB and can be reviewed per-message via a stars icon."></i>
</div>
</div>

<!-- Shared Conversation File Approvals Section -->
<div class="card mb-3 p-3" id="chat-file-uploads-section">
<h5>
<i class="bi bi-paperclip me-2"></i>Chat File Uploads
</h5>
<p class="text-muted">
Control whether users can upload files directly into chat conversations.
</p>
<div class="form-group form-check form-switch mb-3">
<input type="checkbox"
class="form-check-input"
id="enable_chat_file_uploads"
name="enable_chat_file_uploads"
{% if settings.enable_chat_file_uploads %}checked{% endif %} />
<label class="form-check-label ms-2" for="enable_chat_file_uploads">
Enable Chat File Uploads
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Allow users to upload files directly into personal, group, and multi-user chat conversations."></i>
</div>

<div class="card mb-3 p-3" id="conversation-contents-drawer-section">
<h5>
<i class="bi bi-list-nested me-2"></i>Conversation Contents Drawer
</h5>
<p class="text-muted">
Let users navigate long conversations from a list of their prompts.
</p>
<div class="form-group form-check form-switch mb-2">
<input
type="checkbox"
class="form-check-input"
id="enable_conversation_contents_drawer"
name="enable_conversation_contents_drawer"
{% if settings.enable_conversation_contents_drawer %}checked{% endif %}
/>
<label class="form-check-label ms-2" for="enable_conversation_contents_drawer">
Enable Conversation Contents Drawer
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Allow users to open a responsive contents drawer that lists persisted user messages and jumps to them."></i>
</div>
<p class="text-muted small mb-0">
When enabled, users can turn the drawer off for their own account from Profile settings.
</p>
</div>
<div class="form-group form-check form-switch mb-2">
<input type="checkbox"
class="form-check-input"
id="require_member_of_chat_file_upload_user"
name="require_member_of_chat_file_upload_user"
{% if settings.require_member_of_chat_file_upload_user %}checked{% endif %} />
<label class="form-check-label ms-2" for="require_member_of_chat_file_upload_user">
Require ChatFileUploadUser App Role
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="When enabled, only users assigned the ChatFileUploadUser Enterprise App role can upload files into chat."></i>
</div>
<p class="text-muted small mb-0">
Required app role value: <code>ChatFileUploadUser</code>. Assign this role to users or groups in the Enterprise App before enabling the requirement. Existing chat attachments remain visible; this only controls new uploads.
</p>
</div>
<div class="card mb-3 p-3" id="workspace-scope-lock-section">
<h5>
<i class="bi bi-lock me-2"></i>Workspace Scope Lock
</h5>
<p class="text-muted">
Control whether users can unlock workspace scope in chat conversations. When scope is locked, conversations are restricted to the workspaces that produced search results, preventing accidental cross-contamination with other data sources.
</p>
<div class="form-group form-check form-switch mb-3">
<input type="checkbox"
class="form-check-input"
id="enforce_workspace_scope_lock"
name="enforce_workspace_scope_lock"
{% if settings.enforce_workspace_scope_lock %}checked{% endif %}>
<label class="form-check-label ms-2" for="enforce_workspace_scope_lock">
Enforce Workspace Scope Lock
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="When enabled, users cannot unlock the workspace scope on conversations. Scope automatically locks after the first AI search and remains locked. Disable this to allow users to manually unlock scope."></i>
</div>
</div>

<!-- User Agreement Section -->
</div>
47 changes: 47 additions & 0 deletions application/single_app/templates/admin/_panes/classification.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<div class="tab-pane fade" id="classification" role="tabpanel" aria-labelledby="classification-tab">
<div class="card mb-3 p-3" id="document-classification-section">
<h5>
<i class="bi bi-tags me-2"></i>Document Classification
</h5>
<p class="text-muted">
Enable this feature to allow users to classify documents uploaded to their workspaces using predefined categories.
</p>
<div class="form-group form-check form-switch mb-3">
<input
type="checkbox"
class="form-check-input"
id="enable_document_classification"
name="enable_document_classification"
{% if settings.enable_document_classification %}checked{% endif %}>
<label class="form-check-label ms-2" for="enable_document_classification">
Enable Document Classification
</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Allow users to classify uploaded documents with predefined categories for better organization and search filtering."></i>
</div>


<div id="document_classification_settings" {% if not settings.enable_document_classification %}style="display: none;"{% endif %}>
<h6>Classification Categories</h6>
<p class="text-muted small">Define the labels and corresponding colors for document classification.</p>
<table class="table table-sm table-bordered">
<thead class="table-light">
<tr>
<th style="width: 50%;">Label</th>
<th style="width: 30%;">Color</th>
<th style="width: 20%;">Actions</th>
</tr>
</thead>
<tbody id="classification-categories-tbody">

</tbody>
</table>
<button type="button" id="add-classification-btn" class="btn btn-success btn-sm mt-2">
<i class="bi bi-plus-circle"></i> Add New Category
</button>

<input type="hidden" name="document_classification_categories_json" id="document_classification_categories_json">
</div>
</div>

<!-- Retention Policy Section -->
</div>
Loading
Loading