Something went wrong. Try again.
A local-first event pipeline for independent agents, built on Jazz.
Something went wrong. Try again.
4.5 kB · 118 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119import { z } from "zod";
export const HARNESS_PROTOCOL_VERSION = 1 as const;export const HARNESS_ADAPTER_ID = "pi-coding@1" as const;export const HARNESS_PROFILE_ID = "workspace-v1" as const;export const MAX_HARNESS_PACKET_BYTES = 512 * 1024;export const MAX_HARNESS_RESULT_BYTES = 2 * 1024 * 1024;
const OPAQUE_ID = z.string().min(1).max(200).regex(/^[A-Za-z0-9._:@/-]+$/u);const PROVIDER_PROFILE_ID = z.string().min(1).max(100).regex(/^[a-z0-9][a-z0-9.-]*$/u);const INTERNAL_PATH = z.string().min(1).max(200).regex(/^\/(?:[A-Za-z0-9._-]+\/?)+$/u);
export const HARNESS_TOOL_NAMES = ["read", "bash", "edit", "write", "grep", "find", "ls"] as const;
export const HarnessRunPacketSchema = z.object({ version: z.literal(HARNESS_PROTOCOL_VERSION), runId: OPAQUE_ID, adapter: z.literal(HARNESS_ADAPTER_ID), profile: z.literal(HARNESS_PROFILE_ID), systemPrompt: z.string().max(32_000), prompt: z.string().min(1).max(256_000), workspace: z.object({ path: z.literal("/workspace"), identity: OPAQUE_ID, }).strict(), state: z.object({ path: z.literal("/state"), }).strict(), session: z.discriminatedUnion("mode", [ z.object({ mode: z.literal("new") }).strict(), z.object({ mode: z.literal("resume"), sessionId: OPAQUE_ID }).strict(), ]), model: z.object({ provider: z.enum(["tinker", "openai-compatible"]), id: OPAQUE_ID, profile: PROVIDER_PROFILE_ID, reasoning: z.boolean(), contextWindow: z.number().int().positive().max(2_000_000), maxOutputTokens: z.number().int().positive().max(131_072), }).strict(), broker: z.object({ socketPath: INTERNAL_PATH, capability: z.string().regex(/^[a-f0-9]{64}$/u), virtualOrigin: z.literal("http://provider.invalid"), routePath: z.literal("/v1/chat/completions"), expiresAt: z.number().int().positive(), maxRequests: z.number().int().positive().max(128), maxRequestBytes: z.number().int().positive().max(64 * 1024 * 1024), maxResponseBytes: z.number().int().positive().max(64 * 1024 * 1024), }).strict(), tools: z.array(z.enum(HARNESS_TOOL_NAMES)).max(HARNESS_TOOL_NAMES.length), limits: z.object({ maxResultBytes: z.number().int().positive().max(8 * 1024 * 1024), maxToolReceipts: z.number().int().positive().max(10_000), }).strict(),}).strict();
export type HarnessRunPacket = z.infer<typeof HarnessRunPacketSchema>;
const ToolReceiptSchema = z.object({ sequence: z.number().int().positive(), tool: z.enum(HARNESS_TOOL_NAMES), status: z.enum(["completed", "failed"]),}).strict();
const UsageSchema = z.object({ inputTokens: z.number().int().nonnegative(), outputTokens: z.number().int().nonnegative(), cacheReadTokens: z.number().int().nonnegative(), cacheWriteTokens: z.number().int().nonnegative(), totalTokens: z.number().int().nonnegative(),}).strict();
export const HarnessRunResultSchema = z.discriminatedUnion("status", [ z.object({ version: z.literal(HARNESS_PROTOCOL_VERSION), runId: OPAQUE_ID, adapter: z.literal(HARNESS_ADAPTER_ID), profile: z.literal(HARNESS_PROFILE_ID), status: z.literal("completed"), sessionId: OPAQUE_ID, finalText: z.string().max(1_000_000), toolReceipts: z.array(ToolReceiptSchema).max(10_000), usage: UsageSchema, }).strict(), z.object({ version: z.literal(HARNESS_PROTOCOL_VERSION), runId: OPAQUE_ID, adapter: z.literal(HARNESS_ADAPTER_ID), profile: z.literal(HARNESS_PROFILE_ID), status: z.literal("failed"), errorCode: z.enum([ "invalid-packet", "session-not-found", "session-invalid", "provider-failure", "adapter-failure", "output-oversize", ]), }).strict(),]);
export type HarnessRunResult = z.infer<typeof HarnessRunResultSchema>;
export function encodeHarnessFrame(value: unknown): Buffer { const body = Buffer.from(JSON.stringify(value), "utf8"); const prefix = Buffer.allocUnsafe(4); prefix.writeUInt32BE(body.length, 0); return Buffer.concat([prefix, body]);}
export function decodeHarnessFrame(buffer: Buffer, maxBytes: number): unknown { if (buffer.length < 4) throw new Error("Harness frame is missing its length prefix"); const length = buffer.readUInt32BE(0); if (length > maxBytes) throw new Error("Harness frame exceeds its byte limit"); if (buffer.length !== length + 4) throw new Error("Harness frame length mismatch or trailing bytes"); return JSON.parse(buffer.subarray(4).toString("utf8"));}