Public Access
Expand settings and logs agent tools
PR and Push Build/Test / build-and-test (push) Successful in 9m36s
PR and Push Build/Test / build-and-test (push) Successful in 9m36s
This commit is contained in:
@@ -1,7 +1,12 @@
|
||||
using MeetingAssistant.LaunchProfiles;
|
||||
using MeetingAssistant.MeetingNotes;
|
||||
using MeetingAssistant.Recording;
|
||||
using MeetingAssistant.Summary;
|
||||
using MeetingAssistant.Speakers;
|
||||
using MeetingAssistant.Transcription;
|
||||
using Microsoft.Extensions.AI;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Options;
|
||||
|
||||
namespace MeetingAssistant.Workflow;
|
||||
@@ -15,6 +20,12 @@ public sealed class WorkflowRulesEditorChatPipeline : IWorkflowRulesEditorChatPi
|
||||
private readonly IWorkflowRulesEditorInstructionBuilder instructionBuilder;
|
||||
private readonly IDbContextFactory<SpeakerIdentityDbContext> speakerIdentityDbContextFactory;
|
||||
private readonly IWorkflowRulesEditorSamplePlaybackQueue samplePlaybackQueue;
|
||||
private readonly MeetingRecordingCoordinator recordingCoordinator;
|
||||
private readonly IMeetingMetadataProvider meetingMetadataProvider;
|
||||
private readonly ILaunchProfileOptionsProvider launchProfiles;
|
||||
private readonly ISpeakerIdentityMergeService identityMergeService;
|
||||
private readonly AsrDiagnosticService asrDiagnosticService;
|
||||
private readonly IConfiguration configuration;
|
||||
|
||||
public WorkflowRulesEditorChatPipeline(
|
||||
IOptions<MeetingAssistantOptions> options,
|
||||
@@ -22,7 +33,13 @@ public sealed class WorkflowRulesEditorChatPipeline : IWorkflowRulesEditorChatPi
|
||||
ILogger<WorkflowRulesEditorChatPipeline> logger,
|
||||
IWorkflowRulesEditorInstructionBuilder instructionBuilder,
|
||||
IDbContextFactory<SpeakerIdentityDbContext> speakerIdentityDbContextFactory,
|
||||
IWorkflowRulesEditorSamplePlaybackQueue samplePlaybackQueue)
|
||||
IWorkflowRulesEditorSamplePlaybackQueue samplePlaybackQueue,
|
||||
MeetingRecordingCoordinator recordingCoordinator,
|
||||
IMeetingMetadataProvider meetingMetadataProvider,
|
||||
ILaunchProfileOptionsProvider launchProfiles,
|
||||
ISpeakerIdentityMergeService identityMergeService,
|
||||
AsrDiagnosticService asrDiagnosticService,
|
||||
IConfiguration configuration)
|
||||
{
|
||||
this.options = options.Value;
|
||||
this.loggerFactory = loggerFactory;
|
||||
@@ -30,6 +47,12 @@ public sealed class WorkflowRulesEditorChatPipeline : IWorkflowRulesEditorChatPi
|
||||
this.instructionBuilder = instructionBuilder;
|
||||
this.speakerIdentityDbContextFactory = speakerIdentityDbContextFactory;
|
||||
this.samplePlaybackQueue = samplePlaybackQueue;
|
||||
this.recordingCoordinator = recordingCoordinator;
|
||||
this.meetingMetadataProvider = meetingMetadataProvider;
|
||||
this.launchProfiles = launchProfiles;
|
||||
this.identityMergeService = identityMergeService;
|
||||
this.asrDiagnosticService = asrDiagnosticService;
|
||||
this.configuration = configuration;
|
||||
}
|
||||
|
||||
public async Task<WorkflowRulesEditorChatResult> SendAsync(
|
||||
@@ -47,7 +70,13 @@ public sealed class WorkflowRulesEditorChatPipeline : IWorkflowRulesEditorChatPi
|
||||
var tools = new WorkflowRulesEditorTools(
|
||||
options,
|
||||
speakerIdentityDbContextFactory,
|
||||
samplePlaybackQueue);
|
||||
samplePlaybackQueue,
|
||||
recordingCoordinator,
|
||||
meetingMetadataProvider,
|
||||
launchProfiles,
|
||||
identityMergeService,
|
||||
asrDiagnosticService,
|
||||
configuration);
|
||||
var messages = conversation
|
||||
.Select(ToChatMessage)
|
||||
.Append(new ChatMessage(ChatRole.User, userMessage.Trim()))
|
||||
@@ -181,6 +210,102 @@ public sealed class WorkflowRulesEditorChatPipeline : IWorkflowRulesEditorChatPi
|
||||
tools.SearchProjects,
|
||||
"search_projects",
|
||||
"Search files in all existing projects with .NET regular expression syntax. Use file_pattern to limit searched files by glob, for example *.md or **/*.md."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.ListRecentSummaries,
|
||||
"list_recent_summaries",
|
||||
"List recent meeting summary notes from the configured summaries folder, newest first. Returns summary, meeting note, transcript, and assistant context paths to pass to the read tools."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.ReadSummary,
|
||||
"read_summary",
|
||||
"Read one meeting summary file by path relative to the configured summaries folder. Supports from/to or tail."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.ReadTranscript,
|
||||
"read_transcript",
|
||||
"Read one transcript file by path relative to the configured transcripts folder. Supports from/to or tail."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.ReadMeetingNote,
|
||||
"read_meeting_note",
|
||||
"Read one meeting note file by path relative to the configured meeting notes folder. Supports from/to or tail."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.ReadContext,
|
||||
"read_context",
|
||||
"Read one assistant context file by path relative to the configured assistant context folder. Supports from/to or tail."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteSummary,
|
||||
"write_summary",
|
||||
"Create or update a meeting summary file by path relative to the configured summaries folder. Appends by default, supports from/to replacement, insert, and replace_file for whole-file replacement."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteTranscript,
|
||||
"write_transcript",
|
||||
"Create or update a transcript file by path relative to the configured transcripts folder. Appends by default, supports from/to replacement, insert, and replace_file for whole-file replacement."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteMeetingNote,
|
||||
"write_meeting_note",
|
||||
"Create or update a meeting note file by path relative to the configured meeting notes folder. Appends by default, supports from/to replacement, insert, and replace_file for whole-file replacement."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteContext,
|
||||
"write_context",
|
||||
"Create or update an assistant context file by path relative to the configured assistant context folder. Appends by default, supports from/to replacement, insert, and replace_file for whole-file replacement."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteSummaryFrontmatter,
|
||||
"write_summary_frontmatter",
|
||||
"Replace only the YAML frontmatter of a meeting summary file while preserving the body. The path is relative to the configured summaries folder."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteTranscriptFrontmatter,
|
||||
"write_transcript_frontmatter",
|
||||
"Replace only the YAML frontmatter of a transcript file while preserving the body. The path is relative to the configured transcripts folder."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteMeetingNoteFrontmatter,
|
||||
"write_meeting_note_frontmatter",
|
||||
"Replace only the YAML frontmatter of a meeting note file while preserving the body. The path is relative to the configured meeting notes folder."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.WriteContextFrontmatter,
|
||||
"write_context_frontmatter",
|
||||
"Replace only the YAML frontmatter of an assistant context file while preserving the body. The path is relative to the configured assistant context folder."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.SearchSummaries,
|
||||
"search_summaries",
|
||||
"Search meeting summary files with .NET regular expression syntax. Supports an optional file_pattern glob."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.SearchTranscripts,
|
||||
"search_transcripts",
|
||||
"Search transcript files with .NET regular expression syntax. Supports an optional file_pattern glob."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.SearchMeetingNotes,
|
||||
"search_meeting_notes",
|
||||
"Search meeting note files with .NET regular expression syntax. Supports an optional file_pattern glob."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.SearchContext,
|
||||
"search_context",
|
||||
"Search assistant context files with .NET regular expression syntax. Supports an optional file_pattern glob."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.GetHealth,
|
||||
"get_health",
|
||||
"Return the same basic health information as the local /health endpoint."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.GetRecordingStatus,
|
||||
"get_recording_status",
|
||||
"Return the current recording, artifact, process, and launch profile status without making an HTTP call."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.DiagnoseCurrentMeeting,
|
||||
"diagnose_current_meeting",
|
||||
"Run the current meeting metadata diagnostic. Optional launch_profile selects a configured profile, started_at is a date/time, and timeout_seconds overrides the metadata lookup timeout."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.MergeRecentSpeakerIdentities,
|
||||
"merge_recent_speaker_identities",
|
||||
"Run the recent speaker identity merge diagnostic. Optional recent_days overrides the configured merge age window; optional launch_profile selects profile options."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.ReloadWorkflowConfiguration,
|
||||
"reload_workflow_configuration",
|
||||
"Reload application configuration in-process and return the currently bound workflow rules path."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.DiagnoseAsrTranscribeFile,
|
||||
"diagnose_asr_transcribe_file",
|
||||
"Run ASR diagnostics on a local WAV file and return live transcription segments. Optional launch_profile selects a configured ASR profile."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.DiagnoseAsrDiarizeFile,
|
||||
"diagnose_asr_diarize_file",
|
||||
"Run ASR diarization diagnostics on a local WAV file and return finished segments. Optional num_speakers and launch_profile mirror the HTTP diagnostic endpoint."),
|
||||
AIFunctionFactory.Create(
|
||||
tools.SearchIdentities,
|
||||
"search_identities",
|
||||
|
||||
Reference in New Issue
Block a user