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
46 changes: 40 additions & 6 deletions application/single_app/admin_settings_nav.py
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,31 @@
"icon": "bi-cpu",
"tabs": [
{
"id": "ai-models",
"label": "AI Models",
"icon": "bi-cpu",
# The Chat Model card is reached through the legacy model
# settings dialog opened from here, so it is listed with the
# endpoints rather than as a tab of its own.
"id": "model-endpoints",
"label": "Model Endpoints",
"icon": "bi-hdd-network",
"sections": [
{"id": "multi-endpoint-configuration", "label": "Model Endpoints", "icon": "bi-hdd-network"},
{"id": "gpt-config", "label": "Chat Model", "icon": "bi-chat-square-text"},
],
},
{
"id": "embeddings",

Check warning on line 109 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.
"label": "Embeddings",

Check warning on line 110 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.
"icon": "bi-vector-pen",
"sections": [
{"id": "embeddings-config", "label": "Embeddings", "icon": "bi-vector-pen"},
],
},
{
"id": "image-generation",
"label": "Image Generation",
"icon": "bi-image",
"sections": [
{"id": "image-config", "label": "Image Generation", "icon": "bi-image"},
{"id": "gpt-config", "label": "Chat Model", "icon": "bi-chat-square-text"},
],
},
],
Expand All @@ -113,13 +130,30 @@
"tabs": [
{
"id": "agents",
"label": "Agents and Actions",
"label": "Agents",

Check warning on line 133 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.
"icon": "bi-robot",
"sections": [
{"id": "document-action-capabilities-card", "label": "Document Action Capabilities", "icon": "bi-files"},
{"id": "agents-config", "label": "Agents Configuration", "icon": "bi-robot"},
{"id": "agent-template-approvals-section", "label": "Agent Template Approvals", "icon": "bi-layers", "condition": "enable_agent_template_gallery"},
],
},
{
"id": "actions",
"label": "Actions",
"icon": "bi-plugin",

Check warning on line 143 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.
"sections": [
{"id": "document-action-capabilities-card", "label": "Document Action Capabilities", "icon": "bi-files"},
{"id": "actions-config", "label": "Actions Configuration", "icon": "bi-plugin"},
],
},
{
# The whole tab is behind mcp_ui_enabled, so the tab carries the
# condition rather than the single section inside it.
"id": "inbound-mcp",
"label": "Inbound MCP",
"icon": "bi-diagram-3",
"condition": "mcp_ui_enabled",
"sections": [
{"id": "inbound-mcp-configuration", "label": "Inbound MCP", "icon": "bi-diagram-3", "condition": "mcp_ui_enabled"},
],
},
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.014"
VERSION = "0.260.015"
IS_DEVELOPMENT = is_development_env_enabled()

SESSION_COOKIE_SAMESITE = os.getenv('SESSION_COOKIE_SAMESITE', 'Lax')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -296,6 +296,7 @@ const LEGACY_TAB_REDIRECTS = {
'security': 'secrets',
'workspaces': 'workspace-types',
'search-extract': 'web-research',
'ai-models': 'model-endpoints',
};

function resolveAdminTabId(tabId) {
Expand Down
4 changes: 4 additions & 0 deletions application/single_app/templates/_sidebar_nav.html
Original file line number Diff line number Diff line change
Expand Up @@ -517,6 +517,9 @@
</li>
{% endif %}
{% else %}
{% if not admin_tab.condition
or (admin_tab.condition == 'enable_agent_template_gallery' and app_settings.enable_agent_template_gallery)

Check warning on line 521 in application/single_app/templates/_sidebar_nav.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.
or (admin_tab.condition == 'mcp_ui_enabled' and mcp_ui_enabled) %}
<li class="nav-item">
<a class="nav-link d-flex align-items-center admin-nav-tab" href="#" data-tab="{{ admin_tab.id }}">
<i class="bi {{ admin_tab.icon }} me-2" aria-hidden="true"></i><span class="nav-text">{{ admin_tab.label }}</span>
Expand All @@ -538,6 +541,7 @@
{% endif %}
</li>
{% endif %}
{% endif %}
{% endfor %}
</ul>
</li>
Expand Down
205 changes: 205 additions & 0 deletions application/single_app/templates/admin/_panes/actions.html

Large diffs are not rendered by default.

738 changes: 0 additions & 738 deletions application/single_app/templates/admin/_panes/agents.html

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,4 @@ <h5>
<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>
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,4 @@ <h6>Classification Categories</h6>
<input type="hidden" name="document_classification_categories_json" id="document_classification_categories_json">
</div>
</div>

<!-- Retention Policy Section -->
</div>
2 changes: 0 additions & 2 deletions application/single_app/templates/admin/_panes/cosmos.html
Original file line number Diff line number Diff line change
Expand Up @@ -1138,6 +1138,4 @@ <h5 class="modal-title" id="cosmosThroughputContainerModalLabel">
</div>
</div>
</div>

<!-- Front Door Configuration Card -->
</div>
148 changes: 148 additions & 0 deletions application/single_app/templates/admin/_panes/embeddings.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
<div class="tab-pane fade{% if admin_landing_tab == 'embeddings' %} show active{% endif %}" id="embeddings" role="tabpanel" aria-labelledby="embeddings-tab">
<div class="card p-3 mb-4" id="embeddings-configuration">
<h5 class="card-title">
<i class="bi bi-vector-pen me-2"></i>Embeddings Configuration
</h5>
<p class="text-muted small">
Configure your embeddings settings. These are used for semantic search, knowledge-base lookups, etc.
</p>
<button type="button" class="btn btn-sm btn-outline-secondary mb-3 align-self-start" data-bs-toggle="modal" data-bs-target="#legacyModelDiscoveryIdentityGuideModal">
<i class="bi bi-question-circle me-1"></i>Setup Guide
</button>

<div class="form-group form-check form-switch mb-3 d-flex align-items-center">
<input type="checkbox" class="form-check-input me-2" id="enable_embedding_apim"
name="enable_embedding_apim" {% if settings.enable_embedding_apim %}checked{% endif %}>
<label class="form-check-label" for="enable_embedding_apim">Use APIM instead of direct to Azure
OpenAI endpoint</label>
<i class="bi bi-info-circle ms-2" data-bs-toggle="tooltip" title="Route embedding model requests through Azure API Management instead of directly to Azure OpenAI service for additional governance and monitoring."></i>
</div>

<div id="non_apim_embedding_settings" {% if settings.enable_embedding_apim %}style="display: none;" {%
endif %}>
<div class="card p-3 mb-3">
<div class="mb-3">
<label for="azure_openai_embedding_endpoint" class="form-label">
Azure OpenAI Embedding Endpoint
</label>
<input type="text" class="form-control" id="azure_openai_embedding_endpoint"
name="azure_openai_embedding_endpoint"
value="{{ settings.azure_openai_embedding_endpoint or '' }}">
</div>
<div class="mb-3">
<label for="azure_openai_embedding_authentication_type" class="form-label">
Authentication Type
</label>
<select class="form-select" id="azure_openai_embedding_authentication_type"
name="azure_openai_embedding_authentication_type">
<option value="key" {% if settings.azure_openai_embedding_authentication_type=='key'
%}selected{% endif %}>
Key
</option>
<option value="managed_identity" {% if
settings.azure_openai_embedding_authentication_type=='managed_identity' %}selected{% endif %}>
Managed Identity
</option>
</select>
</div>
<div class="mb-3">
<label for="azure_openai_embedding_subscription_id" class="form-label">Subscription
ID</label>
<input type="text" class="form-control" id="azure_openai_embedding_subscription_id"
name="azure_openai_embedding_subscription_id"
value="{{ settings.azure_openai_embedding_subscription_id or '' }}">
</div>
<div class="mb-3">
<label for="azure_openai_embedding_resource_group" class="form-label">Resource Group</label>
<input type="text" class="form-control" id="azure_openai_embedding_resource_group"
name="azure_openai_embedding_resource_group"
value="{{ settings.azure_openai_embedding_resource_group or '' }}">
</div>
<div class="mb-3" id="embedding_key_container" {% if
settings.azure_openai_embedding_authentication_type !='key' %}style="display: none;" {%
endif %}>
<label for="azure_openai_embedding_key" class="form-label">Azure OpenAI Embedding
Key</label>
<div class="input-group">
<input type="password" class="form-control" id="azure_openai_embedding_key"
name="azure_openai_embedding_key"
value="{{ settings.azure_openai_embedding_key or '' }}">
<button type="button" class="btn btn-outline-secondary"
id="toggle_embedding_key">Show</button>
</div>
</div>
<div class="mb-3">
<div id="embedding_models_list" class="mt-2 mb-3">

</div>
<small>Save pending changes to settings before clicking Fetch Embedding Models</small><br>

<input type="hidden" name="embedding_model_json" id="embedding_model_json" />


<input type="hidden" id="embedding_model" value="{{ settings.embedding_model.selected[0].deploymentName if settings.embedding_model.selected else '' }}" />


<button type="button" class="btn btn-secondary" id="fetch_embedding_models_btn">
Fetch Embedding Models
</button>
</div>
<a href="#" class="fw-bold text-decoration-none mb-2" data-bs-toggle="collapse"
data-bs-target="#advancedEmbeddingsFields" aria-expanded="false"
aria-controls="advancedEmbeddingsFields">
Show Advanced
</a>
<div class="collapse" id="advancedEmbeddingsFields">
<div class="card card-body mt-2">
<div class="mb-3">
<label for="azure_openai_embedding_api_version" class="form-label">
Azure OpenAI Embedding API Version
</label>
<input type="text" class="form-control" id="azure_openai_embedding_api_version"
name="azure_openai_embedding_api_version"
value="{{ settings.azure_openai_embedding_api_version or '' }}">
</div>
</div>
</div>
</div>
</div>

<div id="apim_embedding_settings" class="card p-3 mb-3" {% if not settings.enable_embedding_apim
%}style="display: none;" {% endif %}>
<div class="mb-3">
<label for="azure_apim_embedding_endpoint" class="form-label">Azure APIM Endpoint</label>
<input type="text" class="form-control" id="azure_apim_embedding_endpoint"
name="azure_apim_embedding_endpoint"
value="{{ settings.azure_apim_embedding_endpoint or '' }}">
</div>
<div class="mb-3">
<label for="azure_apim_embedding_api_version" class="form-label">Azure APIM API Version</label>
<input type="text" class="form-control" id="azure_apim_embedding_api_version"
name="azure_apim_embedding_api_version"
value="{{ settings.azure_apim_embedding_api_version or '' }}">
</div>
<div class="mb-3">
<label for="azure_apim_embedding_deployment" class="form-label">Azure APIM Deployment</label>
<input type="text" class="form-control" id="azure_apim_embedding_deployment"
name="azure_apim_embedding_deployment"
value="{{ settings.azure_apim_embedding_deployment or '' }}">
</div>
<div class="mb-3">
<label for="azure_apim_embedding_subscription_key" class="form-label">Azure APIM Subscription
Key</label>
<div class="input-group">
<input type="password" class="form-control" id="azure_apim_embedding_subscription_key"
name="azure_apim_embedding_subscription_key"
value="{{ settings.azure_apim_embedding_subscription_key or '' }}">
<button type="button" class="btn btn-outline-secondary"
id="toggle_azure_apim_embedding_subscription_key">Show</button>
</div>
</div>
</div>

<button type="button" class="btn btn-secondary mt-3" id="test_embedding_button">
Test Embedding Connection
</button>
<div id="test_embedding_result" class="mt-2"></div>
</div>
</div>
Loading
Loading