Single source of truth for Redis channel names, key patterns, and message shapes across the cc-suite (cc-agent, cc-tg, cc-agent-ui).
No runtime dependencies. No Redis client. Just constants, builders, and types.
npm install @gonzih/cc-wire
import {
wikiKey,
wikiUpdatedKey,
notifyChannel,
notifyListKey,
jobKey,
jobIndexKey,
chatLogKey,
TTL,
CAP,
} from "@gonzih/cc-wire";
// Wiki keys
const hash = wikiKey("org/repo"); // "cca:wiki:org/repo"
const ts = wikiUpdatedKey("org/repo"); // "cca:wiki:org/repo:updated"
// Job keys
const job = jobKey("abc-123"); // "cca:job:abc-123"
const idx = jobIndexKey("myns"); // "cca:jobs:myns"
// Notify
const chan = notifyChannel("myns"); // "cca:notify:myns"
const list = notifyListKey("myns"); // "cca:notify:myns" (same key, dual-purpose)
// Constants
TTL.JOB_SECONDS // 604800
CAP.CHAT_LOG // 500
| Builder |
Pattern |
Redis type |
Description |
wikiKey(repoSlug) |
cca:wiki:{repoSlug} |
HASH |
Per-repo wiki pages. Field = page name, value = markdown. |
wikiUpdatedKey(repoSlug) |
cca:wiki:{repoSlug}:updated |
STRING |
ISO timestamp of last wiki update. |
| Builder |
Pattern |
Redis type |
Description |
jobKey(id) |
cca:job:{id} |
STRING (JSON) |
Full JobRecord, TTL 7d. |
jobOutputKey(id) |
cca:job:{id}:output |
LIST |
Log lines (RPUSH/LRANGE), TTL 7d. |
jobSignalKey(id) |
cca:job:{id}:signal |
STRING |
Control signal: cancel | wake. |
jobInputKey(id) |
cca:job:{id}:input |
LIST |
In-flight messages (RPUSH/RPOP). |
jobOutputLiveChannel(id) |
cca:job:{id}:output:live |
CHANNEL |
Live output pub/sub. |
jobDoneChannel(id) |
cca:job:done:{id} |
CHANNEL |
Job completion pub/sub. |
jobDoneQueueKey(id) |
cca:job:done:{id}:queue |
LIST |
LPUSH/BLPOP queue for wait_for_job, TTL 7d. |
jobIndexKey(ns) |
cca:jobs:{ns} |
SET |
Job IDs per namespace. |
| Constant |
Value |
Description |
EVENT_STREAM |
cca:event-stream |
Redis Stream — job status events. |
COORDINATOR_GROUP |
coordinator |
Consumer group name. |
| Builder |
Pattern |
Description |
notifyChannel(ns) |
cca:notify:{ns} |
CHANNEL — coordinator publishes job completion. |
notifyListKey(ns) |
cca:notify:{ns} |
LIST — delivery queue (RPUSH/RPOP). Same key as channel (safe — Redis pub/sub and list namespaces are independent). |
notifyLogKey(ns) |
cca:notify-log:{ns} |
LIST — persistent audit log, capped at CAP.NOTIFY_LOG (100). |
chatLogKey(ns) |
cca:chat:log:{ns} |
LIST — chat history, capped at CAP.CHAT_LOG (500), LIFO. |
chatIncomingChannel(ns) |
cca:chat:incoming:{ns} |
CHANNEL — UI → cc-tg. |
chatOutgoingChannel(ns) |
cca:chat:outgoing:{ns} |
CHANNEL — cc-tg → UI. |
| Builder |
Pattern |
Description |
metaKey(ns) |
cca:meta:{ns} |
STRING (JSON) — MetaAgentInfo state, TTL 30d. |
metaInputKey(ns) |
cca:meta:{ns}:input |
LIST — input queue (RPUSH/RPOP). |
metaAgentStatusKey(ns) |
cca:meta-agent:status:{ns} |
STRING (JSON) — live status, TTL 7d. |
META_AGENTS_INDEX |
cca:meta:agents:index |
SET — canonical registry. |
| Builder |
Pattern |
Description |
wikiKey(repoSlug) |
cca:wiki:{repoSlug} |
HASH — wiki pages. Field = page name, value = markdown. |
wikiUpdatedKey(repoSlug) |
cca:wiki:{repoSlug}:updated |
STRING — ISO timestamp of last update. |
| Builder |
Pattern |
Description |
profileKey(name) |
cca:profile:{name} |
STRING (JSON) — saved Profile. |
PROFILES_INDEX |
cca:profiles:index |
SET — profile names. |
| Builder |
Pattern |
Description |
cronsKey(ns) |
cca:crons:{ns} |
STRING (JSON array) — cron definitions. |
deletedCronsKey(ns) |
cca:deleted-crons:{ns} |
SET — tombstone IDs, TTL 7d. |
| Builder |
Pattern |
Description |
learningsKey(ns) |
cca:learnings:{ns} |
LIST — learnings (LPUSH, capped at CAP.LEARNINGS = 50), TTL 90d, LIFO. |
| Builder |
Pattern |
Description |
planKey(id) |
cca:plan:{id} |
STRING (JSON) — PlanRecord, TTL 30d. |
coordinatorPlanKey(jobId) |
cca:coordinator:plan:{jobId} |
STRING — coordinator plan JSON. |
| Builder |
Pattern |
Description |
swarmKey(id) |
cca:swarm:{id} |
STRING (JSON) — SwarmRecord. |
SWARM_REQUESTS_KEY |
cca:swarm:requests |
LIST — task request queue (LPUSH). |
| Constant |
Value |
Description |
CC_AGENT_VERSION_KEY |
cca:meta:cc-agent:version |
STRING — running cc-agent version. |
CC_TG_VERSION_KEY |
cca:meta:cc-tg:version |
STRING — running cc-tg version. |
TOKEN_INDEX_KEY |
cca:token:index |
STRING — token rotation index. |
| Constant |
Value |
Description |
VOICE_PENDING_KEY |
voice:pending |
LIST — transcription pending queue. |
VOICE_FAILED_KEY |
voice:failed |
LIST — failure log, TTL 48h. |
TTL.JOB_SECONDS // 604800 (7 days)
TTL.PLAN_SECONDS // 2592000 (30 days)
TTL.LEARNINGS_SECONDS // 7776000 (90 days)
TTL.VOICE_FAILED_SECONDS // 172800 (48 hours)
CAP.NOTIFY_LOG // 100
CAP.CHAT_LOG // 500
CAP.LEARNINGS // 50
CAP.EVENT_STREAM // 500
TIMING.COORDINATOR_POLL_MS // 2000
TIMING.DEPENDENCY_TICK_MS // 3000
TIMING.INPUT_POLL_INTERVAL_MS // 3000
TIMING.META_AGENT_FLUSH_DELAY_MS // 1500
npm run build # compile ESM + CJS
npm test # run tests (Node built-in test runner via tsx)
MIT