From 3a73d650d6b4c4a6ab050872da16f4c9af1ef7f8 Mon Sep 17 00:00:00 2001 From: Jan Klass Date: Mon, 26 Jan 2026 18:11:42 +0100 Subject: [PATCH 1/5] Drop editorconfig EOL configuration (#5316) The `.gitattributes` configures `text=auto`. This means text files will use, unless already committed differently in the repo, auto-convert line endings. My VS created mixed line endings even when duplicating existing lines. For now, revert the EOL configuration to restore previous behavior consistent to the gitattributes configuration. IMO, it would be preferable to use intentional EOL configuration without depending on auto-conversion, which has complex conditions and is error-prone. But this change does not do that (yet). --- .editorconfig | 3 --- 1 file changed, 3 deletions(-) diff --git a/.editorconfig b/.editorconfig index 33ef2a3bec6..857e0f57419 100644 --- a/.editorconfig +++ b/.editorconfig @@ -28,19 +28,16 @@ indent_size = 4 indent_style = tab [Web.config] -end_of_line = crlf charset = utf-8 indent_style = space indent_size = 4 insert_final_newline = true [packages.config] -end_of_line = crlf charset = utf-8-bom indent_style = space indent_size = 2 insert_final_newline = false [.editorconfig] -end_of_line = crlf charset = utf-8 From fb4cd37e5a42ef507f4982d2d99232e74b59329e Mon Sep 17 00:00:00 2001 From: "Lars K.L." Date: Mon, 26 Jan 2026 18:12:43 +0100 Subject: [PATCH 2/5] Update kya.json (#5315) add KYA add KYA Update kya.json Update kya.json removed punctuation Update catalog.json Update catalog.json Update kya.json --- .github/CODEOWNERS | 5 + src/api/json/catalog.json | 15 + src/schemas/json/kya.json | 954 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 974 insertions(+) create mode 100644 src/schemas/json/kya.json diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 1ed1c20faf5..637dbadabca 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -75,3 +75,8 @@ src/negative_test/convex/ @ianmacartney @thomasballinger @Nicolapps src/schemas/json/popxf-* @peterstangl @alekssmolkovic @kenmimasu src/test/popxf-* @peterstangl @alekssmolkovic @kenmimasu src/negative_test/popxf-* @peterstangl @alekssmolkovic @kenmimasu + +# Managed by Open-KYA Team: +src/schemas/json/kya.json @wp-lkl +src/test/kya/ @wp-lkl +src/negative_test/kya/ @wp-lkl diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 9edc04dc022..8431efb8e92 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -8317,6 +8317,21 @@ "fileMatch": ["*.ksy"], "url": "https://raw.githubusercontent.com/kaitai-io/ksy_schema/master/ksy_schema.json" }, + { + "name": "KYA Manifest", + "description": "Know Your Agent (KYA) Manifest for autonomous AI agents (identity, governance, and operational constraints)", + "fileMatch": [ + "kya-manifest.json", + "kya.json", + "*.kya.json", + "kya-manifest.schema.json" + ], + "url": "https://www.schemastore.org/kya.json", + "versions": { + "development": "https://raw.githubusercontent.com/open-kya/kya-standard/main/schema/kya-manifest.schema.json", + "1.0": "https://raw.githubusercontent.com/open-kya/kya-standard/v1.0/schema/kya-manifest.schema.json" + } + }, { "name": "Cloud Foundry Application Manifest", "description": "A manifest describes a Cloud Foundry application and can be used to deploy it to a Foundation", diff --git a/src/schemas/json/kya.json b/src/schemas/json/kya.json new file mode 100644 index 00000000000..3fcc951c292 --- /dev/null +++ b/src/schemas/json/kya.json @@ -0,0 +1,954 @@ +{ + "$schema": "http://json-schema.org/draft-07/schema#", + "$id": "https://w3id.org/kya/v1/schema", + "$defs": { + "uri": { + "title": "URI", + "description": "A URI value.", + "type": "string", + "format": "uri" + }, + "did": { + "title": "Decentralized Identifier", + "description": "A DID string per the DID URI scheme.", + "type": "string", + "pattern": "^did:[a-z0-9]+:.*$" + }, + "hex": { + "title": "Hex String", + "description": "A hex-encoded string.", + "type": "string", + "pattern": "^[A-Fa-f0-9]+$" + }, + "sha256Hex": { + "title": "SHA-256 Hex Digest", + "description": "A 32-byte SHA-256 digest encoded as 64 hex characters.", + "type": "string", + "pattern": "^[A-Fa-f0-9]{64}$" + }, + "dateTime": { + "title": "Date-Time", + "description": "An RFC 3339 date-time string.", + "type": "string", + "format": "date-time" + }, + "duration": { + "title": "Duration", + "description": "A compact duration string (e.g., 30d, 12h, 60m).", + "type": "string", + "pattern": "^[0-9]+[smhdwy]$" + }, + "verificationMethod": { + "title": "Verification Method", + "description": "A DID verification method entry (key material and controller).", + "type": "object", + "required": ["id", "type", "controller", "publicKeyMultibase"], + "properties": { + "id": { "$ref": "#/$defs/uri" }, + "type": { "type": "string", "minLength": 1 }, + "controller": { "$ref": "#/$defs/did" }, + "publicKeyMultibase": { "type": "string", "minLength": 1 } + }, + "additionalProperties": true + }, + "legal": { + "title": "Legal Metadata", + "description": "Legal terms reference and dispute resolution configuration.", + "type": "object", + "properties": { + "termsUri": { "$ref": "#/$defs/uri" }, + "termsHash": { "$ref": "#/$defs/sha256Hex" }, + "disputeResolution": { + "type": "array", + "items": { "$ref": "#/$defs/disputeResolutionPath" } + } + }, + "additionalProperties": true + }, + "disputeResolutionPath": { + "title": "Dispute Resolution Path", + "description": "One dispute resolution mechanism, ordered by priority.", + "type": "object", + "properties": { + "priority": { "type": "integer", "minimum": 1 }, + "mechanism": { + "type": "string", + "enum": [ + "onChain", + "digitalLegalFiling", + "analogCourt", + "arbitrator", + "ai", + "aiHitl" + ] + }, + "entity": { + "oneOf": [{ "type": "string", "minLength": 1 }, { "type": "object" }] + }, + "escalationPossible": { "type": "boolean" } + }, + "additionalProperties": true + }, + "operatingLimits": { + "title": "Operating Limits", + "description": "Limits expressed over rolling time windows (e.g., spend per period).", + "type": "object", + "properties": { + "periodSpendLimit": { "type": "integer", "minimum": 0 }, + "periodDuration": { "$ref": "#/$defs/duration" } + }, + "additionalProperties": true + }, + "signingPolicy": { + "title": "Signing Policy", + "description": "Constraints describing signature thresholds by intent and conditions.", + "type": "object", + "required": ["defaultSignaturesRequired"], + "properties": { + "defaultSignaturesRequired": { "type": "integer", "minimum": 1 }, + "constraints": { + "type": "array", + "items": { "$ref": "#/$defs/signingConstraint" } + } + }, + "additionalProperties": true + }, + "signingConstraint": { + "title": "Signing Constraint", + "description": "An intent-scoped signing rule and its signature requirement.", + "type": "object", + "required": ["intent", "requirement"], + "properties": { + "intent": { "type": "string", "minLength": 1 }, + "condition": { "type": "object" }, + "requirement": { + "type": "object", + "required": ["threshold", "signers"], + "properties": { + "threshold": { "type": "integer", "minimum": 1 }, + "signers": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + } + }, + "additionalProperties": true + } + }, + "additionalProperties": true + }, + "deployment": { + "title": "Deployment", + "description": "Deployment policy and confidential compute (TEE) constraints.", + "type": "object", + "properties": { + "info": { "type": "string" }, + "updatePolicy": { + "type": "string", + "enum": ["immutable", "signedRelease"] + }, + "authoritativeSigner": { "$ref": "#/$defs/did" }, + "tee": { "$ref": "#/$defs/tee" } + }, + "required": ["tee"], + "allOf": [ + { + "if": { + "type": "object", + "properties": { "updatePolicy": { "const": "immutable" } }, + "required": ["updatePolicy"] + }, + "then": { + "type": "object", + "properties": { + "tee": { + "type": "object", + "required": ["measurementHash"], + "properties": { + "measurementHash": { "$ref": "#/$defs/hex" } + } + } + } + } + }, + { + "if": { + "type": "object", + "properties": { "updatePolicy": { "const": "signedRelease" } }, + "required": ["updatePolicy"] + }, + "then": { + "type": "object", + "required": ["authoritativeSigner"], + "properties": { + "authoritativeSigner": { "$ref": "#/$defs/did" }, + "tee": { + "type": "object", + "required": ["signerHash", "minimumSvn"], + "properties": { + "signerHash": { "$ref": "#/$defs/hex" }, + "minimumSvn": { "type": "integer", "minimum": 0 } + } + } + } + } + } + ], + "additionalProperties": true + }, + "tee": { + "title": "Trusted Execution Environment", + "description": "Confidential compute parameters used to bind an agent deployment to verifiable hardware attestation.", + "type": "object", + "required": ["framework"], + "properties": { + "hardwareLabel": { "type": "string" }, + "framework": { + "type": "string", + "enum": ["sevSnp", "tdx", "sgx", "nitro"] + }, + "measurementHash": { "$ref": "#/$defs/hex" }, + "signerHash": { "$ref": "#/$defs/hex" }, + "minimumSvn": { "type": "integer", "minimum": 0 }, + "allowDebug": { "type": "boolean" }, + "attestationUri": { "$ref": "#/$defs/uri" }, + "bindingMechanism": { + "type": "string", + "enum": ["reportData", "pubkeyHash"] + } + }, + "additionalProperties": true + }, + "governance": { + "title": "Governance", + "description": "Governance endpoints, validity interval, visibility, and oracle configuration.", + "type": "object", + "required": ["controlUri"], + "properties": { + "controlUri": { "$ref": "#/$defs/uri" }, + "validFrom": { "$ref": "#/$defs/dateTime" }, + "validUntil": { "$ref": "#/$defs/dateTime" }, + "pulseInterval": { "type": "integer", "minimum": 1 }, + "visibility": { + "type": "string", + "enum": ["public", "private", "permissioned"] + }, + "statusUri": { "$ref": "#/$defs/uri" }, + "telemetryUri": { "$ref": "#/$defs/uri" }, + "oracles": { + "type": "array", + "items": { "$ref": "#/$defs/oracle" } + } + }, + "additionalProperties": true + }, + "oracle": { + "title": "Oracle", + "description": "A governance oracle definition used for external inputs (e.g., prices, FX rates, attestations).", + "type": "object", + "required": ["id", "serviceEndpoint", "purpose"], + "properties": { + "id": { "type": "string", "minLength": 1 }, + "serviceEndpoint": { + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/uri" }, + "uniqueItems": true + }, + "providerDid": { "$ref": "#/$defs/did" }, + "purpose": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "role": { + "type": "string", + "enum": ["primary", "backup", "validator"] + }, + "safetyBounds": { + "title": "Oracle Safety Bounds", + "description": "Optional bounds for oracle freshness, deviation, and confidence.", + "type": "object", + "properties": { + "maxStaleness": { "type": "integer", "minimum": 0 }, + "maxDeviation": { "type": "number", "minimum": 0 }, + "slippageTolerance": { "type": "number", "minimum": 0 }, + "minConfidence": { "type": "number", "minimum": 0, "maximum": 1 } + }, + "additionalProperties": true + } + }, + "additionalProperties": true + }, + "treasuryItem": { + "title": "Treasury Item", + "description": "A treasury identifier and its intended operational usage.", + "type": "object", + "required": ["id", "assetHints", "networks", "usage"], + "properties": { + "id": { "$ref": "#/$defs/uri" }, + "assetHints": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "networks": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "usage": { + "type": "string", + "enum": ["operational", "reserve", "escrow", "receivable"] + } + }, + "additionalProperties": true + }, + "verifiableCredentialEntry": { + "title": "Verifiable Credential Entry", + "description": "Either an embedded VC payload or a referenced VC by digest.", + "oneOf": [ + { "$ref": "#/$defs/embeddedVc" }, + { "$ref": "#/$defs/referencedVc" } + ] + }, + "embeddedVc": { + "title": "Embedded Verifiable Credential", + "description": "A VC embedded directly in the manifest.", + "type": "object", + "required": ["id", "type", "issuer", "credentialSubject", "proof"], + "properties": { + "id": { "$ref": "#/$defs/uri" }, + "type": { + "type": "array", + "minItems": 1, + "items": { "type": "string" }, + "contains": { "const": "VerifiableCredential" } + }, + "issuer": { "$ref": "#/$defs/did" }, + "validFrom": { "$ref": "#/$defs/dateTime" }, + "issuanceDate": { "$ref": "#/$defs/dateTime" }, + "validUntil": { "$ref": "#/$defs/dateTime" }, + "credentialStatus": { "type": "object" }, + "credentialSubject": {}, + "challengeService": { + "type": "array", + "items": { "$ref": "#/$defs/challengeService" } + }, + "evidence": { + "type": "array", + "items": { "$ref": "#/$defs/evidenceItem" } + }, + "proof": {} + }, + "allOf": [ + { + "anyOf": [ + { + "type": "object", + "required": ["validFrom"], + "properties": { "validFrom": { "$ref": "#/$defs/dateTime" } } + }, + { + "type": "object", + "required": ["issuanceDate"], + "properties": { "issuanceDate": { "$ref": "#/$defs/dateTime" } } + } + ] + }, + { + "not": { + "anyOf": [ + { + "type": "object", + "required": ["digestMultibase"], + "properties": { "digestMultibase": { "type": "string" } } + }, + { + "type": "object", + "required": ["location"], + "properties": { "location": { "$ref": "#/$defs/uri" } } + } + ] + } + }, + { "$ref": "#/$defs/vcPayloadDispatch" } + ], + "additionalProperties": true + }, + "referencedVc": { + "title": "Referenced Verifiable Credential", + "description": "A VC referenced by digest (and optionally a retrievable location).", + "type": "object", + "required": ["id", "type", "issuer", "digestMultibase"], + "properties": { + "id": { "$ref": "#/$defs/uri" }, + "type": { + "type": "array", + "minItems": 1, + "items": { "type": "string" }, + "contains": { "const": "VerifiableCredential" } + }, + "issuer": { "$ref": "#/$defs/did" }, + "digestMultibase": { "type": "string", "minLength": 1 }, + "location": { "$ref": "#/$defs/uri" } + }, + "additionalProperties": true + }, + "challengeService": { + "title": "Challenge Service", + "description": "A verifier challenge protocol or endpoint used to validate an embedded claim (e.g., ZK solvency).", + "type": "object", + "required": ["type", "method", "supportedQueries"], + "properties": { + "type": { "type": "string", "minLength": 1 }, + "challengeEndpoint": { "$ref": "#/$defs/uri" }, + "method": { + "type": "string", + "enum": ["directQuery", "proverIntermediary"] + }, + "supportedQueries": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "verificationKeyMultibase": { "type": "string", "minLength": 1 } + }, + "allOf": [ + { + "if": { + "type": "object", + "properties": { "method": { "const": "proverIntermediary" } }, + "required": ["method"] + }, + "then": { + "type": "object", + "required": ["verificationKeyMultibase"], + "properties": { + "verificationKeyMultibase": { "type": "string", "minLength": 1 } + } + } + } + ], + "additionalProperties": true + }, + "evidenceItem": { + "title": "Evidence Item", + "description": "An evidence reference; if an id is present, a digest is required for integrity binding.", + "type": "object", + "properties": { + "type": { "type": "string" }, + "id": { "$ref": "#/$defs/uri" }, + "digestMultibase": { "type": "string", "minLength": 1 } + }, + "allOf": [ + { + "if": { + "type": "object", + "required": ["id"], + "properties": { "id": { "$ref": "#/$defs/uri" } } + }, + "then": { + "type": "object", + "required": ["digestMultibase"], + "properties": { + "digestMultibase": { "type": "string", "minLength": 1 } + } + } + } + ], + "additionalProperties": true + }, + "vcPayloadDispatch": { + "title": "VC Payload Dispatch", + "description": "Conditional typing rules mapping known VC types to credentialSubject shapes.", + "allOf": [ + { + "if": { + "type": "object", + "properties": { + "type": { + "type": "array", + "items": { "type": "string" }, + "anyOf": [ + { "contains": { "const": "SolvencyCredential" } }, + { "contains": { "const": "kya:SolvencyCredential" } } + ] + } + } + }, + "then": { + "type": "object", + "properties": { + "credentialSubject": { "$ref": "#/$defs/solvencySubject" } + } + } + }, + { + "if": { + "type": "object", + "properties": { + "type": { + "type": "array", + "items": { "type": "string" }, + "anyOf": [ + { "contains": { "const": "InsuranceCredential" } }, + { "contains": { "const": "kya:InsuranceCredential" } } + ] + } + } + }, + "then": { + "type": "object", + "properties": { + "credentialSubject": { "$ref": "#/$defs/insuranceSubject" } + } + } + }, + { + "if": { + "type": "object", + "properties": { + "type": { + "type": "array", + "items": { "type": "string" }, + "anyOf": [ + { "contains": { "const": "AuditCredential" } }, + { "contains": { "const": "kya:AuditCredential" } } + ] + } + } + }, + "then": { + "type": "object", + "properties": { + "credentialSubject": { "$ref": "#/$defs/auditSubject" } + } + } + }, + { + "if": { + "type": "object", + "properties": { + "type": { + "type": "array", + "items": { "type": "string" }, + "anyOf": [ + { "contains": { "const": "LegalEntityCredential" } }, + { "contains": { "const": "kya:LegalEntityCredential" } } + ] + } + } + }, + "then": { + "type": "object", + "properties": { + "credentialSubject": { "$ref": "#/$defs/legalEntitySubject" } + } + } + }, + { + "if": { + "type": "object", + "properties": { + "type": { + "type": "array", + "items": { "type": "string" }, + "anyOf": [ + { "contains": { "const": "LicenseCredential" } }, + { "contains": { "const": "kya:LicenseCredential" } } + ] + } + } + }, + "then": { + "type": "object", + "properties": { + "credentialSubject": { "$ref": "#/$defs/licenseSubject" } + } + } + } + ] + }, + "solvencySubject": { + "title": "Solvency Subject", + "description": "Credential subject shape for solvency assertions.", + "type": "object", + "required": ["accountType", "settlementScheme", "assets"], + "properties": { + "accountType": { + "type": "string", + "enum": ["custodial", "smartContract", "escrow", "wallet"] + }, + "settlementScheme": { + "type": "array", + "minItems": 1, + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "assets": { + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/assetBalance" } + }, + "asOf": { "$ref": "#/$defs/dateTime" } + }, + "additionalProperties": true + }, + "assetBalance": { + "title": "Asset Balance", + "description": "An asset identifier and balance string.", + "type": "object", + "required": ["assetId"], + "properties": { + "assetId": { "type": "string", "minLength": 1 }, + "balance": { "type": "string" } + }, + "additionalProperties": true + }, + "insuranceSubject": { + "title": "Insurance Subject", + "description": "Credential subject shape for insurance coverage assertions.", + "type": "object", + "required": ["policyNumber", "underwriter"], + "properties": { + "policyNumber": { "type": "string", "minLength": 1 }, + "underwriter": { + "type": "object", + "required": ["id"], + "properties": { + "id": { "$ref": "#/$defs/uri" }, + "name": { "type": "string" } + }, + "additionalProperties": true + }, + "coverageLimit": { + "type": "object", + "properties": { + "amount": { "type": "string" }, + "currency": { "type": "string", "minLength": 3, "maxLength": 3 } + }, + "additionalProperties": true + }, + "coverageType": { + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "deductible": { + "type": "object", + "properties": { + "amount": { "type": "string" }, + "currency": { "type": "string", "minLength": 3, "maxLength": 3 } + }, + "additionalProperties": true + }, + "claimsEndpoint": { "$ref": "#/$defs/uri" } + }, + "additionalProperties": true + }, + "auditSubject": { + "title": "Audit Subject", + "description": "Credential subject shape for audits; may be a single object or an array of objects.", + "oneOf": [ + { "$ref": "#/$defs/auditSubjectObject" }, + { + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/auditSubjectObject" } + } + ] + }, + "auditSubjectObject": { + "title": "Audit Subject Object", + "description": "Audit data, including scope references and standards.", + "type": "object", + "properties": { + "scopes": { + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { "$ref": "#/$defs/uri" }, + "stateHash": { "$ref": "#/$defs/hex" } + }, + "additionalProperties": true + } + }, + "auditStandards": { + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "findings": { "type": "object" } + }, + "additionalProperties": true + }, + "legalEntitySubject": { + "title": "Legal Entity Subject", + "description": "Credential subject shape for a legal entity assertion.", + "type": "object", + "properties": { + "legalName": { "type": "string" }, + "jurisdiction": { "type": "string" }, + "lei": { "type": "string" }, + "registrationNumber": { "type": "string" }, + "officials": { + "type": "array", + "items": { "$ref": "#/$defs/did" }, + "uniqueItems": true + } + }, + "additionalProperties": true + }, + "licenseSubject": { + "title": "License Subject", + "description": "Credential subject shape for license assertions.", + "type": "object", + "required": ["licenses"], + "properties": { + "licenses": { + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/licenseRecord" } + } + }, + "additionalProperties": true + }, + "licenseRecord": { + "title": "License Record", + "description": "A single license entry, including type and license number.", + "type": "object", + "required": ["licenseType", "licenseNumber"], + "properties": { + "licenseType": { "type": "string", "minLength": 1 }, + "licenseNumber": { "type": "string", "minLength": 1 }, + "grantingAuthority": { "$ref": "#/$defs/did" }, + "permittedActivities": { + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + } + }, + "additionalProperties": true + }, + "manifestProof": { + "title": "Manifest Proof", + "description": "A data integrity proof used to authorize capabilityInvocation for the manifest.", + "type": "object", + "required": ["type", "verificationMethod", "proofPurpose", "proofValue"], + "properties": { + "type": { "type": "string", "minLength": 1 }, + "cryptosuite": { "type": "string" }, + "verificationMethod": { "$ref": "#/$defs/uri" }, + "proofPurpose": { "const": "capabilityInvocation" }, + "proofValue": { "type": "string", "minLength": 1 } + }, + "additionalProperties": true + } + }, + "title": "KYA Manifest", + "description": "Know Your Agent (KYA) Manifest for autonomous AI agents (identity, governance, and operational constraints).", + "type": "object", + "required": [ + "@context", + "id", + "type", + "kyaVersion", + "agentId", + "verificationMethod", + "authentication", + "assertionMethod", + "capabilityInvocation", + "proof" + ], + "properties": { + "@context": { + "title": "JSON-LD Context", + "description": "JSON-LD contexts used to interpret terms. Must include the KYA context.", + "type": "array", + "minItems": 1, + "items": { "type": "string", "format": "uri" }, + "contains": { "const": "https://w3id.org/kya/v1" } + }, + "id": { + "$ref": "#/$defs/uri", + "title": "Manifest Identifier", + "description": "A globally unique identifier for this manifest (URI)." + }, + "type": { + "title": "Manifest Types", + "description": "JSON-LD types for the verifiable presentation. Must include VerifiablePresentation and KyaManifest.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { "type": "string" }, + "allOf": [ + { "contains": { "const": "VerifiablePresentation" } }, + { "contains": { "const": "KyaManifest" } } + ] + }, + "kyaVersion": { + "title": "KYA Version", + "description": "The KYA specification version this manifest conforms to.", + "type": "string", + "minLength": 1 + }, + "agentId": { + "$ref": "#/$defs/did", + "title": "Agent DID", + "description": "The DID identifying the autonomous agent process governed by this manifest." + }, + "name": { + "title": "Agent Name", + "description": "A short human-readable name for the agent.", + "type": "string" + }, + "label": { + "title": "Agent Label", + "description": "A concise human-readable description of the agent’s purpose and constraints.", + "type": "string" + }, + "governingAuthority": { + "title": "Governing Authority", + "description": "URIs (often DIDs or fragments) identifying authorities overseeing the agent’s operation.", + "type": "array", + "items": { "$ref": "#/$defs/uri" }, + "uniqueItems": true + }, + "verificationMethod": { + "title": "Verification Methods", + "description": "Inventory of public keys (verification methods) used by the agent and its governance.", + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/verificationMethod" } + }, + "authentication": { + "title": "Authentication Keys", + "description": "Verification method URIs authorized for authentication.", + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/uri" }, + "uniqueItems": true + }, + "assertionMethod": { + "title": "Assertion Keys", + "description": "Verification method URIs authorized to assert statements (e.g., sign agent actions).", + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/uri" }, + "uniqueItems": true + }, + "capabilityInvocation": { + "title": "Governance Keys", + "description": "Verification method URIs authorized to invoke governance capabilities, including manifest updates.", + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/uri" }, + "uniqueItems": true + }, + "keyAgreement": { + "title": "Key Agreement Keys", + "description": "Verification method URIs used for key agreement (e.g., encrypted channels).", + "type": "array", + "items": { "$ref": "#/$defs/uri" }, + "uniqueItems": true + }, + "minProofsRequired": { + "title": "Minimum Proofs Required", + "description": "Minimum number of valid governance proofs expected for the manifest (policy-level threshold).", + "type": "integer", + "minimum": 1 + }, + "legal": { + "$ref": "#/$defs/legal", + "title": "Legal Terms", + "description": "Optional legal terms and dispute resolution metadata." + }, + "permissionMode": { + "title": "Permission Mode", + "description": "Whether enforcement is strict (deny-by-default) or permissive (allow-by-default with exceptions).", + "type": "string", + "enum": ["strict", "permissive"] + }, + "permittedDomains": { + "title": "Permitted Domains", + "description": "Hostnames or domains the agent is allowed to interact with.", + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "permittedRegions": { + "title": "Permitted Regions", + "description": "Region or jurisdiction codes in which operation is permitted (policy-defined).", + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "forbiddenRegions": { + "title": "Forbidden Regions", + "description": "Region or jurisdiction codes in which operation is forbidden (policy-defined).", + "type": "array", + "items": { "type": "string", "minLength": 1 }, + "uniqueItems": true + }, + "maxTransactionValue": { + "title": "Maximum Transaction Value", + "description": "Maximum permitted value for a single transaction (units defined by currency).", + "type": "integer", + "minimum": 0 + }, + "currency": { + "title": "Currency", + "description": "ISO 4217 currency code associated with value-denominated limits.", + "type": "string", + "minLength": 3, + "maxLength": 3 + }, + "operatingLimits": { + "$ref": "#/$defs/operatingLimits", + "title": "Operating Limits", + "description": "Rate and spend-limiting constraints, such as rolling period spend caps." + }, + "signingPolicy": { + "$ref": "#/$defs/signingPolicy", + "title": "Signing Policy", + "description": "Policy constraints defining when multi-signature or specific signers are required." + }, + "deployment": { + "$ref": "#/$defs/deployment", + "title": "Deployment", + "description": "Optional deployment metadata, including update policy and confidential compute constraints." + }, + "governance": { + "$ref": "#/$defs/governance", + "title": "Governance", + "description": "Optional governance endpoints, visibility, and oracle references." + }, + "treasury": { + "title": "Treasury", + "description": "Optional treasury identifiers and usage classifications for operational funds or reserves.", + "type": "array", + "items": { "$ref": "#/$defs/treasuryItem" } + }, + "verifiableCredential": { + "title": "Verifiable Credentials", + "description": "Evidence credentials embedded or referenced by digest for verification workflows.", + "type": "array", + "items": { "$ref": "#/$defs/verifiableCredentialEntry" } + }, + "proof": { + "title": "Manifest Proofs", + "description": "Cryptographic proofs establishing integrity and authorized governance invocation.", + "type": "array", + "minItems": 1, + "items": { "$ref": "#/$defs/manifestProof" } + } + }, + "additionalProperties": true +} From a82a4bdcaa7b509d745a06ecd044fc900c053319 Mon Sep 17 00:00:00 2001 From: Jan Klass Date: Mon, 26 Jan 2026 18:12:59 +0100 Subject: [PATCH 3/5] Improve sponsor image, fix dark scheme visual artifacts (#5318) Source image is https://github.githubassets.com/assets/mona-e50f14d05e4b.png from GitHub Sponsors https://github.com/sponsors/accounts It's the same image like before. Resized with GIMP. Results in a bit different/more vibrant coloring, and the dark scheme edge issue fixed. --- src/img/sponsor.png | Bin 5746 -> 13076 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/img/sponsor.png b/src/img/sponsor.png index 7142483f810a63cfef8c514ec21767eea3ae1003..6db47af68e45ea3729866ac7586cc48a0af47b1f 100644 GIT binary patch literal 13076 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 literal 5746 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 From 06312859bd96d8f87316f1fee9c887b0800e1588 Mon Sep 17 00:00:00 2001 From: rosidae0 <82954131+rosidae@users.noreply.github.com> Date: Mon, 26 Jan 2026 11:13:29 -0600 Subject: [PATCH 4/5] add Espanso schemas (#5319) * add espanso yaml schemas * fix match.yml description --- src/api/json/catalog.json | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/api/json/catalog.json b/src/api/json/catalog.json index 8431efb8e92..5d88b60bd5a 100644 --- a/src/api/json/catalog.json +++ b/src/api/json/catalog.json @@ -9268,6 +9268,16 @@ "description": "pgxgen configuration file", "fileMatch": ["pgxgen.yml", "pgxgen.yaml"], "url": "https://raw.githubusercontent.com/tkcrm/pgxgen/refs/heads/master/schemas/pgxgen-schema.json" + }, + { + "name": "Espanso match.yml", + "description": "define WHAT Espanso does", + "url": "https://raw.githubusercontent.com/espanso/espanso/refs/heads/dev/schemas/match.schema.json" + }, + { + "name": "Espanso config.yml", + "description": "define HOW Espanso acts", + "url": "https://raw.githubusercontent.com/espanso/espanso/refs/heads/dev/schemas/config.schema.json" } ] } From 78e1696cfc880b9032b50d40ce23124e559ff504 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 26 Jan 2026 09:13:57 -0800 Subject: [PATCH 5/5] [pre-commit.ci] pre-commit autoupdate (#5320) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/rbubley/mirrors-prettier: v3.7.4 → v3.8.1](https://github.com/rbubley/mirrors-prettier/compare/v3.7.4...v3.8.1) Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index d0c5857b234..f70a8adbc90 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,7 +1,7 @@ --- repos: - repo: 'https://github.com/rbubley/mirrors-prettier' - rev: 'v3.7.4' + rev: 'v3.8.1' hooks: - id: 'prettier' types: [text]