Skip to content

[agency] Harden CLJS prosodic agency for speech gesture planning #9

Description

@meekmachine

Goal

Finish Prosodic as a ClojureScript speech gesture planner that emits brow/head schedule, pulse, and fade plans through the Animation agency.

Current state

Polyester has src-cljs/latticework/prosodic.cljs, in-process and worker client methods, snippet loading, speaking/pulse/stop state, and fade plan output. The old TypeScript path still had XState, scheduler timers, localStorage, and direct host coupling.

This mirrors the Latticework research issue: meekmachine/Latticework#36.

Clojure-way direction

  • CLJS owns serializable speaking state, loaded brow/head snippet metadata, pulse decisions, and fade planning.
  • Main thread loads snippet JSON or profile-backed gestures and passes normalized data into the planner.
  • Main thread applies schedule/remove/restart/fade outputs through Animation; planner never calls window.anim or engine APIs.
  • Prosodic gestures must compose with vocal/lipsync, gaze, blink, and emotion expression instead of competing through direct mutation.

Acceptance criteria

  • Start/pulse/stop/fade behavior remains equivalent to current runtime behavior.
  • Worker code has no localStorage, window.anim, DOM, requestAnimationFrame, or Loom3 references.
  • Conversation and TTS flows can start/stop prosody around agent speech using data commands.
  • Add tests for snippet normalization, speaking start, word-index pulse decisions, fade-step output, immediate stop, and cleanup.
  • Document priority/blend assumptions for prosody relative to vocal, gaze, blink, and emotion expression.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions