The single source of truth for the Argus wire contract — the shape of the snapshot the CLI
pushes and the dashboard ingests. Consumed by both Agent-Deployment-Co/argus (CLI) and
Agent-Deployment-Co/argus-dash (dashboard Worker), so the contract is defined exactly once.
import { PushPayloadSchema, SCHEMA_VERSION, type Dashboard } from "@agentdeploymentco/argus-schema";
import { SCHEMA_VERSION } from "@agentdeploymentco/argus-schema/version"; // zod-free entrysrc/schema.ts— Zod schemas (DashboardSchema,PushPayloadSchema, …) and the inferred types (Dashboard,Usage,SessionRow,AgentSource, …). Types arez.inferred, so there's no separate hand-written interface to keep in sync. The dashboard contract includesbySourceplus per-sessionsourcevalues forclaude,codex,gemini, andcowork.src/version.ts—SCHEMA_VERSIONonly, with no zod import, so the CLI can stamp the version without pulling zod into its runtime.
Bump SCHEMA_VERSION (and tag a new release) on any incompatible change to the payload shape.
Distribution is via git tag; both consumers pin a version:
For local development across the repos, use bun link instead of the git pin:
cd argus-schema && bun link
cd ../argus && bun link @agentdeploymentco/argus-schema
cd ../argus-dash && bun link @agentdeploymentco/argus-schema