Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
0854deb
added functionality to save/move tokenizer file
PaulKoudelka Apr 10, 2026
e07ca37
added functionality to add tokenizer to LLM and embedding models
PaulKoudelka Apr 10, 2026
4157340
token count now adapts to chosen provider tokenizer
PaulKoudelka Apr 14, 2026
4a8ab90
cleanup to ensure uniform style of code
PaulKoudelka Apr 15, 2026
95fb213
removed print statements
PaulKoudelka Apr 15, 2026
aa554d4
added possibility to add tokenizer via plugin and refactored earlier …
PaulKoudelka Apr 23, 2026
54ef684
improved visual representation of SelectFile component with errors
PaulKoudelka Apr 24, 2026
e3cb7e9
Merge branch 'main' into custom-tokenizer
PaulKoudelka Apr 24, 2026
ac677c5
background embed
PaulKoudelka May 8, 2026
637bf97
added manual refresh and cleaned up code
PaulKoudelka May 13, 2026
00b6c98
Merge branch 'main' into chunk-data
PaulKoudelka May 26, 2026
ea87d79
current main is now successfully merged into branch
PaulKoudelka May 27, 2026
b7b18aa
Merge branch 'main' into chunk-data
PaulKoudelka Jun 10, 2026
6989cbe
changed qdrant to qdrant edge
PaulKoudelka Jun 10, 2026
2e06af1
Merge branch 'main' into chunk-data
PaulKoudelka Jul 1, 2026
c59e33e
added sql integration instead of json files
PaulKoudelka Jul 28, 2026
2332e83
Added dependencies for sql
PaulKoudelka Jul 28, 2026
95ca748
made file watchers more robust against multiple triggers
PaulKoudelka Jul 28, 2026
1bf9328
made the chunking process more robust
PaulKoudelka Jul 28, 2026
759c7f9
improved stability of embedding chunks
PaulKoudelka Jul 28, 2026
fd2d998
added warning and improved error handling
PaulKoudelka Jul 28, 2026
2829051
made only custom tokenizer visible in chat
PaulKoudelka Jul 29, 2026
89f7156
improved chunking pipeline and handling of expert settings
PaulKoudelka Jul 29, 2026
b3ba945
made the embedding procedure more robust
PaulKoudelka Aug 3, 2026
c78a8f0
added metadata for bm25 and also confidence levels
PaulKoudelka Aug 3, 2026
010f35b
added retrieval with vector and bm25 search
PaulKoudelka Aug 3, 2026
2a3a828
forced overlap on chunks
PaulKoudelka Aug 4, 2026
23416b2
run optimise on qdrant_edge store
PaulKoudelka Aug 4, 2026
3d68d73
changed to sqlite connection to ef core
PaulKoudelka Aug 4, 2026
9932b58
Merge branch 'main' into chunk-data
PaulKoudelka Aug 4, 2026
3eca153
fixed merge errors and added language support for german
PaulKoudelka Aug 4, 2026
185a99c
Added security checks for confidence levels
PaulKoudelka Aug 5, 2026
3918b48
fixed tokenization issue for long files
PaulKoudelka Aug 10, 2026
9ab196c
ensured prompts fit embedding model
PaulKoudelka Aug 10, 2026
6985678
changed DateTime to DateTimeOffset
PaulKoudelka Aug 10, 2026
c8c1e38
made tokenizer concurrent and threadsafe
PaulKoudelka Aug 10, 2026
f9263b0
fixed the expert settings for datasource_file
PaulKoudelka Aug 10, 2026
2547701
ensured consistent maximum token limit
PaulKoudelka Aug 10, 2026
b4e916e
fixed sqlite info
PaulKoudelka Aug 10, 2026
202e374
moved datasource indexing to lower level
PaulKoudelka Aug 10, 2026
92e986d
ensured data sources can be renamed and made it secure
PaulKoudelka Aug 11, 2026
987f493
made check for vectordb more robust
PaulKoudelka Aug 11, 2026
c92e83e
made datasources button an icon
PaulKoudelka Aug 12, 2026
d95487a
disabled images for RAG for now
PaulKoudelka Aug 12, 2026
647c428
improved code and made sure components are reused if possible
PaulKoudelka Aug 12, 2026
786b106
made datasource selection more user friendly
PaulKoudelka Aug 13, 2026
88999d9
refactored confidence levels and ensured checks work
PaulKoudelka Aug 14, 2026
50aa5c4
fixed issue where augumentation failed
PaulKoudelka Aug 14, 2026
1a26312
replaced embedding_state with index_store as a sqlite name
PaulKoudelka Aug 14, 2026
15afe1c
refactored the classes and functions
PaulKoudelka Aug 14, 2026
aafc58b
showed user default values in expert settings for datasources
PaulKoudelka Aug 14, 2026
d883e9d
translated the missing pieces
PaulKoudelka Aug 14, 2026
fe35630
Merge branch 'main' into chunk-data
SommerEngineering Sep 5, 2026
8950acb
Keep provider management working when tokenizer storage fails
SommerEngineering Sep 6, 2026
8cdfdc4
Fix the lifecycle of the debounced user prompt component
SommerEngineering Sep 6, 2026
d3a40e9
Gate the RAG background work behind the preview feature flag
SommerEngineering Sep 6, 2026
fb8e37a
Clean up compiler and inspection warnings
SommerEngineering Sep 6, 2026
2c212f7
Resolve the remaining unused-symbol warnings
SommerEngineering Sep 6, 2026
1bf11c0
Fix the Clippy warnings in the runtime
SommerEngineering Sep 6, 2026
9875fbc
Report prompt injection findings from the embedding pipeline
SommerEngineering Sep 6, 2026
4e67504
Classify embedding failures at the provider level
SommerEngineering Sep 6, 2026
21a0149
Report embedding failures with a clear cause
SommerEngineering Sep 6, 2026
871bbfe
Show why an embedding or a retrieval failed
SommerEngineering Sep 6, 2026
a1171f6
Updated I18N
SommerEngineering Sep 6, 2026
7b25b89
Add the changelog entries for local RAG
SommerEngineering Sep 6, 2026
6c13607
Use the storage icon for data sources
SommerEngineering Sep 6, 2026
d386ebc
Raise local RAG from prototype to beta
SommerEngineering Sep 6, 2026
4c69434
Add a data sources panel to the app settings
SommerEngineering Sep 6, 2026
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
4 changes: 4 additions & 0 deletions app/MindWork AI Studio.sln.DotSettings
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
<!-- The local RAG index store is SQLite, where TEXT is stored dynamically. HasMaxLength() has no
effect there, while picking arbitrary limits for paths or chunk texts would turn into real
storage errors as soon as somebody indexes a deeply nested folder or a long document. -->
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=EntityFramework_002EModelValidation_002EUnlimitedStringLength/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AI/@EntryIndexedValue">AI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EDI/@EntryIndexedValue">EDI</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ERI/@EntryIndexedValue">ERI</s:String>
Expand Down
10 changes: 9 additions & 1 deletion app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -140,13 +140,21 @@ public async Task<List<SelectedDataSource>> PerformSelectionAsync(IProvider prov
//

// We start with the provider currently selected by the user:
var agentProvider = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_DATA_SOURCE_SELECTION, provider.Id, true);
var requiredDataSecurity = dataSources.AllowedDataSources.GetRequiredSecurityPolicy();
var requiredConfidenceLevel = dataSources.AllowedDataSources.GetRequiredConfidenceLevel();
var agentProvider = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_DATA_SOURCE_SELECTION, provider.ConfiguredProviderId, true);
if (agentProvider == Settings.Provider.NONE)
{
logger.LogWarning("No provider is selected for the agent. The agent cannot select data sources.");
return [];
}

if (!agentProvider.AllowsDataSourceAccess(this.SettingsManager, requiredDataSecurity, requiredConfidenceLevel))
{
logger.LogWarning($"The agent for data source selection uses provider '{agentProvider.InstanceName}' with confidence '{agentProvider.GetConfidenceLevel(this.SettingsManager).GetName()}', but the available data sources require data security '{requiredDataSecurity}' and provider confidence '{requiredConfidenceLevel.GetName()}'. The agent cannot select data sources.");
return [];
}

// Assign the provider settings to the agent:
logger.LogInformation($"The agent for the data source selection uses the provider '{agentProvider.InstanceName}' ({agentProvider.UsedLLMProvider.ToName()}, confidence={agentProvider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()}).");
this.ProviderSettings = agentProvider;
Expand Down
18 changes: 15 additions & 3 deletions app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using AIStudio.Chat;
using AIStudio.Provider;
using AIStudio.Settings;
using AIStudio.Settings.DataModel;
using AIStudio.Tools.RAG;
using AIStudio.Tools.Services;

Expand Down Expand Up @@ -129,19 +130,30 @@ public override async Task<ContentBlock> ProcessInput(ContentBlock input, IDicti
/// you can set the provider once and then call the validation method in parallel.
/// </remarks>
/// <param name="provider">The current LLM provider. When the user doesn't preselect an agent provider, the agent uses this provider.</param>
public void SetLLMProvider(IProvider provider)
/// <param name="requiredDataSecurity">The data security required by the retrieved data.</param>
/// <param name="requiredConfidenceLevel">The minimum provider confidence required by the retrieved data.</param>
public bool SetLLMProvider(IProvider provider, DataSourceSecurity requiredDataSecurity = DataSourceSecurity.NOT_SPECIFIED, ConfidenceLevel requiredConfidenceLevel = ConfidenceLevel.NONE)
{
// We start with the provider currently selected by the user:
var agentProvider = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_RETRIEVAL_CONTEXT_VALIDATION, provider.Id, true);
var agentProvider = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_RETRIEVAL_CONTEXT_VALIDATION, provider.ConfiguredProviderId, true);
if (agentProvider == Settings.Provider.NONE)
{
logger.LogWarning("No provider is selected for the agent.");
return;
this.ProviderSettings = Settings.Provider.NONE;
return false;
}

if (!agentProvider.AllowsDataSourceAccess(this.SettingsManager, requiredDataSecurity, requiredConfidenceLevel))
{
logger.LogWarning($"The agent for retrieval context validation uses provider '{agentProvider.InstanceName}' with confidence '{agentProvider.GetConfidenceLevel(this.SettingsManager).GetName()}', but the retrieved data requires data security '{requiredDataSecurity}' and provider confidence '{requiredConfidenceLevel.GetName()}'. The agent cannot validate retrieval contexts.");
this.ProviderSettings = Settings.Provider.NONE;
return false;
}

// Assign the provider settings to the agent:
logger.LogInformation($"The agent for the retrieval context validation uses the provider '{agentProvider.InstanceName}' ({agentProvider.UsedLLMProvider.ToName()}, confidence={agentProvider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()}).");
this.ProviderSettings = agentProvider;
return true;
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
</MudListItem>
</MudList>

<PreviewPrototype ApplyInnerScrollingFix="true"/>
<PreviewBeta ApplyInnerScrollingFix="true"/>
<div class="mb-6"></div>

<MudText Typo="Typo.h4" Class="mb-3">
Expand Down
Loading