import type { DelegationOptions, DelegationPayload, PayloadBase, StandardSchemaV1 } from 'iso-ucan/types' import { Delegation } from 'iso-ucan/delegation' import { AgentID } from '../applog/datom-types.ts' import { Capability } from 'iso-ucan/capability' import { z } from 'zod/mini' import { verify } from 'iso-signatures/verifiers/eddsa.js' import { Resolver } from 'iso-signatures/verifiers/resolver.js' export const verifierResolver = new Resolver({ Ed25519: verify,// TODO review if iso-signatures is better than web crypto (or if it even uses it) }) const WovinRootCap = Capability.from({ cmd: '/wovin', schema: z.object({ agentString: z.string(), agentID: z.string(), type: z.string(), }), verifierResolver, }) const WovinPublishCap = Capability.from({ cmd: '/wovin/publish', schema: z.object({ agentString: z.string(), agentID: z.string(), type: z.string(), }), verifierResolver, }) const WovinDelegateCap = Capability.from({ cmd: '/wovin/delegate', schema: z.object({ agentString: z.string(), agentID: z.string(), type: z.string(), }), verifierResolver, }) export enum KnownCaps { publish = 'WovinPublishCap', delegate = 'cap_delegate', } type DelegationPayloadSchema = StandardSchemaV1> export type DelegationOptionsStandard = DelegationOptions export type UCANCapMap = Partial> export type AgentCapMap = Record export const createDelegation = (delegationPayload:DelegationOptionsStandard) => { // delegationPayload. return Delegation.create(delegationPayload) }