facilitator

package module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 8, 2026 License: MIT Imports: 8 Imported by: 0

README

OmniRole Facilitator

Go CI Go Lint Go SAST Docs Visualization License

Omnichannel Facilitator role for omniskill-compatible systems.

The Facilitator role enables AI agents to facilitate collaboration across channels (meetings, chat, phone) by preparing context, tracking discussions, and creating documentation.

Features

  • 🌐 Omnichannel - Works across meetings (OmniMeet), chat (Slack), and phone (Twilio)
  • 📋 Preparation - Gather pre-reads, create agendas, brief participants
  • Real-time Facilitation - Track action items, decisions, and discussions
  • 📄 Documentation - Generate notes, publish to Confluence, create follow-ups
  • 🔗 Integration - Connect with Confluence, Aha, Jira, GitHub, GitLab

Installation

go get github.com/plexusone/omnirole-facilitator

Quick Start

import (
    "context"
    "github.com/plexusone/omnirole-facilitator"
)

// Create the role
role := facilitator.New(facilitator.Config{
    DefaultConfluenceSpace: "TEAM",
    DefaultAhaProduct:      "PRODUCT-1",
    EnableTranscription:    true,
    EnableActionTracking:   true,
})

// Initialize with skills
err := role.Init(ctx, map[string]skill.Skill{
    "meeting":    meetingSkill,
    "google":     googleSkill,
    "confluence": confluenceSkill,
})

Required Skills

Skill Purpose
meeting Join and participate in meetings via OmniMeet
google Access Google Docs, Sheets, and Slides
confluence Publish meeting notes to Confluence

Optional Skills

Skill Purpose
chat Slack, Discord, Teams via OmniChat
voice Phone calls via Twilio/OmniVoice
aha Create features and initiatives in Aha
jira Create and link Jira issues
github Reference GitHub PRs and issues
gitlab Reference GitLab MRs and issues

Workflows

The role provides three main workflows:

prepare

Gather pre-reads and create agenda before meetings.

result, err := workflow.Execute(ctx, map[string]any{
    "meeting_id":   "meeting-123",
    "meeting_name": "Sprint Planning",
})
facilitate

Track action items, decisions, and discussions during meetings.

result, err := workflow.Execute(ctx, map[string]any{
    "meeting_id": "meeting-123",
})
wrapup

Generate notes and publish artifacts after meeting ends.

result, err := workflow.Execute(ctx, map[string]any{
    "meeting_id":       "meeting-123",
    "confluence_space": "TEAM",
})

Role Specification

The role implements the enhanced role system with a comprehensive RoleSpec:

spec := role.Spec()
// Returns:
// - ID: "facilitator"
// - Responsibilities: prepare, facilitate, document
// - Behaviors: pre-meeting-prep, during-meeting-notes, post-meeting-wrapup
// - Artifacts: meeting-notes, action-items, decisions
// - Metrics: action-capture-rate, notes-published-time, meetings-facilitated
Responsibilities
Phase Responsibility
Pre-meeting Gather pre-reads, create agenda, brief participants
Meeting Track actions, decisions, and discussions
Post-meeting Generate notes, publish to Confluence, create follow-ups
Behaviors
ID Trigger Context
pre-meeting-prep 15 minutes before meeting Always
during-meeting-notes Meeting joined Meeting
post-meeting-wrapup Meeting ended Always
Metrics
Metric Type Target
action-capture-rate Gauge >= 95%
notes-published-time Histogram <= 1 hour
meetings-facilitated Counter -

Session Management

The role maintains session state during meetings:

// Start a session
session := role.StartSession("meeting-123", "Sprint Planning")

// Track items during meeting
session.AddAction(session.Action{
    Description: "Update API documentation",
    Assignee:    "john@example.com",
})

session.AddDecision(session.Decision{
    Description: "Use gRPC for internal APIs",
    MadeBy:      "team",
})

// End session
session = role.EndSession()

Configuration

type Config struct {
    // DefaultConfluenceSpace is the Confluence space for meeting notes.
    DefaultConfluenceSpace string

    // DefaultAhaProduct is the Aha product for feature/initiative creation.
    DefaultAhaProduct string

    // EnableTranscription enables real-time transcription.
    EnableTranscription bool

    // EnableActionTracking enables automatic action item detection.
    EnableActionTracking bool

    // MeetingNotesTemplate is a custom template for meeting notes.
    MeetingNotesTemplate string
}

Package Structure

omnirole-facilitator/
├── role.go           # FacilitatorRole implementation
├── role_test.go      # Role tests
├── session.go        # Session management wrapper
├── workflows.go      # Workflow definitions
├── workflows_test.go # Workflow tests
├── prompts/
│   ├── system.md         # Main system prompt
│   ├── pre_meeting.md    # Pre-meeting phase prompt
│   ├── during_meeting.md # During-meeting phase prompt
│   └── post_meeting.md   # Post-meeting phase prompt
└── session/
    ├── session.go        # Core session tracking
    └── session_test.go   # Session tests

Documentation

License

MIT License - see LICENSE for details.

Documentation

Overview

Package facilitator provides an omnichannel Facilitator role for omniskill-compatible systems.

The Facilitator role enables AI agents to facilitate collaboration across channels:

  • Prepares meetings (gathers pre-reads, creates agendas)
  • Facilitates discussions (tracks actions, decisions, questions)
  • Creates artifacts (meeting notes, summaries, action items)
  • Integrates with external systems (Confluence, Aha, Jira, GitHub)

Required Skills

The Meeting PM role requires the following skills:

  • meeting: OmniMeet skill for joining/participating in meetings
  • google: Google Docs/Sheets/Slides for document access
  • confluence: Confluence for publishing meeting notes
  • aha: Aha for product management integration (optional)

Workflows

The role provides three main workflows:

  • prepare: Gather pre-reads, create agenda, brief participants
  • facilitate: Track action items, decisions, and discussions
  • wrapup: Generate notes, publish to Confluence, create follow-ups

Usage

role := facilitator.New(facilitator.Config{
    DefaultConfluenceSpace: "TEAM",
    DefaultAhaProduct:      "PRODUCT-1",
})

// Initialize with required skills
err := role.Init(ctx, map[string]skill.Skill{
    "meeting":    meetingSkill,
    "google":     googleSkill,
    "confluence": confluenceSkill,
    "aha":        ahaSkill,
})

Index

Constants

View Source
const (
	PhasePreMeeting  = session.PhasePreMeeting
	PhaseMeeting     = session.PhaseMeeting
	PhasePostMeeting = session.PhasePostMeeting
)

Re-export phase constants.

Variables

This section is empty.

Functions

This section is empty.

Types

type AgendaItem

type AgendaItem = session.AgendaItem

Re-export session types for convenience.

type Config

type Config struct {
	// DefaultConfluenceSpace is the Confluence space for meeting notes.
	DefaultConfluenceSpace string

	// DefaultAhaProduct is the Aha product for feature/initiative creation.
	DefaultAhaProduct string

	// EnableTranscription enables real-time transcription.
	EnableTranscription bool

	// EnableActionTracking enables automatic action item detection.
	EnableActionTracking bool

	// MeetingNotesTemplate is a custom template for meeting notes.
	// If empty, uses the default template.
	MeetingNotesTemplate string
}

Config configures the Meeting PM role.

type Decision

type Decision = session.Decision

Re-export session types for convenience.

type Document

type Document = session.Document

Re-export session types for convenience.

type FacilitatorRole

type FacilitatorRole struct {
	// contains filtered or unexported fields
}

FacilitatorRole implements the Meeting Program Manager role.

func New

func New(cfg Config) *FacilitatorRole

New creates a new Meeting PM role with the given configuration.

func (*FacilitatorRole) Behaviors

func (r *FacilitatorRole) Behaviors() []role.Behavior

Behaviors returns the behaviors defined for this role.

func (*FacilitatorRole) Close

func (r *FacilitatorRole) Close() error

Close releases any resources held by the role.

func (*FacilitatorRole) Description

func (r *FacilitatorRole) Description() string

Description returns a human-readable description.

func (*FacilitatorRole) EndSession

func (r *FacilitatorRole) EndSession() *MeetingSession

EndSession ends the current meeting session.

func (*FacilitatorRole) GetSkill

func (r *FacilitatorRole) GetSkill(name string) skill.Skill

GetSkill returns a skill by name, or nil if not available.

func (*FacilitatorRole) Init

func (r *FacilitatorRole) Init(ctx context.Context, skills map[string]skill.Skill) error

Init initializes the role with its required skills.

func (*FacilitatorRole) Metrics

func (r *FacilitatorRole) Metrics() []role.MetricDefinition

Metrics returns the metric definitions for this role.

func (*FacilitatorRole) Name

func (r *FacilitatorRole) Name() string

Name returns the role identifier.

func (*FacilitatorRole) OptionalSkills

func (r *FacilitatorRole) OptionalSkills() []string

OptionalSkills returns skills that enhance the role but aren't required.

func (*FacilitatorRole) PhasePrompt

func (r *FacilitatorRole) PhasePrompt(phase Phase) string

PhasePrompt returns the prompt for a specific meeting phase.

func (*FacilitatorRole) RequiredSkills

func (r *FacilitatorRole) RequiredSkills() []string

RequiredSkills returns the skills this role needs.

func (*FacilitatorRole) Session

func (r *FacilitatorRole) Session() *MeetingSession

Session returns the current meeting session, if any.

func (*FacilitatorRole) Spec

func (r *FacilitatorRole) Spec() *role.RoleSpec

Spec returns the complete role specification for Facilitator.

func (*FacilitatorRole) StartSession

func (r *FacilitatorRole) StartSession(meetingID, meetingName string) *MeetingSession

StartSession begins a new meeting session.

func (*FacilitatorRole) SystemPrompt

func (r *FacilitatorRole) SystemPrompt(ctx context.Context) (string, error)

SystemPrompt returns the role's system prompt.

func (*FacilitatorRole) Version added in v0.1.1

func (r *FacilitatorRole) Version() string

Version returns the role version.

func (*FacilitatorRole) Workflows

func (r *FacilitatorRole) Workflows() []role.Workflow

Workflows returns the role's workflows.

type MeetingSession

type MeetingSession = session.Session

MeetingSession is an alias for session.Session for convenience.

func NewMeetingSession

func NewMeetingSession(meetingID, meetingName string) *MeetingSession

NewMeetingSession creates a new meeting session.

type Note

type Note = session.Note

Re-export session types for convenience.

type Participant

type Participant = session.Participant

Re-export session types for convenience.

type Phase

type Phase = session.Phase

Re-export session types for convenience.

type Question

type Question = session.Question

Re-export session types for convenience.

type TranscriptSegment

type TranscriptSegment = session.TranscriptSegment

Re-export session types for convenience.

Directories

Path Synopsis
Package session manages meeting session state for the Meeting PM role.
Package session manages meeting session state for the Meeting PM role.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL