Files
openchamber/packages/web/server/lib/text/DOCUMENTATION.md
T
Bohdan Triapitsyn a9c51f115e refactor(text): extract shared summarization service with tts/note/notification modes
Move server-side summarization out of lib/tts/summarization.js into a shared
lib/text module exposing tts, note and notification modes. TTS and notification
runtimes now delegate to the shared service, note mode is used to distill a
selected excerpt into a short project note. Expose the new endpoint via
/api/text/summarize and route it through the common request middleware.

Client voice/summarize.ts accepts a mode option and points at the new
endpoint with an absolute URL that respects the desktop server origin.
VS Code webview swaps the stubbed tts summarize path for /api/text/summarize
and hardens URL parsing with window.location.href as the base.
2026-04-18 13:46:51 +03:00

1.5 KiB

Text Module Documentation

Purpose

This module provides shared text transformation helpers that are not owned by a single product surface. Today it contains the shared summarization pipeline used by TTS, notifications, and note distillation flows.

Entrypoints and structure

  • packages/web/server/lib/text/summarization.js: Shared summarize + sanitize helpers backed by opencode.ai zen API.

Public exports

Summarization (summarization.js)

  • summarizeText({ text, threshold, maxLength, zenModel, mode }): Shared summarization entrypoint.
  • sanitizeForTTS(text): Sanitizes text for speech output.
  • sanitizeForNotification(text): Sanitizes text for compact notification output.
  • sanitizeForNote(text): Sanitizes text for short note/distillation output.

Modes

  • tts: Speakable summary for TTS flows.
  • notification: Short plain-text summary for notification bodies.
  • note: Distilled short project-memory note.

Response contract

summarizeText

Returns object with:

  • summary: Final transformed text.
  • summarized: Boolean indicating whether model summarization succeeded.
  • reason: Optional failure/skip reason.
  • originalLength: Optional original text length.
  • summaryLength: Optional final summary length.

Notes for contributors

  • Keep this module neutral. Do not re-couple it to TTS-specific naming or routing.
  • Add new mode semantics here when multiple product surfaces need the same text pipeline.
  • Prefer mode-specific prompt and sanitize behavior over creating duplicated summarizers in unrelated modules.