mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-09 03:11:58 +00:00
Third slice of the Microsoft Teams meeting pipeline stack, salvaged onto current main. Adds the standalone teams_pipeline plugin that consumes Graph change notifications from the webhook listener, resolves meeting artifacts (transcript first, recording + STT fallback later), persists job state in a durable store, and exposes an operator CLI for inspection, replay, subscription management, and validation. Design choices follow maintainer review feedback on PR #19815: - Standalone plugin rather than bolted-on core surface (plugins/teams_pipeline/, kind: standalone in plugin.yaml). - Zero new model tools. The agent drives the pipeline by invoking the operator CLI via the terminal tool, guided by the skill that ships with a follow-up PR. - Reuses the existing msgraph_webhook gateway platform for Graph ingress. Pipeline runtime is wired in via bind_gateway_runtime and gated on plugins.enabled so gateways that don't run the plugin boot cleanly. Additions: - plugins/teams_pipeline/: runtime (gateway wiring + config builder), pipeline core, durable SQLite store, subscription maintenance helpers, Graph artifact resolution, operator CLI (list, show, run/replay, fetch dry-run, subscriptions list, subscribe, renew-subscription, delete-subscription, maintain-subscriptions, token-health, validate). - hermes_cli/main.py: second-pass plugin CLI discovery so any standalone plugin registered via ctx.register_cli_command() outside the memory-plugin convention path gets its subcommand wired into argparse without touching core. - gateway/run.py: _teams_pipeline_plugin_enabled() config gate, _wire_teams_pipeline_runtime() binding after adapter setup, and the two runner attributes used by the runtime. Credit to @dlkakbs for the entire plugin implementation.
23 lines
772 B
Python
23 lines
772 B
Python
"""Teams meeting pipeline plugin.
|
|
|
|
Registers only operator-facing CLI surfaces. The agent should invoke these via
|
|
the terminal tool; no model tools are added by this plugin.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from plugins.teams_pipeline.cli import register_cli, teams_pipeline_command
|
|
|
|
|
|
def register(ctx) -> None:
|
|
ctx.register_cli_command(
|
|
name="teams-pipeline",
|
|
help="Inspect and operate the Microsoft Teams meeting pipeline",
|
|
setup_fn=register_cli,
|
|
handler_fn=teams_pipeline_command,
|
|
description=(
|
|
"Operator CLI for the Microsoft Teams meeting pipeline. "
|
|
"Lists jobs, inspects stored runs, replays jobs, validates Graph "
|
|
"setup, and maintains Graph subscriptions."
|
|
),
|
|
)
|