@peac/adapter-runtime-governance 0.16.3 → 0.16.4
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/dist/index.cjs +44 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.mjs +44 -2
- package/dist/index.mjs.map +1 -1
- package/dist/internal/kid.d.ts +24 -0
- package/dist/internal/kid.d.ts.map +1 -0
- package/dist/issue.d.ts.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -290,6 +290,46 @@ function normalizeRuntimeGovernanceEvent(input) {
|
|
|
290
290
|
};
|
|
291
291
|
}
|
|
292
292
|
|
|
293
|
+
// src/internal/kid.ts
|
|
294
|
+
var MAX_KID_UTF8_BYTES = 256;
|
|
295
|
+
function isWellFormedUnicode(s) {
|
|
296
|
+
for (let i = 0; i < s.length; i++) {
|
|
297
|
+
const c = s.charCodeAt(i);
|
|
298
|
+
if (c >= 55296 && c <= 56319) {
|
|
299
|
+
const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;
|
|
300
|
+
if (next < 56320 || next > 57343) return false;
|
|
301
|
+
i++;
|
|
302
|
+
} else if (c >= 56320 && c <= 57343) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
return true;
|
|
307
|
+
}
|
|
308
|
+
function utf8ByteLength(s) {
|
|
309
|
+
let n = 0;
|
|
310
|
+
for (let i = 0; i < s.length; i++) {
|
|
311
|
+
const c = s.charCodeAt(i);
|
|
312
|
+
if (c < 128) n += 1;
|
|
313
|
+
else if (c < 2048) n += 2;
|
|
314
|
+
else if (c >= 55296 && c <= 56319) {
|
|
315
|
+
const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;
|
|
316
|
+
if (next < 56320 || next > 57343) {
|
|
317
|
+
throw new TypeError("utf8ByteLength: unpaired high surrogate");
|
|
318
|
+
}
|
|
319
|
+
n += 4;
|
|
320
|
+
i++;
|
|
321
|
+
} else if (c >= 56320 && c <= 57343) {
|
|
322
|
+
throw new TypeError("utf8ByteLength: unpaired low surrogate");
|
|
323
|
+
} else n += 3;
|
|
324
|
+
}
|
|
325
|
+
return n;
|
|
326
|
+
}
|
|
327
|
+
function isValidKid(kid) {
|
|
328
|
+
if (typeof kid !== "string" || kid.length === 0) return false;
|
|
329
|
+
if (!isWellFormedUnicode(kid)) return false;
|
|
330
|
+
return utf8ByteLength(kid) <= MAX_KID_UTF8_BYTES;
|
|
331
|
+
}
|
|
332
|
+
|
|
293
333
|
// src/builders.ts
|
|
294
334
|
function stripUndefined(obj) {
|
|
295
335
|
const result = {};
|
|
@@ -385,8 +425,10 @@ function validateIssueOptions(options) {
|
|
|
385
425
|
if (!(options.privateKey instanceof Uint8Array) || options.privateKey.length !== 32) {
|
|
386
426
|
throw new Error("privateKey must be a 32-byte Uint8Array");
|
|
387
427
|
}
|
|
388
|
-
if (
|
|
389
|
-
throw new Error(
|
|
428
|
+
if (!isValidKid(options.kid)) {
|
|
429
|
+
throw new Error(
|
|
430
|
+
"kid must be a non-empty, well-formed Unicode string of at most 256 UTF-8 bytes"
|
|
431
|
+
);
|
|
390
432
|
}
|
|
391
433
|
if (typeof options.issuer !== "string" || options.issuer.length === 0) {
|
|
392
434
|
throw new Error("issuer must be a non-empty string");
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/types.ts","../src/families.ts","../src/normalize.ts","../src/builders.ts","../src/issue.ts","../src/session-summary.ts","../src/mappers/agt.ts"],"names":["issue","decode"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @peac/adapter-runtime-governance constants\n *\n * Vendor-neutral type URIs and extension namespace for runtime\n * governance record families. Observation-specific suffixes prevent\n * semantic bleed into authoritative claims.\n */\n\n/** Extension namespace for runtime governance record metadata. */\nexport const EXTENSION_NAMESPACE = 'org.peacprotocol/runtime-governance' as const;\n\n/** Reverse-DNS type prefix for all runtime governance record families. */\nexport const TYPE_PREFIX = 'org.peacprotocol/runtime-governance-' as const;\n\n/**\n * Canonical type URIs for the 6 runtime governance record families.\n * Each suffix is observation-specific (e.g., \"policy-decision\" not \"policy\").\n */\nexport const EVENT_TYPES = {\n POLICY_DECISION: `${TYPE_PREFIX}policy-decision`,\n AUDIT_ENTRY: `${TYPE_PREFIX}audit-entry`,\n AUTHORITY_SCOPE: `${TYPE_PREFIX}authority-scope`,\n LIFECYCLE_EVENT: `${TYPE_PREFIX}lifecycle-event`,\n TRUST_OBSERVATION: `${TYPE_PREFIX}trust-observation`,\n COMPLIANCE_OBSERVATION: `${TYPE_PREFIX}compliance-observation`,\n} as const;\n\nexport type EventType = (typeof EVENT_TYPES)[keyof typeof EVENT_TYPES];\n\n/** Maximum field lengths for validation. */\nexport const FIELD_LIMITS = {\n /** Identifiers: provider, agent_id, session_id, entry_id, etc. */\n maxIdentifier: 256,\n /** General string fields: action, matched_rule, policy_name, etc. */\n maxString: 1024,\n /** Digest strings: previous_hash, entry_hash, etc. */\n maxDigest: 512,\n /** URI fields: source_artifact_ref, etc. */\n maxUri: 2048,\n /** Timestamp fields: source_timestamp, etc. */\n maxTimestamp: 64,\n /** CloudEvents type URIs. */\n maxCloudEventType: 256,\n /** Array fields: effective_scope, matched_invariants. */\n maxArrayLength: 64,\n /** Array entry string length. */\n maxArrayEntry: 256,\n /** Framework token length. */\n maxFramework: 128,\n} as const;\n","/**\n * @peac/adapter-runtime-governance types\n *\n * Discriminated union payload model with per-family typing.\n * No weak Record<string, unknown> blobs.\n */\n\n/**\n * Runtime governance record families.\n * String-literal union (not enum) for lighter output and tree-shaking.\n */\nexport const RUNTIME_GOVERNANCE_FAMILIES = [\n 'policy_decision',\n 'audit_entry',\n 'authority_scope',\n 'lifecycle_event',\n 'trust_observation',\n 'compliance_observation',\n] as const;\n\nexport type RuntimeGovernanceFamily = (typeof RUNTIME_GOVERNANCE_FAMILIES)[number];\n\n/**\n * Preserved upstream artifact context.\n * All optional, all observational. Bounded fields, no arbitrary passthrough.\n */\nexport interface PreservedUpstreamArtifact {\n /** Upstream system identifier (max 256 chars). */\n source_system?: string;\n /** Upstream event type identifier (max 256 chars). */\n source_event_type?: string;\n /** Upstream event identifier for deduplication (max 256 chars). */\n source_event_id?: string;\n /** Upstream event timestamp (RFC 3339, max 64 chars). */\n source_timestamp?: string;\n /** Hash of upstream artifact (max 512 chars). */\n source_artifact_hash?: string;\n /** URI or reference to upstream artifact (max 2048 chars). */\n source_artifact_ref?: string;\n /** CloudEvents type URI for cross-system correlation (max 256 chars). */\n source_cloud_event_type?: string;\n}\n\n/** Policy decision payload. */\nexport interface PolicyDecisionPayload {\n family: 'policy_decision';\n action: string;\n matched_rule?: string;\n policy_name?: string;\n reason?: string;\n evaluation_ms?: number;\n}\n\n/** Audit entry payload. */\nexport interface AuditEntryPayload {\n family: 'audit_entry';\n entry_id?: string;\n event_type?: string;\n outcome?: string;\n previous_hash?: string;\n entry_hash?: string;\n trace_id?: string;\n}\n\n/** Authority scope payload. */\nexport interface AuthorityScopePayload {\n family: 'authority_scope';\n decision?: string;\n effective_scope?: string[];\n trust_tier?: string;\n matched_invariants?: string[];\n}\n\n/** Lifecycle event payload. */\nexport interface LifecycleEventPayload {\n family: 'lifecycle_event';\n lifecycle_event_type?: string;\n previous_state?: string;\n new_state?: string;\n actor?: string;\n}\n\n/** Trust observation payload. */\nexport interface TrustObservationPayload {\n family: 'trust_observation';\n peer_id?: string;\n action?: string;\n success?: boolean;\n trust_delta?: number;\n trust_score?: number;\n}\n\n/** Compliance observation payload. */\nexport interface ComplianceObservationPayload {\n family: 'compliance_observation';\n framework?: string;\n compliance_score?: number;\n violation_count?: number;\n evidence_item_count?: number;\n}\n\n/** Discriminated union of all family payloads. */\nexport type RuntimeGovernancePayload =\n | PolicyDecisionPayload\n | AuditEntryPayload\n | AuthorityScopePayload\n | LifecycleEventPayload\n | TrustObservationPayload\n | ComplianceObservationPayload;\n\n/**\n * Normalized runtime governance event.\n * Generic input to issueRuntimeGovernanceRecord().\n */\nexport interface RuntimeGovernanceEvent {\n /** Specific event name (e.g., 'policy.evaluated'). */\n event_name: string;\n /** Typed, validated payload (discriminated by family). */\n payload: RuntimeGovernancePayload;\n /** Optional preserved upstream artifact context. */\n upstream?: PreservedUpstreamArtifact;\n}\n\n/** Options for issuing a runtime governance record. */\nexport interface IssueOptions {\n /** Ed25519 private key (32 bytes). Caller-provided; never stored. */\n privateKey: Uint8Array;\n /** Key ID (max 256 chars). */\n kid: string;\n /** Canonical issuer URL (HTTPS or DID). */\n issuer: string;\n /** Session identifier for event correlation. */\n sessionId: string;\n /** Agent identifier. */\n agentId: string;\n /** Provider name. Caller-supplied; never hardcoded. */\n provider: string;\n}\n\n/** Result of issuing a runtime governance record. */\nexport interface IssueResult {\n /** Compact JWS (signed Interaction Record). */\n jws: string;\n /** PEAC event type URI used. */\n type: string;\n /** Record family. */\n family: RuntimeGovernanceFamily;\n}\n\n/** Session summary aggregated from decoded receipts. */\nexport interface SessionSummary {\n /** Session identifier. */\n sessionId: string;\n /** Total receipts in the session. */\n receipts: number;\n /** Distinct families represented (sorted alphabetically). */\n families: RuntimeGovernanceFamily[];\n /** Count of receipts with unrecognized type URIs. */\n unknownTypeCount: number;\n /** Issuer (from the first receipt, or empty if no receipts). */\n issuer: string;\n}\n","/**\n * Family registry.\n *\n * Maps each RuntimeGovernanceFamily to its canonical type URI\n * and Interaction Record kind. All families produce `evidence` kind.\n */\n\nimport { EVENT_TYPES, type EventType } from './constants.js';\nimport type { RuntimeGovernanceFamily } from './types.js';\n\nexport interface FamilyEntry {\n /** Canonical type URI for this family. */\n type: EventType;\n /** Interaction Record kind. Always 'evidence' for runtime governance. */\n kind: 'evidence';\n}\n\nexport const FAMILY_REGISTRY: Record<RuntimeGovernanceFamily, FamilyEntry> = {\n policy_decision: { type: EVENT_TYPES.POLICY_DECISION, kind: 'evidence' },\n audit_entry: { type: EVENT_TYPES.AUDIT_ENTRY, kind: 'evidence' },\n authority_scope: { type: EVENT_TYPES.AUTHORITY_SCOPE, kind: 'evidence' },\n lifecycle_event: { type: EVENT_TYPES.LIFECYCLE_EVENT, kind: 'evidence' },\n trust_observation: { type: EVENT_TYPES.TRUST_OBSERVATION, kind: 'evidence' },\n compliance_observation: { type: EVENT_TYPES.COMPLIANCE_OBSERVATION, kind: 'evidence' },\n};\n","/**\n * @peac/adapter-runtime-governance normalization and validation\n *\n * Fail-closed input validation for runtime governance payloads.\n * Rejects malformed input with descriptive errors.\n *\n * These are adapter-level shape prechecks: string presence, max lengths,\n * numeric bounds, RFC 3339 format, digest grammar (algorithm:hex), and\n * URI scheme presence. Protocol-layer validation (@peac/protocol issue()\n * and @peac/schema Wire02ClaimsSchema) remains authoritative for issuer\n * canonicality, JOSE hardening, and wire-format compliance. Adapter\n * validators catch obviously malformed input before it reaches the\n * protocol layer.\n *\n * PEAC validates the structure of carried values, not upstream truth.\n * Trust scores are structurally validated (finite, 0-1000 integer)\n * but never derived, recomputed, ranked, or authoritatively assessed.\n */\n\nimport { FIELD_LIMITS } from './constants.js';\nimport { RUNTIME_GOVERNANCE_FAMILIES } from './types.js';\nimport type {\n RuntimeGovernanceFamily,\n RuntimeGovernancePayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceEvent,\n} from './types.js';\n\nexport class NormalizationError extends Error {\n constructor(\n message: string,\n public readonly field: string\n ) {\n super(message);\n this.name = 'NormalizationError';\n }\n}\n\nfunction requireString(value: unknown, field: string, maxLen: number): string {\n if (typeof value !== 'string') {\n throw new NormalizationError(`${field} must be a string`, field);\n }\n if (value.length === 0) {\n throw new NormalizationError(`${field} must not be empty`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value;\n}\n\nfunction optionalString(value: unknown, field: string, maxLen: number): string | undefined {\n if (value === undefined || value === null) return undefined;\n return requireString(value, field, maxLen);\n}\n\nfunction optionalFiniteNumber(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new NormalizationError(`${field} must be a finite number`, field);\n }\n if (min !== undefined && value < min) {\n throw new NormalizationError(`${field} must be >= ${min}`, field);\n }\n if (max !== undefined && value > max) {\n throw new NormalizationError(`${field} must be <= ${max}`, field);\n }\n return value;\n}\n\nfunction optionalInteger(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n const n = optionalFiniteNumber(value, field, min, max);\n if (n !== undefined && !Number.isInteger(n)) {\n throw new NormalizationError(`${field} must be an integer`, field);\n }\n return n;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'boolean') {\n throw new NormalizationError(`${field} must be a boolean`, field);\n }\n return value;\n}\n\nconst RFC3339_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/;\n\nfunction optionalRfc3339(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !RFC3339_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be RFC 3339 format`, field);\n }\n return s;\n}\n\nconst DIGEST_PATTERN = /^[a-zA-Z0-9_-]+:[a-fA-F0-9]+$/;\n\nfunction optionalDigest(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !DIGEST_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must match digest pattern (algorithm:hex)`, field);\n }\n return s;\n}\n\nconst URI_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;\n\nfunction optionalUri(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !URI_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be a valid URI`, field);\n }\n return s;\n}\n\nfunction optionalStringArray(\n value: unknown,\n field: string,\n maxLen: number,\n maxEntryLen: number\n): string[] | undefined {\n if (value === undefined || value === null) return undefined;\n if (!Array.isArray(value)) {\n throw new NormalizationError(`${field} must be an array`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value.map((entry, i) => requireString(entry, `${field}[${i}]`, maxEntryLen));\n}\n\nfunction normalizePolicyDecision(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'policy_decision',\n action: requireString(input.action, 'action', FIELD_LIMITS.maxString),\n matched_rule: optionalString(input.matched_rule, 'matched_rule', FIELD_LIMITS.maxString),\n policy_name: optionalString(input.policy_name, 'policy_name', FIELD_LIMITS.maxString),\n reason: optionalString(input.reason, 'reason', FIELD_LIMITS.maxString),\n evaluation_ms: optionalFiniteNumber(input.evaluation_ms, 'evaluation_ms', 0),\n };\n}\n\nfunction normalizeAuditEntry(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'audit_entry',\n entry_id: optionalString(input.entry_id, 'entry_id', FIELD_LIMITS.maxIdentifier),\n event_type: optionalString(input.event_type, 'event_type', FIELD_LIMITS.maxString),\n outcome: optionalString(input.outcome, 'outcome', FIELD_LIMITS.maxString),\n previous_hash: optionalDigest(input.previous_hash, 'previous_hash', FIELD_LIMITS.maxDigest),\n entry_hash: optionalDigest(input.entry_hash, 'entry_hash', FIELD_LIMITS.maxDigest),\n trace_id: optionalString(input.trace_id, 'trace_id', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeAuthorityScope(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'authority_scope',\n decision: optionalString(input.decision, 'decision', FIELD_LIMITS.maxString),\n effective_scope: optionalStringArray(\n input.effective_scope,\n 'effective_scope',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n trust_tier: optionalString(input.trust_tier, 'trust_tier', FIELD_LIMITS.maxString),\n matched_invariants: optionalStringArray(\n input.matched_invariants,\n 'matched_invariants',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n };\n}\n\nfunction normalizeLifecycleEvent(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'lifecycle_event',\n lifecycle_event_type: optionalString(\n input.lifecycle_event_type,\n 'lifecycle_event_type',\n FIELD_LIMITS.maxString\n ),\n previous_state: optionalString(input.previous_state, 'previous_state', FIELD_LIMITS.maxString),\n new_state: optionalString(input.new_state, 'new_state', FIELD_LIMITS.maxString),\n actor: optionalString(input.actor, 'actor', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeTrustObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'trust_observation',\n peer_id: optionalString(input.peer_id, 'peer_id', FIELD_LIMITS.maxIdentifier),\n action: optionalString(input.action, 'action', FIELD_LIMITS.maxString),\n success: optionalBoolean(input.success, 'success'),\n trust_delta: optionalInteger(input.trust_delta, 'trust_delta', -1000, 1000),\n trust_score: optionalInteger(input.trust_score, 'trust_score', 0, 1000),\n };\n}\n\nfunction normalizeComplianceObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'compliance_observation',\n framework: optionalString(input.framework, 'framework', FIELD_LIMITS.maxFramework),\n compliance_score: optionalFiniteNumber(input.compliance_score, 'compliance_score', 0, 100),\n violation_count: optionalInteger(input.violation_count, 'violation_count', 0),\n evidence_item_count: optionalInteger(input.evidence_item_count, 'evidence_item_count', 0),\n };\n}\n\nconst FAMILY_NORMALIZERS: Record<\n RuntimeGovernanceFamily,\n (input: Record<string, unknown>) => RuntimeGovernancePayload\n> = {\n policy_decision: normalizePolicyDecision,\n audit_entry: normalizeAuditEntry,\n authority_scope: normalizeAuthorityScope,\n lifecycle_event: normalizeLifecycleEvent,\n trust_observation: normalizeTrustObservation,\n compliance_observation: normalizeComplianceObservation,\n};\n\nfunction normalizeUpstream(input: unknown): PreservedUpstreamArtifact | undefined {\n if (input === undefined || input === null) return undefined;\n if (typeof input !== 'object' || Array.isArray(input)) {\n throw new NormalizationError('upstream must be a plain object', 'upstream');\n }\n const obj = input as Record<string, unknown>;\n return {\n source_system: optionalString(\n obj.source_system,\n 'upstream.source_system',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_type: optionalString(\n obj.source_event_type,\n 'upstream.source_event_type',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_id: optionalString(\n obj.source_event_id,\n 'upstream.source_event_id',\n FIELD_LIMITS.maxIdentifier\n ),\n source_timestamp: optionalRfc3339(\n obj.source_timestamp,\n 'upstream.source_timestamp',\n FIELD_LIMITS.maxTimestamp\n ),\n source_artifact_hash: optionalDigest(\n obj.source_artifact_hash,\n 'upstream.source_artifact_hash',\n FIELD_LIMITS.maxDigest\n ),\n source_artifact_ref: optionalUri(\n obj.source_artifact_ref,\n 'upstream.source_artifact_ref',\n FIELD_LIMITS.maxUri\n ),\n source_cloud_event_type: optionalString(\n obj.source_cloud_event_type,\n 'upstream.source_cloud_event_type',\n FIELD_LIMITS.maxCloudEventType\n ),\n };\n}\n\n/**\n * Normalize and validate a raw runtime governance event input.\n * Fail-closed: rejects malformed input with descriptive errors.\n */\nexport function normalizeRuntimeGovernanceEvent(input: unknown): RuntimeGovernanceEvent {\n if (typeof input !== 'object' || input === null || Array.isArray(input)) {\n throw new NormalizationError('input must be a plain object', 'input');\n }\n const obj = input as Record<string, unknown>;\n\n const eventName = requireString(obj.event_name, 'event_name', FIELD_LIMITS.maxString);\n\n if (typeof obj.payload !== 'object' || obj.payload === null || Array.isArray(obj.payload)) {\n throw new NormalizationError('payload must be a plain object', 'payload');\n }\n const payloadObj = obj.payload as Record<string, unknown>;\n\n const family = payloadObj.family;\n if (\n typeof family !== 'string' ||\n !(RUNTIME_GOVERNANCE_FAMILIES as readonly string[]).includes(family)\n ) {\n throw new NormalizationError(\n `payload.family must be one of: ${RUNTIME_GOVERNANCE_FAMILIES.join(', ')}`,\n 'payload.family'\n );\n }\n\n const normalizer = FAMILY_NORMALIZERS[family as RuntimeGovernanceFamily];\n const payload = normalizer(payloadObj);\n\n return {\n event_name: eventName,\n payload,\n upstream: normalizeUpstream(obj.upstream),\n };\n}\n","/**\n * @peac/adapter-runtime-governance extension builders\n *\n * Explicit per-family extension data builders. Each builder selects\n * exactly which fields appear in the extension output. Unknown upstream\n * fields never become top-level extension keys.\n */\n\nimport type {\n RuntimeGovernancePayload,\n PolicyDecisionPayload,\n AuditEntryPayload,\n AuthorityScopePayload,\n LifecycleEventPayload,\n TrustObservationPayload,\n ComplianceObservationPayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceFamily,\n} from './types.js';\n\ninterface CommonFields {\n session_id: string;\n event: string;\n agent_id: string;\n provider: string;\n}\n\nfunction stripUndefined(obj: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const nested = stripUndefined(value as Record<string, unknown>);\n if (Object.keys(nested).length > 0) {\n result[key] = nested;\n }\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n}\n\nfunction buildPolicyDecisionExtension(\n payload: PolicyDecisionPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n action: payload.action,\n matched_rule: payload.matched_rule,\n policy_name: payload.policy_name,\n reason: payload.reason,\n evaluation_ms: payload.evaluation_ms,\n upstream,\n });\n}\n\nfunction buildAuditEntryExtension(\n payload: AuditEntryPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n entry_id: payload.entry_id,\n event_type: payload.event_type,\n outcome: payload.outcome,\n previous_hash: payload.previous_hash,\n entry_hash: payload.entry_hash,\n trace_id: payload.trace_id,\n upstream,\n });\n}\n\nfunction buildAuthorityScopeExtension(\n payload: AuthorityScopePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n decision: payload.decision,\n effective_scope: payload.effective_scope,\n trust_tier: payload.trust_tier,\n matched_invariants: payload.matched_invariants,\n upstream,\n });\n}\n\nfunction buildLifecycleEventExtension(\n payload: LifecycleEventPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n lifecycle_event_type: payload.lifecycle_event_type,\n previous_state: payload.previous_state,\n new_state: payload.new_state,\n actor: payload.actor,\n upstream,\n });\n}\n\nfunction buildTrustObservationExtension(\n payload: TrustObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n peer_id: payload.peer_id,\n action: payload.action,\n success: payload.success,\n trust_delta: payload.trust_delta,\n trust_score: payload.trust_score,\n upstream,\n });\n}\n\nfunction buildComplianceObservationExtension(\n payload: ComplianceObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n framework: payload.framework,\n compliance_score: payload.compliance_score,\n violation_count: payload.violation_count,\n evidence_item_count: payload.evidence_item_count,\n upstream,\n });\n}\n\ntype ExtensionBuilder = (\n payload: RuntimeGovernancePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n) => Record<string, unknown>;\n\n/**\n * Per-family extension builder registry.\n * issueRuntimeGovernanceRecord() dispatches to the correct builder.\n */\nexport const FAMILY_BUILDERS: Record<RuntimeGovernanceFamily, ExtensionBuilder> = {\n policy_decision: (p, c, u) => buildPolicyDecisionExtension(p as PolicyDecisionPayload, c, u),\n audit_entry: (p, c, u) => buildAuditEntryExtension(p as AuditEntryPayload, c, u),\n authority_scope: (p, c, u) => buildAuthorityScopeExtension(p as AuthorityScopePayload, c, u),\n lifecycle_event: (p, c, u) => buildLifecycleEventExtension(p as LifecycleEventPayload, c, u),\n trust_observation: (p, c, u) =>\n buildTrustObservationExtension(p as TrustObservationPayload, c, u),\n compliance_observation: (p, c, u) =>\n buildComplianceObservationExtension(p as ComplianceObservationPayload, c, u),\n};\n","/**\n * @peac/adapter-runtime-governance record issuance\n *\n * Generic issuance function that dispatches to per-family extension\n * builders. Source-specific mappers (e.g., mapAgtEvent) produce the\n * RuntimeGovernanceEvent input; this function handles signing.\n *\n * PEAC validates the structure and signature of the PEAC record,\n * not the truth of the upstream governance decision or the operating\n * effectiveness of the upstream control plane.\n */\n\nimport { issue } from '@peac/protocol';\nimport { EXTENSION_NAMESPACE } from './constants.js';\nimport { FAMILY_REGISTRY } from './families.js';\nimport { FAMILY_BUILDERS } from './builders.js';\nimport type { RuntimeGovernanceEvent, IssueOptions, IssueResult } from './types.js';\n\n/**\n * Issue a signed Interaction Record for a normalized runtime governance event.\n *\n * Use source-specific mappers (e.g., mapAgtEvent) to produce the event input.\n * The provider field is always caller-supplied and never hardcoded.\n */\nfunction validateIssueOptions(options: IssueOptions): void {\n if (!(options.privateKey instanceof Uint8Array) || options.privateKey.length !== 32) {\n throw new Error('privateKey must be a 32-byte Uint8Array');\n }\n if (typeof options.kid !== 'string' || options.kid.length === 0 || options.kid.length > 256) {\n throw new Error('kid must be a non-empty string (max 256 chars)');\n }\n if (typeof options.issuer !== 'string' || options.issuer.length === 0) {\n throw new Error('issuer must be a non-empty string');\n }\n if (\n typeof options.sessionId !== 'string' ||\n options.sessionId.length === 0 ||\n options.sessionId.length > 256\n ) {\n throw new Error('sessionId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.agentId !== 'string' ||\n options.agentId.length === 0 ||\n options.agentId.length > 256\n ) {\n throw new Error('agentId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.provider !== 'string' ||\n options.provider.length === 0 ||\n options.provider.length > 256\n ) {\n throw new Error('provider must be a non-empty string (max 256 chars)');\n }\n}\n\nexport async function issueRuntimeGovernanceRecord(\n event: RuntimeGovernanceEvent,\n options: IssueOptions\n): Promise<IssueResult> {\n validateIssueOptions(options);\n const entry = FAMILY_REGISTRY[event.payload.family];\n const { privateKey, kid, issuer, sessionId, agentId, provider } = options;\n\n const common = {\n session_id: sessionId,\n event: event.event_name,\n agent_id: agentId,\n provider,\n };\n\n const extensionData = FAMILY_BUILDERS[event.payload.family](\n event.payload,\n common,\n event.upstream\n );\n\n const { jws } = await issue({\n iss: issuer,\n kind: entry.kind,\n type: entry.type,\n privateKey,\n kid,\n extensions: { [EXTENSION_NAMESPACE]: extensionData },\n });\n\n return { jws, type: entry.type, family: event.payload.family };\n}\n","/**\n * @peac/adapter-runtime-governance session summary builder\n *\n * Aggregates decoded receipts into a session summary.\n * Decode-only (does NOT verify signatures; caller should verify first).\n * Returns deterministic family order (sorted alphabetically).\n * Counts unknown/unsupported type URIs separately.\n * Never implies verification or finality.\n */\n\nimport { decode } from '@peac/crypto';\nimport { EXTENSION_NAMESPACE, TYPE_PREFIX } from './constants.js';\nimport {\n RUNTIME_GOVERNANCE_FAMILIES,\n type RuntimeGovernanceFamily,\n type SessionSummary,\n} from './types.js';\n\n/** Reverse lookup set for known family suffixes. */\nconst KNOWN_SUFFIXES = new Set(RUNTIME_GOVERNANCE_FAMILIES.map((f) => f.replace(/_/g, '-')));\n\n/**\n * Build a session summary from an array of signed JWS receipts.\n *\n * Decodes each JWS (does NOT verify signatures; caller should verify first).\n * Extracts session ID, families, and issuer from claims and extensions.\n * Unknown type URIs are counted but not included in the families list.\n *\n * @param receipts - Array of compact JWS strings (must be valid JWS format)\n * @returns Session summary with deterministic family ordering\n */\nexport function buildSessionSummary(receipts: string[]): SessionSummary {\n if (receipts.length === 0) {\n return { sessionId: '', receipts: 0, families: [], unknownTypeCount: 0, issuer: '' };\n }\n\n let sessionId = '';\n let issuer = '';\n let unknownTypeCount = 0;\n const familySet = new Set<RuntimeGovernanceFamily>();\n\n for (const jws of receipts) {\n const decoded = decode(jws);\n const claims = decoded.payload as Record<string, unknown>;\n\n if (!issuer && typeof claims.iss === 'string') {\n issuer = claims.iss;\n }\n\n const extensions = claims.extensions as Record<string, unknown> | undefined;\n const govExt = extensions?.[EXTENSION_NAMESPACE] as Record<string, unknown> | undefined;\n\n if (govExt) {\n if (!sessionId && typeof govExt.session_id === 'string') {\n sessionId = govExt.session_id;\n }\n }\n\n const type = claims.type as string | undefined;\n if (type?.startsWith(TYPE_PREFIX)) {\n const suffix = type.slice(TYPE_PREFIX.length);\n if (KNOWN_SUFFIXES.has(suffix)) {\n familySet.add(suffix.replace(/-/g, '_') as RuntimeGovernanceFamily);\n } else {\n unknownTypeCount++;\n }\n } else if (type) {\n unknownTypeCount++;\n }\n }\n\n return {\n sessionId,\n receipts: receipts.length,\n families: [...familySet].sort(),\n unknownTypeCount,\n issuer,\n };\n}\n","/**\n * AGT-specific mapper\n *\n * Normalizes AGT-shaped JSON input into the generic\n * RuntimeGovernanceEvent model. Accepts raw JSON (not AGT SDK objects).\n *\n * Pinned to AGT v3.1.0 pre-release documentation (as of 2026-04-13).\n */\n\nimport { normalizeRuntimeGovernanceEvent, NormalizationError } from '../normalize.js';\nimport type { RuntimeGovernanceEvent, RuntimeGovernanceFamily } from '../types.js';\n\n/** AGT-shaped input. Raw JSON, not SDK objects. */\nexport interface AgtEventInput {\n /** Family name matching a RuntimeGovernanceFamily. */\n family: string;\n /** Specific event name (e.g., 'policy.evaluated'). */\n event: string;\n /** Event-specific data fields. */\n data: Record<string, unknown>;\n /** Optional upstream source context. */\n source?: {\n system?: string;\n event_type?: string;\n event_id?: string;\n timestamp?: string;\n artifact_hash?: string;\n artifact_ref?: string;\n cloud_event_type?: string;\n };\n}\n\nconst AGT_FAMILY_MAP: Record<string, RuntimeGovernanceFamily> = {\n policy_decision: 'policy_decision',\n audit_entry: 'audit_entry',\n authority_scope: 'authority_scope',\n lifecycle_event: 'lifecycle_event',\n trust_observation: 'trust_observation',\n compliance_observation: 'compliance_observation',\n};\n\n/**\n * Map an AGT-shaped event input to a normalized RuntimeGovernanceEvent.\n * Throws NormalizationError on unrecognized or malformed input.\n */\nexport function mapAgtEvent(input: AgtEventInput): RuntimeGovernanceEvent {\n const family = AGT_FAMILY_MAP[input.family];\n if (!family) {\n throw new NormalizationError(`unrecognized AGT family: ${input.family}`, 'family');\n }\n\n const raw = {\n event_name: input.event,\n payload: {\n family,\n ...input.data,\n },\n upstream: input.source\n ? {\n source_system: input.source.system,\n source_event_type: input.source.event_type,\n source_event_id: input.source.event_id,\n source_timestamp: input.source.timestamp,\n source_artifact_hash: input.source.artifact_hash,\n source_artifact_ref: input.source.artifact_ref,\n source_cloud_event_type: input.source.cloud_event_type,\n }\n : undefined,\n };\n\n return normalizeRuntimeGovernanceEvent(raw);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/types.ts","../src/families.ts","../src/normalize.ts","../src/internal/kid.ts","../src/builders.ts","../src/issue.ts","../src/session-summary.ts","../src/mappers/agt.ts"],"names":["issue","decode"],"mappings":"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","file":"index.cjs","sourcesContent":["/**\n * @peac/adapter-runtime-governance constants\n *\n * Vendor-neutral type URIs and extension namespace for runtime\n * governance record families. Observation-specific suffixes prevent\n * semantic bleed into authoritative claims.\n */\n\n/** Extension namespace for runtime governance record metadata. */\nexport const EXTENSION_NAMESPACE = 'org.peacprotocol/runtime-governance' as const;\n\n/** Reverse-DNS type prefix for all runtime governance record families. */\nexport const TYPE_PREFIX = 'org.peacprotocol/runtime-governance-' as const;\n\n/**\n * Canonical type URIs for the 6 runtime governance record families.\n * Each suffix is observation-specific (e.g., \"policy-decision\" not \"policy\").\n */\nexport const EVENT_TYPES = {\n POLICY_DECISION: `${TYPE_PREFIX}policy-decision`,\n AUDIT_ENTRY: `${TYPE_PREFIX}audit-entry`,\n AUTHORITY_SCOPE: `${TYPE_PREFIX}authority-scope`,\n LIFECYCLE_EVENT: `${TYPE_PREFIX}lifecycle-event`,\n TRUST_OBSERVATION: `${TYPE_PREFIX}trust-observation`,\n COMPLIANCE_OBSERVATION: `${TYPE_PREFIX}compliance-observation`,\n} as const;\n\nexport type EventType = (typeof EVENT_TYPES)[keyof typeof EVENT_TYPES];\n\n/** Maximum field lengths for validation. */\nexport const FIELD_LIMITS = {\n /** Identifiers: provider, agent_id, session_id, entry_id, etc. */\n maxIdentifier: 256,\n /** General string fields: action, matched_rule, policy_name, etc. */\n maxString: 1024,\n /** Digest strings: previous_hash, entry_hash, etc. */\n maxDigest: 512,\n /** URI fields: source_artifact_ref, etc. */\n maxUri: 2048,\n /** Timestamp fields: source_timestamp, etc. */\n maxTimestamp: 64,\n /** CloudEvents type URIs. */\n maxCloudEventType: 256,\n /** Array fields: effective_scope, matched_invariants. */\n maxArrayLength: 64,\n /** Array entry string length. */\n maxArrayEntry: 256,\n /** Framework token length. */\n maxFramework: 128,\n} as const;\n","/**\n * @peac/adapter-runtime-governance types\n *\n * Discriminated union payload model with per-family typing.\n * No weak Record<string, unknown> blobs.\n */\n\n/**\n * Runtime governance record families.\n * String-literal union (not enum) for lighter output and tree-shaking.\n */\nexport const RUNTIME_GOVERNANCE_FAMILIES = [\n 'policy_decision',\n 'audit_entry',\n 'authority_scope',\n 'lifecycle_event',\n 'trust_observation',\n 'compliance_observation',\n] as const;\n\nexport type RuntimeGovernanceFamily = (typeof RUNTIME_GOVERNANCE_FAMILIES)[number];\n\n/**\n * Preserved upstream artifact context.\n * All optional, all observational. Bounded fields, no arbitrary passthrough.\n */\nexport interface PreservedUpstreamArtifact {\n /** Upstream system identifier (max 256 chars). */\n source_system?: string;\n /** Upstream event type identifier (max 256 chars). */\n source_event_type?: string;\n /** Upstream event identifier for deduplication (max 256 chars). */\n source_event_id?: string;\n /** Upstream event timestamp (RFC 3339, max 64 chars). */\n source_timestamp?: string;\n /** Hash of upstream artifact (max 512 chars). */\n source_artifact_hash?: string;\n /** URI or reference to upstream artifact (max 2048 chars). */\n source_artifact_ref?: string;\n /** CloudEvents type URI for cross-system correlation (max 256 chars). */\n source_cloud_event_type?: string;\n}\n\n/** Policy decision payload. */\nexport interface PolicyDecisionPayload {\n family: 'policy_decision';\n action: string;\n matched_rule?: string;\n policy_name?: string;\n reason?: string;\n evaluation_ms?: number;\n}\n\n/** Audit entry payload. */\nexport interface AuditEntryPayload {\n family: 'audit_entry';\n entry_id?: string;\n event_type?: string;\n outcome?: string;\n previous_hash?: string;\n entry_hash?: string;\n trace_id?: string;\n}\n\n/** Authority scope payload. */\nexport interface AuthorityScopePayload {\n family: 'authority_scope';\n decision?: string;\n effective_scope?: string[];\n trust_tier?: string;\n matched_invariants?: string[];\n}\n\n/** Lifecycle event payload. */\nexport interface LifecycleEventPayload {\n family: 'lifecycle_event';\n lifecycle_event_type?: string;\n previous_state?: string;\n new_state?: string;\n actor?: string;\n}\n\n/** Trust observation payload. */\nexport interface TrustObservationPayload {\n family: 'trust_observation';\n peer_id?: string;\n action?: string;\n success?: boolean;\n trust_delta?: number;\n trust_score?: number;\n}\n\n/** Compliance observation payload. */\nexport interface ComplianceObservationPayload {\n family: 'compliance_observation';\n framework?: string;\n compliance_score?: number;\n violation_count?: number;\n evidence_item_count?: number;\n}\n\n/** Discriminated union of all family payloads. */\nexport type RuntimeGovernancePayload =\n | PolicyDecisionPayload\n | AuditEntryPayload\n | AuthorityScopePayload\n | LifecycleEventPayload\n | TrustObservationPayload\n | ComplianceObservationPayload;\n\n/**\n * Normalized runtime governance event.\n * Generic input to issueRuntimeGovernanceRecord().\n */\nexport interface RuntimeGovernanceEvent {\n /** Specific event name (e.g., 'policy.evaluated'). */\n event_name: string;\n /** Typed, validated payload (discriminated by family). */\n payload: RuntimeGovernancePayload;\n /** Optional preserved upstream artifact context. */\n upstream?: PreservedUpstreamArtifact;\n}\n\n/** Options for issuing a runtime governance record. */\nexport interface IssueOptions {\n /** Ed25519 private key (32 bytes). Caller-provided; never stored. */\n privateKey: Uint8Array;\n /** Key ID (max 256 chars). */\n kid: string;\n /** Canonical issuer URL (HTTPS or DID). */\n issuer: string;\n /** Session identifier for event correlation. */\n sessionId: string;\n /** Agent identifier. */\n agentId: string;\n /** Provider name. Caller-supplied; never hardcoded. */\n provider: string;\n}\n\n/** Result of issuing a runtime governance record. */\nexport interface IssueResult {\n /** Compact JWS (signed Interaction Record). */\n jws: string;\n /** PEAC event type URI used. */\n type: string;\n /** Record family. */\n family: RuntimeGovernanceFamily;\n}\n\n/** Session summary aggregated from decoded receipts. */\nexport interface SessionSummary {\n /** Session identifier. */\n sessionId: string;\n /** Total receipts in the session. */\n receipts: number;\n /** Distinct families represented (sorted alphabetically). */\n families: RuntimeGovernanceFamily[];\n /** Count of receipts with unrecognized type URIs. */\n unknownTypeCount: number;\n /** Issuer (from the first receipt, or empty if no receipts). */\n issuer: string;\n}\n","/**\n * Family registry.\n *\n * Maps each RuntimeGovernanceFamily to its canonical type URI\n * and Interaction Record kind. All families produce `evidence` kind.\n */\n\nimport { EVENT_TYPES, type EventType } from './constants.js';\nimport type { RuntimeGovernanceFamily } from './types.js';\n\nexport interface FamilyEntry {\n /** Canonical type URI for this family. */\n type: EventType;\n /** Interaction Record kind. Always 'evidence' for runtime governance. */\n kind: 'evidence';\n}\n\nexport const FAMILY_REGISTRY: Record<RuntimeGovernanceFamily, FamilyEntry> = {\n policy_decision: { type: EVENT_TYPES.POLICY_DECISION, kind: 'evidence' },\n audit_entry: { type: EVENT_TYPES.AUDIT_ENTRY, kind: 'evidence' },\n authority_scope: { type: EVENT_TYPES.AUTHORITY_SCOPE, kind: 'evidence' },\n lifecycle_event: { type: EVENT_TYPES.LIFECYCLE_EVENT, kind: 'evidence' },\n trust_observation: { type: EVENT_TYPES.TRUST_OBSERVATION, kind: 'evidence' },\n compliance_observation: { type: EVENT_TYPES.COMPLIANCE_OBSERVATION, kind: 'evidence' },\n};\n","/**\n * @peac/adapter-runtime-governance normalization and validation\n *\n * Fail-closed input validation for runtime governance payloads.\n * Rejects malformed input with descriptive errors.\n *\n * These are adapter-level shape prechecks: string presence, max lengths,\n * numeric bounds, RFC 3339 format, digest grammar (algorithm:hex), and\n * URI scheme presence. Protocol-layer validation (@peac/protocol issue()\n * and @peac/schema Wire02ClaimsSchema) remains authoritative for issuer\n * canonicality, JOSE hardening, and wire-format compliance. Adapter\n * validators catch obviously malformed input before it reaches the\n * protocol layer.\n *\n * PEAC validates the structure of carried values, not upstream truth.\n * Trust scores are structurally validated (finite, 0-1000 integer)\n * but never derived, recomputed, ranked, or authoritatively assessed.\n */\n\nimport { FIELD_LIMITS } from './constants.js';\nimport { RUNTIME_GOVERNANCE_FAMILIES } from './types.js';\nimport type {\n RuntimeGovernanceFamily,\n RuntimeGovernancePayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceEvent,\n} from './types.js';\n\nexport class NormalizationError extends Error {\n constructor(\n message: string,\n public readonly field: string\n ) {\n super(message);\n this.name = 'NormalizationError';\n }\n}\n\nfunction requireString(value: unknown, field: string, maxLen: number): string {\n if (typeof value !== 'string') {\n throw new NormalizationError(`${field} must be a string`, field);\n }\n if (value.length === 0) {\n throw new NormalizationError(`${field} must not be empty`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value;\n}\n\nfunction optionalString(value: unknown, field: string, maxLen: number): string | undefined {\n if (value === undefined || value === null) return undefined;\n return requireString(value, field, maxLen);\n}\n\nfunction optionalFiniteNumber(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new NormalizationError(`${field} must be a finite number`, field);\n }\n if (min !== undefined && value < min) {\n throw new NormalizationError(`${field} must be >= ${min}`, field);\n }\n if (max !== undefined && value > max) {\n throw new NormalizationError(`${field} must be <= ${max}`, field);\n }\n return value;\n}\n\nfunction optionalInteger(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n const n = optionalFiniteNumber(value, field, min, max);\n if (n !== undefined && !Number.isInteger(n)) {\n throw new NormalizationError(`${field} must be an integer`, field);\n }\n return n;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'boolean') {\n throw new NormalizationError(`${field} must be a boolean`, field);\n }\n return value;\n}\n\nconst RFC3339_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/;\n\nfunction optionalRfc3339(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !RFC3339_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be RFC 3339 format`, field);\n }\n return s;\n}\n\nconst DIGEST_PATTERN = /^[a-zA-Z0-9_-]+:[a-fA-F0-9]+$/;\n\nfunction optionalDigest(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !DIGEST_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must match digest pattern (algorithm:hex)`, field);\n }\n return s;\n}\n\nconst URI_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;\n\nfunction optionalUri(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !URI_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be a valid URI`, field);\n }\n return s;\n}\n\nfunction optionalStringArray(\n value: unknown,\n field: string,\n maxLen: number,\n maxEntryLen: number\n): string[] | undefined {\n if (value === undefined || value === null) return undefined;\n if (!Array.isArray(value)) {\n throw new NormalizationError(`${field} must be an array`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value.map((entry, i) => requireString(entry, `${field}[${i}]`, maxEntryLen));\n}\n\nfunction normalizePolicyDecision(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'policy_decision',\n action: requireString(input.action, 'action', FIELD_LIMITS.maxString),\n matched_rule: optionalString(input.matched_rule, 'matched_rule', FIELD_LIMITS.maxString),\n policy_name: optionalString(input.policy_name, 'policy_name', FIELD_LIMITS.maxString),\n reason: optionalString(input.reason, 'reason', FIELD_LIMITS.maxString),\n evaluation_ms: optionalFiniteNumber(input.evaluation_ms, 'evaluation_ms', 0),\n };\n}\n\nfunction normalizeAuditEntry(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'audit_entry',\n entry_id: optionalString(input.entry_id, 'entry_id', FIELD_LIMITS.maxIdentifier),\n event_type: optionalString(input.event_type, 'event_type', FIELD_LIMITS.maxString),\n outcome: optionalString(input.outcome, 'outcome', FIELD_LIMITS.maxString),\n previous_hash: optionalDigest(input.previous_hash, 'previous_hash', FIELD_LIMITS.maxDigest),\n entry_hash: optionalDigest(input.entry_hash, 'entry_hash', FIELD_LIMITS.maxDigest),\n trace_id: optionalString(input.trace_id, 'trace_id', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeAuthorityScope(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'authority_scope',\n decision: optionalString(input.decision, 'decision', FIELD_LIMITS.maxString),\n effective_scope: optionalStringArray(\n input.effective_scope,\n 'effective_scope',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n trust_tier: optionalString(input.trust_tier, 'trust_tier', FIELD_LIMITS.maxString),\n matched_invariants: optionalStringArray(\n input.matched_invariants,\n 'matched_invariants',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n };\n}\n\nfunction normalizeLifecycleEvent(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'lifecycle_event',\n lifecycle_event_type: optionalString(\n input.lifecycle_event_type,\n 'lifecycle_event_type',\n FIELD_LIMITS.maxString\n ),\n previous_state: optionalString(input.previous_state, 'previous_state', FIELD_LIMITS.maxString),\n new_state: optionalString(input.new_state, 'new_state', FIELD_LIMITS.maxString),\n actor: optionalString(input.actor, 'actor', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeTrustObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'trust_observation',\n peer_id: optionalString(input.peer_id, 'peer_id', FIELD_LIMITS.maxIdentifier),\n action: optionalString(input.action, 'action', FIELD_LIMITS.maxString),\n success: optionalBoolean(input.success, 'success'),\n trust_delta: optionalInteger(input.trust_delta, 'trust_delta', -1000, 1000),\n trust_score: optionalInteger(input.trust_score, 'trust_score', 0, 1000),\n };\n}\n\nfunction normalizeComplianceObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'compliance_observation',\n framework: optionalString(input.framework, 'framework', FIELD_LIMITS.maxFramework),\n compliance_score: optionalFiniteNumber(input.compliance_score, 'compliance_score', 0, 100),\n violation_count: optionalInteger(input.violation_count, 'violation_count', 0),\n evidence_item_count: optionalInteger(input.evidence_item_count, 'evidence_item_count', 0),\n };\n}\n\nconst FAMILY_NORMALIZERS: Record<\n RuntimeGovernanceFamily,\n (input: Record<string, unknown>) => RuntimeGovernancePayload\n> = {\n policy_decision: normalizePolicyDecision,\n audit_entry: normalizeAuditEntry,\n authority_scope: normalizeAuthorityScope,\n lifecycle_event: normalizeLifecycleEvent,\n trust_observation: normalizeTrustObservation,\n compliance_observation: normalizeComplianceObservation,\n};\n\nfunction normalizeUpstream(input: unknown): PreservedUpstreamArtifact | undefined {\n if (input === undefined || input === null) return undefined;\n if (typeof input !== 'object' || Array.isArray(input)) {\n throw new NormalizationError('upstream must be a plain object', 'upstream');\n }\n const obj = input as Record<string, unknown>;\n return {\n source_system: optionalString(\n obj.source_system,\n 'upstream.source_system',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_type: optionalString(\n obj.source_event_type,\n 'upstream.source_event_type',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_id: optionalString(\n obj.source_event_id,\n 'upstream.source_event_id',\n FIELD_LIMITS.maxIdentifier\n ),\n source_timestamp: optionalRfc3339(\n obj.source_timestamp,\n 'upstream.source_timestamp',\n FIELD_LIMITS.maxTimestamp\n ),\n source_artifact_hash: optionalDigest(\n obj.source_artifact_hash,\n 'upstream.source_artifact_hash',\n FIELD_LIMITS.maxDigest\n ),\n source_artifact_ref: optionalUri(\n obj.source_artifact_ref,\n 'upstream.source_artifact_ref',\n FIELD_LIMITS.maxUri\n ),\n source_cloud_event_type: optionalString(\n obj.source_cloud_event_type,\n 'upstream.source_cloud_event_type',\n FIELD_LIMITS.maxCloudEventType\n ),\n };\n}\n\n/**\n * Normalize and validate a raw runtime governance event input.\n * Fail-closed: rejects malformed input with descriptive errors.\n */\nexport function normalizeRuntimeGovernanceEvent(input: unknown): RuntimeGovernanceEvent {\n if (typeof input !== 'object' || input === null || Array.isArray(input)) {\n throw new NormalizationError('input must be a plain object', 'input');\n }\n const obj = input as Record<string, unknown>;\n\n const eventName = requireString(obj.event_name, 'event_name', FIELD_LIMITS.maxString);\n\n if (typeof obj.payload !== 'object' || obj.payload === null || Array.isArray(obj.payload)) {\n throw new NormalizationError('payload must be a plain object', 'payload');\n }\n const payloadObj = obj.payload as Record<string, unknown>;\n\n const family = payloadObj.family;\n if (\n typeof family !== 'string' ||\n !(RUNTIME_GOVERNANCE_FAMILIES as readonly string[]).includes(family)\n ) {\n throw new NormalizationError(\n `payload.family must be one of: ${RUNTIME_GOVERNANCE_FAMILIES.join(', ')}`,\n 'payload.family'\n );\n }\n\n const normalizer = FAMILY_NORMALIZERS[family as RuntimeGovernanceFamily];\n const payload = normalizer(payloadObj);\n\n return {\n event_name: eventName,\n payload,\n upstream: normalizeUpstream(obj.upstream),\n };\n}\n","/**\n * The PEAC `kid` rule: a non-empty, well-formed Unicode string whose UTF-8 serialization is at\n * most MAX_KID_UTF8_BYTES bytes. RFC 7515 leaves the structure of `kid` unspecified; the bound\n * and well-formedness requirements are PEAC application-level constraints.\n *\n * Adapter-private. The authoritative implementation lives in `@peac/crypto` (`src/kid.ts`) and is\n * not part of its public surface, so the rule is restated here and a behavioural parity test holds\n * the two implementations identical. The bound is measured in UTF-8 bytes rather than UTF-16 code\n * units: 256 UTF-16 code units consisting of supplementary-plane characters serialize to 512 UTF-8\n * bytes. A serialized-byte bound is portable across implementations.\n */\n\n/** Maximum `kid` length, measured as UTF-8 bytes of the string's serialization. */\nexport const MAX_KID_UTF8_BYTES = 256;\n\n/** True when every surrogate in `s` belongs to a well-formed pair. */\nexport function isWellFormedUnicode(s: string): boolean {\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;\n if (next < 0xdc00 || next > 0xdfff) return false;\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * UTF-8 byte length of a well-formed string. Throws on malformed UTF-16 so callers cannot silently\n * replace an unpaired surrogate with U+FFFD during UTF-8 encoding and thereby change the supplied\n * identifier.\n */\nexport function utf8ByteLength(s: string): number {\n let n = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c < 0x80) n += 1;\n else if (c < 0x800) n += 2;\n else if (c >= 0xd800 && c <= 0xdbff) {\n const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;\n if (next < 0xdc00 || next > 0xdfff) {\n throw new TypeError('utf8ByteLength: unpaired high surrogate');\n }\n n += 4;\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n throw new TypeError('utf8ByteLength: unpaired low surrogate');\n } else n += 3;\n }\n return n;\n}\n\n/** The complete PEAC `kid` rule. */\nexport function isValidKid(kid: unknown): kid is string {\n if (typeof kid !== 'string' || kid.length === 0) return false;\n if (!isWellFormedUnicode(kid)) return false;\n return utf8ByteLength(kid) <= MAX_KID_UTF8_BYTES;\n}\n","/**\n * @peac/adapter-runtime-governance extension builders\n *\n * Explicit per-family extension data builders. Each builder selects\n * exactly which fields appear in the extension output. Unknown upstream\n * fields never become top-level extension keys.\n */\n\nimport type {\n RuntimeGovernancePayload,\n PolicyDecisionPayload,\n AuditEntryPayload,\n AuthorityScopePayload,\n LifecycleEventPayload,\n TrustObservationPayload,\n ComplianceObservationPayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceFamily,\n} from './types.js';\n\ninterface CommonFields {\n session_id: string;\n event: string;\n agent_id: string;\n provider: string;\n}\n\nfunction stripUndefined(obj: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const nested = stripUndefined(value as Record<string, unknown>);\n if (Object.keys(nested).length > 0) {\n result[key] = nested;\n }\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n}\n\nfunction buildPolicyDecisionExtension(\n payload: PolicyDecisionPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n action: payload.action,\n matched_rule: payload.matched_rule,\n policy_name: payload.policy_name,\n reason: payload.reason,\n evaluation_ms: payload.evaluation_ms,\n upstream,\n });\n}\n\nfunction buildAuditEntryExtension(\n payload: AuditEntryPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n entry_id: payload.entry_id,\n event_type: payload.event_type,\n outcome: payload.outcome,\n previous_hash: payload.previous_hash,\n entry_hash: payload.entry_hash,\n trace_id: payload.trace_id,\n upstream,\n });\n}\n\nfunction buildAuthorityScopeExtension(\n payload: AuthorityScopePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n decision: payload.decision,\n effective_scope: payload.effective_scope,\n trust_tier: payload.trust_tier,\n matched_invariants: payload.matched_invariants,\n upstream,\n });\n}\n\nfunction buildLifecycleEventExtension(\n payload: LifecycleEventPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n lifecycle_event_type: payload.lifecycle_event_type,\n previous_state: payload.previous_state,\n new_state: payload.new_state,\n actor: payload.actor,\n upstream,\n });\n}\n\nfunction buildTrustObservationExtension(\n payload: TrustObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n peer_id: payload.peer_id,\n action: payload.action,\n success: payload.success,\n trust_delta: payload.trust_delta,\n trust_score: payload.trust_score,\n upstream,\n });\n}\n\nfunction buildComplianceObservationExtension(\n payload: ComplianceObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n framework: payload.framework,\n compliance_score: payload.compliance_score,\n violation_count: payload.violation_count,\n evidence_item_count: payload.evidence_item_count,\n upstream,\n });\n}\n\ntype ExtensionBuilder = (\n payload: RuntimeGovernancePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n) => Record<string, unknown>;\n\n/**\n * Per-family extension builder registry.\n * issueRuntimeGovernanceRecord() dispatches to the correct builder.\n */\nexport const FAMILY_BUILDERS: Record<RuntimeGovernanceFamily, ExtensionBuilder> = {\n policy_decision: (p, c, u) => buildPolicyDecisionExtension(p as PolicyDecisionPayload, c, u),\n audit_entry: (p, c, u) => buildAuditEntryExtension(p as AuditEntryPayload, c, u),\n authority_scope: (p, c, u) => buildAuthorityScopeExtension(p as AuthorityScopePayload, c, u),\n lifecycle_event: (p, c, u) => buildLifecycleEventExtension(p as LifecycleEventPayload, c, u),\n trust_observation: (p, c, u) =>\n buildTrustObservationExtension(p as TrustObservationPayload, c, u),\n compliance_observation: (p, c, u) =>\n buildComplianceObservationExtension(p as ComplianceObservationPayload, c, u),\n};\n","/**\n * @peac/adapter-runtime-governance record issuance\n *\n * Generic issuance function that dispatches to per-family extension\n * builders. Source-specific mappers (e.g., mapAgtEvent) produce the\n * RuntimeGovernanceEvent input; this function handles signing.\n *\n * PEAC validates the structure and signature of the PEAC record,\n * not the truth of the upstream governance decision or the operating\n * effectiveness of the upstream control plane.\n */\n\nimport { issue } from '@peac/protocol';\nimport { isValidKid } from './internal/kid.js';\nimport { EXTENSION_NAMESPACE } from './constants.js';\nimport { FAMILY_REGISTRY } from './families.js';\nimport { FAMILY_BUILDERS } from './builders.js';\nimport type { RuntimeGovernanceEvent, IssueOptions, IssueResult } from './types.js';\n\n/**\n * Issue a signed Interaction Record for a normalized runtime governance event.\n *\n * Use source-specific mappers (e.g., mapAgtEvent) to produce the event input.\n * The provider field is always caller-supplied and never hardcoded.\n */\nfunction validateIssueOptions(options: IssueOptions): void {\n if (!(options.privateKey instanceof Uint8Array) || options.privateKey.length !== 32) {\n throw new Error('privateKey must be a 32-byte Uint8Array');\n }\n if (!isValidKid(options.kid)) {\n throw new Error(\n 'kid must be a non-empty, well-formed Unicode string of at most 256 UTF-8 bytes'\n );\n }\n if (typeof options.issuer !== 'string' || options.issuer.length === 0) {\n throw new Error('issuer must be a non-empty string');\n }\n if (\n typeof options.sessionId !== 'string' ||\n options.sessionId.length === 0 ||\n options.sessionId.length > 256\n ) {\n throw new Error('sessionId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.agentId !== 'string' ||\n options.agentId.length === 0 ||\n options.agentId.length > 256\n ) {\n throw new Error('agentId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.provider !== 'string' ||\n options.provider.length === 0 ||\n options.provider.length > 256\n ) {\n throw new Error('provider must be a non-empty string (max 256 chars)');\n }\n}\n\nexport async function issueRuntimeGovernanceRecord(\n event: RuntimeGovernanceEvent,\n options: IssueOptions\n): Promise<IssueResult> {\n validateIssueOptions(options);\n const entry = FAMILY_REGISTRY[event.payload.family];\n const { privateKey, kid, issuer, sessionId, agentId, provider } = options;\n\n const common = {\n session_id: sessionId,\n event: event.event_name,\n agent_id: agentId,\n provider,\n };\n\n const extensionData = FAMILY_BUILDERS[event.payload.family](\n event.payload,\n common,\n event.upstream\n );\n\n const { jws } = await issue({\n iss: issuer,\n kind: entry.kind,\n type: entry.type,\n privateKey,\n kid,\n extensions: { [EXTENSION_NAMESPACE]: extensionData },\n });\n\n return { jws, type: entry.type, family: event.payload.family };\n}\n","/**\n * @peac/adapter-runtime-governance session summary builder\n *\n * Aggregates decoded receipts into a session summary.\n * Decode-only (does NOT verify signatures; caller should verify first).\n * Returns deterministic family order (sorted alphabetically).\n * Counts unknown/unsupported type URIs separately.\n * Never implies verification or finality.\n */\n\nimport { decode } from '@peac/crypto';\nimport { EXTENSION_NAMESPACE, TYPE_PREFIX } from './constants.js';\nimport {\n RUNTIME_GOVERNANCE_FAMILIES,\n type RuntimeGovernanceFamily,\n type SessionSummary,\n} from './types.js';\n\n/** Reverse lookup set for known family suffixes. */\nconst KNOWN_SUFFIXES = new Set(RUNTIME_GOVERNANCE_FAMILIES.map((f) => f.replace(/_/g, '-')));\n\n/**\n * Build a session summary from an array of signed JWS receipts.\n *\n * Decodes each JWS (does NOT verify signatures; caller should verify first).\n * Extracts session ID, families, and issuer from claims and extensions.\n * Unknown type URIs are counted but not included in the families list.\n *\n * @param receipts - Array of compact JWS strings (must be valid JWS format)\n * @returns Session summary with deterministic family ordering\n */\nexport function buildSessionSummary(receipts: string[]): SessionSummary {\n if (receipts.length === 0) {\n return { sessionId: '', receipts: 0, families: [], unknownTypeCount: 0, issuer: '' };\n }\n\n let sessionId = '';\n let issuer = '';\n let unknownTypeCount = 0;\n const familySet = new Set<RuntimeGovernanceFamily>();\n\n for (const jws of receipts) {\n const decoded = decode(jws);\n const claims = decoded.payload as Record<string, unknown>;\n\n if (!issuer && typeof claims.iss === 'string') {\n issuer = claims.iss;\n }\n\n const extensions = claims.extensions as Record<string, unknown> | undefined;\n const govExt = extensions?.[EXTENSION_NAMESPACE] as Record<string, unknown> | undefined;\n\n if (govExt) {\n if (!sessionId && typeof govExt.session_id === 'string') {\n sessionId = govExt.session_id;\n }\n }\n\n const type = claims.type as string | undefined;\n if (type?.startsWith(TYPE_PREFIX)) {\n const suffix = type.slice(TYPE_PREFIX.length);\n if (KNOWN_SUFFIXES.has(suffix)) {\n familySet.add(suffix.replace(/-/g, '_') as RuntimeGovernanceFamily);\n } else {\n unknownTypeCount++;\n }\n } else if (type) {\n unknownTypeCount++;\n }\n }\n\n return {\n sessionId,\n receipts: receipts.length,\n families: [...familySet].sort(),\n unknownTypeCount,\n issuer,\n };\n}\n","/**\n * AGT-specific mapper\n *\n * Normalizes AGT-shaped JSON input into the generic\n * RuntimeGovernanceEvent model. Accepts raw JSON (not AGT SDK objects).\n *\n * Pinned to AGT v3.1.0 pre-release documentation (as of 2026-04-13).\n */\n\nimport { normalizeRuntimeGovernanceEvent, NormalizationError } from '../normalize.js';\nimport type { RuntimeGovernanceEvent, RuntimeGovernanceFamily } from '../types.js';\n\n/** AGT-shaped input. Raw JSON, not SDK objects. */\nexport interface AgtEventInput {\n /** Family name matching a RuntimeGovernanceFamily. */\n family: string;\n /** Specific event name (e.g., 'policy.evaluated'). */\n event: string;\n /** Event-specific data fields. */\n data: Record<string, unknown>;\n /** Optional upstream source context. */\n source?: {\n system?: string;\n event_type?: string;\n event_id?: string;\n timestamp?: string;\n artifact_hash?: string;\n artifact_ref?: string;\n cloud_event_type?: string;\n };\n}\n\nconst AGT_FAMILY_MAP: Record<string, RuntimeGovernanceFamily> = {\n policy_decision: 'policy_decision',\n audit_entry: 'audit_entry',\n authority_scope: 'authority_scope',\n lifecycle_event: 'lifecycle_event',\n trust_observation: 'trust_observation',\n compliance_observation: 'compliance_observation',\n};\n\n/**\n * Map an AGT-shaped event input to a normalized RuntimeGovernanceEvent.\n * Throws NormalizationError on unrecognized or malformed input.\n */\nexport function mapAgtEvent(input: AgtEventInput): RuntimeGovernanceEvent {\n const family = AGT_FAMILY_MAP[input.family];\n if (!family) {\n throw new NormalizationError(`unrecognized AGT family: ${input.family}`, 'family');\n }\n\n const raw = {\n event_name: input.event,\n payload: {\n family,\n ...input.data,\n },\n upstream: input.source\n ? {\n source_system: input.source.system,\n source_event_type: input.source.event_type,\n source_event_id: input.source.event_id,\n source_timestamp: input.source.timestamp,\n source_artifact_hash: input.source.artifact_hash,\n source_artifact_ref: input.source.artifact_ref,\n source_cloud_event_type: input.source.cloud_event_type,\n }\n : undefined,\n };\n\n return normalizeRuntimeGovernanceEvent(raw);\n}\n"]}
|
package/dist/index.mjs
CHANGED
|
@@ -288,6 +288,46 @@ function normalizeRuntimeGovernanceEvent(input) {
|
|
|
288
288
|
};
|
|
289
289
|
}
|
|
290
290
|
|
|
291
|
+
// src/internal/kid.ts
|
|
292
|
+
var MAX_KID_UTF8_BYTES = 256;
|
|
293
|
+
function isWellFormedUnicode(s) {
|
|
294
|
+
for (let i = 0; i < s.length; i++) {
|
|
295
|
+
const c = s.charCodeAt(i);
|
|
296
|
+
if (c >= 55296 && c <= 56319) {
|
|
297
|
+
const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;
|
|
298
|
+
if (next < 56320 || next > 57343) return false;
|
|
299
|
+
i++;
|
|
300
|
+
} else if (c >= 56320 && c <= 57343) {
|
|
301
|
+
return false;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
return true;
|
|
305
|
+
}
|
|
306
|
+
function utf8ByteLength(s) {
|
|
307
|
+
let n = 0;
|
|
308
|
+
for (let i = 0; i < s.length; i++) {
|
|
309
|
+
const c = s.charCodeAt(i);
|
|
310
|
+
if (c < 128) n += 1;
|
|
311
|
+
else if (c < 2048) n += 2;
|
|
312
|
+
else if (c >= 55296 && c <= 56319) {
|
|
313
|
+
const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;
|
|
314
|
+
if (next < 56320 || next > 57343) {
|
|
315
|
+
throw new TypeError("utf8ByteLength: unpaired high surrogate");
|
|
316
|
+
}
|
|
317
|
+
n += 4;
|
|
318
|
+
i++;
|
|
319
|
+
} else if (c >= 56320 && c <= 57343) {
|
|
320
|
+
throw new TypeError("utf8ByteLength: unpaired low surrogate");
|
|
321
|
+
} else n += 3;
|
|
322
|
+
}
|
|
323
|
+
return n;
|
|
324
|
+
}
|
|
325
|
+
function isValidKid(kid) {
|
|
326
|
+
if (typeof kid !== "string" || kid.length === 0) return false;
|
|
327
|
+
if (!isWellFormedUnicode(kid)) return false;
|
|
328
|
+
return utf8ByteLength(kid) <= MAX_KID_UTF8_BYTES;
|
|
329
|
+
}
|
|
330
|
+
|
|
291
331
|
// src/builders.ts
|
|
292
332
|
function stripUndefined(obj) {
|
|
293
333
|
const result = {};
|
|
@@ -383,8 +423,10 @@ function validateIssueOptions(options) {
|
|
|
383
423
|
if (!(options.privateKey instanceof Uint8Array) || options.privateKey.length !== 32) {
|
|
384
424
|
throw new Error("privateKey must be a 32-byte Uint8Array");
|
|
385
425
|
}
|
|
386
|
-
if (
|
|
387
|
-
throw new Error(
|
|
426
|
+
if (!isValidKid(options.kid)) {
|
|
427
|
+
throw new Error(
|
|
428
|
+
"kid must be a non-empty, well-formed Unicode string of at most 256 UTF-8 bytes"
|
|
429
|
+
);
|
|
388
430
|
}
|
|
389
431
|
if (typeof options.issuer !== "string" || options.issuer.length === 0) {
|
|
390
432
|
throw new Error("issuer must be a non-empty string");
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/constants.ts","../src/types.ts","../src/families.ts","../src/normalize.ts","../src/builders.ts","../src/issue.ts","../src/session-summary.ts","../src/mappers/agt.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @peac/adapter-runtime-governance constants\n *\n * Vendor-neutral type URIs and extension namespace for runtime\n * governance record families. Observation-specific suffixes prevent\n * semantic bleed into authoritative claims.\n */\n\n/** Extension namespace for runtime governance record metadata. */\nexport const EXTENSION_NAMESPACE = 'org.peacprotocol/runtime-governance' as const;\n\n/** Reverse-DNS type prefix for all runtime governance record families. */\nexport const TYPE_PREFIX = 'org.peacprotocol/runtime-governance-' as const;\n\n/**\n * Canonical type URIs for the 6 runtime governance record families.\n * Each suffix is observation-specific (e.g., \"policy-decision\" not \"policy\").\n */\nexport const EVENT_TYPES = {\n POLICY_DECISION: `${TYPE_PREFIX}policy-decision`,\n AUDIT_ENTRY: `${TYPE_PREFIX}audit-entry`,\n AUTHORITY_SCOPE: `${TYPE_PREFIX}authority-scope`,\n LIFECYCLE_EVENT: `${TYPE_PREFIX}lifecycle-event`,\n TRUST_OBSERVATION: `${TYPE_PREFIX}trust-observation`,\n COMPLIANCE_OBSERVATION: `${TYPE_PREFIX}compliance-observation`,\n} as const;\n\nexport type EventType = (typeof EVENT_TYPES)[keyof typeof EVENT_TYPES];\n\n/** Maximum field lengths for validation. */\nexport const FIELD_LIMITS = {\n /** Identifiers: provider, agent_id, session_id, entry_id, etc. */\n maxIdentifier: 256,\n /** General string fields: action, matched_rule, policy_name, etc. */\n maxString: 1024,\n /** Digest strings: previous_hash, entry_hash, etc. */\n maxDigest: 512,\n /** URI fields: source_artifact_ref, etc. */\n maxUri: 2048,\n /** Timestamp fields: source_timestamp, etc. */\n maxTimestamp: 64,\n /** CloudEvents type URIs. */\n maxCloudEventType: 256,\n /** Array fields: effective_scope, matched_invariants. */\n maxArrayLength: 64,\n /** Array entry string length. */\n maxArrayEntry: 256,\n /** Framework token length. */\n maxFramework: 128,\n} as const;\n","/**\n * @peac/adapter-runtime-governance types\n *\n * Discriminated union payload model with per-family typing.\n * No weak Record<string, unknown> blobs.\n */\n\n/**\n * Runtime governance record families.\n * String-literal union (not enum) for lighter output and tree-shaking.\n */\nexport const RUNTIME_GOVERNANCE_FAMILIES = [\n 'policy_decision',\n 'audit_entry',\n 'authority_scope',\n 'lifecycle_event',\n 'trust_observation',\n 'compliance_observation',\n] as const;\n\nexport type RuntimeGovernanceFamily = (typeof RUNTIME_GOVERNANCE_FAMILIES)[number];\n\n/**\n * Preserved upstream artifact context.\n * All optional, all observational. Bounded fields, no arbitrary passthrough.\n */\nexport interface PreservedUpstreamArtifact {\n /** Upstream system identifier (max 256 chars). */\n source_system?: string;\n /** Upstream event type identifier (max 256 chars). */\n source_event_type?: string;\n /** Upstream event identifier for deduplication (max 256 chars). */\n source_event_id?: string;\n /** Upstream event timestamp (RFC 3339, max 64 chars). */\n source_timestamp?: string;\n /** Hash of upstream artifact (max 512 chars). */\n source_artifact_hash?: string;\n /** URI or reference to upstream artifact (max 2048 chars). */\n source_artifact_ref?: string;\n /** CloudEvents type URI for cross-system correlation (max 256 chars). */\n source_cloud_event_type?: string;\n}\n\n/** Policy decision payload. */\nexport interface PolicyDecisionPayload {\n family: 'policy_decision';\n action: string;\n matched_rule?: string;\n policy_name?: string;\n reason?: string;\n evaluation_ms?: number;\n}\n\n/** Audit entry payload. */\nexport interface AuditEntryPayload {\n family: 'audit_entry';\n entry_id?: string;\n event_type?: string;\n outcome?: string;\n previous_hash?: string;\n entry_hash?: string;\n trace_id?: string;\n}\n\n/** Authority scope payload. */\nexport interface AuthorityScopePayload {\n family: 'authority_scope';\n decision?: string;\n effective_scope?: string[];\n trust_tier?: string;\n matched_invariants?: string[];\n}\n\n/** Lifecycle event payload. */\nexport interface LifecycleEventPayload {\n family: 'lifecycle_event';\n lifecycle_event_type?: string;\n previous_state?: string;\n new_state?: string;\n actor?: string;\n}\n\n/** Trust observation payload. */\nexport interface TrustObservationPayload {\n family: 'trust_observation';\n peer_id?: string;\n action?: string;\n success?: boolean;\n trust_delta?: number;\n trust_score?: number;\n}\n\n/** Compliance observation payload. */\nexport interface ComplianceObservationPayload {\n family: 'compliance_observation';\n framework?: string;\n compliance_score?: number;\n violation_count?: number;\n evidence_item_count?: number;\n}\n\n/** Discriminated union of all family payloads. */\nexport type RuntimeGovernancePayload =\n | PolicyDecisionPayload\n | AuditEntryPayload\n | AuthorityScopePayload\n | LifecycleEventPayload\n | TrustObservationPayload\n | ComplianceObservationPayload;\n\n/**\n * Normalized runtime governance event.\n * Generic input to issueRuntimeGovernanceRecord().\n */\nexport interface RuntimeGovernanceEvent {\n /** Specific event name (e.g., 'policy.evaluated'). */\n event_name: string;\n /** Typed, validated payload (discriminated by family). */\n payload: RuntimeGovernancePayload;\n /** Optional preserved upstream artifact context. */\n upstream?: PreservedUpstreamArtifact;\n}\n\n/** Options for issuing a runtime governance record. */\nexport interface IssueOptions {\n /** Ed25519 private key (32 bytes). Caller-provided; never stored. */\n privateKey: Uint8Array;\n /** Key ID (max 256 chars). */\n kid: string;\n /** Canonical issuer URL (HTTPS or DID). */\n issuer: string;\n /** Session identifier for event correlation. */\n sessionId: string;\n /** Agent identifier. */\n agentId: string;\n /** Provider name. Caller-supplied; never hardcoded. */\n provider: string;\n}\n\n/** Result of issuing a runtime governance record. */\nexport interface IssueResult {\n /** Compact JWS (signed Interaction Record). */\n jws: string;\n /** PEAC event type URI used. */\n type: string;\n /** Record family. */\n family: RuntimeGovernanceFamily;\n}\n\n/** Session summary aggregated from decoded receipts. */\nexport interface SessionSummary {\n /** Session identifier. */\n sessionId: string;\n /** Total receipts in the session. */\n receipts: number;\n /** Distinct families represented (sorted alphabetically). */\n families: RuntimeGovernanceFamily[];\n /** Count of receipts with unrecognized type URIs. */\n unknownTypeCount: number;\n /** Issuer (from the first receipt, or empty if no receipts). */\n issuer: string;\n}\n","/**\n * Family registry.\n *\n * Maps each RuntimeGovernanceFamily to its canonical type URI\n * and Interaction Record kind. All families produce `evidence` kind.\n */\n\nimport { EVENT_TYPES, type EventType } from './constants.js';\nimport type { RuntimeGovernanceFamily } from './types.js';\n\nexport interface FamilyEntry {\n /** Canonical type URI for this family. */\n type: EventType;\n /** Interaction Record kind. Always 'evidence' for runtime governance. */\n kind: 'evidence';\n}\n\nexport const FAMILY_REGISTRY: Record<RuntimeGovernanceFamily, FamilyEntry> = {\n policy_decision: { type: EVENT_TYPES.POLICY_DECISION, kind: 'evidence' },\n audit_entry: { type: EVENT_TYPES.AUDIT_ENTRY, kind: 'evidence' },\n authority_scope: { type: EVENT_TYPES.AUTHORITY_SCOPE, kind: 'evidence' },\n lifecycle_event: { type: EVENT_TYPES.LIFECYCLE_EVENT, kind: 'evidence' },\n trust_observation: { type: EVENT_TYPES.TRUST_OBSERVATION, kind: 'evidence' },\n compliance_observation: { type: EVENT_TYPES.COMPLIANCE_OBSERVATION, kind: 'evidence' },\n};\n","/**\n * @peac/adapter-runtime-governance normalization and validation\n *\n * Fail-closed input validation for runtime governance payloads.\n * Rejects malformed input with descriptive errors.\n *\n * These are adapter-level shape prechecks: string presence, max lengths,\n * numeric bounds, RFC 3339 format, digest grammar (algorithm:hex), and\n * URI scheme presence. Protocol-layer validation (@peac/protocol issue()\n * and @peac/schema Wire02ClaimsSchema) remains authoritative for issuer\n * canonicality, JOSE hardening, and wire-format compliance. Adapter\n * validators catch obviously malformed input before it reaches the\n * protocol layer.\n *\n * PEAC validates the structure of carried values, not upstream truth.\n * Trust scores are structurally validated (finite, 0-1000 integer)\n * but never derived, recomputed, ranked, or authoritatively assessed.\n */\n\nimport { FIELD_LIMITS } from './constants.js';\nimport { RUNTIME_GOVERNANCE_FAMILIES } from './types.js';\nimport type {\n RuntimeGovernanceFamily,\n RuntimeGovernancePayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceEvent,\n} from './types.js';\n\nexport class NormalizationError extends Error {\n constructor(\n message: string,\n public readonly field: string\n ) {\n super(message);\n this.name = 'NormalizationError';\n }\n}\n\nfunction requireString(value: unknown, field: string, maxLen: number): string {\n if (typeof value !== 'string') {\n throw new NormalizationError(`${field} must be a string`, field);\n }\n if (value.length === 0) {\n throw new NormalizationError(`${field} must not be empty`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value;\n}\n\nfunction optionalString(value: unknown, field: string, maxLen: number): string | undefined {\n if (value === undefined || value === null) return undefined;\n return requireString(value, field, maxLen);\n}\n\nfunction optionalFiniteNumber(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new NormalizationError(`${field} must be a finite number`, field);\n }\n if (min !== undefined && value < min) {\n throw new NormalizationError(`${field} must be >= ${min}`, field);\n }\n if (max !== undefined && value > max) {\n throw new NormalizationError(`${field} must be <= ${max}`, field);\n }\n return value;\n}\n\nfunction optionalInteger(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n const n = optionalFiniteNumber(value, field, min, max);\n if (n !== undefined && !Number.isInteger(n)) {\n throw new NormalizationError(`${field} must be an integer`, field);\n }\n return n;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'boolean') {\n throw new NormalizationError(`${field} must be a boolean`, field);\n }\n return value;\n}\n\nconst RFC3339_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/;\n\nfunction optionalRfc3339(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !RFC3339_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be RFC 3339 format`, field);\n }\n return s;\n}\n\nconst DIGEST_PATTERN = /^[a-zA-Z0-9_-]+:[a-fA-F0-9]+$/;\n\nfunction optionalDigest(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !DIGEST_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must match digest pattern (algorithm:hex)`, field);\n }\n return s;\n}\n\nconst URI_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;\n\nfunction optionalUri(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !URI_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be a valid URI`, field);\n }\n return s;\n}\n\nfunction optionalStringArray(\n value: unknown,\n field: string,\n maxLen: number,\n maxEntryLen: number\n): string[] | undefined {\n if (value === undefined || value === null) return undefined;\n if (!Array.isArray(value)) {\n throw new NormalizationError(`${field} must be an array`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value.map((entry, i) => requireString(entry, `${field}[${i}]`, maxEntryLen));\n}\n\nfunction normalizePolicyDecision(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'policy_decision',\n action: requireString(input.action, 'action', FIELD_LIMITS.maxString),\n matched_rule: optionalString(input.matched_rule, 'matched_rule', FIELD_LIMITS.maxString),\n policy_name: optionalString(input.policy_name, 'policy_name', FIELD_LIMITS.maxString),\n reason: optionalString(input.reason, 'reason', FIELD_LIMITS.maxString),\n evaluation_ms: optionalFiniteNumber(input.evaluation_ms, 'evaluation_ms', 0),\n };\n}\n\nfunction normalizeAuditEntry(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'audit_entry',\n entry_id: optionalString(input.entry_id, 'entry_id', FIELD_LIMITS.maxIdentifier),\n event_type: optionalString(input.event_type, 'event_type', FIELD_LIMITS.maxString),\n outcome: optionalString(input.outcome, 'outcome', FIELD_LIMITS.maxString),\n previous_hash: optionalDigest(input.previous_hash, 'previous_hash', FIELD_LIMITS.maxDigest),\n entry_hash: optionalDigest(input.entry_hash, 'entry_hash', FIELD_LIMITS.maxDigest),\n trace_id: optionalString(input.trace_id, 'trace_id', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeAuthorityScope(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'authority_scope',\n decision: optionalString(input.decision, 'decision', FIELD_LIMITS.maxString),\n effective_scope: optionalStringArray(\n input.effective_scope,\n 'effective_scope',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n trust_tier: optionalString(input.trust_tier, 'trust_tier', FIELD_LIMITS.maxString),\n matched_invariants: optionalStringArray(\n input.matched_invariants,\n 'matched_invariants',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n };\n}\n\nfunction normalizeLifecycleEvent(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'lifecycle_event',\n lifecycle_event_type: optionalString(\n input.lifecycle_event_type,\n 'lifecycle_event_type',\n FIELD_LIMITS.maxString\n ),\n previous_state: optionalString(input.previous_state, 'previous_state', FIELD_LIMITS.maxString),\n new_state: optionalString(input.new_state, 'new_state', FIELD_LIMITS.maxString),\n actor: optionalString(input.actor, 'actor', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeTrustObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'trust_observation',\n peer_id: optionalString(input.peer_id, 'peer_id', FIELD_LIMITS.maxIdentifier),\n action: optionalString(input.action, 'action', FIELD_LIMITS.maxString),\n success: optionalBoolean(input.success, 'success'),\n trust_delta: optionalInteger(input.trust_delta, 'trust_delta', -1000, 1000),\n trust_score: optionalInteger(input.trust_score, 'trust_score', 0, 1000),\n };\n}\n\nfunction normalizeComplianceObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'compliance_observation',\n framework: optionalString(input.framework, 'framework', FIELD_LIMITS.maxFramework),\n compliance_score: optionalFiniteNumber(input.compliance_score, 'compliance_score', 0, 100),\n violation_count: optionalInteger(input.violation_count, 'violation_count', 0),\n evidence_item_count: optionalInteger(input.evidence_item_count, 'evidence_item_count', 0),\n };\n}\n\nconst FAMILY_NORMALIZERS: Record<\n RuntimeGovernanceFamily,\n (input: Record<string, unknown>) => RuntimeGovernancePayload\n> = {\n policy_decision: normalizePolicyDecision,\n audit_entry: normalizeAuditEntry,\n authority_scope: normalizeAuthorityScope,\n lifecycle_event: normalizeLifecycleEvent,\n trust_observation: normalizeTrustObservation,\n compliance_observation: normalizeComplianceObservation,\n};\n\nfunction normalizeUpstream(input: unknown): PreservedUpstreamArtifact | undefined {\n if (input === undefined || input === null) return undefined;\n if (typeof input !== 'object' || Array.isArray(input)) {\n throw new NormalizationError('upstream must be a plain object', 'upstream');\n }\n const obj = input as Record<string, unknown>;\n return {\n source_system: optionalString(\n obj.source_system,\n 'upstream.source_system',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_type: optionalString(\n obj.source_event_type,\n 'upstream.source_event_type',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_id: optionalString(\n obj.source_event_id,\n 'upstream.source_event_id',\n FIELD_LIMITS.maxIdentifier\n ),\n source_timestamp: optionalRfc3339(\n obj.source_timestamp,\n 'upstream.source_timestamp',\n FIELD_LIMITS.maxTimestamp\n ),\n source_artifact_hash: optionalDigest(\n obj.source_artifact_hash,\n 'upstream.source_artifact_hash',\n FIELD_LIMITS.maxDigest\n ),\n source_artifact_ref: optionalUri(\n obj.source_artifact_ref,\n 'upstream.source_artifact_ref',\n FIELD_LIMITS.maxUri\n ),\n source_cloud_event_type: optionalString(\n obj.source_cloud_event_type,\n 'upstream.source_cloud_event_type',\n FIELD_LIMITS.maxCloudEventType\n ),\n };\n}\n\n/**\n * Normalize and validate a raw runtime governance event input.\n * Fail-closed: rejects malformed input with descriptive errors.\n */\nexport function normalizeRuntimeGovernanceEvent(input: unknown): RuntimeGovernanceEvent {\n if (typeof input !== 'object' || input === null || Array.isArray(input)) {\n throw new NormalizationError('input must be a plain object', 'input');\n }\n const obj = input as Record<string, unknown>;\n\n const eventName = requireString(obj.event_name, 'event_name', FIELD_LIMITS.maxString);\n\n if (typeof obj.payload !== 'object' || obj.payload === null || Array.isArray(obj.payload)) {\n throw new NormalizationError('payload must be a plain object', 'payload');\n }\n const payloadObj = obj.payload as Record<string, unknown>;\n\n const family = payloadObj.family;\n if (\n typeof family !== 'string' ||\n !(RUNTIME_GOVERNANCE_FAMILIES as readonly string[]).includes(family)\n ) {\n throw new NormalizationError(\n `payload.family must be one of: ${RUNTIME_GOVERNANCE_FAMILIES.join(', ')}`,\n 'payload.family'\n );\n }\n\n const normalizer = FAMILY_NORMALIZERS[family as RuntimeGovernanceFamily];\n const payload = normalizer(payloadObj);\n\n return {\n event_name: eventName,\n payload,\n upstream: normalizeUpstream(obj.upstream),\n };\n}\n","/**\n * @peac/adapter-runtime-governance extension builders\n *\n * Explicit per-family extension data builders. Each builder selects\n * exactly which fields appear in the extension output. Unknown upstream\n * fields never become top-level extension keys.\n */\n\nimport type {\n RuntimeGovernancePayload,\n PolicyDecisionPayload,\n AuditEntryPayload,\n AuthorityScopePayload,\n LifecycleEventPayload,\n TrustObservationPayload,\n ComplianceObservationPayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceFamily,\n} from './types.js';\n\ninterface CommonFields {\n session_id: string;\n event: string;\n agent_id: string;\n provider: string;\n}\n\nfunction stripUndefined(obj: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const nested = stripUndefined(value as Record<string, unknown>);\n if (Object.keys(nested).length > 0) {\n result[key] = nested;\n }\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n}\n\nfunction buildPolicyDecisionExtension(\n payload: PolicyDecisionPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n action: payload.action,\n matched_rule: payload.matched_rule,\n policy_name: payload.policy_name,\n reason: payload.reason,\n evaluation_ms: payload.evaluation_ms,\n upstream,\n });\n}\n\nfunction buildAuditEntryExtension(\n payload: AuditEntryPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n entry_id: payload.entry_id,\n event_type: payload.event_type,\n outcome: payload.outcome,\n previous_hash: payload.previous_hash,\n entry_hash: payload.entry_hash,\n trace_id: payload.trace_id,\n upstream,\n });\n}\n\nfunction buildAuthorityScopeExtension(\n payload: AuthorityScopePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n decision: payload.decision,\n effective_scope: payload.effective_scope,\n trust_tier: payload.trust_tier,\n matched_invariants: payload.matched_invariants,\n upstream,\n });\n}\n\nfunction buildLifecycleEventExtension(\n payload: LifecycleEventPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n lifecycle_event_type: payload.lifecycle_event_type,\n previous_state: payload.previous_state,\n new_state: payload.new_state,\n actor: payload.actor,\n upstream,\n });\n}\n\nfunction buildTrustObservationExtension(\n payload: TrustObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n peer_id: payload.peer_id,\n action: payload.action,\n success: payload.success,\n trust_delta: payload.trust_delta,\n trust_score: payload.trust_score,\n upstream,\n });\n}\n\nfunction buildComplianceObservationExtension(\n payload: ComplianceObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n framework: payload.framework,\n compliance_score: payload.compliance_score,\n violation_count: payload.violation_count,\n evidence_item_count: payload.evidence_item_count,\n upstream,\n });\n}\n\ntype ExtensionBuilder = (\n payload: RuntimeGovernancePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n) => Record<string, unknown>;\n\n/**\n * Per-family extension builder registry.\n * issueRuntimeGovernanceRecord() dispatches to the correct builder.\n */\nexport const FAMILY_BUILDERS: Record<RuntimeGovernanceFamily, ExtensionBuilder> = {\n policy_decision: (p, c, u) => buildPolicyDecisionExtension(p as PolicyDecisionPayload, c, u),\n audit_entry: (p, c, u) => buildAuditEntryExtension(p as AuditEntryPayload, c, u),\n authority_scope: (p, c, u) => buildAuthorityScopeExtension(p as AuthorityScopePayload, c, u),\n lifecycle_event: (p, c, u) => buildLifecycleEventExtension(p as LifecycleEventPayload, c, u),\n trust_observation: (p, c, u) =>\n buildTrustObservationExtension(p as TrustObservationPayload, c, u),\n compliance_observation: (p, c, u) =>\n buildComplianceObservationExtension(p as ComplianceObservationPayload, c, u),\n};\n","/**\n * @peac/adapter-runtime-governance record issuance\n *\n * Generic issuance function that dispatches to per-family extension\n * builders. Source-specific mappers (e.g., mapAgtEvent) produce the\n * RuntimeGovernanceEvent input; this function handles signing.\n *\n * PEAC validates the structure and signature of the PEAC record,\n * not the truth of the upstream governance decision or the operating\n * effectiveness of the upstream control plane.\n */\n\nimport { issue } from '@peac/protocol';\nimport { EXTENSION_NAMESPACE } from './constants.js';\nimport { FAMILY_REGISTRY } from './families.js';\nimport { FAMILY_BUILDERS } from './builders.js';\nimport type { RuntimeGovernanceEvent, IssueOptions, IssueResult } from './types.js';\n\n/**\n * Issue a signed Interaction Record for a normalized runtime governance event.\n *\n * Use source-specific mappers (e.g., mapAgtEvent) to produce the event input.\n * The provider field is always caller-supplied and never hardcoded.\n */\nfunction validateIssueOptions(options: IssueOptions): void {\n if (!(options.privateKey instanceof Uint8Array) || options.privateKey.length !== 32) {\n throw new Error('privateKey must be a 32-byte Uint8Array');\n }\n if (typeof options.kid !== 'string' || options.kid.length === 0 || options.kid.length > 256) {\n throw new Error('kid must be a non-empty string (max 256 chars)');\n }\n if (typeof options.issuer !== 'string' || options.issuer.length === 0) {\n throw new Error('issuer must be a non-empty string');\n }\n if (\n typeof options.sessionId !== 'string' ||\n options.sessionId.length === 0 ||\n options.sessionId.length > 256\n ) {\n throw new Error('sessionId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.agentId !== 'string' ||\n options.agentId.length === 0 ||\n options.agentId.length > 256\n ) {\n throw new Error('agentId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.provider !== 'string' ||\n options.provider.length === 0 ||\n options.provider.length > 256\n ) {\n throw new Error('provider must be a non-empty string (max 256 chars)');\n }\n}\n\nexport async function issueRuntimeGovernanceRecord(\n event: RuntimeGovernanceEvent,\n options: IssueOptions\n): Promise<IssueResult> {\n validateIssueOptions(options);\n const entry = FAMILY_REGISTRY[event.payload.family];\n const { privateKey, kid, issuer, sessionId, agentId, provider } = options;\n\n const common = {\n session_id: sessionId,\n event: event.event_name,\n agent_id: agentId,\n provider,\n };\n\n const extensionData = FAMILY_BUILDERS[event.payload.family](\n event.payload,\n common,\n event.upstream\n );\n\n const { jws } = await issue({\n iss: issuer,\n kind: entry.kind,\n type: entry.type,\n privateKey,\n kid,\n extensions: { [EXTENSION_NAMESPACE]: extensionData },\n });\n\n return { jws, type: entry.type, family: event.payload.family };\n}\n","/**\n * @peac/adapter-runtime-governance session summary builder\n *\n * Aggregates decoded receipts into a session summary.\n * Decode-only (does NOT verify signatures; caller should verify first).\n * Returns deterministic family order (sorted alphabetically).\n * Counts unknown/unsupported type URIs separately.\n * Never implies verification or finality.\n */\n\nimport { decode } from '@peac/crypto';\nimport { EXTENSION_NAMESPACE, TYPE_PREFIX } from './constants.js';\nimport {\n RUNTIME_GOVERNANCE_FAMILIES,\n type RuntimeGovernanceFamily,\n type SessionSummary,\n} from './types.js';\n\n/** Reverse lookup set for known family suffixes. */\nconst KNOWN_SUFFIXES = new Set(RUNTIME_GOVERNANCE_FAMILIES.map((f) => f.replace(/_/g, '-')));\n\n/**\n * Build a session summary from an array of signed JWS receipts.\n *\n * Decodes each JWS (does NOT verify signatures; caller should verify first).\n * Extracts session ID, families, and issuer from claims and extensions.\n * Unknown type URIs are counted but not included in the families list.\n *\n * @param receipts - Array of compact JWS strings (must be valid JWS format)\n * @returns Session summary with deterministic family ordering\n */\nexport function buildSessionSummary(receipts: string[]): SessionSummary {\n if (receipts.length === 0) {\n return { sessionId: '', receipts: 0, families: [], unknownTypeCount: 0, issuer: '' };\n }\n\n let sessionId = '';\n let issuer = '';\n let unknownTypeCount = 0;\n const familySet = new Set<RuntimeGovernanceFamily>();\n\n for (const jws of receipts) {\n const decoded = decode(jws);\n const claims = decoded.payload as Record<string, unknown>;\n\n if (!issuer && typeof claims.iss === 'string') {\n issuer = claims.iss;\n }\n\n const extensions = claims.extensions as Record<string, unknown> | undefined;\n const govExt = extensions?.[EXTENSION_NAMESPACE] as Record<string, unknown> | undefined;\n\n if (govExt) {\n if (!sessionId && typeof govExt.session_id === 'string') {\n sessionId = govExt.session_id;\n }\n }\n\n const type = claims.type as string | undefined;\n if (type?.startsWith(TYPE_PREFIX)) {\n const suffix = type.slice(TYPE_PREFIX.length);\n if (KNOWN_SUFFIXES.has(suffix)) {\n familySet.add(suffix.replace(/-/g, '_') as RuntimeGovernanceFamily);\n } else {\n unknownTypeCount++;\n }\n } else if (type) {\n unknownTypeCount++;\n }\n }\n\n return {\n sessionId,\n receipts: receipts.length,\n families: [...familySet].sort(),\n unknownTypeCount,\n issuer,\n };\n}\n","/**\n * AGT-specific mapper\n *\n * Normalizes AGT-shaped JSON input into the generic\n * RuntimeGovernanceEvent model. Accepts raw JSON (not AGT SDK objects).\n *\n * Pinned to AGT v3.1.0 pre-release documentation (as of 2026-04-13).\n */\n\nimport { normalizeRuntimeGovernanceEvent, NormalizationError } from '../normalize.js';\nimport type { RuntimeGovernanceEvent, RuntimeGovernanceFamily } from '../types.js';\n\n/** AGT-shaped input. Raw JSON, not SDK objects. */\nexport interface AgtEventInput {\n /** Family name matching a RuntimeGovernanceFamily. */\n family: string;\n /** Specific event name (e.g., 'policy.evaluated'). */\n event: string;\n /** Event-specific data fields. */\n data: Record<string, unknown>;\n /** Optional upstream source context. */\n source?: {\n system?: string;\n event_type?: string;\n event_id?: string;\n timestamp?: string;\n artifact_hash?: string;\n artifact_ref?: string;\n cloud_event_type?: string;\n };\n}\n\nconst AGT_FAMILY_MAP: Record<string, RuntimeGovernanceFamily> = {\n policy_decision: 'policy_decision',\n audit_entry: 'audit_entry',\n authority_scope: 'authority_scope',\n lifecycle_event: 'lifecycle_event',\n trust_observation: 'trust_observation',\n compliance_observation: 'compliance_observation',\n};\n\n/**\n * Map an AGT-shaped event input to a normalized RuntimeGovernanceEvent.\n * Throws NormalizationError on unrecognized or malformed input.\n */\nexport function mapAgtEvent(input: AgtEventInput): RuntimeGovernanceEvent {\n const family = AGT_FAMILY_MAP[input.family];\n if (!family) {\n throw new NormalizationError(`unrecognized AGT family: ${input.family}`, 'family');\n }\n\n const raw = {\n event_name: input.event,\n payload: {\n family,\n ...input.data,\n },\n upstream: input.source\n ? {\n source_system: input.source.system,\n source_event_type: input.source.event_type,\n source_event_id: input.source.event_id,\n source_timestamp: input.source.timestamp,\n source_artifact_hash: input.source.artifact_hash,\n source_artifact_ref: input.source.artifact_ref,\n source_cloud_event_type: input.source.cloud_event_type,\n }\n : undefined,\n };\n\n return normalizeRuntimeGovernanceEvent(raw);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/constants.ts","../src/types.ts","../src/families.ts","../src/normalize.ts","../src/internal/kid.ts","../src/builders.ts","../src/issue.ts","../src/session-summary.ts","../src/mappers/agt.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * @peac/adapter-runtime-governance constants\n *\n * Vendor-neutral type URIs and extension namespace for runtime\n * governance record families. Observation-specific suffixes prevent\n * semantic bleed into authoritative claims.\n */\n\n/** Extension namespace for runtime governance record metadata. */\nexport const EXTENSION_NAMESPACE = 'org.peacprotocol/runtime-governance' as const;\n\n/** Reverse-DNS type prefix for all runtime governance record families. */\nexport const TYPE_PREFIX = 'org.peacprotocol/runtime-governance-' as const;\n\n/**\n * Canonical type URIs for the 6 runtime governance record families.\n * Each suffix is observation-specific (e.g., \"policy-decision\" not \"policy\").\n */\nexport const EVENT_TYPES = {\n POLICY_DECISION: `${TYPE_PREFIX}policy-decision`,\n AUDIT_ENTRY: `${TYPE_PREFIX}audit-entry`,\n AUTHORITY_SCOPE: `${TYPE_PREFIX}authority-scope`,\n LIFECYCLE_EVENT: `${TYPE_PREFIX}lifecycle-event`,\n TRUST_OBSERVATION: `${TYPE_PREFIX}trust-observation`,\n COMPLIANCE_OBSERVATION: `${TYPE_PREFIX}compliance-observation`,\n} as const;\n\nexport type EventType = (typeof EVENT_TYPES)[keyof typeof EVENT_TYPES];\n\n/** Maximum field lengths for validation. */\nexport const FIELD_LIMITS = {\n /** Identifiers: provider, agent_id, session_id, entry_id, etc. */\n maxIdentifier: 256,\n /** General string fields: action, matched_rule, policy_name, etc. */\n maxString: 1024,\n /** Digest strings: previous_hash, entry_hash, etc. */\n maxDigest: 512,\n /** URI fields: source_artifact_ref, etc. */\n maxUri: 2048,\n /** Timestamp fields: source_timestamp, etc. */\n maxTimestamp: 64,\n /** CloudEvents type URIs. */\n maxCloudEventType: 256,\n /** Array fields: effective_scope, matched_invariants. */\n maxArrayLength: 64,\n /** Array entry string length. */\n maxArrayEntry: 256,\n /** Framework token length. */\n maxFramework: 128,\n} as const;\n","/**\n * @peac/adapter-runtime-governance types\n *\n * Discriminated union payload model with per-family typing.\n * No weak Record<string, unknown> blobs.\n */\n\n/**\n * Runtime governance record families.\n * String-literal union (not enum) for lighter output and tree-shaking.\n */\nexport const RUNTIME_GOVERNANCE_FAMILIES = [\n 'policy_decision',\n 'audit_entry',\n 'authority_scope',\n 'lifecycle_event',\n 'trust_observation',\n 'compliance_observation',\n] as const;\n\nexport type RuntimeGovernanceFamily = (typeof RUNTIME_GOVERNANCE_FAMILIES)[number];\n\n/**\n * Preserved upstream artifact context.\n * All optional, all observational. Bounded fields, no arbitrary passthrough.\n */\nexport interface PreservedUpstreamArtifact {\n /** Upstream system identifier (max 256 chars). */\n source_system?: string;\n /** Upstream event type identifier (max 256 chars). */\n source_event_type?: string;\n /** Upstream event identifier for deduplication (max 256 chars). */\n source_event_id?: string;\n /** Upstream event timestamp (RFC 3339, max 64 chars). */\n source_timestamp?: string;\n /** Hash of upstream artifact (max 512 chars). */\n source_artifact_hash?: string;\n /** URI or reference to upstream artifact (max 2048 chars). */\n source_artifact_ref?: string;\n /** CloudEvents type URI for cross-system correlation (max 256 chars). */\n source_cloud_event_type?: string;\n}\n\n/** Policy decision payload. */\nexport interface PolicyDecisionPayload {\n family: 'policy_decision';\n action: string;\n matched_rule?: string;\n policy_name?: string;\n reason?: string;\n evaluation_ms?: number;\n}\n\n/** Audit entry payload. */\nexport interface AuditEntryPayload {\n family: 'audit_entry';\n entry_id?: string;\n event_type?: string;\n outcome?: string;\n previous_hash?: string;\n entry_hash?: string;\n trace_id?: string;\n}\n\n/** Authority scope payload. */\nexport interface AuthorityScopePayload {\n family: 'authority_scope';\n decision?: string;\n effective_scope?: string[];\n trust_tier?: string;\n matched_invariants?: string[];\n}\n\n/** Lifecycle event payload. */\nexport interface LifecycleEventPayload {\n family: 'lifecycle_event';\n lifecycle_event_type?: string;\n previous_state?: string;\n new_state?: string;\n actor?: string;\n}\n\n/** Trust observation payload. */\nexport interface TrustObservationPayload {\n family: 'trust_observation';\n peer_id?: string;\n action?: string;\n success?: boolean;\n trust_delta?: number;\n trust_score?: number;\n}\n\n/** Compliance observation payload. */\nexport interface ComplianceObservationPayload {\n family: 'compliance_observation';\n framework?: string;\n compliance_score?: number;\n violation_count?: number;\n evidence_item_count?: number;\n}\n\n/** Discriminated union of all family payloads. */\nexport type RuntimeGovernancePayload =\n | PolicyDecisionPayload\n | AuditEntryPayload\n | AuthorityScopePayload\n | LifecycleEventPayload\n | TrustObservationPayload\n | ComplianceObservationPayload;\n\n/**\n * Normalized runtime governance event.\n * Generic input to issueRuntimeGovernanceRecord().\n */\nexport interface RuntimeGovernanceEvent {\n /** Specific event name (e.g., 'policy.evaluated'). */\n event_name: string;\n /** Typed, validated payload (discriminated by family). */\n payload: RuntimeGovernancePayload;\n /** Optional preserved upstream artifact context. */\n upstream?: PreservedUpstreamArtifact;\n}\n\n/** Options for issuing a runtime governance record. */\nexport interface IssueOptions {\n /** Ed25519 private key (32 bytes). Caller-provided; never stored. */\n privateKey: Uint8Array;\n /** Key ID (max 256 chars). */\n kid: string;\n /** Canonical issuer URL (HTTPS or DID). */\n issuer: string;\n /** Session identifier for event correlation. */\n sessionId: string;\n /** Agent identifier. */\n agentId: string;\n /** Provider name. Caller-supplied; never hardcoded. */\n provider: string;\n}\n\n/** Result of issuing a runtime governance record. */\nexport interface IssueResult {\n /** Compact JWS (signed Interaction Record). */\n jws: string;\n /** PEAC event type URI used. */\n type: string;\n /** Record family. */\n family: RuntimeGovernanceFamily;\n}\n\n/** Session summary aggregated from decoded receipts. */\nexport interface SessionSummary {\n /** Session identifier. */\n sessionId: string;\n /** Total receipts in the session. */\n receipts: number;\n /** Distinct families represented (sorted alphabetically). */\n families: RuntimeGovernanceFamily[];\n /** Count of receipts with unrecognized type URIs. */\n unknownTypeCount: number;\n /** Issuer (from the first receipt, or empty if no receipts). */\n issuer: string;\n}\n","/**\n * Family registry.\n *\n * Maps each RuntimeGovernanceFamily to its canonical type URI\n * and Interaction Record kind. All families produce `evidence` kind.\n */\n\nimport { EVENT_TYPES, type EventType } from './constants.js';\nimport type { RuntimeGovernanceFamily } from './types.js';\n\nexport interface FamilyEntry {\n /** Canonical type URI for this family. */\n type: EventType;\n /** Interaction Record kind. Always 'evidence' for runtime governance. */\n kind: 'evidence';\n}\n\nexport const FAMILY_REGISTRY: Record<RuntimeGovernanceFamily, FamilyEntry> = {\n policy_decision: { type: EVENT_TYPES.POLICY_DECISION, kind: 'evidence' },\n audit_entry: { type: EVENT_TYPES.AUDIT_ENTRY, kind: 'evidence' },\n authority_scope: { type: EVENT_TYPES.AUTHORITY_SCOPE, kind: 'evidence' },\n lifecycle_event: { type: EVENT_TYPES.LIFECYCLE_EVENT, kind: 'evidence' },\n trust_observation: { type: EVENT_TYPES.TRUST_OBSERVATION, kind: 'evidence' },\n compliance_observation: { type: EVENT_TYPES.COMPLIANCE_OBSERVATION, kind: 'evidence' },\n};\n","/**\n * @peac/adapter-runtime-governance normalization and validation\n *\n * Fail-closed input validation for runtime governance payloads.\n * Rejects malformed input with descriptive errors.\n *\n * These are adapter-level shape prechecks: string presence, max lengths,\n * numeric bounds, RFC 3339 format, digest grammar (algorithm:hex), and\n * URI scheme presence. Protocol-layer validation (@peac/protocol issue()\n * and @peac/schema Wire02ClaimsSchema) remains authoritative for issuer\n * canonicality, JOSE hardening, and wire-format compliance. Adapter\n * validators catch obviously malformed input before it reaches the\n * protocol layer.\n *\n * PEAC validates the structure of carried values, not upstream truth.\n * Trust scores are structurally validated (finite, 0-1000 integer)\n * but never derived, recomputed, ranked, or authoritatively assessed.\n */\n\nimport { FIELD_LIMITS } from './constants.js';\nimport { RUNTIME_GOVERNANCE_FAMILIES } from './types.js';\nimport type {\n RuntimeGovernanceFamily,\n RuntimeGovernancePayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceEvent,\n} from './types.js';\n\nexport class NormalizationError extends Error {\n constructor(\n message: string,\n public readonly field: string\n ) {\n super(message);\n this.name = 'NormalizationError';\n }\n}\n\nfunction requireString(value: unknown, field: string, maxLen: number): string {\n if (typeof value !== 'string') {\n throw new NormalizationError(`${field} must be a string`, field);\n }\n if (value.length === 0) {\n throw new NormalizationError(`${field} must not be empty`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value;\n}\n\nfunction optionalString(value: unknown, field: string, maxLen: number): string | undefined {\n if (value === undefined || value === null) return undefined;\n return requireString(value, field, maxLen);\n}\n\nfunction optionalFiniteNumber(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'number' || !Number.isFinite(value)) {\n throw new NormalizationError(`${field} must be a finite number`, field);\n }\n if (min !== undefined && value < min) {\n throw new NormalizationError(`${field} must be >= ${min}`, field);\n }\n if (max !== undefined && value > max) {\n throw new NormalizationError(`${field} must be <= ${max}`, field);\n }\n return value;\n}\n\nfunction optionalInteger(\n value: unknown,\n field: string,\n min?: number,\n max?: number\n): number | undefined {\n const n = optionalFiniteNumber(value, field, min, max);\n if (n !== undefined && !Number.isInteger(n)) {\n throw new NormalizationError(`${field} must be an integer`, field);\n }\n return n;\n}\n\nfunction optionalBoolean(value: unknown, field: string): boolean | undefined {\n if (value === undefined || value === null) return undefined;\n if (typeof value !== 'boolean') {\n throw new NormalizationError(`${field} must be a boolean`, field);\n }\n return value;\n}\n\nconst RFC3339_PATTERN = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.\\d+)?(Z|[+-]\\d{2}:\\d{2})$/;\n\nfunction optionalRfc3339(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !RFC3339_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be RFC 3339 format`, field);\n }\n return s;\n}\n\nconst DIGEST_PATTERN = /^[a-zA-Z0-9_-]+:[a-fA-F0-9]+$/;\n\nfunction optionalDigest(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !DIGEST_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must match digest pattern (algorithm:hex)`, field);\n }\n return s;\n}\n\nconst URI_PATTERN = /^[a-zA-Z][a-zA-Z0-9+.-]*:/;\n\nfunction optionalUri(value: unknown, field: string, maxLen: number): string | undefined {\n const s = optionalString(value, field, maxLen);\n if (s !== undefined && !URI_PATTERN.test(s)) {\n throw new NormalizationError(`${field} must be a valid URI`, field);\n }\n return s;\n}\n\nfunction optionalStringArray(\n value: unknown,\n field: string,\n maxLen: number,\n maxEntryLen: number\n): string[] | undefined {\n if (value === undefined || value === null) return undefined;\n if (!Array.isArray(value)) {\n throw new NormalizationError(`${field} must be an array`, field);\n }\n if (value.length > maxLen) {\n throw new NormalizationError(`${field} exceeds max length ${maxLen}`, field);\n }\n return value.map((entry, i) => requireString(entry, `${field}[${i}]`, maxEntryLen));\n}\n\nfunction normalizePolicyDecision(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'policy_decision',\n action: requireString(input.action, 'action', FIELD_LIMITS.maxString),\n matched_rule: optionalString(input.matched_rule, 'matched_rule', FIELD_LIMITS.maxString),\n policy_name: optionalString(input.policy_name, 'policy_name', FIELD_LIMITS.maxString),\n reason: optionalString(input.reason, 'reason', FIELD_LIMITS.maxString),\n evaluation_ms: optionalFiniteNumber(input.evaluation_ms, 'evaluation_ms', 0),\n };\n}\n\nfunction normalizeAuditEntry(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'audit_entry',\n entry_id: optionalString(input.entry_id, 'entry_id', FIELD_LIMITS.maxIdentifier),\n event_type: optionalString(input.event_type, 'event_type', FIELD_LIMITS.maxString),\n outcome: optionalString(input.outcome, 'outcome', FIELD_LIMITS.maxString),\n previous_hash: optionalDigest(input.previous_hash, 'previous_hash', FIELD_LIMITS.maxDigest),\n entry_hash: optionalDigest(input.entry_hash, 'entry_hash', FIELD_LIMITS.maxDigest),\n trace_id: optionalString(input.trace_id, 'trace_id', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeAuthorityScope(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'authority_scope',\n decision: optionalString(input.decision, 'decision', FIELD_LIMITS.maxString),\n effective_scope: optionalStringArray(\n input.effective_scope,\n 'effective_scope',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n trust_tier: optionalString(input.trust_tier, 'trust_tier', FIELD_LIMITS.maxString),\n matched_invariants: optionalStringArray(\n input.matched_invariants,\n 'matched_invariants',\n FIELD_LIMITS.maxArrayLength,\n FIELD_LIMITS.maxArrayEntry\n ),\n };\n}\n\nfunction normalizeLifecycleEvent(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'lifecycle_event',\n lifecycle_event_type: optionalString(\n input.lifecycle_event_type,\n 'lifecycle_event_type',\n FIELD_LIMITS.maxString\n ),\n previous_state: optionalString(input.previous_state, 'previous_state', FIELD_LIMITS.maxString),\n new_state: optionalString(input.new_state, 'new_state', FIELD_LIMITS.maxString),\n actor: optionalString(input.actor, 'actor', FIELD_LIMITS.maxIdentifier),\n };\n}\n\nfunction normalizeTrustObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'trust_observation',\n peer_id: optionalString(input.peer_id, 'peer_id', FIELD_LIMITS.maxIdentifier),\n action: optionalString(input.action, 'action', FIELD_LIMITS.maxString),\n success: optionalBoolean(input.success, 'success'),\n trust_delta: optionalInteger(input.trust_delta, 'trust_delta', -1000, 1000),\n trust_score: optionalInteger(input.trust_score, 'trust_score', 0, 1000),\n };\n}\n\nfunction normalizeComplianceObservation(input: Record<string, unknown>): RuntimeGovernancePayload {\n return {\n family: 'compliance_observation',\n framework: optionalString(input.framework, 'framework', FIELD_LIMITS.maxFramework),\n compliance_score: optionalFiniteNumber(input.compliance_score, 'compliance_score', 0, 100),\n violation_count: optionalInteger(input.violation_count, 'violation_count', 0),\n evidence_item_count: optionalInteger(input.evidence_item_count, 'evidence_item_count', 0),\n };\n}\n\nconst FAMILY_NORMALIZERS: Record<\n RuntimeGovernanceFamily,\n (input: Record<string, unknown>) => RuntimeGovernancePayload\n> = {\n policy_decision: normalizePolicyDecision,\n audit_entry: normalizeAuditEntry,\n authority_scope: normalizeAuthorityScope,\n lifecycle_event: normalizeLifecycleEvent,\n trust_observation: normalizeTrustObservation,\n compliance_observation: normalizeComplianceObservation,\n};\n\nfunction normalizeUpstream(input: unknown): PreservedUpstreamArtifact | undefined {\n if (input === undefined || input === null) return undefined;\n if (typeof input !== 'object' || Array.isArray(input)) {\n throw new NormalizationError('upstream must be a plain object', 'upstream');\n }\n const obj = input as Record<string, unknown>;\n return {\n source_system: optionalString(\n obj.source_system,\n 'upstream.source_system',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_type: optionalString(\n obj.source_event_type,\n 'upstream.source_event_type',\n FIELD_LIMITS.maxIdentifier\n ),\n source_event_id: optionalString(\n obj.source_event_id,\n 'upstream.source_event_id',\n FIELD_LIMITS.maxIdentifier\n ),\n source_timestamp: optionalRfc3339(\n obj.source_timestamp,\n 'upstream.source_timestamp',\n FIELD_LIMITS.maxTimestamp\n ),\n source_artifact_hash: optionalDigest(\n obj.source_artifact_hash,\n 'upstream.source_artifact_hash',\n FIELD_LIMITS.maxDigest\n ),\n source_artifact_ref: optionalUri(\n obj.source_artifact_ref,\n 'upstream.source_artifact_ref',\n FIELD_LIMITS.maxUri\n ),\n source_cloud_event_type: optionalString(\n obj.source_cloud_event_type,\n 'upstream.source_cloud_event_type',\n FIELD_LIMITS.maxCloudEventType\n ),\n };\n}\n\n/**\n * Normalize and validate a raw runtime governance event input.\n * Fail-closed: rejects malformed input with descriptive errors.\n */\nexport function normalizeRuntimeGovernanceEvent(input: unknown): RuntimeGovernanceEvent {\n if (typeof input !== 'object' || input === null || Array.isArray(input)) {\n throw new NormalizationError('input must be a plain object', 'input');\n }\n const obj = input as Record<string, unknown>;\n\n const eventName = requireString(obj.event_name, 'event_name', FIELD_LIMITS.maxString);\n\n if (typeof obj.payload !== 'object' || obj.payload === null || Array.isArray(obj.payload)) {\n throw new NormalizationError('payload must be a plain object', 'payload');\n }\n const payloadObj = obj.payload as Record<string, unknown>;\n\n const family = payloadObj.family;\n if (\n typeof family !== 'string' ||\n !(RUNTIME_GOVERNANCE_FAMILIES as readonly string[]).includes(family)\n ) {\n throw new NormalizationError(\n `payload.family must be one of: ${RUNTIME_GOVERNANCE_FAMILIES.join(', ')}`,\n 'payload.family'\n );\n }\n\n const normalizer = FAMILY_NORMALIZERS[family as RuntimeGovernanceFamily];\n const payload = normalizer(payloadObj);\n\n return {\n event_name: eventName,\n payload,\n upstream: normalizeUpstream(obj.upstream),\n };\n}\n","/**\n * The PEAC `kid` rule: a non-empty, well-formed Unicode string whose UTF-8 serialization is at\n * most MAX_KID_UTF8_BYTES bytes. RFC 7515 leaves the structure of `kid` unspecified; the bound\n * and well-formedness requirements are PEAC application-level constraints.\n *\n * Adapter-private. The authoritative implementation lives in `@peac/crypto` (`src/kid.ts`) and is\n * not part of its public surface, so the rule is restated here and a behavioural parity test holds\n * the two implementations identical. The bound is measured in UTF-8 bytes rather than UTF-16 code\n * units: 256 UTF-16 code units consisting of supplementary-plane characters serialize to 512 UTF-8\n * bytes. A serialized-byte bound is portable across implementations.\n */\n\n/** Maximum `kid` length, measured as UTF-8 bytes of the string's serialization. */\nexport const MAX_KID_UTF8_BYTES = 256;\n\n/** True when every surrogate in `s` belongs to a well-formed pair. */\nexport function isWellFormedUnicode(s: string): boolean {\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c >= 0xd800 && c <= 0xdbff) {\n const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;\n if (next < 0xdc00 || next > 0xdfff) return false;\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * UTF-8 byte length of a well-formed string. Throws on malformed UTF-16 so callers cannot silently\n * replace an unpaired surrogate with U+FFFD during UTF-8 encoding and thereby change the supplied\n * identifier.\n */\nexport function utf8ByteLength(s: string): number {\n let n = 0;\n for (let i = 0; i < s.length; i++) {\n const c = s.charCodeAt(i);\n if (c < 0x80) n += 1;\n else if (c < 0x800) n += 2;\n else if (c >= 0xd800 && c <= 0xdbff) {\n const next = i + 1 < s.length ? s.charCodeAt(i + 1) : 0;\n if (next < 0xdc00 || next > 0xdfff) {\n throw new TypeError('utf8ByteLength: unpaired high surrogate');\n }\n n += 4;\n i++;\n } else if (c >= 0xdc00 && c <= 0xdfff) {\n throw new TypeError('utf8ByteLength: unpaired low surrogate');\n } else n += 3;\n }\n return n;\n}\n\n/** The complete PEAC `kid` rule. */\nexport function isValidKid(kid: unknown): kid is string {\n if (typeof kid !== 'string' || kid.length === 0) return false;\n if (!isWellFormedUnicode(kid)) return false;\n return utf8ByteLength(kid) <= MAX_KID_UTF8_BYTES;\n}\n","/**\n * @peac/adapter-runtime-governance extension builders\n *\n * Explicit per-family extension data builders. Each builder selects\n * exactly which fields appear in the extension output. Unknown upstream\n * fields never become top-level extension keys.\n */\n\nimport type {\n RuntimeGovernancePayload,\n PolicyDecisionPayload,\n AuditEntryPayload,\n AuthorityScopePayload,\n LifecycleEventPayload,\n TrustObservationPayload,\n ComplianceObservationPayload,\n PreservedUpstreamArtifact,\n RuntimeGovernanceFamily,\n} from './types.js';\n\ninterface CommonFields {\n session_id: string;\n event: string;\n agent_id: string;\n provider: string;\n}\n\nfunction stripUndefined(obj: Record<string, unknown>): Record<string, unknown> {\n const result: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(obj)) {\n if (value !== undefined) {\n if (typeof value === 'object' && value !== null && !Array.isArray(value)) {\n const nested = stripUndefined(value as Record<string, unknown>);\n if (Object.keys(nested).length > 0) {\n result[key] = nested;\n }\n } else {\n result[key] = value;\n }\n }\n }\n return result;\n}\n\nfunction buildPolicyDecisionExtension(\n payload: PolicyDecisionPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n action: payload.action,\n matched_rule: payload.matched_rule,\n policy_name: payload.policy_name,\n reason: payload.reason,\n evaluation_ms: payload.evaluation_ms,\n upstream,\n });\n}\n\nfunction buildAuditEntryExtension(\n payload: AuditEntryPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n entry_id: payload.entry_id,\n event_type: payload.event_type,\n outcome: payload.outcome,\n previous_hash: payload.previous_hash,\n entry_hash: payload.entry_hash,\n trace_id: payload.trace_id,\n upstream,\n });\n}\n\nfunction buildAuthorityScopeExtension(\n payload: AuthorityScopePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n decision: payload.decision,\n effective_scope: payload.effective_scope,\n trust_tier: payload.trust_tier,\n matched_invariants: payload.matched_invariants,\n upstream,\n });\n}\n\nfunction buildLifecycleEventExtension(\n payload: LifecycleEventPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n lifecycle_event_type: payload.lifecycle_event_type,\n previous_state: payload.previous_state,\n new_state: payload.new_state,\n actor: payload.actor,\n upstream,\n });\n}\n\nfunction buildTrustObservationExtension(\n payload: TrustObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n peer_id: payload.peer_id,\n action: payload.action,\n success: payload.success,\n trust_delta: payload.trust_delta,\n trust_score: payload.trust_score,\n upstream,\n });\n}\n\nfunction buildComplianceObservationExtension(\n payload: ComplianceObservationPayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n): Record<string, unknown> {\n return stripUndefined({\n ...common,\n framework: payload.framework,\n compliance_score: payload.compliance_score,\n violation_count: payload.violation_count,\n evidence_item_count: payload.evidence_item_count,\n upstream,\n });\n}\n\ntype ExtensionBuilder = (\n payload: RuntimeGovernancePayload,\n common: CommonFields,\n upstream?: PreservedUpstreamArtifact\n) => Record<string, unknown>;\n\n/**\n * Per-family extension builder registry.\n * issueRuntimeGovernanceRecord() dispatches to the correct builder.\n */\nexport const FAMILY_BUILDERS: Record<RuntimeGovernanceFamily, ExtensionBuilder> = {\n policy_decision: (p, c, u) => buildPolicyDecisionExtension(p as PolicyDecisionPayload, c, u),\n audit_entry: (p, c, u) => buildAuditEntryExtension(p as AuditEntryPayload, c, u),\n authority_scope: (p, c, u) => buildAuthorityScopeExtension(p as AuthorityScopePayload, c, u),\n lifecycle_event: (p, c, u) => buildLifecycleEventExtension(p as LifecycleEventPayload, c, u),\n trust_observation: (p, c, u) =>\n buildTrustObservationExtension(p as TrustObservationPayload, c, u),\n compliance_observation: (p, c, u) =>\n buildComplianceObservationExtension(p as ComplianceObservationPayload, c, u),\n};\n","/**\n * @peac/adapter-runtime-governance record issuance\n *\n * Generic issuance function that dispatches to per-family extension\n * builders. Source-specific mappers (e.g., mapAgtEvent) produce the\n * RuntimeGovernanceEvent input; this function handles signing.\n *\n * PEAC validates the structure and signature of the PEAC record,\n * not the truth of the upstream governance decision or the operating\n * effectiveness of the upstream control plane.\n */\n\nimport { issue } from '@peac/protocol';\nimport { isValidKid } from './internal/kid.js';\nimport { EXTENSION_NAMESPACE } from './constants.js';\nimport { FAMILY_REGISTRY } from './families.js';\nimport { FAMILY_BUILDERS } from './builders.js';\nimport type { RuntimeGovernanceEvent, IssueOptions, IssueResult } from './types.js';\n\n/**\n * Issue a signed Interaction Record for a normalized runtime governance event.\n *\n * Use source-specific mappers (e.g., mapAgtEvent) to produce the event input.\n * The provider field is always caller-supplied and never hardcoded.\n */\nfunction validateIssueOptions(options: IssueOptions): void {\n if (!(options.privateKey instanceof Uint8Array) || options.privateKey.length !== 32) {\n throw new Error('privateKey must be a 32-byte Uint8Array');\n }\n if (!isValidKid(options.kid)) {\n throw new Error(\n 'kid must be a non-empty, well-formed Unicode string of at most 256 UTF-8 bytes'\n );\n }\n if (typeof options.issuer !== 'string' || options.issuer.length === 0) {\n throw new Error('issuer must be a non-empty string');\n }\n if (\n typeof options.sessionId !== 'string' ||\n options.sessionId.length === 0 ||\n options.sessionId.length > 256\n ) {\n throw new Error('sessionId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.agentId !== 'string' ||\n options.agentId.length === 0 ||\n options.agentId.length > 256\n ) {\n throw new Error('agentId must be a non-empty string (max 256 chars)');\n }\n if (\n typeof options.provider !== 'string' ||\n options.provider.length === 0 ||\n options.provider.length > 256\n ) {\n throw new Error('provider must be a non-empty string (max 256 chars)');\n }\n}\n\nexport async function issueRuntimeGovernanceRecord(\n event: RuntimeGovernanceEvent,\n options: IssueOptions\n): Promise<IssueResult> {\n validateIssueOptions(options);\n const entry = FAMILY_REGISTRY[event.payload.family];\n const { privateKey, kid, issuer, sessionId, agentId, provider } = options;\n\n const common = {\n session_id: sessionId,\n event: event.event_name,\n agent_id: agentId,\n provider,\n };\n\n const extensionData = FAMILY_BUILDERS[event.payload.family](\n event.payload,\n common,\n event.upstream\n );\n\n const { jws } = await issue({\n iss: issuer,\n kind: entry.kind,\n type: entry.type,\n privateKey,\n kid,\n extensions: { [EXTENSION_NAMESPACE]: extensionData },\n });\n\n return { jws, type: entry.type, family: event.payload.family };\n}\n","/**\n * @peac/adapter-runtime-governance session summary builder\n *\n * Aggregates decoded receipts into a session summary.\n * Decode-only (does NOT verify signatures; caller should verify first).\n * Returns deterministic family order (sorted alphabetically).\n * Counts unknown/unsupported type URIs separately.\n * Never implies verification or finality.\n */\n\nimport { decode } from '@peac/crypto';\nimport { EXTENSION_NAMESPACE, TYPE_PREFIX } from './constants.js';\nimport {\n RUNTIME_GOVERNANCE_FAMILIES,\n type RuntimeGovernanceFamily,\n type SessionSummary,\n} from './types.js';\n\n/** Reverse lookup set for known family suffixes. */\nconst KNOWN_SUFFIXES = new Set(RUNTIME_GOVERNANCE_FAMILIES.map((f) => f.replace(/_/g, '-')));\n\n/**\n * Build a session summary from an array of signed JWS receipts.\n *\n * Decodes each JWS (does NOT verify signatures; caller should verify first).\n * Extracts session ID, families, and issuer from claims and extensions.\n * Unknown type URIs are counted but not included in the families list.\n *\n * @param receipts - Array of compact JWS strings (must be valid JWS format)\n * @returns Session summary with deterministic family ordering\n */\nexport function buildSessionSummary(receipts: string[]): SessionSummary {\n if (receipts.length === 0) {\n return { sessionId: '', receipts: 0, families: [], unknownTypeCount: 0, issuer: '' };\n }\n\n let sessionId = '';\n let issuer = '';\n let unknownTypeCount = 0;\n const familySet = new Set<RuntimeGovernanceFamily>();\n\n for (const jws of receipts) {\n const decoded = decode(jws);\n const claims = decoded.payload as Record<string, unknown>;\n\n if (!issuer && typeof claims.iss === 'string') {\n issuer = claims.iss;\n }\n\n const extensions = claims.extensions as Record<string, unknown> | undefined;\n const govExt = extensions?.[EXTENSION_NAMESPACE] as Record<string, unknown> | undefined;\n\n if (govExt) {\n if (!sessionId && typeof govExt.session_id === 'string') {\n sessionId = govExt.session_id;\n }\n }\n\n const type = claims.type as string | undefined;\n if (type?.startsWith(TYPE_PREFIX)) {\n const suffix = type.slice(TYPE_PREFIX.length);\n if (KNOWN_SUFFIXES.has(suffix)) {\n familySet.add(suffix.replace(/-/g, '_') as RuntimeGovernanceFamily);\n } else {\n unknownTypeCount++;\n }\n } else if (type) {\n unknownTypeCount++;\n }\n }\n\n return {\n sessionId,\n receipts: receipts.length,\n families: [...familySet].sort(),\n unknownTypeCount,\n issuer,\n };\n}\n","/**\n * AGT-specific mapper\n *\n * Normalizes AGT-shaped JSON input into the generic\n * RuntimeGovernanceEvent model. Accepts raw JSON (not AGT SDK objects).\n *\n * Pinned to AGT v3.1.0 pre-release documentation (as of 2026-04-13).\n */\n\nimport { normalizeRuntimeGovernanceEvent, NormalizationError } from '../normalize.js';\nimport type { RuntimeGovernanceEvent, RuntimeGovernanceFamily } from '../types.js';\n\n/** AGT-shaped input. Raw JSON, not SDK objects. */\nexport interface AgtEventInput {\n /** Family name matching a RuntimeGovernanceFamily. */\n family: string;\n /** Specific event name (e.g., 'policy.evaluated'). */\n event: string;\n /** Event-specific data fields. */\n data: Record<string, unknown>;\n /** Optional upstream source context. */\n source?: {\n system?: string;\n event_type?: string;\n event_id?: string;\n timestamp?: string;\n artifact_hash?: string;\n artifact_ref?: string;\n cloud_event_type?: string;\n };\n}\n\nconst AGT_FAMILY_MAP: Record<string, RuntimeGovernanceFamily> = {\n policy_decision: 'policy_decision',\n audit_entry: 'audit_entry',\n authority_scope: 'authority_scope',\n lifecycle_event: 'lifecycle_event',\n trust_observation: 'trust_observation',\n compliance_observation: 'compliance_observation',\n};\n\n/**\n * Map an AGT-shaped event input to a normalized RuntimeGovernanceEvent.\n * Throws NormalizationError on unrecognized or malformed input.\n */\nexport function mapAgtEvent(input: AgtEventInput): RuntimeGovernanceEvent {\n const family = AGT_FAMILY_MAP[input.family];\n if (!family) {\n throw new NormalizationError(`unrecognized AGT family: ${input.family}`, 'family');\n }\n\n const raw = {\n event_name: input.event,\n payload: {\n family,\n ...input.data,\n },\n upstream: input.source\n ? {\n source_system: input.source.system,\n source_event_type: input.source.event_type,\n source_event_id: input.source.event_id,\n source_timestamp: input.source.timestamp,\n source_artifact_hash: input.source.artifact_hash,\n source_artifact_ref: input.source.artifact_ref,\n source_cloud_event_type: input.source.cloud_event_type,\n }\n : undefined,\n };\n\n return normalizeRuntimeGovernanceEvent(raw);\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The PEAC `kid` rule: a non-empty, well-formed Unicode string whose UTF-8 serialization is at
|
|
3
|
+
* most MAX_KID_UTF8_BYTES bytes. RFC 7515 leaves the structure of `kid` unspecified; the bound
|
|
4
|
+
* and well-formedness requirements are PEAC application-level constraints.
|
|
5
|
+
*
|
|
6
|
+
* Adapter-private. The authoritative implementation lives in `@peac/crypto` (`src/kid.ts`) and is
|
|
7
|
+
* not part of its public surface, so the rule is restated here and a behavioural parity test holds
|
|
8
|
+
* the two implementations identical. The bound is measured in UTF-8 bytes rather than UTF-16 code
|
|
9
|
+
* units: 256 UTF-16 code units consisting of supplementary-plane characters serialize to 512 UTF-8
|
|
10
|
+
* bytes. A serialized-byte bound is portable across implementations.
|
|
11
|
+
*/
|
|
12
|
+
/** Maximum `kid` length, measured as UTF-8 bytes of the string's serialization. */
|
|
13
|
+
export declare const MAX_KID_UTF8_BYTES = 256;
|
|
14
|
+
/** True when every surrogate in `s` belongs to a well-formed pair. */
|
|
15
|
+
export declare function isWellFormedUnicode(s: string): boolean;
|
|
16
|
+
/**
|
|
17
|
+
* UTF-8 byte length of a well-formed string. Throws on malformed UTF-16 so callers cannot silently
|
|
18
|
+
* replace an unpaired surrogate with U+FFFD during UTF-8 encoding and thereby change the supplied
|
|
19
|
+
* identifier.
|
|
20
|
+
*/
|
|
21
|
+
export declare function utf8ByteLength(s: string): number;
|
|
22
|
+
/** The complete PEAC `kid` rule. */
|
|
23
|
+
export declare function isValidKid(kid: unknown): kid is string;
|
|
24
|
+
//# sourceMappingURL=kid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kid.d.ts","sourceRoot":"","sources":["../../src/internal/kid.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,mFAAmF;AACnF,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAEtC,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAYtD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBhD;AAED,oCAAoC;AACpC,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,MAAM,CAItD"}
|
package/dist/issue.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"issue.d.ts","sourceRoot":"","sources":["../src/issue.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AA2CpF,wBAAsB,4BAA4B,CAChD,KAAK,EAAE,sBAAsB,EAC7B,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,WAAW,CAAC,CA4BtB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@peac/adapter-runtime-governance",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.4",
|
|
4
4
|
"description": "Runtime governance adapter for PEAC interaction records with AGT mapper",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"node": ">=22.0.0"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@peac/crypto": "0.16.
|
|
43
|
-
"@peac/protocol": "0.16.
|
|
42
|
+
"@peac/crypto": "0.16.4",
|
|
43
|
+
"@peac/protocol": "0.16.4"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@types/node": "^22.0.0",
|