Public Access
Add transcript line workflow rules
PR and Push Build/Test / build-and-test (push) Failing after 13m27s
PR and Push Build/Test / build-and-test (push) Failing after 13m27s
This commit is contained in:
@@ -287,7 +287,7 @@ Speaker identity matching keeps candidate samples only after a diarized speaker
|
||||
|
||||
## Automation
|
||||
|
||||
`Automation:RulesPath` points to an optional local YAML rules file. The default `meeting-rules.local.yaml` is ignored by git. Rules can trigger on meeting creation, assistant-context state transitions, or identified speakers; conditions are evaluated with NCalc-style expressions and step values can use Razor syntax against `Model.Meeting`, `Model.Event`, and `Model.Speaker`.
|
||||
`Automation:RulesPath` points to an optional local YAML rules file. The default `meeting-rules.local.yaml` is ignored by git. Rules can trigger on meeting creation, assistant-context state transitions, identified speakers, or transcript line writes; conditions are evaluated with NCalc-style expressions and step values can use Razor syntax against `Model.Meeting`, `Model.Event`, `Model.Speaker`, and `Model.Transcript`.
|
||||
|
||||
See `docs/meeting-workflow-engine.md` for the detailed YAML format, supported variables, examples, and extension notes.
|
||||
|
||||
|
||||
@@ -68,6 +68,7 @@ The engine runs when `MeetingRecordingCoordinator` emits a meeting workflow even
|
||||
- `created`: after the meeting note and assistant context artifact are created.
|
||||
- `state_transition`: after the assistant context state moves forward.
|
||||
- `speaker_identified`: when live or final speaker identification reports a display name.
|
||||
- `transcript_line`: before a formatted transcript line is appended or used in a transcript rewrite.
|
||||
|
||||
For every event, the engine:
|
||||
|
||||
@@ -79,6 +80,8 @@ For every event, the engine:
|
||||
6. Saves the meeting note once if any meeting-note step changed it.
|
||||
7. Updates assistant-context frontmatter links/title from the saved meeting note after note changes.
|
||||
|
||||
For `transcript_line` events, the engine returns the possibly updated transcript line to the caller. Live transcript appends, live speaker relabel rewrites, final diarization rewrites, and final speaker-identity rewrites all pass their formatted lines through this event before writing markdown.
|
||||
|
||||
Rules are best-effort automation. The settings/logs write tool rejects invalid YAML, unknown steps, unsupported set-property fields, trigger or condition entries without a supported key, and step value Razor templates that fail against the workflow template model before writing the rules file. Invalid NCalc expressions can still fail at workflow runtime and should be covered by tests before the engine is broadened.
|
||||
|
||||
## YAML Shape
|
||||
@@ -145,6 +148,16 @@ on:
|
||||
name: Ada
|
||||
```
|
||||
|
||||
### `transcript_line`
|
||||
|
||||
Runs before a formatted transcript line is written. `speaker` is optional; when supplied, it matches the effective speaker label case-insensitively.
|
||||
|
||||
```yaml
|
||||
on:
|
||||
- transcript_line:
|
||||
speaker: Guest-1
|
||||
```
|
||||
|
||||
## Conditions
|
||||
|
||||
Conditions use NCalc expressions. Dotted workflow variables may be written directly; the engine rewrites them into NCalc parameters internally.
|
||||
@@ -165,6 +178,8 @@ Available condition variables:
|
||||
- `state.from`
|
||||
- `state.to`
|
||||
- `speaker.name`
|
||||
- `transcript.line`
|
||||
- `transcript.speaker`
|
||||
|
||||
Available helper functions:
|
||||
|
||||
@@ -196,6 +211,8 @@ Step `value` fields can be plain strings or Razor templates. Razor templates rec
|
||||
- `Model.Event.From`
|
||||
- `Model.Event.To`
|
||||
- `Model.Speaker.Name`
|
||||
- `Model.Transcript.Line`
|
||||
- `Model.Transcript.Speaker`
|
||||
|
||||
Example:
|
||||
|
||||
@@ -234,7 +251,7 @@ steps:
|
||||
|
||||
### `set_property`
|
||||
|
||||
Sets a supported meeting property. The initial supported property is `title` or `meeting.title`.
|
||||
Sets a supported property. Supported meeting properties are `title` and `meeting.title`. During `transcript_line` events, `transcript.line` is also supported and replaces the single formatted line that will be written.
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
@@ -243,6 +260,13 @@ steps:
|
||||
value: "@Model.Meeting.Title.Replace('[External] ', '')"
|
||||
```
|
||||
|
||||
```yaml
|
||||
steps:
|
||||
- uses: set_property
|
||||
property: transcript.line
|
||||
value: '@Model.Transcript.Line.Replace("*****", "[redacted]")'
|
||||
```
|
||||
|
||||
### `add_context`
|
||||
|
||||
Appends rendered text to the assistant context artifact body. This step does not count as a meeting-note mutation and does not cause a meeting-note save by itself.
|
||||
@@ -323,6 +347,21 @@ rules:
|
||||
value: "Manuel is attending; include implementation follow-ups in the summary."
|
||||
```
|
||||
|
||||
Replace Azure Speech masked profanity before transcript markdown is written:
|
||||
|
||||
```yaml
|
||||
rules:
|
||||
- name: redact-masked-profanity
|
||||
on:
|
||||
- transcript_line: {}
|
||||
if:
|
||||
- condition: contains(transcript.line, '*****')
|
||||
steps:
|
||||
- uses: set_property
|
||||
property: transcript.line
|
||||
value: '@Model.Transcript.Line.Replace("*****", "[redacted]")'
|
||||
```
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
Core files:
|
||||
|
||||
Reference in New Issue
Block a user