From 4fd658f9612a960c6b185e53fa52c064406dad4f Mon Sep 17 00:00:00 2001 From: Adam Malczewski Date: Fri, 5 Jun 2026 16:33:08 +0900 Subject: feat(observability): trace-replay — generic HTTP-exchange record/replay library (39 tests) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit New standalone package @dispatch/trace-replay: replayFetch (pure — fixture -> fetch double + captured request, optional chunking to simulate streaming), recordFetch (tees a real fetch into a fixture WITHOUT consuming the caller's stream), and serialize/parse + save/load fixture I/O. Redaction-free by design: calling extensions self-redact in their OWN code before saving (isolation over DRY, D5/§9). Zero @dispatch/* deps, no bun:sqlite (runs under vitest). The shared unit realizing the §7/D5 replay affordance for hermetic provider tests; provider-openai-compat will consume it next. Root tsconfig ref wired. Verified: tsc -b clean, 327 vitest (288 -> +39: replay 12 / record 8 / fixture 19), biome 0/0. Agent stayed in lane (packages/trace-replay only). --- bun.lock | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'bun.lock') diff --git a/bun.lock b/bun.lock index 03f0e4d..954160e 100644 --- a/bun.lock +++ b/bun.lock @@ -88,6 +88,10 @@ "@dispatch/kernel": "workspace:*", }, }, + "packages/trace-replay": { + "name": "@dispatch/trace-replay", + "version": "0.0.0", + }, "packages/trace-store": { "name": "@dispatch/trace-store", "version": "0.0.0", @@ -144,6 +148,8 @@ "@dispatch/tool-read-file": ["@dispatch/tool-read-file@workspace:packages/tool-read-file"], + "@dispatch/trace-replay": ["@dispatch/trace-replay@workspace:packages/trace-replay"], + "@dispatch/trace-store": ["@dispatch/trace-store@workspace:packages/trace-store"], "@dispatch/transport-http": ["@dispatch/transport-http@workspace:packages/transport-http"], -- cgit v1.2.3