Skip to content

v0.28.0 — Slack audio transcription → summary → planning

Choose a tag to compare

@hanfour hanfour released this 29 Jun 05:11

Slack audio transcription → summary → planning

Why

Let meeting recordings and live audio clips flow through the gateway: upload or record audio in Slack → transcribe → auto-summary with a proactive next-step → continue planning / requirement-clarification in-thread with the uploader.

Added

  • Audio pipeline (packages/cli/src/gateway/audio/) — a detached coordinator (mirrors the :cr: ReviewCoordinator pattern): categoryFor routes audio → claimAudio🎧 轉錄中… ack → stream-to-temp → ffmpeg probe → too-long gate → quota gate (actual minutes, before any API cost) → OpenAI transcription (ffmpeg re-encode to 16 kHz mono + byte-budget chunking for the 25MB limit) → raw transcript stored as thread context → signal-proportionate summary (short clip vs full PM-structured long mode) → posted in-thread.
  • Config (audio block) — dark-launchable (enabled:false default) + first-use consent; OpenAI key via {env}/{cmd} SecretSource (never stored in config); maxDurationSec (2 hr cap); per-user / global daily quota.
  • Resilience — abort + drain on shutdown (in-flight jobs post a retry notice), claim self-heal, secret redaction, prompt-injection framing, retry re-run from the thread.

Fixed

  • Audio classification by filename extension (#66) — a voice-memo .m4a arrived with sparse Slack metadata and categoryFor (mimetype/filetype only) returned "unsupported", so it never reached transcription. Added an AUDIO_EXTENSIONS fallback on the file name.

Verified

  • Live end-to-end: an 8-second clip → transcript → short summary (audio.transcribed + audio.summarized events).

Tests

  • @pmk/cli: 840 tests, 100% pass.

PRs: #64 (feature), #65 (follow-ups), #66 (extension classification).