@kaged/wire

Shared wire contract — Zod schemas for every HTTP request/response body, error envelope, and WebSocket message

17
source files
5
test files
~6.6k
lines
✓ 121 pass
tests
pass
typecheck
clean
lint

Test results 121

common schemas > ApiErrorSchema parses valid error [2.02ms]
common schemas > ApiErrorSchema rejects invalid error code [2.21ms]
common schemas > ApiErrorSchema accepts optional details [0.200ms]
common schemas > PaginatedResponseSchema wraps items correctly [0.520ms]
common schemas > PaginatedResponseSchema accepts null cursor [0.160ms]
common schemas > ErrorCodeSchema accepts all known codes [0.100ms]
common schemas > HttpMethodSchema rejects invalid methods [0.070ms]
common schemas > UserRoleSchema accepts valid roles [0.040ms]
WebSocket schemas > WsFrameSchema parses valid frame [0.270ms]
WebSocket schemas > WsFrameSchema rejects invalid channel [0.120ms]
WebSocket schemas > WsChannelSchema accepts all channels [0.050ms]
WebSocket schemas > WsCloseCodeSchema accepts all close codes [0.100ms]
WebSocket schemas > WsOutputTypeSchema accepts all output types [0.100ms]
WebSocket schemas > WsEventTypeSchema accepts all event types [0.060ms]
session schemas > SessionSummarySchema parses valid session [0.170ms]
session schemas > SessionSummarySchema accepts null created_by_user and each kind [0.180ms]
session schemas > SessionSummarySchema rejects unknown kind [0.150ms]
session schemas > SessionKindSchema enumerates the three kinds [0.030ms]
session schemas > list-sessions contract query accepts optional kind filter [0.170ms]
session schemas > MessagePartSchema parses text part [0.220ms]
session schemas > MessagePartSchema parses tool_call part [0.110ms]
session schemas > MessagePartSchema parses tool_result part [0.090ms]
session schemas > MessageItemSchema parses valid message [0.110ms]
session schemas > CheckpointSummarySchema parses valid checkpoint [0.060ms]
session schemas > ContextEstimateResponseSchema parses [0.060ms]
session schemas > PostCompactRequestSchema parses minimal request [0.060ms]
project schemas > ProjectSummarySchema parses valid project [0.070ms]
project schemas > ProjectDetailSchema extends ProjectSummarySchema [0.220ms]
project schemas > MeResponseSchema parses valid response [0.170ms]
project schemas > LaunchResponseSchema parses [0.050ms]
project schemas > DaemonStatusResponseSchema parses [0.110ms]
local config schemas > AliasMapSchema parses [0.060ms]
local config schemas > SpendLimitsResponseSchema parses [0.080ms]
local config schemas > ModelMetaResponseSchema parses [0.160ms]
plugin schemas > PluginInfoSchema parses valid plugin [0.140ms]
task schemas > TaskInstanceSchema parses valid task [0.060ms]
task schemas > RunTaskRequestSchema parses minimal request [0.040ms]
workflow schemas > WorkflowInvocationSchema parses valid invocation [0.280ms]
issue schemas > OperatorIssueSummarySchema parses valid issue [0.090ms]
user schemas > UserRecordSchema parses valid user [0.060ms]
user schemas > AccountResponseSchema parses [0.040ms]
user schemas > AuthMethodsResponseSchema parses [0.040ms]
guest schemas > GuestMeResponseSchema parses [0.030ms]
guest schemas > GuestLoginResponseSchema parses [0.030ms]
system schemas > DslValidationResponseSchema parses [0.040ms]
compaction schemas > CompactionRecordSchema parses valid record [0.090ms]
contract map > CONTRACT has entries for all expected route groups [0.100ms]
contract map > raw routes are in RAW_ROUTES, not CONTRACT [0.100ms]
contract map > promoted raw routes are CONTRACT entries with raw: true [0.050ms]
contract map > CONTRACT and RAW_ROUTES have no overlap [0.060ms]
contract map > every CONTRACT entry has a summary string [0.230ms]
contract map > CONTRACT entries with response have valid Zod schemas [0.220ms]
contract map > CONTRACT entries with request have valid Zod schemas [0.150ms]
contract map > CONTRACT entries with params have valid Zod schemas [0.200ms]
contract map > routes with path params have a params schema [0.630ms]
contract map > params schema keys match path param segments [0.810ms]
param scalars > UlidSchema accepts valid ULID [0.280ms]
param scalars > UlidSchema rejects invalid values [0.170ms]
param scalars > SlugParamSchema accepts non-empty strings [0.030ms]
param scalars > SlugParamSchema rejects empty string [0.060ms]
param scalars > IntParamSchema accepts digit strings [0.040ms]
param scalars > IntParamSchema rejects non-digit strings [0.090ms]
provider model schemas > ProviderModelInfoSchema accepts manual flag [0.090ms]
provider model schemas > SaveModelsRequestSchema accepts manual flag [0.070ms]
provider model schemas > DiscoverModelsResponseSchema carries manual flag in merged [0.080ms]
NotificationEventSchema > accepts valid attention.required event [0.180ms]
NotificationEventSchema > rejects attention.required event without attention_kind [0.160ms]
NotificationEventSchema > accepts valid run.completed event [0.080ms]
NotificationEventSchema > rejects run.completed event without run_outcome [0.090ms]
NotificationEventSchema > rejects unknown class value [0.270ms]
NotificationEventSchema > rejects empty string fields [0.270ms]
NotificationEventSchema > rejects invalid emitted_at values [0.140ms]
SessionBellValueSchema > accepts enum values [0.090ms]
SessionBellValueSchema > rejects invalid values [0.080ms]
DeliveryOutcomeSchema > accepts delivered outcomes [0.080ms]
DeliveryOutcomeSchema > accepts failed outcomes [0.050ms]
DeliveryOutcomeSchema > rejects failed outcomes without reason [0.060ms]
CreatePushSubscriptionRequestSchema > accepts a full subscription [0.100ms]
CreatePushSubscriptionRequestSchema > rejects non-url endpoint [0.450ms]
CreatePushSubscriptionRequestSchema > rejects empty subscription keys [0.140ms]
VapidPublicKeyResponseSchema > requires public_key and fingerprint [0.100ms]
contract field names > no contract entry uses 'body' as a field name (must be 'request') [0.130ms]
ErrorCodeSchema — git domain codes > accepts every git.* code from specs/git.md §7 [0.130ms]
ErrorCodeSchema — git domain codes > still accepts the pre-existing generic codes [0.060ms]
ErrorCodeSchema — git domain codes > rejects an unnamespaced git code [0.070ms]
GitRepoPathSchema > accepts a root-relative path [0.380ms]
GitRepoPathSchema > rejects an absolute path (leading slash) [0.150ms]
GitRepoPathSchema > rejects an empty string [0.080ms]
GitStatusEntrySchema > accepts an ordinary modified entry [0.090ms]
GitStatusEntrySchema > accepts a rename entry with origPath [0.080ms]
GitStatusEntrySchema > accepts a conflicted entry with ConflictKind [0.050ms]
GitStatusEntrySchema > accepts an untracked entry [0.050ms]
GitStatusEntrySchema > rejects an invalid XY char [0.090ms]
GitStatusEntrySchema > rejects an unknown conflict kind [0.080ms]
GitRootSummarySchema > accepts a valid root summary with branch info [0.100ms]
GitRootSummarySchema > accepts an invalid root (no repo) with reason, branch omitted [0.060ms]
GitRootSummarySchema > accepts an unborn branch (oid null, head present) [0.080ms]
GitRootSummarySchema > accepts a detached HEAD (head null, detached true) [0.070ms]
GitRootSummarySchema > rejects negative ahead/behind counts [0.110ms]
GitDiffResultSchema > accepts a text diff [0.060ms]
GitDiffResultSchema > accepts a truncated text diff [0.040ms]
GitDiffResultSchema > accepts a binary diff with null byte counts [0.040ms]
GitDiffResultSchema > accepts a too-large diff [0.050ms]
GitDiffResultSchema > rejects a text diff missing the modified side [0.080ms]
GitDiffResultSchema > rejects an unknown kind [0.090ms]
GitPullResultSchema > accepts an ok pull [0.070ms]
GitPullResultSchema > accepts a conflicts pull with conflicted paths [0.080ms]
GitPullResultSchema > rejects a conflicts pull without conflicted array [0.080ms]
GitPathsRequestSchema > accepts root with a non-empty paths array [0.050ms]
GitPathsRequestSchema > rejects an empty paths array [0.060ms]
GitPathsRequestSchema > rejects a missing root [0.080ms]
GitCommitRequestSchema > accepts root with a non-empty message [0.040ms]
GitCommitRequestSchema > rejects an empty commit message [0.050ms]
GitStashRequestSchema > accepts a minimal stash (root only) [0.050ms]
GitStashRequestSchema > accepts a stash with message and includeUntracked [0.040ms]
GitStashPopResponseSchema > accepts a clean pop (empty conflicts) [0.070ms]
GitStashPopResponseSchema > accepts a conflicting pop with paths [0.080ms]
message regenerate schemas > MessageItemSchema parses regenerate metadata fields [0.980ms]
message regenerate schemas > MessageItemSchema parses without regenerate metadata fields [0.080ms]
message regenerate schemas > RegenerateReceiptSchema parses minimal receipt [0.070ms]
message regenerate schemas > RegenerateReceiptSchema parses queued receipt details [0.040ms]

Mentioned in

Type Document
adr ADR-0039: @kaged/wire is the normative wire contract; daemon and UI must consume it
adr ADR-0050: Operator-facing git pane for projects
adr ADR-0052: Message regeneration and two-tier, operator-cancellable retry
spec spec: git
spec Spec: HTTP + WebSocket API
spec Spec: Local config
spec Spec: Session notifications (daemon side)
spec Release pipeline
spec Spec: @kaged/wire