Added mailboxes as local data sources (#1022)
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Sync Flatpak repo (push) Blocked by required conditions
Build and Release / Collect Flatpak artifacts (push) Blocked by required conditions
Build and Release / Verify (push) Waiting to run
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-10-04 12:26:26 +02:00
1 parent 93be539e50
commit c4400c0ff6
343 files changed
+26051 -3122

No files matched your search

@@ -21,7 +21,7 @@ namespace AIStudio.Tools.ToolCallingSystem.ToolCallingImplementations;
/// Confluence's REST API. The model only passes words and a space key; the tool builds the CQL
/// itself, so a model cannot turn the search into another query.<br/><br/>
/// The search page shows excerpts only. To read a result, the model opens it with Read Web Page,
/// which is why selecting this tool also selects that one, see ToolSelectionRules.NormalizeSelection.<br/><br/>
/// which is why selecting this tool also selects that one, see ToolRegistry.NormalizeSelection.<br/><br/>
/// Whatever the wiki returns is internal to the organization. The tool is therefore offered to
/// High-confidence providers only, checks that again before each search, and raises the chat's
/// required confidence to High, so the results never reach a less trusted provider later on.
@@ -43,7 +43,23 @@ public sealed class ConfluenceSearchTool(WebPageRetrievalService webPageRetrieva
public string ImplementationKey => ToolSelectionRules.SEARCH_CONFLUENCE_TOOL_ID;
public ToolDefinition GetDefinition() => new()
public ToolDefinition GetDefinition() => CreateDefinition();
/// <summary>
/// The wiki configured for this tool, or null when no valid one is.
/// </summary>
/// <remarks>
/// A service configured in AI Studio, so a chat restricted by a mailbox may still read its
/// pages through Read Web Page. Whether the tool itself is switched on does not matter for that:
/// the wiki is no less configured, and Read Web Page reaches the same pages in any other chat.
/// </remarks>
internal static async Task<Uri?> ReadConfiguredWikiAsync(ToolSettingsService toolSettingsService)
{
var settingsValues = await toolSettingsService.GetSettingsAsync(CreateDefinition());
return TryParseBaseUrl(settingsValues.GetValueOrDefault(BASE_URL_SETTING), out var baseUrl) ? baseUrl : null;
}
private static ToolDefinition CreateDefinition() => new()
{
Id = ToolSelectionRules.SEARCH_CONFLUENCE_TOOL_ID,
ImplementationKey = ToolSelectionRules.SEARCH_CONFLUENCE_TOOL_ID,
@@ -78,6 +94,9 @@ public sealed class ConfluenceSearchTool(WebPageRetrievalService webPageRetrieva
public bool ReturnsUntrustedExternalContent => true;
// Only the configured wiki gets the query, and a redirect out of it is refused:
public ToolOutboundData OutboundData => ToolOutboundData.CONFIGURED_SERVICE;
public IReadOnlySet<string> SensitiveTraceArgumentNames => new HashSet<string>(StringComparer.Ordinal) { QUERY_ARGUMENT };
public string GetDisplayName() => TB("Search Confluence");