Skip to content

Migrate the Stream Deck plugin into the monorepo as apps/streamdeck, consuming @cluesmith/codev-sdk #1347

Description

@amrmelsayed

Goal

Execute the migration decided on #1189 (comments 5185933478 + 5185972772): the Stream Deck plugin moves from the codev-integrations repo into this monorepo as apps/streamdeck, consuming @cluesmith/codev-sdk — becoming the SDK's first consumer outside the original in-repo trio.

Owner: the streamdeck architect (this issue is teed up as its first spawnable work on launch). Prerequisite: PR #1346 (the SDK package) merged — satisfied.

Scope

  1. Move the plugin source from codev-integrations/packages/streamdeckapps/streamdeck (fits Monorepo layout: introduce apps/ for end-user surfaces #855's apps/ = end-user-surfaces taxonomy). Preserve git history if practical (git subtree/filter-repo), else document the import commit as the history boundary with a pointer to the old repo.
  2. Migrate imports from @cluesmith/codev-client@cluesmith/codev-sdk subpaths. The mapping (per Introduce packages/codev-sdk: client SDK for Tower (server/client dependency isolation) #1189's absorption plan):
    • TowerClient REST surface → codev-sdk/tower-client (auth arrives as an injected getToken; use the local-key profile)
    • subscribeEvents/SSE + parseSseTextcodev-sdk/sse
    • sendCommand + COMMAND_ROUTE + the outside-in verb surface → codev-sdk/controller
    • local-key reading → codev-sdk/node (the plugin is a Node 20 process — the one consumer where this subpath is correct)
    • Gap check: anything the plugin needs that the SDK lacks is a FINDING — file it against Introduce packages/codev-sdk: client SDK for Tower (server/client dependency isolation) #1189's follow-ups rather than hand-rolling locally.
  3. Build/CI wiring: esbuild bundle + streamdeck validate/pack steps as a workspace member; CI job in .github/workflows (the apps/vscode marketplace-artifact pattern is the precedent). Ensure pnpm install cost for other builders stays reasonable (@elgato/streamdeck lands in the workspace).
  4. The published-SDK canary (from Introduce packages/codev-sdk: client SDK for Tower (server/client dependency isolation) #1189's plan): a scheduled CI job building apps/streamdeck against the latest published @cluesmith/codev-sdk instead of workspace:* — the external-fidelity check that replaces the dogfooding lost by moving in-repo. (May need to wait for the SDK's first npm publish — next release; land the workflow disabled/allowed-to-fail until then.)
  5. Deprecations and retirement (trailing, gated on the SDK's first npm publish):
    • npm deprecate @cluesmith/codev-client with a pointer to @cluesmith/codev-sdk
    • codev-integrations repo: remove the migrated packages, leave a README pointer (or archive the repo if nothing else lives there)

Acceptance criteria

  • Plugin builds, validates, and packs from apps/streamdeck; behavior parity (badge, navigators, dials, action keys) against a live Tower.
  • Zero imports from @cluesmith/codev-client remain.
  • pnpm -r check-types && pnpm -r test green across the workspace.
  • Import-boundary discipline holds: the plugin imports only codev-sdk subpaths + @elgato/streamdeck (worth a small lint/test pin, mirroring the sdk's own import-boundary test pattern).

Sequencing notes

  • Spawnable now for steps 1–3; step 4 activates and step 5 executes after the next release publishes the SDK.
  • PIR — cross-repo move + build wiring warrants a plan gate; the plan should decide the history-preservation approach and the canary-workflow shape.

Refs: #1189 (decisions + census), PR #1346 (the SDK), #855 (apps/ taxonomy).

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/cross-cuttingTouches multiple areas — needs coordinated handling

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions