Something went wrong. Try again.
A local-first event pipeline for independent agents, built on Jazz.
Something went wrong. Try again.
5.8 kB · 122 lines
TypeScript
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123import { z } from "zod";import { canonicalJson, sha256, type JsonObject } from "../core/json.js";
export const FOCUS_DECLARATION_PROPOSED_EVENT_TYPE = "stream.thought.focus.declaration.proposed";export const FOCUS_DECLARATION_SCHEMA_VERSION = 1;export const FOCUS_DECLARATION_SOURCE = "operator:focus-declarations";
const focusIdSchema = z.string().min(1).max(100).regex(/^[a-z0-9][a-z0-9-]*$/);const tagSchema = z.string().min(1).max(100).regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/);const eventTypeSchema = z.string().min(1).max(300).regex(/^stream\.thought\.[a-z0-9.*-]+$/);const sourcePatternSchema = z.string().min(1).max(200).refine( (value) => value === "*" || /^[a-z0-9][a-z0-9._:-]*(?:\*)?$/.test(value), "Source patterns may be exact ids, a trailing-prefix wildcard, or *",);const capabilityNameSchema = z.string().min(1).max(200).regex(/^[a-z0-9][a-z0-9._:-]*$/);const uniqueStrings = (values: string[], context: z.RefinementCtx, path: Array<string | number>) => { if (new Set(values).size !== values.length) { context.addIssue({ code: "custom", path, message: "Values must be unique" }); }};
export const focusDeclarationSchema = z.object({ id: focusIdSchema, version: z.number().int().positive(), name: z.string().min(1).max(160), description: z.string().min(1).max(2_000), parentFocusIds: z.array(focusIdSchema).max(16).default([]), scope: z.object({ summary: z.string().min(1).max(4_000), includeTags: z.array(tagSchema).max(100).default([]), excludeTags: z.array(tagSchema).max(100).default([]), }).strict(), objective: z.object({ statement: z.string().min(1).max(4_000), }).strict(), subscriptions: z.object({ eventTypes: z.array(eventTypeSchema).min(1).max(100), sourcePatterns: z.array(sourcePatternSchema).min(1).max(100), privacy: z.array(z.enum(["public-source", "private", "sensitive"])).min(1).max(3), replay: z.enum(["beginning", "now"]).default("now"), }).strict(), budgets: z.object({ inference: z.object({ maxCallsPerDay: z.number().int().positive().max(1_000_000), maxInputTokensPerDay: z.number().int().positive().max(1_000_000_000), maxOutputTokensPerDay: z.number().int().positive().max(1_000_000_000), maxCostMicrousdPerDay: z.number().int().positive().max(1_000_000_000_000).optional(), }).strict(), attention: z.object({ maxDeliveriesPerDay: z.number().int().nonnegative().max(10_000), }).strict(), }).strict(), permissions: z.object({ requestedReadTools: z.array(capabilityNameSchema).max(32).default([]), requestedExternalActions: z.array(capabilityNameSchema).max(32).default([]), }).strict(), retirementRule: z.string().min(1).max(2_000),}).strict().superRefine((value, context) => { uniqueStrings(value.parentFocusIds, context, ["parentFocusIds"]); uniqueStrings(value.scope.includeTags, context, ["scope", "includeTags"]); uniqueStrings(value.scope.excludeTags, context, ["scope", "excludeTags"]); uniqueStrings(value.subscriptions.eventTypes, context, ["subscriptions", "eventTypes"]); uniqueStrings(value.subscriptions.sourcePatterns, context, ["subscriptions", "sourcePatterns"]); uniqueStrings(value.subscriptions.privacy, context, ["subscriptions", "privacy"]); uniqueStrings(value.permissions.requestedReadTools, context, ["permissions", "requestedReadTools"]); uniqueStrings(value.permissions.requestedExternalActions, context, ["permissions", "requestedExternalActions"]); if (value.parentFocusIds.includes(value.id)) { context.addIssue({ code: "custom", path: ["parentFocusIds"], message: "A focus cannot be its own parent" }); } const excluded = new Set(value.scope.excludeTags); if (value.scope.includeTags.some((tag) => excluded.has(tag))) { context.addIssue({ code: "custom", path: ["scope"], message: "A scope tag cannot be both included and excluded" }); }});
export type FocusDeclaration = z.infer<typeof focusDeclarationSchema>;
const sha256Schema = z.string().regex(/^[a-f0-9]{64}$/);const proposalAuthoritySchema = z.object({ activatesFocus: z.literal(false), expandsDataAccess: z.literal(false), grantsExternalActions: z.literal(false), startsTraining: z.literal(false), promotesAdapter: z.literal(false),}).strict();const proposalResolutionSchema = z.object({ eventTypes: z.literal("unchecked"), sourcePatterns: z.literal("unchecked"), requestedPermissions: z.literal("unchecked"), parentLineage: z.literal("unchecked"),}).strict();const agentProposerSchema = z.object({ kind: z.literal("agent"), runId: z.string().min(1).max(500), outputEventId: z.string().min(1).max(500), triggerEventId: z.string().min(1).max(500), agentId: z.string().min(1).max(500), agentVersion: z.number().int().positive(), agentDeclarationFingerprint: sha256Schema, provider: z.string().min(1).max(200), model: z.string().min(1).max(500), contextSnapshotId: z.string().min(1).max(500),}).strict();
export const focusDeclarationProposalPayloadSchema = z.object({ declaration: focusDeclarationSchema, declarationFingerprint: sha256Schema, proposer: agentProposerSchema.optional(), resolution: proposalResolutionSchema, authority: proposalAuthoritySchema,}).strict().superRefine((value, context) => { if (focusDeclarationFingerprint(value.declaration) !== value.declarationFingerprint) { context.addIssue({ code: "custom", path: ["declarationFingerprint"], message: "Focus declaration fingerprint does not match" }); }});
export type FocusDeclarationProposalPayload = z.infer<typeof focusDeclarationProposalPayloadSchema>;
export function focusDeclarationFingerprint(declaration: FocusDeclaration): string { const parsed = focusDeclarationSchema.parse(declaration); return sha256(canonicalJson(parsed as unknown as JsonObject));}