CopilotKit / CopilotKit/outpost

Worker should publish which sync adapters it actually registered

Open
#161 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area: sync roadmap roadmap: next
Dominant language
TypeScript
Stars
7
Forks
3
Avg merge
7d 16h
Merged PRs (30d)
15

Description

Follow-up from #160.

supportsOutboundSync() (packages/outpost/shared/src/sync/capabilities.ts) gates force-sync so the dashboard can't enqueue TRACKER_SYNC jobs for a plugin the worker has no adapter for — those jobs return Plugin "<name>" is not registered, which worker.ts handleFailure retries to maxAttempts and then dead-letters.

The list is static, but registration is additionally conditional on env: initializeSyncEngine() only registers Linear when both LINEAR_API_KEY and LINEAR_TEAM_ID are set. So a deployment missing either has no Linear adapter while supportsOutboundSync('linear') still returns true — the DLQ flood the gate closes by design stays reachable by misconfiguration.

The web app can't just read those env vars: web and worker are separate deployments and their env can differ, so checking locally would be a guess that's wrong in exactly the case that matters.

The real fix is the worker publishing what it actually registered — a SystemConfig row written at boot, or exposing it on the health endpoint. That makes this a natural companion to the /health work in #138, which is already about the worker reporting its own state.

Until then the limitation is recorded in the module doc rather than papered over.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Read packages/outpost/shared/src/sync/capabilities.ts, worker.ts, and the initializeSyncEngine() path, then review the related worker health work in #138. Decide how the worker should publish its actually registered adapters, and consider the issue done when the web app can use that worker-owned state to avoid enqueueing unsupported sync jobs.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
api, backend, observability
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.