@humain/humain-code-contracts 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +51 -0
- package/README.md +92 -0
- package/dist/index.d.ts +224 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +218 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestration.d.ts +327 -0
- package/dist/orchestration.d.ts.map +1 -0
- package/dist/orchestration.js +307 -0
- package/dist/orchestration.js.map +1 -0
- package/dist/rpc.d.ts +63 -0
- package/dist/rpc.d.ts.map +1 -0
- package/dist/rpc.js +147 -0
- package/dist/rpc.js.map +1 -0
- package/dist/subagent-progress.d.ts +106 -0
- package/dist/subagent-progress.d.ts.map +1 -0
- package/dist/subagent-progress.js +440 -0
- package/dist/subagent-progress.js.map +1 -0
- package/dist/testing.d.ts +390 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +431 -0
- package/dist/testing.js.map +1 -0
- package/dist/trace-api.d.ts +293 -0
- package/dist/trace-api.d.ts.map +1 -0
- package/dist/trace-api.js +202 -0
- package/dist/trace-api.js.map +1 -0
- package/dist/trace-artifact.d.ts +94 -0
- package/dist/trace-artifact.d.ts.map +1 -0
- package/dist/trace-artifact.js +168 -0
- package/dist/trace-artifact.js.map +1 -0
- package/dist/trace-canonical.d.ts +23 -0
- package/dist/trace-canonical.d.ts.map +1 -0
- package/dist/trace-canonical.js +240 -0
- package/dist/trace-canonical.js.map +1 -0
- package/dist/trace-export.d.ts +94 -0
- package/dist/trace-export.d.ts.map +1 -0
- package/dist/trace-export.js +374 -0
- package/dist/trace-export.js.map +1 -0
- package/dist/trace-http.d.ts +1294 -0
- package/dist/trace-http.d.ts.map +1 -0
- package/dist/trace-http.js +1481 -0
- package/dist/trace-http.js.map +1 -0
- package/dist/trace-payload.d.ts +425 -0
- package/dist/trace-payload.d.ts.map +1 -0
- package/dist/trace-payload.js +1519 -0
- package/dist/trace-payload.js.map +1 -0
- package/dist/trace.d.ts +257 -0
- package/dist/trace.d.ts.map +1 -0
- package/dist/trace.js +1014 -0
- package/dist/trace.js.map +1 -0
- package/package.json +64 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-http.js","sourceRoot":"","sources":["../src/trace-http.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Static, type TSchema, Type } from \"typebox\";\nimport { Compile } from \"typebox/compile\";\nimport {\n\tDH_ARTIFACT_KINDS,\n\tDH_ARTIFACT_MAX_BYTES,\n\tDH_ARTIFACT_MEDIA_TYPES,\n\tDH_COVERAGE_REASONS,\n\tDH_COVERAGE_STATES,\n\tDH_EVENT_KINDS,\n\tDH_ISSUERS,\n\tDH_OUTCOMES,\n\tDH_REJECTION_CODES,\n\ttype DhAckV1,\n\tDhAgentIdSchema,\n\tDhArtifactIdSchema,\n\ttype DhArtifactV1,\n\tDhAttemptIdSchema,\n\ttype DhCoverage,\n\tDhEventIdSchema,\n\ttype DhEventKind,\n\ttype DhEventV1,\n\ttype DhExternalId,\n\tDhGenerationIdSchema,\n\ttype DhOutcome,\n\ttype DhRejectionCode,\n\tDhTenantScopeSchema,\n\tparseDhArtifact,\n\tparseDhEvent,\n} from \"./trace.ts\";\nimport { DH_EXPORT_STATES, parseDhIngestAck } from \"./trace-api.ts\";\nimport {\n\tassertDhPlainData,\n\tDhContractError,\n\tdhCanonicalText,\n\tdhDigestInput,\n\tparseDhRawJson,\n} from \"./trace-canonical.ts\";\nimport {\n\tacceptDhExportManifestPage,\n\tbeginDhExportManifest,\n\ttype DhExportHashOptions,\n\tfinishDhExportManifest,\n} from \"./trace-export.ts\";\nimport { assertDhAppliedControlEvidence } from \"./trace-payload.ts\";\n\n/*\n * C0 HTTP contract freeze: route table, auth/export/control DTOs, ACK validation and the safe\n * Flow producer types. Everything here is a proposal frozen for consumer alignment, not an\n * existing Code endpoint. This module is re-exported by ./trace.ts, which it also imports, so\n * NOTHING here may read an imported trace.ts/trace-api.ts value at module top level: schemas are\n * built lazily inside functions. Literals that mirror trace.ts constants are asserted equal in\n * test/trace-http-conformance.test.ts.\n */\n\n// ---------------------------------------------------------------------------\n// Decisions and limits\n// ---------------------------------------------------------------------------\n\n/** Schema ids introduced by this freeze. Existing dh.event/1, dh.artifact/1 and dh.ack/1 are unchanged. */\nexport const DH_HTTP_SCHEMA_IDS = Object.freeze({\n\tadmissionBinding: \"dh.admission-binding/1\",\n\tworkloadBinding: \"dh.workload-binding/1\",\n\toriginDelegation: \"dh.origin-delegation/1\",\n\tartifactReceipt: \"dh.artifact-receipt/1\",\n\tcontrolReceipt: \"dh.control-receipt/1\",\n\tcontrolRequest: \"dh.control-request/2\",\n\tcontrolStatus: \"dh.control-status/2\",\n\tcontrolTarget: \"dh.control-target/1\",\n\tcontrolDelivery: \"dh.control-delivery/1\",\n\tcontrolHandshake: \"dh.control-handshake/1\",\n\tcontrollerCredential: \"dh.controller-credential/1\",\n\tcursorBinding: \"dh.cursor-binding/2\",\n\tsnapshotCutoff: \"dh.snapshot-cutoff/1\",\n\tgenerationPage: \"dh.generation-page/2\",\n\tagentPage: \"dh.agent-page/2\",\n\teventPage: \"dh.event-page/2\",\n\texportManifestHeader: \"dh.export-manifest-header/2\",\n\texportManifestPage: \"dh.export-manifest-page/2\",\n\tproducerEnrollment: \"dh.producer-enrollment/2\",\n\tproducerEnrollmentRequest: \"dh.producer-enrollment-request/2\",\n} as const);\n\n/**\n * Batch version decision record. dh.batch/1-proposal stays the ONLY schema managed ingress accepts.\n * C0 resolves the synthetic-local lane to the proposal literal only. Production promotion remains\n * a separate coordinated decision; it is never accepted alongside the proposal.\n */\nexport const DH_BATCH_VERSION_DECISION = Object.freeze({\n\taccepted: \"dh.batch/1-proposal\",\n\tpromotionCandidate: \"dh.batch/1\",\n\tstatus: \"resolved-synthetic-local\",\n\tdualVersionIngress: false,\n} as const);\n\n/** Validation ceiling only; the real access-token TTL is an open policy input. Matches the current client ceiling. */\nexport const DH_TOKEN_MAX_EXPIRES_IN_SECONDS = 600;\nexport const DH_EXPORT_MANIFEST_MAX_SHARDS = 1024;\n/** Equal to DH_MAX_ACK_IDS (asserted in tests): one shard page is one bounded ACK-sized ID list. */\nexport const DH_EXPORT_MANIFEST_SHARD_MAX_IDS = 1000;\nexport const DH_GRANT_MAX_PROJECTS = 16;\n/** Provisional bound for continuation text; policy may lower it. */\nexport const DH_CONTROL_MESSAGE_MAX_CHARS = 16384;\n\nexport const DH_GRANT_PERMISSIONS = [\"review-metadata\", \"review-content\", \"export\"] as const;\nexport type DhGrantPermission = (typeof DH_GRANT_PERMISSIONS)[number];\n\n// ---------------------------------------------------------------------------\n// Shared helpers\n// ---------------------------------------------------------------------------\n\nconst strict = <const T extends Parameters<typeof Type.Object>[0]>(properties: T) =>\n\tType.Object(properties, { additionalProperties: false });\nconst count = Type.Integer({ minimum: 0, maximum: Number.MAX_SAFE_INTEGER });\nconst positive = Type.Integer({ minimum: 1, maximum: Number.MAX_SAFE_INTEGER });\nconst timestamp = Type.String({\n\tminLength: 20,\n\tmaxLength: 30,\n\tpattern: \"^\\\\d{4}-\\\\d{2}-\\\\d{2}T\\\\d{2}:\\\\d{2}:\\\\d{2}(?:\\\\.\\\\d{1,9})?Z$\",\n});\nconst digest = Type.String({ pattern: \"^[a-f0-9]{64}$\" });\nconst SCOPE_ID = \"^[A-Za-z0-9][A-Za-z0-9_.-]{0,255}$\";\nconst scopeId = Type.String({ minLength: 1, maxLength: 256, pattern: SCOPE_ID });\nconst streamIdSchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z0-9_-]{1,128}$\" });\nconst refSchema = Type.String({ minLength: 1, maxLength: 128, pattern: \"^[A-Za-z0-9_.-]+$\" });\nconst cursorSchema = Type.String({ minLength: 1, maxLength: 1024, pattern: \"^[\\\\x21-\\\\x7e]+$\" });\nconst nextCursorSchema = Type.Union([Type.Null(), cursorSchema]);\nconst opaqueToken = Type.String({ minLength: 1, maxLength: 4096, pattern: \"^[\\\\x21-\\\\x7e]+$\" });\nconst clientIdSchema = Type.String({ minLength: 1, maxLength: 256, pattern: \"^[A-Za-z0-9._~-]+$\" });\nconst LOOPBACK_REDIRECT = \"^http://(?:127\\\\.0\\\\.0\\\\.1|localhost|\\\\[::1\\\\]):[1-9][0-9]{0,4}(?:/[A-Za-z0-9._~/-]*)?$\";\nconst prefixed = (prefix: string) =>\n\tType.String({ pattern: `^${prefix}_[A-Za-z0-9_-]{8,128}$`, maxLength: prefix.length + 129 });\nconst requestIdSchema = () => prefixed(\"ctl\");\nconst enrollmentIdSchema = () => prefixed(\"enr\");\nconst jobIdSchema = Type.String({ minLength: 1, maxLength: 256, pattern: \"^[A-Za-z0-9_-]+$\" });\nconst FORBIDDEN_KEYS: ReadonlySet<string> = new Set([\"__proto__\", \"constructor\", \"prototype\"]);\nconst FIELD_PATH = /^[A-Za-z][A-Za-z0-9_-]*(?:\\.[A-Za-z0-9_-]+)*$/;\nconst INSTANT_KEYS: ReadonlySet<string> = new Set([\n\t\"captureCutoff\",\n\t\"startedAt\",\n\t\"finishedAt\",\n\t\"occurredAt\",\n\t\"recordedAt\",\n\t\"receivedAt\",\n\t\"updatedAt\",\n\t\"admittedAt\",\n\t\"expiresAt\",\n\t\"authorizedAt\",\n\t\"issuedAt\",\n]);\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nconst INSTANT_PARTS = /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})(?:\\.\\d{1,9})?Z$/;\n/** Date.parse rolls impossible dates over, so the parsed instant must round-trip to the same calendar fields. */\nfunction isCalendarInstant(text: string): boolean {\n\tconst parts = INSTANT_PARTS.exec(text);\n\tif (parts === null) return false;\n\tconst base = text.slice(0, 19);\n\tconst whole = Date.parse(`${base}.000Z`);\n\treturn Number.isFinite(whole) && new Date(whole).toISOString().slice(0, 19) === base;\n}\n\nfunction assertInstants(label: string, root: unknown): void {\n\tconst stack: unknown[] = [root];\n\twhile (stack.length > 0) {\n\t\tconst value = stack.pop();\n\t\tif (Array.isArray(value)) stack.push(...value);\n\t\telse if (isRecord(value)) {\n\t\t\tfor (const [key, child] of Object.entries(value)) {\n\t\t\t\tif (typeof child === \"string\" && INSTANT_KEYS.has(key) && !isCalendarInstant(child)) {\n\t\t\t\t\tthrow new DhContractError(\n\t\t\t\t\t\t\"schema_invalid\",\n\t\t\t\t\t\t`Invalid ${label}: ${key} is not a calendar-valid UTC instant`,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tstack.push(child);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction deepFreeze<T>(root: T): T {\n\tconst stack: unknown[] = [root];\n\twhile (stack.length > 0) {\n\t\tconst value = stack.pop();\n\t\tif (value === null || typeof value !== \"object\" || Object.isFrozen(value)) continue;\n\t\tObject.freeze(value);\n\t\tfor (const child of Object.values(value)) stack.push(child);\n\t}\n\treturn root;\n}\n\n/** Strict parser: plain-JSON gate, schema check, clone, re-check, calendar-valid instants, DTO semantics, freeze. */\nfunction dtoParser<T extends TSchema>(label: string, schema: () => T, semantic?: (value: Static<T>) => void) {\n\tlet validator: ReturnType<typeof Compile<T>> | undefined;\n\treturn (value: unknown): Static<T> => {\n\t\tassertDhPlainData(value);\n\t\tvalidator ??= Compile(schema());\n\t\tif (!validator.Check(value)) throw new DhContractError(\"schema_invalid\", `Invalid ${label}`);\n\t\tconst clone: unknown = JSON.parse(JSON.stringify(value));\n\t\tif (!validator.Check(clone)) throw new DhContractError(\"schema_invalid\", `Invalid ${label}`);\n\t\tassertInstants(label, clone);\n\t\tsemantic?.(clone);\n\t\treturn deepFreeze(clone);\n\t};\n}\n\n/**\n * The strict DTO parser (plain-JSON wire gate, schema check, clone, re-check, instants, semantics, freeze)\n * for sibling modules such as trace-payload.ts, so the gate is never re-implemented.\n */\nexport { dtoParser as dhStrictDtoParser };\n\n/** Replay and duplicate comparisons share the origin JCS profile. */\nconst canonicalText = dhCanonicalText;\n\nfunction assertUnique(label: string, ids: readonly string[]): void {\n\tif (new Set(ids).size !== ids.length) throw new DhContractError(\"schema_invalid\", `Invalid ${label}: duplicate ids`);\n}\n\nfunction metadataCoverage() {\n\t// No `detail`: it can carry transcript text.\n\treturn strict({ state: Type.Enum(DH_COVERAGE_STATES), reason: Type.Optional(Type.Enum(DH_COVERAGE_REASONS)) });\n}\nfunction assertCoverageReason(label: string, coverage: { state: string; reason?: string }): void {\n\tif (coverage.state !== \"captured\" && coverage.reason === undefined) {\n\t\tthrow new Error(`Invalid ${label}: non-captured coverage requires a reason`);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Route table\n// ---------------------------------------------------------------------------\n\nexport const DH_ROUTE_AUDIENCES = [\"browser-review\", \"producer\", \"workload\", \"control\", \"records-policy\"] as const;\nexport type DhRouteAudience = (typeof DH_ROUTE_AUDIENCES)[number];\nexport type DhRouteMethod = \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\n\nexport interface DhRoute {\n\treadonly method: DhRouteMethod;\n\t/** `{name}` placeholders are the only variable parts; see DH_PATH_PARAM_PATTERNS. */\n\treadonly path: string;\n\treadonly audience: DhRouteAudience;\n\treadonly requestContentType: string | null;\n\treadonly requestHeaders?: readonly string[];\n\treadonly responseContentType: string | null;\n\treadonly responseSchemaId?: string;\n\treadonly successStatus: readonly number[];\n}\n\nconst S = \"/api/v1/environments/{environmentId}/projects/{projectId}\";\nconst I = `${S}/trace-ingest`;\nconst JSON_TYPE = \"application/json\";\nconst FORM_TYPE = \"application/x-www-form-urlencoded\";\nconst BYTES_TYPE = \"application/octet-stream\";\n\nfunction route(\n\tmethod: DhRouteMethod,\n\tpath: string,\n\taudience: DhRouteAudience,\n\trequestContentType: string | null,\n\tresponseContentType: string | null,\n\tsuccessStatus: readonly number[],\n\trequestHeaders?: readonly string[],\n\tresponseSchemaId?: string,\n): DhRoute {\n\treturn Object.freeze({\n\t\tmethod,\n\t\tpath,\n\t\taudience,\n\t\trequestContentType,\n\t\t...(requestHeaders ? { requestHeaders: Object.freeze([...requestHeaders]) } : {}),\n\t\tresponseContentType,\n\t\t...(responseSchemaId ? { responseSchemaId } : {}),\n\t\tsuccessStatus: Object.freeze([...successStatus]),\n\t});\n}\n\nconst ROUTE_DEFINITIONS = {\n\tauthorizeConsent: route(\"GET\", \"/auth/trace-client/authorize\", \"browser-review\", null, \"text/html\", [200]),\n\tauthorizeSubmit: route(\"POST\", \"/auth/trace-client/authorize\", \"browser-review\", FORM_TYPE, null, [303]),\n\tclientToken: route(\"POST\", \"/auth/trace-client/token\", \"browser-review\", FORM_TYPE, JSON_TYPE, [200]),\n\tclientRevoke: route(\"POST\", \"/auth/trace-client/revoke\", \"browser-review\", FORM_TYPE, null, [204]),\n\tproducerEnroll: route(\n\t\t\"POST\",\n\t\t`${S}/producer-enrollments`,\n\t\t\"workload\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[201],\n\t\t[\"authorization\"],\n\t),\n\tproducerToken: route(\n\t\t\"POST\",\n\t\t\"/auth/trace-producer/token\",\n\t\t\"workload\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[200],\n\t\t[\"authorization\"],\n\t),\n\tproducerRevoke: route(\"POST\", \"/auth/trace-producer/revoke\", \"workload\", JSON_TYPE, null, [204], [\"authorization\"]),\n\tingestRecords: route(\n\t\t\"POST\",\n\t\t`${I}/streams/{streamId}/records`,\n\t\t\"producer\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[200],\n\t\t[\"x-dh-previous-acked-sequence\"],\n\t\t\"dh.ack/1\",\n\t),\n\tingestArtifactContent: route(\n\t\t\"PUT\",\n\t\t`${I}/artifacts/{artifactId}/content`,\n\t\t\"producer\",\n\t\tBYTES_TYPE,\n\t\tJSON_TYPE,\n\t\t[200],\n\t\t[\"x-dh-sha256\"],\n\t\t\"dh.artifact-receipt/1\",\n\t),\n\treviewGenerations: route(\"GET\", `${S}/generations`, \"browser-review\", null, JSON_TYPE, [200]),\n\treviewAgents: route(\"GET\", `${S}/generations/{generationId}/agents`, \"browser-review\", null, JSON_TYPE, [200]),\n\treviewEvents: route(\"GET\", `${S}/generations/{generationId}/events`, \"browser-review\", null, JSON_TYPE, [200]),\n\treviewArtifact: route(\"GET\", `${S}/artifacts/{artifactId}`, \"browser-review\", null, JSON_TYPE, [200]),\n\treviewArtifactContent: route(\n\t\t\"GET\",\n\t\t`${S}/artifacts/{artifactId}/content`,\n\t\t\"browser-review\",\n\t\tnull,\n\t\tBYTES_TYPE,\n\t\t[200],\n\t),\n\tusage: route(\"GET\", `${S}/generations/{generationId}/usage`, \"browser-review\", null, JSON_TYPE, [200]),\n\tsearch: route(\"GET\", `${S}/generations/{generationId}/search`, \"browser-review\", null, JSON_TYPE, [200]),\n\texportCreate: route(\n\t\t\"POST\",\n\t\t`${S}/generations/{generationId}/exports`,\n\t\t\"browser-review\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[202],\n\t),\n\texportStatus: route(\n\t\t\"GET\",\n\t\t`${S}/generations/{generationId}/exports/{jobId}`,\n\t\t\"browser-review\",\n\t\tnull,\n\t\tJSON_TYPE,\n\t\t[200],\n\t),\n\texportManifest: route(\n\t\t\"GET\",\n\t\t`${S}/generations/{generationId}/exports/{jobId}/manifest`,\n\t\t\"browser-review\",\n\t\tnull,\n\t\tJSON_TYPE,\n\t\t[200],\n\t),\n\texportDownload: route(\n\t\t\"GET\",\n\t\t`${S}/generations/{generationId}/exports/{jobId}/download`,\n\t\t\"browser-review\",\n\t\tnull,\n\t\tJSON_TYPE,\n\t\t[200],\n\t),\n\texportContent: route(\n\t\t\"GET\",\n\t\t`${S}/generations/{generationId}/exports/{jobId}/content`,\n\t\t\"browser-review\",\n\t\tnull,\n\t\tBYTES_TYPE,\n\t\t[200],\n\t),\n\tcontrolTarget: route(\n\t\t\"GET\",\n\t\t`${S}/generations/{generationId}/agents/{agentId}/control-target`,\n\t\t\"control\",\n\t\tnull,\n\t\tJSON_TYPE,\n\t\t[200],\n\t\tundefined,\n\t\t\"dh.control-target/1\",\n\t),\n\tcontrolCancel: route(\n\t\t\"POST\",\n\t\t`${S}/generations/{generationId}/agents/{agentId}/cancel`,\n\t\t\"control\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[200, 202],\n\t),\n\tcontrolRetry: route(\n\t\t\"POST\",\n\t\t`${S}/generations/{generationId}/agents/{agentId}/retry`,\n\t\t\"control\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[200, 202],\n\t),\n\tcontrolContinue: route(\n\t\t\"POST\",\n\t\t`${S}/generations/{generationId}/agents/{agentId}/continue`,\n\t\t\"control\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[200, 202],\n\t),\n\tcontrolRequest: route(\n\t\t\"GET\",\n\t\t`${S}/generations/{generationId}/agents/{agentId}/control-requests/{requestId}`,\n\t\t\"control\",\n\t\tnull,\n\t\tJSON_TYPE,\n\t\t[200],\n\t),\n\tgenerationDelete: route(\"DELETE\", `${S}/generations/{generationId}`, \"records-policy\", null, JSON_TYPE, [202]),\n\tlegalHoldCreate: route(\n\t\t\"POST\",\n\t\t`${S}/generations/{generationId}/legal-holds`,\n\t\t\"records-policy\",\n\t\tJSON_TYPE,\n\t\tJSON_TYPE,\n\t\t[201],\n\t),\n\tlegalHoldRelease: route(\n\t\t\"DELETE\",\n\t\t`${S}/generations/{generationId}/legal-holds/{holdId}`,\n\t\t\"records-policy\",\n\t\tnull,\n\t\tnull,\n\t\t[204],\n\t),\n} as const satisfies Record<string, DhRoute>;\n\nexport type DhRouteId = keyof typeof ROUTE_DEFINITIONS;\nexport const DH_ROUTES: Readonly<typeof ROUTE_DEFINITIONS> = Object.freeze(ROUTE_DEFINITIONS);\n\n/** ID segment validators. Only unreserved characters: no separators, dots-only segments, encodings or wildcards. */\nexport const DH_PATH_PARAM_PATTERNS: Readonly<Record<string, RegExp>> = Object.freeze({\n\tenvironmentId: new RegExp(SCOPE_ID),\n\tprojectId: new RegExp(SCOPE_ID),\n\tstreamId: /^[A-Za-z0-9_-]{1,128}$/,\n\tgenerationId: /^gen_[A-Za-z0-9_-]{8,128}$/,\n\tagentId: /^agt_[A-Za-z0-9_-]{8,128}$/,\n\tartifactId: /^art_[A-Za-z0-9_-]{8,128}$/,\n\tjobId: /^[A-Za-z0-9_-]{1,256}$/,\n\trequestId: /^ctl_[A-Za-z0-9_-]{8,128}$/,\n\tholdId: /^[A-Za-z0-9_-]{1,256}$/,\n});\n\nfunction routeFor(id: string): DhRoute {\n\tif (!Object.hasOwn(ROUTE_DEFINITIONS, id)) throw new DhContractError(\"schema_invalid\", \"Unknown trace route\");\n\treturn ROUTE_DEFINITIONS[id as DhRouteId];\n}\n\n/** Builds a path from the frozen template. Params must be exactly the template's placeholders, each validated then percent-encoded. */\nexport function buildDhRoutePath(id: DhRouteId, params: Readonly<Record<string, string>>): string {\n\tconst definition = routeFor(id);\n\tconst names = [...definition.path.matchAll(/\\{(\\w+)\\}/g)].map((match) => match[1] as string);\n\tif (!isRecord(params))\n\t\tthrow new Error(`Route ${id} requires exactly the parameters ${names.join(\", \") || \"(none)\"}`);\n\tassertDhPlainData(params);\n\tconst given = Object.keys(params);\n\tif (given.length !== names.length || given.some((name) => !names.includes(name))) {\n\t\tthrow new Error(`Route ${id} requires exactly the parameters ${names.join(\", \") || \"(none)\"}`);\n\t}\n\treturn definition.path.replace(/\\{(\\w+)\\}/g, (_, name: string) => {\n\t\tconst value = Object.hasOwn(params, name) ? params[name] : undefined;\n\t\tconst pattern = DH_PATH_PARAM_PATTERNS[name];\n\t\tif (typeof value !== \"string\" || pattern === undefined || !pattern.test(value)) {\n\t\t\tthrow new Error(`Invalid route parameter ${name}`);\n\t\t}\n\t\treturn encodeURIComponent(value);\n\t});\n}\n\n/**\n * Grant permissions a browser-review route needs. Export reads (status, manifest, download, content)\n * are authorized from the SERVER-STORED job, passed as `job` (its `contentIncluded`, e.g. from\n * DhExportJobStatus): export + review-metadata always, plus review-content when the stored job\n * includes content. A caller-supplied `includeContent` is ignored for them and a missing or malformed\n * `job` throws. The server must evaluate this on every read, so a grant that lost review-content after\n * creation can no longer read a content job. Only `exportCreate` (which creates the job) and the\n * event/search views use `includeContent`. Control/producer/records-policy routes use no read-grant permission.\n * `options` (and the `job` inside it) pass the plain-JSON wire gate before any member is read, so an accessor or\n * non-plain object is rejected without executing user code.\n */\nexport function requiredDhPermissions(\n\tid: DhRouteId,\n\toptions: { includeContent?: boolean; job?: Readonly<Pick<DhExportJobStatus, \"contentIncluded\">> },\n): DhGrantPermission[] {\n\tassertDhPlainData(options);\n\tconst content = options.includeContent === true;\n\tswitch (id) {\n\t\tcase \"reviewGenerations\":\n\t\tcase \"reviewAgents\":\n\t\tcase \"usage\":\n\t\tcase \"reviewArtifact\":\n\t\t\treturn [\"review-metadata\"];\n\t\tcase \"reviewEvents\":\n\t\tcase \"search\":\n\t\t\treturn content ? [\"review-content\"] : [\"review-metadata\"];\n\t\tcase \"reviewArtifactContent\":\n\t\t\treturn [\"review-content\"];\n\t\tcase \"exportCreate\":\n\t\t\treturn content ? [\"export\", \"review-content\", \"review-metadata\"] : [\"export\", \"review-metadata\"];\n\t\tcase \"exportStatus\":\n\t\tcase \"exportManifest\":\n\t\tcase \"exportDownload\":\n\t\tcase \"exportContent\": {\n\t\t\tconst stored = options.job?.contentIncluded;\n\t\t\tif (typeof stored !== \"boolean\")\n\t\t\t\tthrow new Error(`Route ${id} needs the stored export job to derive permissions`);\n\t\t\treturn stored ? [\"export\", \"review-content\", \"review-metadata\"] : [\"export\", \"review-metadata\"];\n\t\t}\n\t\tdefault:\n\t\t\trouteFor(id);\n\t\t\treturn [];\n\t}\n}\n\n/** Credential classes are not interchangeable: a credential is valid only on routes of its own audience class. */\nexport function assertDhCredentialForRoute(id: DhRouteId, credentialClass: string): void {\n\tconst definition = routeFor(id);\n\tif (!(DH_ROUTE_AUDIENCES as readonly string[]).includes(credentialClass)) {\n\t\tthrow new Error(\"Unknown credential class\");\n\t}\n\tif (definition.audience !== credentialClass) {\n\t\tthrow new DhContractError(\n\t\t\tdefinition.audience === \"workload\" ? \"workload_proof_invalid\" : \"not_authorized\",\n\t\t\t`Credential class is not valid for route ${id}`,\n\t\t);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Immutable admission and caller-supplied registry facts\n// ---------------------------------------------------------------------------\n\nfunction admissionBindingSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.admissionBinding),\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tgenerationRootBindingId: prefixed(\"bnd\"),\n\t\tmappingRevision: digest,\n\t\ttenantId: scopeId,\n\t\tenvironmentId: scopeId,\n\t\tprojectId: scopeId,\n\t\tnativeProjectId: scopeId,\n\t\tnativeRunId: scopeId,\n\t\tnativeSegmentId: scopeId,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\trootAgentId: DhAgentIdSchema,\n\t\tinitiatingActorId: scopeId,\n\t\tbindingEpoch: refSchema,\n\t\tpolicyRevision: refSchema,\n\t\tadmittedAt: timestamp,\n\t\tenvironment: Type.Literal(\"local\"),\n\t\tsyntheticOnly: Type.Literal(true),\n\t});\n}\nexport const parseDhAdmissionBinding = dtoParser(\"admission binding\", admissionBindingSchema);\nexport type DhAdmissionBinding = ReturnType<typeof parseDhAdmissionBinding>;\nexport interface DhRecordOwner {\n\treadonly bindingId: string;\n\treadonly originProducerInstanceId: string;\n}\nexport interface DhRecordBindingContext {\n\treadonly rootBinding?: DhAdmissionBinding;\n\treadonly registryMapping?: Readonly<\n\t\tPick<DhAdmissionBinding, \"tenantId\" | \"environmentId\" | \"projectId\" | \"nativeProjectId\" | \"mappingRevision\">\n\t> | null;\n\treadonly routeScope?: Readonly<{ environmentId: string; projectId: string }>;\n\treadonly previousBinding?: DhAdmissionBinding;\n\treadonly owner?: DhRecordOwner;\n\treadonly existingOwner?: DhRecordOwner;\n\treadonly tombstoned?: boolean;\n\t/** Login changes never rewrite the initiating actor. This field grants no authority. */\n\treadonly currentActorId?: string;\n}\n\n/** Pure equality over supplied durable facts, not a registry lookup or authentication. */\nexport function assertDhRecordBinding(\n\trecordInput: unknown,\n\tbindingInput: unknown,\n\tcontext: DhRecordBindingContext = {},\n): void {\n\tconst binding = parseDhAdmissionBinding(bindingInput);\n\tassertDhPlainData(recordInput);\n\tconst record: DhEventV1 | DhArtifactV1 =\n\t\tisRecord(recordInput) && recordInput.schema === \"dh.artifact/1\"\n\t\t\t? parseDhArtifact(recordInput)\n\t\t\t: parseDhEvent(recordInput);\n\tassertDhPlainData(context);\n\tif (\n\t\tcontext.routeScope &&\n\t\t(context.routeScope.environmentId !== binding.environmentId || context.routeScope.projectId !== binding.projectId)\n\t)\n\t\tthrow new DhContractError(\"not_found\");\n\tif (context.tombstoned) throw new DhContractError(\"tombstoned\");\n\tif (\n\t\trecord.generationId !== binding.generationId ||\n\t\trecord.tenantScope.environmentId !== binding.environmentId ||\n\t\trecord.tenantScope.projectId !== binding.projectId\n\t)\n\t\tthrow new DhContractError(\"scope_binding_conflict\");\n\tconst mapping = context.registryMapping;\n\tif (mapping === null) throw new DhContractError(\"mapping_missing\");\n\tif (mapping !== undefined) {\n\t\tif (mapping.mappingRevision !== binding.mappingRevision) throw new DhContractError(\"mapping_stale\");\n\t\tfor (const key of [\"tenantId\", \"environmentId\", \"projectId\", \"nativeProjectId\"] as const)\n\t\t\tif (mapping[key] !== binding[key]) throw new DhContractError(\"scope_binding_conflict\");\n\t}\n\tif (\n\t\tcontext.previousBinding &&\n\t\tcanonicalText(parseDhAdmissionBinding(context.previousBinding)) !== canonicalText(binding)\n\t)\n\t\tthrow new DhContractError(\"scope_binding_conflict\");\n\tif (context.rootBinding) {\n\t\tconst root = parseDhAdmissionBinding(context.rootBinding);\n\t\tif (root.bindingId !== root.generationRootBindingId || binding.generationRootBindingId !== root.bindingId)\n\t\t\tthrow new DhContractError(\"scope_binding_conflict\");\n\t\tfor (const key of [\n\t\t\t\"tenantId\",\n\t\t\t\"environmentId\",\n\t\t\t\"projectId\",\n\t\t\t\"nativeProjectId\",\n\t\t\t\"generationId\",\n\t\t\t\"rootAgentId\",\n\t\t\t\"initiatingActorId\",\n\t\t] as const)\n\t\t\tif (root[key] !== binding[key]) throw new DhContractError(\"scope_binding_conflict\");\n\t}\n\tif (context.owner && context.owner.bindingId !== binding.bindingId)\n\t\tthrow new DhContractError(\"scope_binding_conflict\");\n\tif (context.existingOwner) {\n\t\tif (\n\t\t\t!context.owner ||\n\t\t\tcontext.owner.bindingId !== context.existingOwner.bindingId ||\n\t\t\tcontext.owner.originProducerInstanceId !== context.existingOwner.originProducerInstanceId\n\t\t)\n\t\t\tthrow new DhContractError(\"duplicate_conflict\");\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Browser public-client and producer authentication DTOs\n// ---------------------------------------------------------------------------\n\nfunction grantScopeSchema() {\n\treturn strict({\n\t\tenvironmentId: scopeId,\n\t\tprojectIds: Type.Array(scopeId, { minItems: 1, maxItems: DH_GRANT_MAX_PROJECTS, uniqueItems: true }),\n\t\tpermissions: Type.Array(Type.Enum(DH_GRANT_PERMISSIONS), {\n\t\t\tminItems: 1,\n\t\t\tmaxItems: DH_GRANT_PERMISSIONS.length,\n\t\t\tuniqueItems: true,\n\t\t}),\n\t});\n}\nexport type DhGrantScope = Static<ReturnType<typeof grantScopeSchema>>;\n\nfunction tokenResponseSchema() {\n\treturn strict({\n\t\taccess_token: opaqueToken,\n\t\ttoken_type: Type.Literal(\"Bearer\"),\n\t\texpires_in: Type.Integer({ minimum: 1, maximum: DH_TOKEN_MAX_EXPIRES_IN_SECONDS }),\n\t\trefresh_token: opaqueToken,\n\t\tgrant_scope: grantScopeSchema(),\n\t});\n}\nexport type DhTokenResponse = Static<ReturnType<typeof tokenResponseSchema>>;\nexport const parseDhTokenResponse = dtoParser(\"trace token response\", tokenResponseSchema);\n/** OAuth errors have no reflecting error_description or non-OAuth fields. */\nexport const parseDhTokenError = dtoParser(\"trace token error\", () =>\n\tstrict({\n\t\terror: Type.Enum([\n\t\t\t\"invalid_grant\",\n\t\t\t\"invalid_request\",\n\t\t\t\"invalid_client\",\n\t\t\t\"unauthorized_client\",\n\t\t\t\"unsupported_grant_type\",\n\t\t\t\"invalid_scope\",\n\t\t\t\"server_error\",\n\t\t\t\"temporarily_unavailable\",\n\t\t] as const),\n\t}),\n);\nexport type DhTokenError = ReturnType<typeof parseDhTokenError>;\n\ntype FormRecord = Record<string, string | string[]>;\n/** Decodes a form body; rejects duplicates except the explicitly repeatable keys, which always become arrays. */\nfunction parseForm(\n\tlabel: string,\n\tinput: string | URLSearchParams,\n\trepeatable: ReadonlySet<string> = new Set(),\n): FormRecord {\n\tif (typeof input === \"string\" && input.length > 8192)\n\t\tthrow new DhContractError(\"too_large\", `Invalid ${label}: too large`);\n\tif (typeof input !== \"string\" && !(input instanceof URLSearchParams))\n\t\tthrow new DhContractError(\"schema_invalid\", `Invalid ${label}`);\n\tconst params = typeof input === \"string\" ? new URLSearchParams(input) : input;\n\tconst out: FormRecord = Object.create(null);\n\tfor (const [key, value] of params) {\n\t\tif (FORBIDDEN_KEYS.has(key)) throw new DhContractError(\"schema_invalid\", `Invalid ${label}: forbidden key`);\n\t\tconst existing = out[key];\n\t\tif (existing === undefined) out[key] = repeatable.has(key) ? [value] : value;\n\t\telse if (Array.isArray(existing) && repeatable.has(key)) existing.push(value);\n\t\telse throw new DhContractError(\"schema_invalid\", `Invalid ${label}: duplicate form parameter`);\n\t}\n\treturn out;\n}\n\nfunction assertLoopback(value: string): void {\n\tnew URL(value); // Throws for ports above 65535; the pattern already pins scheme, host and no query/fragment.\n}\n\nconst redirectUriSchema = () => Type.String({ maxLength: 512, pattern: LOOPBACK_REDIRECT });\nfunction tokenRequestSchema() {\n\treturn Type.Union([\n\t\tstrict({\n\t\t\tgrant_type: Type.Literal(\"authorization_code\"),\n\t\t\tclient_id: clientIdSchema,\n\t\t\tcode: Type.String({ minLength: 8, maxLength: 512, pattern: \"^[\\\\x21-\\\\x7e]+$\" }),\n\t\t\tcode_verifier: Type.String({ minLength: 43, maxLength: 128, pattern: \"^[A-Za-z0-9._~-]+$\" }),\n\t\t\tredirect_uri: redirectUriSchema(),\n\t\t}),\n\t\tstrict({ grant_type: Type.Literal(\"refresh_token\"), client_id: clientIdSchema, refresh_token: opaqueToken }),\n\t]);\n}\nexport type DhTokenRequest = Static<ReturnType<typeof tokenRequestSchema>>;\nconst parseTokenRequestRecord = dtoParser(\"trace token request\", tokenRequestSchema, (value) => {\n\tif (value.grant_type === \"authorization_code\") assertLoopback(value.redirect_uri);\n});\nexport const parseDhTokenRequest = (input: string | URLSearchParams): DhTokenRequest =>\n\tparseTokenRequestRecord(parseForm(\"trace token request\", input));\n\nfunction revokeRequestSchema() {\n\treturn strict({ client_id: clientIdSchema, token: opaqueToken, token_type_hint: Type.Literal(\"refresh_token\") });\n}\nexport type DhRevokeRequest = Static<ReturnType<typeof revokeRequestSchema>>;\nconst parseRevokeRecord = dtoParser(\"trace revoke request\", revokeRequestSchema);\nexport const parseDhRevokeRequest = (input: string | URLSearchParams): DhRevokeRequest =>\n\tparseRevokeRecord(parseForm(\"trace revoke request\", input));\n\nfunction authorizeQuerySchema() {\n\treturn strict({\n\t\tresponse_type: Type.Literal(\"code\"),\n\t\tclient_id: clientIdSchema,\n\t\tredirect_uri: redirectUriSchema(),\n\t\tstate: Type.String({ minLength: 16, maxLength: 256, pattern: \"^[A-Za-z0-9._~-]+$\" }),\n\t\tcode_challenge: Type.String({ pattern: \"^[A-Za-z0-9_-]{43}$\" }),\n\t\tcode_challenge_method: Type.Literal(\"S256\"),\n\t\tenvironment_id: scopeId,\n\t\tproject_id: Type.Array(scopeId, { minItems: 1, maxItems: DH_GRANT_MAX_PROJECTS, uniqueItems: true }),\n\t\tpermission: Type.Array(Type.Enum(DH_GRANT_PERMISSIONS), {\n\t\t\tminItems: 1,\n\t\t\tmaxItems: DH_GRANT_PERMISSIONS.length,\n\t\t\tuniqueItems: true,\n\t\t}),\n\t});\n}\nexport type DhAuthorizeQuery = Static<ReturnType<typeof authorizeQuerySchema>>;\nconst parseAuthorizeRecord = dtoParser(\"trace authorize query\", authorizeQuerySchema, (value) =>\n\tassertLoopback(value.redirect_uri),\n);\nexport const parseDhAuthorizeQuery = (input: string | URLSearchParams): DhAuthorizeQuery =>\n\tparseAuthorizeRecord(parseForm(\"trace authorize query\", input, new Set([\"project_id\", \"permission\"])));\n\nconst producerSummary = () =>\n\tstrict({\n\t\tissuer: Type.Enum(DH_ISSUERS),\n\t\tversion: Type.String({ minLength: 1, maxLength: 256, pattern: \"^[\\\\x20-\\\\x7e]+$\" }),\n\t\tmode: Type.String({ minLength: 1, maxLength: 256, pattern: \"^[\\\\x20-\\\\x7e]+$\" }),\n\t});\n\nfunction producerEnrollmentRequestSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.producerEnrollmentRequest),\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tproducerInstanceId: prefixed(\"prd\"),\n\t\tgenerationId: DhGenerationIdSchema,\n\t\toriginStreamId: streamIdSchema,\n\t\tproducer: producerSummary(),\n\t});\n}\nexport type DhProducerEnrollmentRequest = Static<ReturnType<typeof producerEnrollmentRequestSchema>>;\n/** Workload proof travels in the authentication header, never the body; a reviewer grant is never producer proof. */\nexport const parseDhProducerEnrollmentRequest = dtoParser(\n\t\"producer enrollment request\",\n\tproducerEnrollmentRequestSchema,\n);\n\nfunction producerEnrollmentSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.producerEnrollment),\n\t\tenrollmentId: enrollmentIdSchema(),\n\t\ttenantScope: DhTenantScopeSchema,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\toriginStreamId: streamIdSchema,\n\t\tissuer: Type.Enum(DH_ISSUERS),\n\t\tcredentialVersion: positive,\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tproducerInstanceId: prefixed(\"prd\"),\n\t\tallowedOriginIssuers: Type.Array(Type.Enum(DH_ISSUERS), { minItems: 1, maxItems: 3, uniqueItems: true }),\n\t});\n}\nexport type DhProducerEnrollment = Static<ReturnType<typeof producerEnrollmentSchema>>;\nexport const parseDhProducerEnrollment = dtoParser(\"producer enrollment\", producerEnrollmentSchema);\n\nexport const parseDhProducerTokenRequest = dtoParser(\"producer token request\", () =>\n\tstrict({ enrollmentId: enrollmentIdSchema() }),\n);\nexport const parseDhProducerRevokeRequest = dtoParser(\"producer revoke request\", () =>\n\tstrict({ enrollmentId: enrollmentIdSchema() }),\n);\n\nfunction producerAudienceSchema() {\n\treturn strict({\n\t\tenvironmentId: scopeId,\n\t\tprojectId: scopeId,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\toriginStreamId: streamIdSchema,\n\t\tissuer: Type.Enum(DH_ISSUERS),\n\t\tenrollmentId: enrollmentIdSchema(),\n\t\tcredentialVersion: positive,\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tproducerInstanceId: prefixed(\"prd\"),\n\t\tallowedOriginIssuers: Type.Array(Type.Enum(DH_ISSUERS), { minItems: 1, maxItems: 3, uniqueItems: true }),\n\t});\n}\nexport type DhProducerAudience = Static<ReturnType<typeof producerAudienceSchema>>;\n/** No refresh_token and no grant_scope: a producer credential cannot be refreshed into, or mistaken for, a read grant. */\nexport const parseDhProducerTokenResponse = dtoParser(\"producer token response\", () =>\n\tstrict({\n\t\taccess_token: opaqueToken,\n\t\ttoken_type: Type.Literal(\"Bearer\"),\n\t\texpires_in: Type.Integer({ minimum: 1, maximum: DH_TOKEN_MAX_EXPIRES_IN_SECONDS }),\n\t\taudience: producerAudienceSchema(),\n\t}),\n);\nexport type DhProducerTokenResponse = ReturnType<typeof parseDhProducerTokenResponse>;\n\nexport interface DhProducerAudienceExpectation {\n\tenvironmentId: string;\n\tprojectId: string;\n\tgenerationId: string;\n\toriginStreamId: string;\n\tissuer: DhProducerAudience[\"issuer\"];\n\tenrollmentId: string;\n\tcredentialVersion: number;\n\tbindingId: string;\n\tproducerInstanceId: string;\n\tallowedOriginIssuers: readonly DhProducerAudience[\"issuer\"][];\n}\n/**\n * A producer credential is bound to one environment/project/generation/origin stream AND to its issuer,\n * enrollment and credential version, so a credential from a superseded or other enrollment never passes.\n */\nexport function assertDhProducerAudience(audience: DhProducerAudience, expected: DhProducerAudienceExpectation): void {\n\tassertDhPlainData(audience);\n\tassertDhPlainData(expected);\n\tfor (const key of [\n\t\t\"environmentId\",\n\t\t\"projectId\",\n\t\t\"generationId\",\n\t\t\"originStreamId\",\n\t\t\"issuer\",\n\t\t\"enrollmentId\",\n\t\t\"credentialVersion\",\n\t\t\"bindingId\",\n\t\t\"producerInstanceId\",\n\t] as const) {\n\t\tif (audience[key] !== expected[key])\n\t\t\tthrow new DhContractError(\"producer_revoked\", `Producer credential audience mismatch: ${key}`);\n\t}\n\tif (canonicalText(audience.allowedOriginIssuers) !== canonicalText(expected.allowedOriginIssuers))\n\t\tthrow new DhContractError(\"producer_revoked\", \"Producer credential audience mismatch: allowedOriginIssuers\");\n}\n\n// ---------------------------------------------------------------------------\n// Local workload descriptors and delegated origins (no secret DTO fields)\n// ---------------------------------------------------------------------------\n\nexport const parseDhWorkloadBinding = dtoParser(\"workload binding\", () =>\n\tstrict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.workloadBinding),\n\t\tworkloadId: prefixed(\"wld\"),\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tproducerInstanceId: prefixed(\"prd\"),\n\t\tlaunchNonce: refSchema,\n\t\tissuer: Type.Enum(DH_ISSUERS),\n\t\tbuildSha256: digest,\n\t\tmode: refSchema,\n\t\tcredentialVersion: positive,\n\t\texpiresAt: timestamp,\n\t}),\n);\nexport type DhWorkloadBinding = ReturnType<typeof parseDhWorkloadBinding>;\nexport const parseDhOriginDelegation = dtoParser(\"origin delegation\", () =>\n\tstrict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.originDelegation),\n\t\tdelegationId: prefixed(\"dlg\"),\n\t\tbindingId: prefixed(\"bnd\"),\n\t\toriginProducerInstanceId: prefixed(\"prd\"),\n\t\toriginStreamId: streamIdSchema,\n\t\toriginIssuer: Type.Enum(DH_ISSUERS),\n\t\trelayProducerInstanceId: prefixed(\"prd\"),\n\t\tenrollmentId: enrollmentIdSchema(),\n\t\tcredentialVersion: positive,\n\t\texpiresAt: timestamp,\n\t}),\n);\nexport type DhOriginDelegation = ReturnType<typeof parseDhOriginDelegation>;\n\n/** Compare to a live server-issued receipt. A syntactically valid receipt grants nothing by itself. */\nexport function assertDhOriginDelegation(delegationInput: unknown, expected: unknown): void {\n\tconst delegation = parseDhOriginDelegation(delegationInput);\n\tif (expected === null || expected === undefined) throw new DhContractError(\"origin_not_delegated\");\n\tif (canonicalText(delegation) !== canonicalText(parseDhOriginDelegation(expected)))\n\t\tthrow new DhContractError(\"origin_not_delegated\");\n}\n\n/** Exactly 32 bytes in canonical unpadded base64url; caller handles private custody and live verification. */\nexport function parseDhWorkloadAuthorizationHeader(value: unknown): string {\n\tif (typeof value !== \"string\" || !/^DH-Workload [A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$/.test(value))\n\t\tthrow new DhContractError(\"workload_proof_invalid\");\n\treturn value.slice(\"DH-Workload \".length);\n}\nexport function parseDhOriginDelegationHeader(value: unknown): string {\n\tif (typeof value !== \"string\" || !/^dlg_[A-Za-z0-9_-]{8,128}$/.test(value))\n\t\tthrow new DhContractError(\"origin_not_delegated\");\n\treturn value;\n}\n\n// ---------------------------------------------------------------------------\n// Snapshot paging: event metadata/content pages, artifact metadata, cursor binding\n// ---------------------------------------------------------------------------\n\nfunction eventMetadataViewSchema() {\n\treturn strict({\n\t\teventId: DhEventIdSchema,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\tagentId: DhAgentIdSchema,\n\t\tparentAgentId: Type.Optional(DhAgentIdSchema),\n\t\tattemptId: Type.Optional(DhAttemptIdSchema),\n\t\tretryOfAttemptId: Type.Optional(DhAttemptIdSchema),\n\t\tattemptNumber: Type.Optional(positive),\n\t\tstreamId: streamIdSchema,\n\t\tsequence: count,\n\t\tkind: Type.Enum(DH_EVENT_KINDS),\n\t\toccurredAt: timestamp,\n\t\trecordedAt: timestamp,\n\t\toutcome: Type.Optional(Type.Enum(DH_OUTCOMES)),\n\t\t/** The failure code only. Raw failure messages are content. */\n\t\tfailureCode: Type.Optional(Type.String({ pattern: \"^[a-z][a-z0-9_.-]{0,63}$\", maxLength: 64 })),\n\t\tcoverage: Type.Array(\n\t\t\tstrict({\n\t\t\t\tpath: Type.String({ minLength: 1, maxLength: 256 }),\n\t\t\t\tstate: Type.Enum(DH_COVERAGE_STATES),\n\t\t\t\treason: Type.Optional(Type.Enum(DH_COVERAGE_REASONS)),\n\t\t\t}),\n\t\t\t{ maxItems: 64 },\n\t\t),\n\t\tartifactIds: Type.Array(DhArtifactIdSchema, { maxItems: 32, uniqueItems: true }),\n\t});\n}\nexport type DhEventMetadataView = Static<ReturnType<typeof eventMetadataViewSchema>>;\n\nfunction assertEventMetadataView(view: DhEventMetadataView): void {\n\tconst paths = view.coverage.map((entry) => entry.path);\n\tassertUnique(\"event metadata coverage\", paths);\n\tfor (const entry of view.coverage) {\n\t\tif (!FIELD_PATH.test(entry.path) || entry.path.split(\".\").some((segment) => FORBIDDEN_KEYS.has(segment))) {\n\t\t\tthrow new Error(\"Invalid event metadata coverage: path is not a valid field path\");\n\t\t}\n\t\tassertCoverageReason(\"event metadata coverage\", entry);\n\t}\n}\n\nexport const parseDhEventMetadataView = dtoParser(\n\t\"event metadata view\",\n\teventMetadataViewSchema,\n\tassertEventMetadataView,\n);\n\nfunction pageSchema<Included extends TSchema, Item extends TSchema>(included: Included, item: Item) {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.eventPage),\n\t\tcursorBinding: dhCursorBindingSchema(),\n\t\tnextCursor: nextCursorSchema,\n\t\tcaptureCutoff: timestamp,\n\t\tcontentIncluded: included,\n\t\titems: Type.Array(item, { maxItems: 100 }),\n\t});\n}\n\nconst parseEventMetadataPage = dtoParser(\n\t\"event metadata page\",\n\t() => pageSchema(Type.Literal(false), eventMetadataViewSchema()),\n\t(page) => {\n\t\tassertDhReadPageBinding(page, \"events\", \"metadata\");\n\t\tfor (const item of page.items) assertEventMetadataView(item);\n\t\tassertUnique(\n\t\t\t\"event metadata page\",\n\t\t\tpage.items.map((item) => item.eventId),\n\t\t);\n\t},\n);\nconst parseEventContentEnvelope = dtoParser(\n\t\"event content page\",\n\t() => pageSchema(Type.Literal(true), Type.Unknown()),\n\t(page) => assertDhReadPageBinding(page, \"events\", \"content\"),\n);\n\nexport type DhEventMetadataPage = ReturnType<typeof parseEventMetadataPage>;\nexport interface DhEventContentPage {\n\treadonly schema: \"dh.event-page/2\";\n\treadonly cursorBinding: DhCursorBinding;\n\treadonly nextCursor: string | null;\n\treadonly captureCutoff: string;\n\treadonly contentIncluded: true;\n\treadonly items: readonly DhEventV1[];\n}\nexport type DhEventPage = DhEventMetadataPage | DhEventContentPage;\n\n/** The metadata view never carries payload, raw failure messages, coverage detail or redaction paths; content pages are full dh.event/1. */\nexport function parseDhEventPage(value: unknown): DhEventPage {\n\tassertDhPlainData(value);\n\tif (isRecord(value) && value.contentIncluded === true) {\n\t\tconst envelope = parseEventContentEnvelope(value);\n\t\tconst items = Array.from(envelope.items, parseDhEvent);\n\t\tassertUnique(\n\t\t\t\"event content page\",\n\t\t\titems.map((item) => item.eventId),\n\t\t);\n\t\tassertDhReadPageBinding({ ...envelope, items }, \"events\", \"content\");\n\t\treturn deepFreeze({\n\t\t\tschema: envelope.schema,\n\t\t\tcursorBinding: envelope.cursorBinding,\n\t\t\tnextCursor: envelope.nextCursor,\n\t\t\tcaptureCutoff: envelope.captureCutoff,\n\t\t\tcontentIncluded: true as const,\n\t\t\titems,\n\t\t});\n\t}\n\treturn parseEventMetadataPage(value);\n}\n\nexport const DH_ARTIFACT_AVAILABILITY = [\"available\", \"pending\", \"unavailable\"] as const;\nfunction artifactMetadataViewSchema() {\n\treturn strict({\n\t\tartifactId: DhArtifactIdSchema,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\tagentId: DhAgentIdSchema,\n\t\tattemptId: Type.Optional(DhAttemptIdSchema),\n\t\teventId: DhEventIdSchema,\n\t\tkind: Type.Enum(DH_ARTIFACT_KINDS),\n\t\tmediaType: Type.Enum(DH_ARTIFACT_MEDIA_TYPES),\n\t\tsizeBytes: Type.Integer({ minimum: 0, maximum: DH_ARTIFACT_MAX_BYTES }),\n\t\tsha256: digest,\n\t\t/** available = bytes stored; pending = metadata acknowledged, bytes not yet; unavailable = never readable (lost, withheld or purged). */\n\t\tavailability: Type.Enum(DH_ARTIFACT_AVAILABILITY),\n\t\tcoverage: metadataCoverage(),\n\t});\n}\nexport type DhArtifactMetadataView = Static<ReturnType<typeof artifactMetadataViewSchema>>;\n/** Excludes logicalPath (sensitive file names), redaction paths and coverage.detail. Bytes are a separate route and grant. */\nexport const parseDhArtifactMetadataView = dtoParser(\"artifact metadata view\", artifactMetadataViewSchema, (view) =>\n\tassertCoverageReason(\"artifact metadata view\", view.coverage),\n);\n\nexport const DH_CURSOR_RESOURCES = [\"generations\", \"agents\", \"events\", \"manifest\"] as const;\nfunction snapshotCutoffSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.snapshotCutoff),\n\t\tsnapshotId: prefixed(\"snp\"),\n\t\treceiptOrdinal: count,\n\t\tcaptureCutoff: timestamp,\n\t});\n}\nexport const parseDhSnapshotCutoff = dtoParser(\"snapshot cutoff\", snapshotCutoffSchema);\nexport type DhSnapshotCutoff = ReturnType<typeof parseDhSnapshotCutoff>;\n\n/** Internal lazy schema seam shared by existing read-page parsers. */\nexport function dhCursorBindingSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.cursorBinding),\n\t\tenvironmentId: scopeId,\n\t\tprojectId: scopeId,\n\t\tresource: Type.Enum(DH_CURSOR_RESOURCES),\n\t\tgenerationId: Type.Optional(DhGenerationIdSchema),\n\t\tbindingId: Type.Optional(prefixed(\"bnd\")),\n\t\tfilterSha256: digest,\n\t\tview: Type.Union([Type.Literal(\"metadata\"), Type.Literal(\"content\")]),\n\t\tcutoff: snapshotCutoffSchema(),\n\t\tmappingRevision: digest,\n\t\tauthorizationRevision: refSchema,\n\t\tprincipalId: scopeId,\n\t\tgrantId: scopeId,\n\t\tsessionId: scopeId,\n\t\tpageSize: Type.Integer({ minimum: 1, maximum: 1000 }),\n\t});\n}\nexport type DhCursorBinding = Static<ReturnType<typeof dhCursorBindingSchema>>;\n/** What an opaque cursor is authenticated against (server-side); clients compare it across continuation pages. */\nexport const parseDhCursorBinding = dtoParser(\"cursor binding\", dhCursorBindingSchema, (binding) => {\n\tconst projectList = binding.resource === \"generations\";\n\tif (\n\t\tprojectList\n\t\t\t? binding.generationId !== undefined || binding.bindingId !== undefined\n\t\t\t: binding.generationId === undefined || binding.bindingId === undefined\n\t)\n\t\tthrow new DhContractError(\"schema_invalid\");\n\tif (binding.resource !== \"manifest\" && binding.pageSize > 100) throw new DhContractError(\"schema_invalid\");\n});\n\nexport function assertDhReadPageBinding(\n\tpage: { cursorBinding: unknown; captureCutoff: string; items: readonly unknown[] },\n\tresource: \"generations\" | \"agents\" | \"events\",\n\tview: \"metadata\" | \"content\" = \"metadata\",\n): void {\n\tconst binding = parseDhCursorBinding(page.cursorBinding);\n\tif (\n\t\tbinding.resource !== resource ||\n\t\tbinding.view !== view ||\n\t\tbinding.cutoff.captureCutoff !== page.captureCutoff ||\n\t\tpage.items.length > binding.pageSize\n\t)\n\t\tthrow new DhContractError(\"cursor_binding_mismatch\");\n\tfor (const item of page.items) {\n\t\tif (!isRecord(item)) continue;\n\t\tif (resource !== \"generations\" && item.generationId !== binding.generationId)\n\t\t\tthrow new DhContractError(\"cursor_binding_mismatch\");\n\t\tif (\n\t\t\tisRecord(item.tenantScope) &&\n\t\t\t(item.tenantScope.environmentId !== binding.environmentId || item.tenantScope.projectId !== binding.projectId)\n\t\t)\n\t\t\tthrow new DhContractError(\"cursor_binding_mismatch\");\n\t}\n}\n\n/** Pure supplied-context checks; opaque storage and authentication remain server responsibilities. */\nexport function assertDhCursorContext(context: { registered: boolean; now: string; expiresAt: string }): void {\n\tassertDhPlainData(context);\n\tif (!isCalendarInstant(context.now) || !isCalendarInstant(context.expiresAt))\n\t\tthrow new DhContractError(\"schema_invalid\");\n\tif (!context.registered) throw new DhContractError(\"cursor_invalid\");\n\tif (Date.parse(context.now) >= Date.parse(context.expiresAt)) throw new DhContractError(\"cursor_expired\");\n}\nexport function assertDhCursorProgress(\n\tprevious: string | undefined,\n\tnext: string | null,\n\tseen: ReadonlySet<string> = new Set(),\n): void {\n\tif (\n\t\tnext !== null &&\n\t\t(typeof next !== \"string\" || !/^[\\x21-\\x7e]{1,1024}$/.test(next) || next === previous || seen.has(next))\n\t)\n\t\tthrow new DhContractError(\"cursor_invalid\");\n}\n/** Every field, including the cutoff and view, must be identical across pages of one snapshot. */\nexport function assertDhCursorBinding(expected: unknown, actual: unknown): void {\n\tconst a = parseDhCursorBinding(expected);\n\tconst b = parseDhCursorBinding(actual);\n\tfor (const key of [\"principalId\", \"grantId\", \"sessionId\", \"authorizationRevision\"] as const)\n\t\tif (a[key] !== b[key]) throw new DhContractError(\"authorization_changed\");\n\tif (canonicalText(a) !== canonicalText(b)) throw new DhContractError(\"cursor_binding_mismatch\");\n}\n\n// ---------------------------------------------------------------------------\n// Exports: create request, job status, sharded manifest\n// ---------------------------------------------------------------------------\n\nexport const parseDhExportCreateRequest = dtoParser(\"export create request\", () =>\n\tstrict({ includeContent: Type.Boolean(), acknowledgeNonRevocable: Type.Literal(true) }),\n);\nexport type DhExportCreateRequest = ReturnType<typeof parseDhExportCreateRequest>;\n\n/** GET exports/{jobId}. `DhExportJob` (jobId+state) stays the POST 202 handle. */\nexport const parseDhExportJobStatus = dtoParser(\"export job status\", () =>\n\tstrict({\n\t\tjobId: jobIdSchema,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\tstate: Type.Enum(DH_EXPORT_STATES),\n\t\tcontentIncluded: Type.Boolean(),\n\t\tcaptureCutoff: Type.Optional(timestamp),\n\t}),\n);\nexport type DhExportJobStatus = ReturnType<typeof parseDhExportJobStatus>;\n\nfunction exportContextSchema() {\n\treturn {\n\t\tjobId: jobIdSchema,\n\t\tgenerationId: DhGenerationIdSchema,\n\t\ttenantScope: DhTenantScopeSchema,\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tcutoff: snapshotCutoffSchema(),\n\t\tcaptureCutoff: timestamp,\n\t\tcontentIncluded: Type.Boolean(),\n\t\tpolicyRevision: refSchema,\n\t};\n}\nfunction exportManifestHeaderSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.exportManifestHeader),\n\t\t...exportContextSchema(),\n\t\tcanonicalProfile: Type.Literal(\"dh.canonical-jcs/1\"),\n\t\tstate: Type.Literal(\"sealed\"),\n\t\teventCount: count,\n\t\tartifactCount: count,\n\t\tstreamCount: count,\n\t\tomittedArtifactCount: count,\n\t\tshardCount: Type.Integer({ minimum: 0, maximum: 1024 }),\n\t\tshards: Type.Array(\n\t\t\tstrict({\n\t\t\t\tindex: Type.Integer({ minimum: 0, maximum: 1023 }),\n\t\t\t\trecordCount: Type.Integer({ minimum: 1, maximum: 1000 }),\n\t\t\t\tsha256: digest,\n\t\t\t}),\n\t\t\t{ maxItems: 1024 },\n\t\t),\n\t\tmanifestSha256: digest,\n\t\tcoverage: metadataCoverage(),\n\t});\n}\nfunction assertManifestSize(value: unknown): void {\n\tassertDhPlainData(value);\n\tif (\n\t\tisRecord(value) &&\n\t\t((typeof value.shardCount === \"number\" && value.shardCount > 1024) ||\n\t\t\t(Array.isArray(value.shards) && value.shards.length > 1024) ||\n\t\t\t(Array.isArray(value.entries) && value.entries.length > 1000))\n\t)\n\t\tthrow new DhContractError(\"too_large\");\n\tif (new TextEncoder().encode(canonicalText(value)).length > 1048576) throw new DhContractError(\"too_large\");\n}\nconst parseManifestHeader = dtoParser(\"export manifest header\", exportManifestHeaderSchema, (header) => {\n\tconst total = header.eventCount + header.artifactCount + header.streamCount;\n\tif (\n\t\t!Number.isSafeInteger(total) ||\n\t\theader.shards.length !== header.shardCount ||\n\t\theader.shards.some((shard, index) => shard.index !== index) ||\n\t\ttotal !== header.shards.reduce((sum, shard) => sum + shard.recordCount, 0) ||\n\t\theader.omittedArtifactCount > header.artifactCount ||\n\t\theader.captureCutoff !== header.cutoff.captureCutoff\n\t)\n\t\tthrow new DhContractError(\"manifest_invalid\");\n\tassertCoverageReason(\"export manifest header\", header.coverage);\n});\nexport function parseDhExportManifestHeader(value: unknown): ReturnType<typeof parseManifestHeader> {\n\tassertManifestSize(value);\n\treturn parseManifestHeader(value);\n}\nexport type DhExportManifestHeader = ReturnType<typeof parseDhExportManifestHeader>;\n\nfunction manifestEntrySchema() {\n\tconst owner = { bindingId: prefixed(\"bnd\"), originProducerInstanceId: prefixed(\"prd\") };\n\tconst record = {\n\t\t...owner,\n\t\toriginStreamId: streamIdSchema,\n\t\trepresentation: Type.Enum([\"metadata\", \"content\"] as const),\n\t\trecordSha256: digest,\n\t};\n\treturn Type.Union([\n\t\tstrict({ kind: Type.Literal(\"event\"), id: DhEventIdSchema, ...record }),\n\t\tstrict({\n\t\t\tkind: Type.Literal(\"artifact\"),\n\t\t\tid: DhArtifactIdSchema,\n\t\t\t...record,\n\t\t\tsha256: digest,\n\t\t\tsizeBytes: Type.Integer({ minimum: 0, maximum: 67108864 }),\n\t\t\tbytes: Type.Enum([\"included\", \"omitted\", \"unavailable\"] as const),\n\t\t\treason: Type.Optional(\n\t\t\t\tType.Enum([\"policy_redacted\", \"producer_lost\", \"size_limit\", \"not_captured_by_version\"] as const),\n\t\t\t),\n\t\t}),\n\t\tstrict({\n\t\t\tkind: Type.Literal(\"stream\"),\n\t\t\tid: streamIdSchema,\n\t\t\t...owner,\n\t\t\tprefixThroughSequence: Type.Integer({ minimum: -1, maximum: Number.MAX_SAFE_INTEGER }),\n\t\t\tstate: Type.Enum([\"open\", \"closed\", \"lost\", \"disputed\"] as const),\n\t\t}),\n\t]);\n}\nexport type DhManifestEntry = Static<ReturnType<typeof manifestEntrySchema>>;\nfunction exportManifestPageSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.exportManifestPage),\n\t\t...exportContextSchema(),\n\t\tshardIndex: Type.Integer({ minimum: 0, maximum: 1023 }),\n\t\tsha256: digest,\n\t\tentries: Type.Array(manifestEntrySchema(), { minItems: 1, maxItems: 1000 }),\n\t\tnextCursor: nextCursorSchema,\n\t});\n}\nconst parseManifestPage = dtoParser(\"export manifest page\", exportManifestPageSchema, (page) => {\n\tif (page.captureCutoff !== page.cutoff.captureCutoff) throw new DhContractError(\"manifest_integrity\");\n\tlet previous = \"\";\n\tfor (const entry of page.entries) {\n\t\tconst key = `${entry.kind}\\0${entry.id}`;\n\t\tif (key <= previous) throw new DhContractError(\"manifest_invalid\");\n\t\tprevious = key;\n\t\tif (entry.kind !== \"stream\" && entry.representation !== (page.contentIncluded ? \"content\" : \"metadata\"))\n\t\t\tthrow new DhContractError(\"manifest_invalid\");\n\t\tif (\n\t\t\tentry.kind === \"artifact\" &&\n\t\t\t((entry.bytes === \"included\") !== (entry.reason === undefined) ||\n\t\t\t\t(!page.contentIncluded && entry.bytes === \"included\"))\n\t\t)\n\t\t\tthrow new DhContractError(\"manifest_invalid\");\n\t}\n});\nexport function parseDhExportManifestPage(value: unknown): ReturnType<typeof parseManifestPage> {\n\tassertManifestSize(value);\n\treturn parseManifestPage(value);\n}\nexport type DhExportManifestPage = ReturnType<typeof parseDhExportManifestPage>;\n\n/** Navigation is outside the immutable sealed header. */\nexport const parseDhExportManifestResponse = dtoParser(\n\t\"export manifest response\",\n\t() =>\n\t\tstrict({\n\t\t\theader: exportManifestHeaderSchema(),\n\t\t\tfirstShardCursor: nextCursorSchema,\n\t\t\tcursorBinding: dhCursorBindingSchema(),\n\t\t}),\n\t(response) => {\n\t\tconst header = parseDhExportManifestHeader(response.header),\n\t\t\tbinding = parseDhCursorBinding(response.cursorBinding);\n\t\tif ((header.shardCount === 0) !== (response.firstShardCursor === null))\n\t\t\tthrow new DhContractError(\"manifest_invalid\");\n\t\tif (\n\t\t\tbinding.resource !== \"manifest\" ||\n\t\t\tbinding.generationId !== header.generationId ||\n\t\t\tbinding.bindingId !== header.bindingId ||\n\t\t\tbinding.environmentId !== header.tenantScope.environmentId ||\n\t\t\tbinding.projectId !== header.tenantScope.projectId ||\n\t\t\tbinding.view !== (header.contentIncluded ? \"content\" : \"metadata\") ||\n\t\t\tcanonicalText(binding.cutoff) !== canonicalText(header.cutoff)\n\t\t)\n\t\t\tthrow new DhContractError(\"manifest_integrity\");\n\t},\n);\nexport type DhExportManifestResponse = ReturnType<typeof parseDhExportManifestResponse>;\n\n/** JCS shard body; hash its domain-separated bytes, never navigation cursors. */\nexport function dhManifestShardCanonicalText(page: DhExportManifestPage): string {\n\tconst { sha256: _hash, nextCursor: _cursor, ...body } = parseDhExportManifestPage(page);\n\treturn canonicalText(body);\n}\n\n/** Convenience over the same bounded incremental algorithm. */\nexport function validateDhExportManifest(\n\theaderInput: unknown,\n\tpageInputs: readonly unknown[],\n\toptions: DhExportHashOptions,\n): { header: DhExportManifestHeader; pages: readonly DhExportManifestPage[] } {\n\tconst state = beginDhExportManifest(headerInput, options);\n\tif (pageInputs.length !== state.header.shardCount) throw new DhContractError(\"manifest_invalid\");\n\tconst pages = Array.from(pageInputs, (page) => acceptDhExportManifestPage(state, page));\n\treturn { header: finishDhExportManifest(state), pages };\n}\n\n// ---------------------------------------------------------------------------\n// Controls\n// ---------------------------------------------------------------------------\n\nexport const DH_CONTROL_ACTIONS = [\"cancel\", \"retry\", \"continue\"] as const;\nexport type DhControlAction = (typeof DH_CONTROL_ACTIONS)[number];\n/** Acceptance, delivery and application are not termination: terminationConfirmed is a separate observation. */\nexport const DH_CONTROL_STATES = [\n\t\"requested\",\n\t\"accepted\",\n\t\"delivered\",\n\t\"applied\",\n\t\"rejected\",\n\t\"unsupported\",\n\t\"unknown\",\n] as const;\nexport type DhControlState = (typeof DH_CONTROL_STATES)[number];\nexport const DH_CONTROL_REJECT_REASONS = [\n\t\"not_authorized\",\n\t\"scope_mismatch\",\n\t\"stale_epoch\",\n\t\"target_settled\",\n\t\"not_eligible\",\n\t\"policy_denied\",\n\t\"budget_exhausted\",\n\t\"workspace_unavailable\",\n] as const;\nexport type DhControlRejectReason = (typeof DH_CONTROL_REJECT_REASONS)[number];\n\nconst controlRoutes = { controlCancel: \"cancel\", controlRetry: \"retry\", controlContinue: \"continue\" } as const;\n\nfunction controlRequestSchema() {\n\tconst fenced = <const A extends DhControlAction, P extends TSchema>(action: A, payload: P) =>\n\t\tstrict({\n\t\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controlRequest),\n\t\t\trequestId: requestIdSchema(),\n\t\t\tidempotencyKey: Type.String({ pattern: \"^[A-Za-z0-9_-]{16,128}$\" }),\n\t\t\tgenerationId: DhGenerationIdSchema,\n\t\t\tagentId: DhAgentIdSchema,\n\t\t\tattemptId: DhAttemptIdSchema,\n\t\t\tbindingId: prefixed(\"bnd\"),\n\t\t\tbindingEpoch: refSchema,\n\t\t\tsessionEpoch: refSchema,\n\t\t\tcapabilityRevision: digest,\n\t\t\taction: Type.Literal(action),\n\t\t\tpayload,\n\t\t});\n\treturn Type.Union([\n\t\tfenced(\"cancel\", strict({ scope: Type.Union([Type.Literal(\"selected\"), Type.Literal(\"whole-run\")]) })),\n\t\tfenced(\n\t\t\t\"retry\",\n\t\t\tstrict({\n\t\t\t\tsourceAttemptId: DhAttemptIdSchema,\n\t\t\t\t/** new-attempt: same agent, new att_ (Flow/CLI worker). new-agent: new agent + cross-agent relation (Code native retry). */\n\t\t\t\trelation: Type.Union([Type.Literal(\"new-attempt\"), Type.Literal(\"new-agent\")]),\n\t\t\t\t/** Literal on purpose: a retry cannot drop model/context/workspace policy or reset cumulative spend. */\n\t\t\t\tpolicy: strict({\n\t\t\t\t\tmodel: Type.Literal(\"retain\"),\n\t\t\t\t\tcontext: Type.Literal(\"retain\"),\n\t\t\t\t\tworkspace: Type.Literal(\"retain\"),\n\t\t\t\t\tspend: Type.Literal(\"cumulative\"),\n\t\t\t\t}),\n\t\t\t}),\n\t\t),\n\t\tfenced(\"continue\", strict({ message: Type.String({ minLength: 1, maxLength: DH_CONTROL_MESSAGE_MAX_CHARS }) })),\n\t]);\n}\nexport type DhControlRequest = Static<ReturnType<typeof controlRequestSchema>>;\nexport type DhCancelRequest = Extract<DhControlRequest, { action: \"cancel\" }>;\nexport type DhRetryRequest = Extract<DhControlRequest, { action: \"retry\" }>;\nexport type DhContinueRequest = Extract<DhControlRequest, { action: \"continue\" }>;\nexport const parseDhControlRequest = dtoParser(\"control request\", controlRequestSchema, (request) => {\n\tif (new TextEncoder().encode(canonicalText(request)).length > 65536) throw new DhContractError(\"too_large\");\n\tif (request.action === \"retry\" && request.payload.sourceAttemptId !== request.attemptId)\n\t\tthrow new DhContractError(\"schema_invalid\");\n});\n\nfunction expectAction<A extends DhControlAction>(value: unknown, action: A): Extract<DhControlRequest, { action: A }> {\n\tconst request = parseDhControlRequest(value);\n\tif (request.action !== action) throw new Error(`Expected a ${action} control request`);\n\treturn request as Extract<DhControlRequest, { action: A }>;\n}\nexport const parseDhCancelRequest = (value: unknown): DhCancelRequest => expectAction(value, \"cancel\");\nexport const parseDhRetryRequest = (value: unknown): DhRetryRequest => expectAction(value, \"retry\");\nexport const parseDhContinueRequest = (value: unknown): DhContinueRequest => expectAction(value, \"continue\");\n\nexport interface DhControlFence {\n\tgenerationId: string;\n\tagentId: string;\n\tattemptId: string;\n\tbindingId: string;\n\tbindingEpoch: string;\n\tsessionEpoch: string;\n\tcapabilityRevision: string;\n}\n/** A different generation/agent is a scope error; a replaced attempt or binding epoch is stale. Never apply a stale fence. */\nexport function checkDhControlFence(\n\trequest: DhControlFence,\n\tlive: DhControlFence,\n): \"ok\" | \"scope_mismatch\" | \"stale_epoch\" | \"policy_denied\" {\n\tassertDhPlainData(request);\n\tassertDhPlainData(live);\n\tif (request.generationId !== live.generationId || request.agentId !== live.agentId) return \"scope_mismatch\";\n\tif (\n\t\trequest.attemptId !== live.attemptId ||\n\t\trequest.bindingId !== live.bindingId ||\n\t\trequest.bindingEpoch !== live.bindingEpoch ||\n\t\trequest.sessionEpoch !== live.sessionEpoch\n\t)\n\t\treturn \"stale_epoch\";\n\tif (request.capabilityRevision !== live.capabilityRevision) return \"policy_denied\";\n\treturn \"ok\";\n}\n\n/** The POST body must match the action-specific route and the path's generation/agent. */\nexport function assertDhControlRequestForRoute(\n\tid: DhRouteId,\n\tparams: Readonly<Record<string, string>>,\n\trequest: unknown,\n): DhControlRequest {\n\tconst action = Object.hasOwn(controlRoutes, id) ? controlRoutes[id as keyof typeof controlRoutes] : undefined;\n\tif (action === undefined) throw new DhContractError(\"schema_invalid\", \"Route is not a control action route\");\n\tbuildDhRoutePath(id, params);\n\tconst parsed = expectAction(request, action);\n\tif (parsed.generationId !== params.generationId || parsed.agentId !== params.agentId) {\n\t\tthrow new Error(\"Control request does not match the route generation or agent\");\n\t}\n\treturn parsed;\n}\n\nexport interface DhControlReplayEntry {\n\t/** Authenticated by the server, never taken from the request body. */\n\tactor: string;\n\tauthorityId: string;\n\ttenantId: string;\n\tscope: { environmentId: string; projectId: string };\n\trequest: unknown;\n}\n/**\n * Idempotency: entries with the same actor, environment/project, generation, agent, action and key are\n * one request. Then a byte-equal canonical body (request id, attempt, epoch, payload) is a replay (`same`);\n * anything else under that key is a `conflict` (HTTP 409, no second effect). Other keys/actors/scopes/targets are `distinct`.\n */\nexport function compareDhControlReplay(\n\tstored: DhControlReplayEntry,\n\tincoming: DhControlReplayEntry,\n): \"same\" | \"conflict\" | \"distinct\" {\n\tassertDhPlainData(stored);\n\tassertDhPlainData(incoming);\n\tif (\n\t\t![\n\t\t\tstored.actor,\n\t\t\tincoming.actor,\n\t\t\tstored.authorityId,\n\t\t\tincoming.authorityId,\n\t\t\tstored.tenantId,\n\t\t\tincoming.tenantId,\n\t\t].every((value) => typeof value === \"string\" && new RegExp(SCOPE_ID).test(value))\n\t)\n\t\tthrow new DhContractError(\"schema_invalid\");\n\tconst a = parseDhControlRequest(stored.request);\n\tconst b = parseDhControlRequest(incoming.request);\n\tconst lookup = (entry: DhControlReplayEntry, request: DhControlRequest) =>\n\t\tcanonicalText([\n\t\t\tentry.actor,\n\t\t\tentry.authorityId,\n\t\t\tentry.tenantId,\n\t\t\tentry.scope.environmentId,\n\t\t\tentry.scope.projectId,\n\t\t\trequest.generationId,\n\t\t\trequest.agentId,\n\t\t\trequest.action,\n\t\t\trequest.idempotencyKey,\n\t\t]);\n\tif (lookup(stored, a) !== lookup(incoming, b)) return \"distinct\";\n\treturn canonicalText(a) === canonicalText(b) ? \"same\" : \"conflict\";\n}\n\nfunction assertRejectedReason(label: string, value: { state: string; reason?: string }): void {\n\tif ((value.state === \"rejected\") !== (value.reason !== undefined)) {\n\t\tthrow new Error(`Invalid ${label}: a reason is required for, and only for, state rejected`);\n\t}\n}\nconst controlStateSchema = () => Type.Enum(DH_CONTROL_STATES);\nconst controlActionSchema = () => Type.Enum(DH_CONTROL_ACTIONS);\nconst rejectReasonSchema = () => Type.Enum(DH_CONTROL_REJECT_REASONS);\n\n/** POST response: a correlated handle, not an effect. */\nexport const parseDhControlReceipt = dtoParser(\n\t\"control receipt\",\n\t() =>\n\t\tstrict({\n\t\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controlReceipt),\n\t\t\trequestId: requestIdSchema(),\n\t\t\taction: controlActionSchema(),\n\t\t\tstate: controlStateSchema(),\n\t\t\treason: Type.Optional(rejectReasonSchema()),\n\t\t}),\n\t(receipt) => assertRejectedReason(\"control receipt\", receipt),\n);\nexport type DhControlReceipt = ReturnType<typeof parseDhControlReceipt>;\n\nexport const parseDhControlRequestStatus = dtoParser(\n\t\"control request status\",\n\t() =>\n\t\tstrict({\n\t\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controlStatus),\n\t\t\trequestId: requestIdSchema(),\n\t\t\taction: controlActionSchema(),\n\t\t\tgenerationId: DhGenerationIdSchema,\n\t\t\tagentId: DhAgentIdSchema,\n\t\t\tattemptId: DhAttemptIdSchema,\n\t\t\tbindingId: prefixed(\"bnd\"),\n\t\t\tbindingEpoch: refSchema,\n\t\t\tsessionEpoch: refSchema,\n\t\t\tcapabilityRevision: digest,\n\t\t\trequestSha256: digest,\n\t\t\tstate: controlStateSchema(),\n\t\t\treason: Type.Optional(rejectReasonSchema()),\n\t\t\t/** Cancel only: an observed fact, independent of `state`. Only an applied cancel can confirm it. */\n\t\t\tterminationConfirmed: Type.Optional(Type.Boolean()),\n\t\t\tobserved: Type.Optional(\n\t\t\t\tstrict({\n\t\t\t\t\tstartedAgentId: Type.Optional(DhAgentIdSchema),\n\t\t\t\t\tstartedAttemptId: Type.Optional(DhAttemptIdSchema),\n\t\t\t\t\tconsumedByEventId: Type.Optional(DhEventIdSchema),\n\t\t\t\t}),\n\t\t\t),\n\t\t\tupdatedAt: timestamp,\n\t\t}),\n\t(status) => {\n\t\tassertRejectedReason(\"control request status\", status);\n\t\tif (status.action === \"cancel\") {\n\t\t\tif (status.terminationConfirmed === undefined) {\n\t\t\t\tthrow new Error(\"Invalid control request status: cancel requires terminationConfirmed\");\n\t\t\t}\n\t\t\tif (status.terminationConfirmed && status.state !== \"applied\") {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Invalid control request status: termination can only be confirmed after an applied cancel\",\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (status.terminationConfirmed !== undefined) {\n\t\t\tthrow new Error(\"Invalid control request status: terminationConfirmed applies to cancel only\");\n\t\t}\n\t\tconst observed = status.observed;\n\t\tif (\n\t\t\tstatus.state === \"applied\" &&\n\t\t\t((status.action === \"retry\" &&\n\t\t\t\t(observed?.startedAgentId === undefined || observed.startedAttemptId === undefined)) ||\n\t\t\t\t(status.action === \"continue\" && observed?.consumedByEventId === undefined))\n\t\t)\n\t\t\tthrow new DhContractError(\"schema_invalid\");\n\t\tif (observed === undefined) return;\n\t\tconst keys = Object.keys(observed);\n\t\tconst allowed =\n\t\t\tstatus.action === \"retry\"\n\t\t\t\t? [\"startedAgentId\", \"startedAttemptId\"]\n\t\t\t\t: status.action === \"continue\"\n\t\t\t\t\t? [\"consumedByEventId\"]\n\t\t\t\t\t: [];\n\t\tif (status.state !== \"applied\" || keys.length === 0 || keys.some((key) => !allowed.includes(key))) {\n\t\t\tthrow new Error(\"Invalid control request status: observed outcome does not fit the action or state\");\n\t\t}\n\t},\n);\nexport type DhControlRequestStatus = ReturnType<typeof parseDhControlRequestStatus>;\n\nfunction controlTargetProperties() {\n\treturn {\n\t\tgenerationId: DhGenerationIdSchema,\n\t\tagentId: DhAgentIdSchema,\n\t\tattemptId: DhAttemptIdSchema,\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tbindingEpoch: refSchema,\n\t\tsessionEpoch: refSchema,\n\t\tcapabilityRevision: digest,\n\t};\n}\nexport const parseDhControlTarget = dtoParser(\"control target\", () =>\n\tstrict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controlTarget),\n\t\t...controlTargetProperties(),\n\t\tupdatedAt: timestamp,\n\t}),\n);\nexport type DhControlTarget = ReturnType<typeof parseDhControlTarget>;\nexport const parseDhControlHandshake = dtoParser(\"control handshake\", () =>\n\tstrict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controlHandshake),\n\t\tbindingId: prefixed(\"bnd\"),\n\t\tsessionEpoch: refSchema,\n\t\ttoken: Type.String({ pattern: \"^[A-Za-z0-9_-]{42}[AEIMQUYcgkosw048]$\" }),\n\t}),\n);\nexport type DhControlHandshake = ReturnType<typeof parseDhControlHandshake>;\nexport const parseDhControlDelivery = dtoParser(\n\t\"control delivery\",\n\t() =>\n\t\tstrict({\n\t\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controlDelivery),\n\t\t\trequest: controlRequestSchema(),\n\t\t\ttenantScope: DhTenantScopeSchema,\n\t\t\tactorId: scopeId,\n\t\t\tauthorityId: scopeId,\n\t\t\tauthorizationRevision: refSchema,\n\t\t\tauthorizedAt: timestamp,\n\t\t\texpiresAt: timestamp,\n\t\t\trequestSha256: digest,\n\t\t}),\n\t(delivery) => {\n\t\tparseDhControlRequest(delivery.request);\n\t\tconst lifetime = Date.parse(delivery.expiresAt) - Date.parse(delivery.authorizedAt);\n\t\tif (lifetime <= 0 || lifetime > 30000) throw new DhContractError(\"schema_invalid\");\n\t},\n);\nexport type DhControlDelivery = ReturnType<typeof parseDhControlDelivery>;\nexport interface DhControlDeliveryContext {\n\tlive: DhControlFence;\n\tscope: { environmentId: string; projectId: string };\n\tactorId: string;\n\tauthorityId: string;\n\tauthorizationRevision: string;\n\tauthorized: boolean;\n\tnow: string;\n}\nexport function assertDhControlDelivery(\n\tinput: unknown,\n\tcontext: DhControlDeliveryContext,\n\toptions: DhExportHashOptions,\n): void {\n\tconst delivery = parseDhControlDelivery(input);\n\tassertDhPlainData(context);\n\tif (!isCalendarInstant(context.now)) throw new DhContractError(\"schema_invalid\");\n\tif (\n\t\tcontext.authorized !== true ||\n\t\tcontext.actorId !== delivery.actorId ||\n\t\tcontext.authorityId !== delivery.authorityId ||\n\t\tcontext.authorizationRevision !== delivery.authorizationRevision ||\n\t\tDate.parse(context.now) < Date.parse(delivery.authorizedAt) ||\n\t\tDate.parse(context.now) >= Date.parse(delivery.expiresAt)\n\t)\n\t\tthrow new DhContractError(\"not_authorized\");\n\tif (canonicalText(context.scope) !== canonicalText(delivery.tenantScope))\n\t\tthrow new DhContractError(\"scope_mismatch\");\n\tconst fence = checkDhControlFence(delivery.request, context.live);\n\tif (fence !== \"ok\") throw new DhContractError(fence);\n\tif (\n\t\ttypeof options?.sha256Hex !== \"function\" ||\n\t\toptions.sha256Hex(dhDigestInput(\"dh.control-request/2\", delivery.request)) !== delivery.requestSha256\n\t)\n\t\tthrow new DhContractError(\"control_integrity\");\n}\n/** Non-secret registry descriptor only. The bearer is held privately and never serialized here. */\nexport const parseDhControllerCredential = dtoParser(\n\t\"controller credential\",\n\t() =>\n\t\tstrict({\n\t\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.controllerCredential),\n\t\t\tauthorityId: scopeId,\n\t\t\tactorId: scopeId,\n\t\t\tbindingId: prefixed(\"bnd\"),\n\t\t\ttargets: Type.Array(\n\t\t\t\tstrict({ generationId: DhGenerationIdSchema, agentId: DhAgentIdSchema, attemptId: DhAttemptIdSchema }),\n\t\t\t\t{ minItems: 1, maxItems: 128, uniqueItems: true },\n\t\t\t),\n\t\t\tactions: strict({\n\t\t\t\tcancelSelected: Type.Boolean(),\n\t\t\t\tcancelWholeRun: Type.Boolean(),\n\t\t\t\tcontinueLive: Type.Boolean(),\n\t\t\t\tretryFresh: Type.Boolean(),\n\t\t\t}),\n\t\t\tstatusRead: Type.Boolean(),\n\t\t\tdiscoverTarget: Type.Boolean(),\n\t\t\tsessionVersion: count,\n\t\t\tcredentialVersion: positive,\n\t\t\tissuedAt: timestamp,\n\t\t\texpiresAt: timestamp,\n\t\t}),\n\t(credential) => {\n\t\tconst lifetime = Date.parse(credential.expiresAt) - Date.parse(credential.issuedAt);\n\t\tif (lifetime <= 0 || lifetime > 300000) throw new DhContractError(\"schema_invalid\");\n\t},\n);\nexport type DhControllerCredential = ReturnType<typeof parseDhControllerCredential>;\nexport function assertDhControllerAction(\n\tinput: unknown,\n\ttargetInput: unknown,\n\taction: keyof DhControllerCredential[\"actions\"],\n\tcontext: { now: string; liveVersion: number; sessionVersion: number; membershipActive: boolean },\n): void {\n\tconst credential = parseDhControllerCredential(input),\n\t\ttarget = parseDhControlTarget(targetInput);\n\tassertDhPlainData(context);\n\tif (!isCalendarInstant(context.now)) throw new DhContractError(\"schema_invalid\");\n\tif (\n\t\tcontext.membershipActive !== true ||\n\t\tcontext.liveVersion !== credential.credentialVersion ||\n\t\tcontext.sessionVersion !== credential.sessionVersion ||\n\t\tDate.parse(context.now) < Date.parse(credential.issuedAt) ||\n\t\tDate.parse(context.now) >= Date.parse(credential.expiresAt) ||\n\t\tcredential.bindingId !== target.bindingId ||\n\t\tcredential.actions[action] !== true ||\n\t\t!credential.targets.some(\n\t\t\t(t) =>\n\t\t\t\tt.generationId === target.generationId && t.agentId === target.agentId && t.attemptId === target.attemptId,\n\t\t)\n\t)\n\t\tthrow new DhContractError(\"not_authorized\");\n}\nexport function assertDhControlStatusEvidence(input: unknown, events: readonly DhEventV1[]): void {\n\tconst status = parseDhControlRequestStatus(input);\n\tif (status.state !== \"applied\" || status.action === \"cancel\") return;\n\tassertDhAppliedControlEvidence(\n\t\tstatus,\n\t\tstatus.action,\n\t\t{\n\t\t\tstartedAgentId: status.observed?.startedAgentId,\n\t\t\tstartedAttemptId: status.observed?.startedAttemptId,\n\t\t\tconsumingEventId: status.observed?.consumedByEventId,\n\t\t},\n\t\tevents,\n\t);\n}\n/** Socket/fd3 message framing only; no I/O or transport authority is implemented. */\nexport function parseDhControlFrame(bytes: Uint8Array): DhControlDelivery | DhControlHandshake {\n\tif (!(bytes instanceof Uint8Array) || bytes.length < 5) throw new DhContractError(\"schema_invalid\");\n\tconst length = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength).getUint32(0, false);\n\tif (length > 65536) throw new DhContractError(\"too_large\");\n\tif (length !== bytes.length - 4) throw new DhContractError(\"schema_invalid\");\n\tconst value = parseDhRawJson(bytes.subarray(4), { maxBytes: 65536 });\n\treturn isRecord(value) && value.schema === DH_HTTP_SCHEMA_IDS.controlHandshake\n\t\t? parseDhControlHandshake(value)\n\t\t: parseDhControlDelivery(value);\n}\nexport function dhControlFrameBytes(input: unknown): Uint8Array {\n\tassertDhPlainData(input);\n\tconst value =\n\t\tisRecord(input) && input.schema === DH_HTTP_SCHEMA_IDS.controlHandshake\n\t\t\t? parseDhControlHandshake(input)\n\t\t\t: parseDhControlDelivery(input);\n\tconst payload = new TextEncoder().encode(canonicalText(value));\n\tif (payload.length > 65536) throw new DhContractError(\"too_large\");\n\tconst bytes = new Uint8Array(4 + payload.length);\n\tnew DataView(bytes.buffer).setUint32(0, payload.length, false);\n\tbytes.set(payload, 4);\n\treturn bytes;\n}\n\n// ---------------------------------------------------------------------------\n// ACK semantics\n// ---------------------------------------------------------------------------\n\n/** POST-local reply context only: never an assertion of the collector's durable prefix. */\nexport function parseDhPreviousAckedSequenceHeader(value: unknown): number {\n\tif (typeof value !== \"string\" || !/^(?:-1|0|[1-9][0-9]*)$/.test(value) || !Number.isSafeInteger(Number(value)))\n\t\tthrow new DhContractError(\"schema_invalid\");\n\treturn Number(value);\n}\n\nconst parseAckSentView = dtoParser(\"sent ACK view\", () =>\n\tstrict({\n\t\tstreamId: streamIdSchema,\n\t\tevents: Type.Array(strict({ eventId: DhEventIdSchema, sequence: count }), { maxItems: 500 }),\n\t\tartifacts: Type.Array(strict({ artifactId: DhArtifactIdSchema }), { maxItems: 500 }),\n\t}),\n);\n/** Validate at the transport boundary before invoking the unchanged prefix checker. Full batches are allowed. */\nexport function assertDhAckSentBatch(sent: DhAckSentBatch): void {\n\ttry {\n\t\tassertDhPlainData(sent);\n\t\tconst view = parseAckSentView({\n\t\t\tstreamId: sent.streamId,\n\t\t\tevents: sent.events.map(({ eventId, sequence }) => ({ eventId, sequence })),\n\t\t\tartifacts: sent.artifacts.map(({ artifactId }) => ({ artifactId })),\n\t\t});\n\t\tif (\n\t\t\tview.events.length + view.artifacts.length > 500 ||\n\t\t\tnew Set(view.events.map((event) => event.eventId)).size !== view.events.length ||\n\t\t\tnew Set(view.events.map((event) => event.sequence)).size !== view.events.length ||\n\t\t\tnew Set(view.artifacts.map((artifact) => artifact.artifactId)).size !== view.artifacts.length\n\t\t)\n\t\t\tthrow new DhContractError(\"ack_invalid\");\n\t} catch {\n\t\tthrow new DhContractError(\"ack_invalid\");\n\t}\n}\n\n/** Structural view of a sent batch: a DhIngestBatch satisfies it. */\nexport interface DhAckSentBatch {\n\treadonly streamId: string;\n\treadonly events: readonly { readonly eventId: string; readonly sequence: number }[];\n\treadonly artifacts: readonly { readonly artifactId: string }[];\n}\nexport interface DhAckRejection {\n\tid: string;\n\tcode: DhRejectionCode;\n\tretryable: boolean;\n}\n/** `none` is the explicit empty prefix. With no accepted ids, ackedThroughSequence only repeats the previous watermark (0 when nothing was acknowledged): it never means sequence 0 was accepted. */\nexport type DhAckEventPrefix =\n\t| { readonly kind: \"none\" }\n\t| { readonly kind: \"prefix\"; readonly throughSequence: number; readonly eventIds: readonly string[] };\nexport interface DhBatchAckResult {\n\treadonly ack: DhAckV1;\n\treadonly eventPrefix: DhAckEventPrefix;\n\treadonly eventRejections: readonly DhAckRejection[];\n\t/** Batch ACK artifact entries are metadata receipts. Bytes are acknowledged only by a dh.artifact-receipt/1 from the PUT. */\n\treadonly artifactMetadata: { readonly accepted: readonly string[]; readonly rejected: readonly DhAckRejection[] };\n\treadonly bytesAcknowledged: false;\n}\n\n/** Value of `previousAckedSequence` when no event has been acknowledged yet (the uploader cursor's initial `-1`). */\nexport const DH_ACK_NO_PREVIOUS_SEQUENCE = -1;\n\n/**\n * Validates a dh.ack/1 against the batch that was actually sent. The ACK must name the same stream and\n * only sent ids; accepted and rejected are disjoint; accepted events are exactly the first k sent events\n * by sequence (k may be 0).\n *\n * `previousAckedSequence` is REQUIRED: the stream's current acknowledged watermark, or\n * DH_ACK_NO_PREVIOUS_SEQUENCE (-1) when nothing is acknowledged yet. The accepted prefix must be gap-free\n * and start at previous + 1, so `[0,10,20]` cannot be acknowledged as one prefix. For k > 0,\n * ackedThroughSequence is the prefix's last sequence. For k = 0 it must repeat the previous watermark\n * (0 when previous is -1, because dh.ack/1 cannot carry a negative value and the empty accepted list\n * disambiguates), so an empty ACK can neither advance nor regress the stream.\n */\nexport function validateDhBatchAck(\n\tsent: DhAckSentBatch,\n\tackInput: unknown,\n\toptions: { previousAckedSequence: number },\n): DhBatchAckResult {\n\tconst previous = options?.previousAckedSequence;\n\tif (typeof previous !== \"number\" || !Number.isSafeInteger(previous) || previous < DH_ACK_NO_PREVIOUS_SEQUENCE) {\n\t\tthrow new Error(\"Invalid trace acknowledgement check: previousAckedSequence must be an integer >= -1\");\n\t}\n\tconst ack = parseDhIngestAck(ackInput);\n\tif (ack.streamId !== sent.streamId)\n\t\tthrow new Error(\"Invalid trace acknowledgement: stream does not match the sent batch\");\n\tconst events = [...sent.events].sort((a, b) => a.sequence - b.sequence);\n\tevents.forEach((event, index) => {\n\t\tconst previous = events[index - 1];\n\t\tif (previous !== undefined && previous.sequence >= event.sequence)\n\t\t\tthrow new Error(\"Sent batch repeats a sequence\");\n\t});\n\tconst sentEvents = new Set(events.map((event) => event.eventId));\n\tconst sentArtifacts = new Set(sent.artifacts.map((artifact) => artifact.artifactId));\n\tif (sentEvents.size !== events.length || sentArtifacts.size !== sent.artifacts.length) {\n\t\tthrow new Error(\"Sent batch repeats an id\");\n\t}\n\tfor (const id of ack.accepted.eventIds)\n\t\tif (!sentEvents.has(id)) throw new Error(\"Trace acknowledgement accepts an event that was not sent\");\n\tfor (const id of ack.accepted.artifactIds) {\n\t\tif (!sentArtifacts.has(id)) throw new Error(\"Trace acknowledgement accepts an artifact that was not sent\");\n\t}\n\tfor (const entry of ack.rejected) {\n\t\tif (!sentEvents.has(entry.id) && !sentArtifacts.has(entry.id))\n\t\t\tthrow new Error(\"Trace acknowledgement rejects an id that was not sent\");\n\t}\n\tconst prefix = events.slice(0, ack.accepted.eventIds.length);\n\tconst accepted = new Set(ack.accepted.eventIds);\n\tif (prefix.some((event) => !accepted.has(event.eventId))) {\n\t\tthrow new Error(\"Trace acknowledgement accepted events are not the contiguous sent prefix\");\n\t}\n\tlet eventPrefix: DhAckEventPrefix = { kind: \"none\" };\n\tconst last = prefix[prefix.length - 1];\n\tif (last === undefined) {\n\t\tconst unchanged = Math.max(previous, 0);\n\t\tif (ack.ackedThroughSequence !== unchanged) {\n\t\t\tthrow new Error(\"Trace acknowledgement with no accepted events must repeat the previous watermark\");\n\t\t}\n\t} else {\n\t\tif (ack.ackedThroughSequence !== last.sequence)\n\t\t\tthrow new Error(\"Trace acknowledgement ackedThroughSequence does not end the accepted prefix\");\n\t\tprefix.forEach((event, index) => {\n\t\t\tif (event.sequence !== previous + 1 + index)\n\t\t\t\tthrow new Error(\"Trace acknowledgement prefix is not gap-free from the previous watermark\");\n\t\t});\n\t\teventPrefix = { kind: \"prefix\", throughSequence: last.sequence, eventIds: prefix.map((event) => event.eventId) };\n\t}\n\tconst rejected = ack.rejected.map((entry) => ({ id: entry.id, code: entry.code, retryable: entry.retryable }));\n\treturn deepFreeze({\n\t\tack,\n\t\teventPrefix,\n\t\teventRejections: rejected.filter((entry) => sentEvents.has(entry.id)),\n\t\tartifactMetadata: {\n\t\t\taccepted: [...ack.accepted.artifactIds],\n\t\t\trejected: rejected.filter((entry) => sentArtifacts.has(entry.id)),\n\t\t},\n\t\tbytesAcknowledged: false as const,\n\t});\n}\n\nfunction artifactReceiptSchema() {\n\treturn strict({\n\t\tschema: Type.Literal(DH_HTTP_SCHEMA_IDS.artifactReceipt),\n\t\tartifactId: DhArtifactIdSchema,\n\t\tsha256: digest,\n\t\tsizeBytes: Type.Optional(Type.Integer({ minimum: 0, maximum: DH_ARTIFACT_MAX_BYTES })),\n\t\tstate: Type.Union([Type.Literal(\"stored\"), Type.Literal(\"rejected\")]),\n\t\trejection: Type.Optional(strict({ code: Type.Enum(DH_REJECTION_CODES), retryable: Type.Boolean() })),\n\t\treceivedAt: timestamp,\n\t});\n}\n/**\n * Response to PUT artifacts/{artifactId}/content. Names only the requested artifact and carries no\n * sequence, event id or watermark, so it cannot advance an event cursor or acknowledge metadata.\n */\nexport const parseDhArtifactReceipt = dtoParser(\"artifact receipt\", artifactReceiptSchema, (receipt) => {\n\tif (receipt.state === \"stored\" && (receipt.sizeBytes === undefined || receipt.rejection !== undefined)) {\n\t\tthrow new Error(\"Invalid artifact receipt: stored requires sizeBytes and no rejection\");\n\t}\n\tif (receipt.state === \"rejected\" && receipt.rejection === undefined) {\n\t\tthrow new Error(\"Invalid artifact receipt: rejected requires a rejection\");\n\t}\n});\nexport type DhArtifactReceiptV1 = ReturnType<typeof parseDhArtifactReceipt>;\n\nexport interface DhArtifactPutRequest {\n\tartifactId: string;\n\tsha256: string;\n\tsizeBytes?: number;\n}\nexport function validateDhArtifactReceipt(requested: DhArtifactPutRequest, receiptInput: unknown): DhArtifactReceiptV1 {\n\tconst receipt = parseDhArtifactReceipt(receiptInput);\n\tif (receipt.artifactId !== requested.artifactId)\n\t\tthrow new DhContractError(\"receipt_invalid\", \"Artifact receipt names a different artifact\");\n\tif (receipt.sha256 !== requested.sha256)\n\t\tthrow new DhContractError(\"receipt_invalid\", \"Artifact receipt hash differs from the uploaded bytes\");\n\tif (\n\t\trequested.sizeBytes !== undefined &&\n\t\treceipt.sizeBytes !== undefined &&\n\t\treceipt.sizeBytes !== requested.sizeBytes\n\t) {\n\t\tthrow new DhContractError(\"receipt_invalid\", \"Artifact receipt size differs from the uploaded bytes\");\n\t}\n\treturn receipt;\n}\n\n/** Same id, same canonical bytes is an idempotent redelivery; the same id with different bytes is a conflict and never overwrites. */\nexport function classifyDhDuplicate(existing: unknown, incoming: unknown): \"identical\" | \"conflict\" {\n\treturn canonicalText(existing) === canonicalText(incoming) ? \"identical\" : \"conflict\";\n}\n\n// ---------------------------------------------------------------------------\n// Supported runtimes and capabilities\n// ---------------------------------------------------------------------------\n\nexport const DH_CONTROL_SUPPORT = [\"required\", \"unsupported\"] as const;\nexport type DhControlSupport = (typeof DH_CONTROL_SUPPORT)[number];\nexport interface DhRuntimeCapabilities {\n\treadonly controls: Readonly<{\n\t\tbackgroundStatus: DhControlSupport;\n\t\tcancelSelected: DhControlSupport;\n\t\tcancelWholeRun: DhControlSupport;\n\t\tcontinueLive: DhControlSupport;\n\t\tretryFresh: DhControlSupport;\n\t}>;\n\treadonly modes: readonly string[];\n\treadonly unsupportedModes: readonly string[];\n}\nconst allRequired = () =>\n\t({\n\t\tbackgroundStatus: \"required\",\n\t\tcancelSelected: \"required\",\n\t\tcancelWholeRun: \"required\",\n\t\tcontinueLive: \"required\",\n\t\tretryFresh: \"required\",\n\t}) as const;\nconst cliRuntime = (): DhRuntimeCapabilities => ({\n\tcontrols: allRequired(),\n\tmodes: [\"interactive\", \"print\", \"json\", \"rpc\", \"sdk\", \"child\", \"agent-exec-node\"],\n\tunsupportedModes: [\"agent-exec-workflow\", \"experimental-transport\"],\n});\n\n/**\n * \"required\" means the implementation and a positive qualification check are mandatory for full\n * completion; an `unsupported` reply never satisfies it. \"unsupportedModes\" cannot claim full capture.\n */\nexport const DH_SUPPORTED_RUNTIMES = deepFreeze({\n\t\"cli-node\": cliRuntime(),\n\t\"cli-bun\": cliRuntime(),\n\tflow: {\n\t\tcontrols: allRequired(),\n\t\tmodes: [\"single\", \"parallel\", \"chain\", \"hierarchy\"],\n\t\tunsupportedModes: [],\n\t},\n} satisfies Record<string, DhRuntimeCapabilities>);\nexport type DhRuntimeId = keyof typeof DH_SUPPORTED_RUNTIMES;\n\n// ---------------------------------------------------------------------------\n// Flow producer: types only\n// ---------------------------------------------------------------------------\n\n/**\n * Public shape of the safe host capability `getFlowTraceProducer(ctx: ExtensionContext):\n * FlowTraceProducer | undefined`, implemented and exported by the CLI (`@humain/humain-code`, C14).\n * This package ships no implementation, recorder, config, token or transport. The host validates and\n * narrows every input, binds `issuer=flow`/`via=flow` provenance and re-checks the live binding on each call.\n */\nexport interface FlowTraceIdentity {\n\treadonly generationId: string;\n\treadonly agentId: string;\n\treadonly attemptId: string;\n\treadonly environmentId: string;\n\treadonly projectId: string;\n\t/** Actual segment admission identity and epoch, never fabricated by the host. */\n\treadonly bindingId: string;\n\treadonly bindingEpoch: string;\n\t/** Independent host session epoch; replacement disables stale capabilities. */\n\treadonly sessionEpoch: string;\n}\nexport interface FlowTraceEventInput {\n\tkind: DhEventKind;\n\tagentId?: string;\n\tparentAgentId?: string;\n\tattemptId?: string;\n\tattemptNumber?: number;\n\tretryOfAttemptId?: string;\n\toutcome?: DhOutcome;\n\tfailure?: { code: string; message?: string };\n\tpayload: Record<string, unknown>;\n\tfields?: Record<string, DhCoverage>;\n\tremovedFieldPaths?: readonly string[];\n\tartifacts?: readonly string[];\n\teventId?: string;\n}\nexport interface TraceChildEnv {\n\t/** Variables to set on the child process environment. */\n\tset: Record<string, string>;\n\t/** Variables to delete from the child process environment. */\n\tunset: string[];\n}\nexport interface FlowTraceProducer {\n\treadonly identity: Readonly<FlowTraceIdentity>;\n\trecordEvent(input: FlowTraceEventInput): string | undefined;\n\teventIdForToolCall(toolCallId: string): string | undefined;\n\tbeginChildAgent(input: {\n\t\tlogicalTaskId: string;\n\t\tnativeLaunchId: string;\n\t\tparentEventId: string;\n\t\texternalIds: readonly DhExternalId[];\n\t}): string;\n\tbeginChildAttempt(\n\t\tagentId: string,\n\t\tinput: { attemptNumber: number; retryOfAttemptId?: string; externalIds: readonly DhExternalId[] },\n\t): { attemptId: string; env: TraceChildEnv };\n\tfinishChildAttempt(\n\t\tagentId: string,\n\t\tattemptId: string,\n\t\toutcome: DhOutcome,\n\t\tfailure?: { code: string; message?: string },\n\t): string | undefined;\n\trecordRetryScheduled(\n\t\tagentId: string,\n\t\tfailedAttemptId: string,\n\t\tnextAttemptNumber: number,\n\t\tdelayMs: number,\n\t): string | undefined;\n}\n"]}
|