Skip to content

feat(grok): adopt media generation and voice transcription plumbing - #233

Merged
Patel230 merged 1 commit into
mainfrom
feat/grok-remaining-adoptions
Aug 22, 2026
Merged

feat(grok): adopt media generation and voice transcription plumbing#233
Patel230 merged 1 commit into
mainfrom
feat/grok-remaining-adoptions

Conversation

@Patel230

Copy link
Copy Markdown
Contributor

Summary

Adopts two more capabilities from the grok-cli deep-dive, implemented as pluggable hawk-side frameworks with a provider-neutral contract. The provider backends (image/video generation, speech-to-text) live in eyrie and can be wired via SetMediaEngine / SetTranscriber.

Changes

Media generation — internal/tool/GenerateMedia

  • MediaEngine interface (GenerateImage/GenerateVideo) with provider-neutral options; nil by default with a clear error until wired.
  • Persists generated assets locally under the user-state generated-media dir (hawk analog of .grok/generated-media) and returns local paths + metadata, so media stays usable after provider URLs expire.
  • Text-to-image/video, source-based editing / image-to-video, MIME extension mapping, 50 MB download cap for provider-hosted URLs.
  • Registered in cmd/chat_tools.go with safety capabilities + permission aliases.

Telegram voice transcription — internal/stt + gateway wiring

  • stt package: Transcriber interface (SetTranscriber, Enabled), safe attachment download into a confined temp dir with a path-traversal guard and 50 MB cap, media-type extension inference, clear no-backend error.
  • Telegram gateway parses voice/audio attachments, resolves file_id via getFile, downloads, transcribes when a backend is installed, forwards transcript as [Voice transcript] <text>. Falls back to existing text behavior when no transcriber is installed.

Out of scope

Provider Batch API, X search, and desktop computer-use still need external provider endpoints (in eyrie) or a native macOS accessibility backend that don't exist today.

Testing

  • New: internal/stt (7 tests), GenerateMedia tool (5 tests), telegram voice (2 tests)
  • Full pre-push hooks green: boundary guards, external-drift, govulncheck, entire go test suite (incl. tool, daemon, safety, cmd, engine, testaudit), go vet
  • golangci-lint 0 issues, gofmt clean

Two more adoptions from the grok-cli deep-dive, implemented as pluggable
hawk-side frameworks with a provider-neutral contract (the provider backends
for image/video generation and speech-to-text live in eyrie and can be wired
via SetMediaEngine / SetTranscriber).

Media generation (internal/tool/GenerateMedia):
- MediaEngine interface (GenerateImage/GenerateVideo) with provider-neutral
  options; SetMediaEngine installs a backend, nil by default with a clear
  error until wired.
- The tool persists generated assets locally under the user state
  generated-media dir (the hawk analog of .grok/generated-media) and returns
  local paths + metadata, so media remains usable after provider URLs expire.
- Supports text-to-image/video, source-based editing/image-to-video, MIME
  extension mapping, and a 50 MB download cap for provider-hosted URLs.
- Registered in cmd/chat_tools.go with safety capabilities + permission
  aliases.

Telegram voice transcription (internal/stt + gateway wiring):
- stt package: Transcriber interface (SetTranscriber, Enabled), safe
  attachment download to a confined temp dir with a path-traversal guard and
  50 MB cap, media-type extension inference, and a clear no-backend error.
- Telegram gateway now parses voice/audio attachments, resolves file_id via
  getFile, downloads, transcribes when a backend is installed, and forwards
  the transcript prefixed with [Voice transcript]. Falls back to text when
  no transcriber is installed (existing behavior preserved).

Out of scope: provider Batch API, X search, and desktop computer-use still
require external provider endpoints or a native macOS accessibility backend
that do not exist in eyrie today.

Verification: go build ./... clean; new tests green (stt 7, GenerateMedia 5,
telegram voice 2); tool, daemon, safety, cmd, engine and testaudit suites
pass; golangci-lint 0 issues; gofmt clean.
@Patel230
Patel230 merged commit d36c96b into main Aug 22, 2026
26 checks passed
@Patel230
Patel230 deleted the feat/grok-remaining-adoptions branch August 22, 2026 17:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant