@agentic-trust/agentic-trust-sdk 1.0.43
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/LICENSE +22 -0
- package/README.md +213 -0
- package/abis/BaseRegistrarImplementation.json +1013 -0
- package/abis/ETHRegistrarController.json +1004 -0
- package/abis/IdentityRegistry.json +1044 -0
- package/abis/NameWrapper.json +2026 -0
- package/abis/PublicResolver.json +1772 -0
- package/abis/ReputationRegistry.json +701 -0
- package/abis/ValidationRegistry.json +505 -0
- package/dist/AIAgentAssociationClient.d.ts +58 -0
- package/dist/AIAgentAssociationClient.d.ts.map +1 -0
- package/dist/AIAgentAssociationClient.js +100 -0
- package/dist/AIAgentAssociationClient.js.map +1 -0
- package/dist/AIAgentDiscoveryClient.d.ts +673 -0
- package/dist/AIAgentDiscoveryClient.d.ts.map +1 -0
- package/dist/AIAgentDiscoveryClient.js +3184 -0
- package/dist/AIAgentDiscoveryClient.js.map +1 -0
- package/dist/AIAgentENSClient.d.ts +149 -0
- package/dist/AIAgentENSClient.d.ts.map +1 -0
- package/dist/AIAgentENSClient.js +958 -0
- package/dist/AIAgentENSClient.js.map +1 -0
- package/dist/AIAgentIdentityClient.d.ts +159 -0
- package/dist/AIAgentIdentityClient.d.ts.map +1 -0
- package/dist/AIAgentIdentityClient.js +660 -0
- package/dist/AIAgentIdentityClient.js.map +1 -0
- package/dist/AIAgentL2ENSDurenClient.d.ts +120 -0
- package/dist/AIAgentL2ENSDurenClient.d.ts.map +1 -0
- package/dist/AIAgentL2ENSDurenClient.js +735 -0
- package/dist/AIAgentL2ENSDurenClient.js.map +1 -0
- package/dist/AIAgentL2ENSNamespaceClient.d.ts +58 -0
- package/dist/AIAgentL2ENSNamespaceClient.d.ts.map +1 -0
- package/dist/AIAgentL2ENSNamespaceClient.js +214 -0
- package/dist/AIAgentL2ENSNamespaceClient.js.map +1 -0
- package/dist/AIAgentReputationClient.d.ts +69 -0
- package/dist/AIAgentReputationClient.d.ts.map +1 -0
- package/dist/AIAgentReputationClient.js +203 -0
- package/dist/AIAgentReputationClient.js.map +1 -0
- package/dist/AIAgentValidationClient.d.ts +60 -0
- package/dist/AIAgentValidationClient.d.ts.map +1 -0
- package/dist/AIAgentValidationClient.js +123 -0
- package/dist/AIAgentValidationClient.js.map +1 -0
- package/dist/OrgIdentityClient.d.ts +27 -0
- package/dist/OrgIdentityClient.d.ts.map +1 -0
- package/dist/OrgIdentityClient.js +169 -0
- package/dist/OrgIdentityClient.js.map +1 -0
- package/dist/abis/BaseRegistrarImplementation.json +1013 -0
- package/dist/abis/ETHRegistrarController.json +1004 -0
- package/dist/abis/IdentityRegistry.json +1044 -0
- package/dist/abis/NameWrapper.json +2026 -0
- package/dist/abis/PublicResolver.json +1772 -0
- package/dist/abis/ReputationRegistry.json +701 -0
- package/dist/abis/ValidationRegistry.json +505 -0
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/schema.d.ts +13 -0
- package/dist/schema.d.ts.map +1 -0
- package/dist/schema.js +696 -0
- package/dist/schema.js.map +1 -0
- package/dist/schemaKb.d.ts +12 -0
- package/dist/schemaKb.d.ts.map +1 -0
- package/dist/schemaKb.js +593 -0
- package/dist/schemaKb.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils/did8004.d.ts +57 -0
- package/dist/utils/did8004.d.ts.map +1 -0
- package/dist/utils/did8004.js +127 -0
- package/dist/utils/did8004.js.map +1 -0
- package/dist/utils/didEns.d.ts +46 -0
- package/dist/utils/didEns.d.ts.map +1 -0
- package/dist/utils/didEns.js +107 -0
- package/dist/utils/didEns.js.map +1 -0
- package/dist/utils/didEthr.d.ts +40 -0
- package/dist/utils/didEthr.d.ts.map +1 -0
- package/dist/utils/didEthr.js +87 -0
- package/dist/utils/didEthr.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphDB-backed (knowledge base) GraphQL schema (v2).
|
|
3
|
+
*
|
|
4
|
+
* This schema is intentionally aligned to the KB model:
|
|
5
|
+
* Agent → Identity → Descriptor → (assembled) ProtocolDescriptor.
|
|
6
|
+
*
|
|
7
|
+
* Used as reference for the discovery client; the live backend is introspected at runtime.
|
|
8
|
+
*/
|
|
9
|
+
import { type GraphQLSchema } from 'graphql';
|
|
10
|
+
export declare const graphQLSchemaStringKb = "\n type OasfSkill {\n key: String!\n nameKey: String\n uid: Int\n caption: String\n extendsKey: String\n category: String\n }\n\n type OasfDomain {\n key: String!\n nameKey: String\n uid: Int\n caption: String\n extendsKey: String\n category: String\n }\n\n type IntentType {\n key: String!\n label: String\n description: String\n }\n\n type TaskType {\n key: String!\n label: String\n description: String\n }\n\n type IntentTaskMapping {\n intent: IntentType!\n task: TaskType!\n requiredSkills: [String!]!\n optionalSkills: [String!]!\n }\n\n enum OrderDirection {\n ASC\n DESC\n }\n\n enum KbAgentOrderBy {\n agentId8004\n agentName\n uaid\n createdAtTime\n updatedAtTime\n trustLedgerTotalPoints\n atiOverallScore\n bestRank\n }\n\n input KbAgentWhereInput {\n chainId: Int\n agentIdentifierMatch: String\n did8004: String\n uaid: String\n uaid_in: [String!]\n agentName_contains: String\n isSmartAgent: Boolean\n hasA2a: Boolean\n hasAssertions: Boolean\n hasReviews: Boolean\n hasValidations: Boolean\n minReviewAssertionCount: Int\n minValidationAssertionCount: Int\n }\n\n type KbAccount {\n iri: ID!\n chainId: Int\n address: String\n accountType: String # EOAAccount | SmartAccount | Account | (null/unknown)\n didEthr: String\n }\n\n # Generic descriptor for core entities (protocols, endpoints, etc.)\n type KbDescriptor {\n iri: ID!\n name: String\n description: String\n image: String\n }\n\n # Protocol descriptor payload (e.g. A2A agent-card.json)\n type KbProtocolDescriptor {\n iri: ID!\n name: String\n description: String\n image: String\n agentCardJson: String\n }\n\n type KbProtocol {\n iri: ID!\n protocol: String! # a2a | mcp | other\n protocolVersion: String\n serviceUrl: String\n descriptor: KbProtocolDescriptor\n skills: [String!]!\n domains: [String!]!\n }\n\n type KbServiceEndpoint {\n iri: ID!\n name: String! # a2a | mcp | other\n descriptor: KbDescriptor\n protocol: KbProtocol!\n }\n\n type KbIdentityDescriptor {\n iri: ID!\n kind: String! # 8004 | ens | hol | nanda | other\n name: String\n description: String\n image: String\n registrationJson: String\n nftMetadataJson: String\n registeredBy: String\n registryNamespace: String\n skills: [String!]!\n domains: [String!]!\n }\n\n # ERC-8122 registries (factory-deployed registries + registrars)\n type KbAgentRegistry8122 {\n iri: ID!\n chainId: Int!\n registryAddress: String!\n registrarAddress: String\n registryName: String\n registryImplementationAddress: String\n registrarImplementationAddress: String\n registeredAgentCount: Int\n lastAgentUpdatedAtTime: Int\n }\n\n # Agent identity record (may include multiple identities per agent, even multiple of the same kind).\n interface KbAgentIdentity {\n iri: ID!\n kind: String! # 8004 | 8122 | ens | hol | other\n did: String!\n chainId: Int\n descriptor: KbIdentityDescriptor\n serviceEndpoints: [KbServiceEndpoint!]!\n }\n\n type KbIdentity8004 implements KbAgentIdentity {\n iri: ID!\n kind: String! # \"8004\"\n did: String!\n chainId: Int\n\n did8004: String!\n agentId8004: Int\n isSmartAgent: Boolean\n\n descriptor: KbIdentityDescriptor\n serviceEndpoints: [KbServiceEndpoint!]!\n\n ownerAccount: KbAccount\n agentAccount: KbAccount\n operatorAccount: KbAccount\n walletAccount: KbAccount\n ownerEOAAccount: KbAccount\n }\n\n type KbIdentity8122 implements KbAgentIdentity {\n iri: ID!\n kind: String! # \"8122\"\n did: String!\n chainId: Int\n\n did8122: String!\n agentId8122: String!\n registryAddress: String\n collectionName: String\n registry: KbAgentRegistry8122\n endpointType: String\n endpoint: String\n\n descriptor: KbIdentityDescriptor\n serviceEndpoints: [KbServiceEndpoint!]!\n\n ownerAccount: KbAccount\n agentAccount: KbAccount\n }\n\n type KbIdentityEns implements KbAgentIdentity {\n iri: ID!\n kind: String! # \"ens\"\n did: String!\n chainId: Int\n\n didEns: String!\n ensName: String\n\n descriptor: KbIdentityDescriptor\n serviceEndpoints: [KbServiceEndpoint!]!\n }\n\n type KbIdentityHol implements KbAgentIdentity {\n iri: ID!\n kind: String! # \"hol\"\n did: String!\n chainId: Int\n\n uaidHOL: String\n\n descriptor: KbIdentityDescriptor\n serviceEndpoints: [KbServiceEndpoint!]!\n }\n\n type KbIdentityOther implements KbAgentIdentity {\n iri: ID!\n kind: String!\n did: String!\n chainId: Int\n\n descriptor: KbIdentityDescriptor\n serviceEndpoints: [KbServiceEndpoint!]!\n }\n\n type KbHolAgentProfile {\n uaid: String!\n displayName: String\n alias: String\n bio: String\n profileImage: String\n profileJson: String\n }\n\n type KbHolCapability {\n iri: ID!\n key: String!\n label: String\n json: String\n }\n\n type KbHolSyncResult {\n success: Boolean!\n count: Int!\n message: String\n }\n\n type KbHolRegistryCount {\n registry: String!\n agentCount: Int!\n }\n\n type KbHolCapabilityCount {\n capability: String!\n agentCount: Int!\n }\n\n type KbHolStats {\n totalAgents: Int!\n lastUpdate: String\n status: String\n registries: [KbHolRegistryCount!]!\n capabilities: [KbHolCapabilityCount!]!\n }\n\n type KbHolRegistrySearchHit {\n uaid: String\n id: String\n registry: String\n name: String\n description: String\n originalId: String\n protocols: [String!]\n json: String\n }\n\n type KbHolRegistrySearchResult {\n total: Int!\n page: Int\n limit: Int\n hits: [KbHolRegistrySearchHit!]!\n }\n\n input KbHolVectorSearchFilterInput {\n registry: String\n capabilities: [String!]\n }\n\n input KbHolVectorSearchInput {\n query: String!\n limit: Int\n filter: KbHolVectorSearchFilterInput\n }\n\n input KbHolResolveIncludeInput {\n capabilities: Boolean\n endpoints: Boolean\n relationships: Boolean\n validations: Boolean\n }\n\n type KbAgentDescriptor {\n iri: ID!\n name: String\n description: String\n image: String\n }\n\n type KbAgent {\n iri: ID!\n uaid: String\n agentName: String\n agentDescription: String\n agentImage: String\n agentDescriptor: KbAgentDescriptor\n agentTypes: [String!]!\n\n # Provenance (best-effort; may be null for older/missing records)\n createdAtBlock: Int\n createdAtTime: Int\n updatedAtTime: Int\n\n # KB analytics (GraphDB-resident) scoring signals\n trustLedgerTotalPoints: Int\n trustLedgerBadgeCount: Int\n trustLedgerComputedAt: Int\n trustLedgerBadges: [TrustLedgerBadgeAward!]!\n atiOverallScore: Int\n atiOverallConfidence: Float\n atiVersion: String\n atiComputedAt: Int\n\n identities: [KbAgentIdentity!]!\n\n serviceEndpoints: [KbServiceEndpoint!]!\n\n # Counts are always available; items are only fetched when you request a specific agent.\n assertions: KbAgentAssertions\n reviewAssertions(first: Int, skip: Int): KbReviewResponseConnection\n validationAssertions(first: Int, skip: Int): KbValidationResponseConnection\n\n }\n\n type KbAgentSearchResult {\n agents: [KbAgent!]!\n total: Int!\n hasMore: Boolean!\n }\n\n type KbSubgraphRecord {\n rawJson: String\n txHash: String\n blockNumber: Int\n timestamp: Int\n }\n\n type KbReviewResponse {\n iri: ID!\n agentDid8004: String\n json: String\n record: KbSubgraphRecord\n }\n\n type KbReviewResponseConnection {\n total: Int!\n items: [KbReviewResponse!]!\n }\n\n type KbValidationResponse {\n iri: ID!\n agentDid8004: String\n json: String\n record: KbSubgraphRecord\n }\n\n type KbValidationResponseConnection {\n total: Int!\n items: [KbValidationResponse!]!\n }\n\n type KbAgentAssertions {\n total: Int!\n reviewResponses: KbReviewResponseConnection!\n validationResponses: KbValidationResponseConnection!\n }\n\n type KbAssociation {\n iri: ID!\n record: KbSubgraphRecord\n }\n\n type KbSemanticAgentMatch {\n agent: KbAgent\n score: Float!\n matchReasons: [String!]\n }\n\n type KbSemanticAgentSearchResult {\n matches: [KbSemanticAgentMatch!]!\n total: Int!\n intentType: String\n }\n\n # Reuse input shape from v1 for compatibility with existing clients.\n input SemanticAgentSearchInput {\n text: String\n intentJson: String\n topK: Int\n minScore: Float\n requiredSkills: [String!]\n filters: SemanticSearchFilterInput\n }\n\n input SemanticSearchFilterInput {\n capabilities: [String!]\n inputMode: String\n outputMode: String\n tags: [String!]\n }\n\n # ATI / TrustLedger: keep the v1 shapes for now (served from GraphDB in v2 endpoint).\n type TrustReason {\n code: String!\n weight: Float\n detail: String\n }\n\n type TrustScore {\n interfaceId: String!\n score: Float!\n reputationScore: Float!\n overlapScore: Float!\n clientMembershipCount: Int!\n agentMembershipCount: Int!\n sharedMembershipCount: Int!\n sharedMembershipKeys: [String!]!\n reasons: [TrustReason!]!\n }\n\n type AgentTrustComponent {\n component: String!\n score: Float!\n weight: Float!\n evidenceCountsJson: String\n }\n\n type AgentTrustIndex {\n chainId: Int!\n agentId: String!\n overallScore: Int!\n overallConfidence: Float\n version: String!\n computedAt: Int!\n bundleJson: String\n components: [AgentTrustComponent!]!\n }\n\n type TrustLedgerBadgeDefinition {\n badgeId: String!\n program: String!\n name: String!\n description: String\n iconRef: String\n points: Int!\n ruleId: String!\n ruleJson: String\n active: Boolean!\n createdAt: Int!\n updatedAt: Int!\n }\n\n type TrustLedgerBadgeAward {\n iri: ID!\n awardedAt: Int\n evidenceJson: String\n definition: TrustLedgerBadgeDefinition\n }\n\n type Query {\n # Discovery taxonomy (GraphDB-backed, same shape as v1 schema)\n oasfSkills(\n key: String\n nameKey: String\n category: String\n extendsKey: String\n limit: Int\n offset: Int\n orderBy: String\n orderDirection: String\n ): [OasfSkill!]!\n\n oasfDomains(\n key: String\n nameKey: String\n category: String\n extendsKey: String\n limit: Int\n offset: Int\n orderBy: String\n orderDirection: String\n ): [OasfDomain!]!\n\n intentTypes(\n key: String\n label: String\n limit: Int\n offset: Int\n ): [IntentType!]!\n\n taskTypes(\n key: String\n label: String\n limit: Int\n offset: Int\n ): [TaskType!]!\n\n intentTaskMappings(\n intentKey: String\n taskKey: String\n limit: Int\n offset: Int\n ): [IntentTaskMapping!]!\n\n kbAgents(\n where: KbAgentWhereInput\n first: Int\n skip: Int\n orderBy: KbAgentOrderBy\n orderDirection: OrderDirection\n ): KbAgentSearchResult!\n\n # Convenience query: agents whose ERC-8004 identity hasOwnerAccount matches ownerAddress\n kbOwnedAgents(\n chainId: Int!\n ownerAddress: String!\n first: Int\n skip: Int\n orderBy: KbAgentOrderBy\n orderDirection: OrderDirection\n ): KbAgentSearchResult!\n\n # Like kbOwnedAgents, but searches across all subgraph graphs (no chainId required).\n kbOwnedAgentsAllChains(\n ownerAddress: String!\n first: Int\n skip: Int\n orderBy: KbAgentOrderBy\n orderDirection: OrderDirection\n ): KbAgentSearchResult!\n\n # UAID-native ownership check. Returns true if walletAddress resolves to the same EOA as the agent's owner.\n kbIsOwner(uaid: String!, walletAddress: String!): Boolean!\n\n kbAgentByUaid(uaid: String!): KbAgent\n kbHolAgentProfileByUaid(uaid: String!, include: KbHolResolveIncludeInput): KbHolAgentProfile\n kbHolCapabilities(first: Int, skip: Int): [KbHolCapability!]!\n kbHolRegistries: [String!]!\n kbHolRegistriesForProtocol(protocol: String!): [String!]!\n kbHolStats: KbHolStats!\n kbHolRegistrySearch(registry: String!, q: String, originalId: String): KbHolRegistrySearchResult!\n kbHolVectorSearch(input: KbHolVectorSearchInput!): KbHolRegistrySearchResult!\n\n kbSemanticAgentSearch(input: SemanticAgentSearchInput!): KbSemanticAgentSearchResult!\n\n kbErc8122Registries(chainId: Int!, first: Int, skip: Int): [KbAgentRegistry8122!]!\n\n # Minimal trust/event reads from KB (typed nodes + raw JSON where needed)\n kbReviews(chainId: Int!, first: Int, skip: Int): [KbReviewResponse!]!\n kbValidations(chainId: Int!, first: Int, skip: Int): [KbValidationResponse!]!\n kbAssociations(chainId: Int!, first: Int, skip: Int): [KbAssociation!]!\n\n # ATI / trust ledger (GraphDB-backed in v2)\n kbAgentTrustIndex(chainId: Int!, agentId: String!): AgentTrustIndex\n kbTrustLedgerBadgeDefinitions(program: String, active: Boolean): [TrustLedgerBadgeDefinition!]!\n }\n\n type Mutation {\n kbHolSyncCapabilities: KbHolSyncResult!\n }\n";
|
|
11
|
+
export declare function buildGraphQLSchemaKb(): GraphQLSchema;
|
|
12
|
+
//# sourceMappingURL=schemaKb.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaKb.d.ts","sourceRoot":"","sources":["../schemaKb.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAe,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE1D,eAAO,MAAM,qBAAqB,wjaAmkBjC,CAAC;AAEF,wBAAgB,oBAAoB,IAAI,aAAa,CAEpD"}
|
package/dist/schemaKb.js
ADDED
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GraphDB-backed (knowledge base) GraphQL schema (v2).
|
|
3
|
+
*
|
|
4
|
+
* This schema is intentionally aligned to the KB model:
|
|
5
|
+
* Agent → Identity → Descriptor → (assembled) ProtocolDescriptor.
|
|
6
|
+
*
|
|
7
|
+
* Used as reference for the discovery client; the live backend is introspected at runtime.
|
|
8
|
+
*/
|
|
9
|
+
import { buildSchema } from 'graphql';
|
|
10
|
+
export const graphQLSchemaStringKb = `
|
|
11
|
+
type OasfSkill {
|
|
12
|
+
key: String!
|
|
13
|
+
nameKey: String
|
|
14
|
+
uid: Int
|
|
15
|
+
caption: String
|
|
16
|
+
extendsKey: String
|
|
17
|
+
category: String
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
type OasfDomain {
|
|
21
|
+
key: String!
|
|
22
|
+
nameKey: String
|
|
23
|
+
uid: Int
|
|
24
|
+
caption: String
|
|
25
|
+
extendsKey: String
|
|
26
|
+
category: String
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
type IntentType {
|
|
30
|
+
key: String!
|
|
31
|
+
label: String
|
|
32
|
+
description: String
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
type TaskType {
|
|
36
|
+
key: String!
|
|
37
|
+
label: String
|
|
38
|
+
description: String
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
type IntentTaskMapping {
|
|
42
|
+
intent: IntentType!
|
|
43
|
+
task: TaskType!
|
|
44
|
+
requiredSkills: [String!]!
|
|
45
|
+
optionalSkills: [String!]!
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
enum OrderDirection {
|
|
49
|
+
ASC
|
|
50
|
+
DESC
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
enum KbAgentOrderBy {
|
|
54
|
+
agentId8004
|
|
55
|
+
agentName
|
|
56
|
+
uaid
|
|
57
|
+
createdAtTime
|
|
58
|
+
updatedAtTime
|
|
59
|
+
trustLedgerTotalPoints
|
|
60
|
+
atiOverallScore
|
|
61
|
+
bestRank
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
input KbAgentWhereInput {
|
|
65
|
+
chainId: Int
|
|
66
|
+
agentIdentifierMatch: String
|
|
67
|
+
did8004: String
|
|
68
|
+
uaid: String
|
|
69
|
+
uaid_in: [String!]
|
|
70
|
+
agentName_contains: String
|
|
71
|
+
isSmartAgent: Boolean
|
|
72
|
+
hasA2a: Boolean
|
|
73
|
+
hasAssertions: Boolean
|
|
74
|
+
hasReviews: Boolean
|
|
75
|
+
hasValidations: Boolean
|
|
76
|
+
minReviewAssertionCount: Int
|
|
77
|
+
minValidationAssertionCount: Int
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
type KbAccount {
|
|
81
|
+
iri: ID!
|
|
82
|
+
chainId: Int
|
|
83
|
+
address: String
|
|
84
|
+
accountType: String # EOAAccount | SmartAccount | Account | (null/unknown)
|
|
85
|
+
didEthr: String
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
# Generic descriptor for core entities (protocols, endpoints, etc.)
|
|
89
|
+
type KbDescriptor {
|
|
90
|
+
iri: ID!
|
|
91
|
+
name: String
|
|
92
|
+
description: String
|
|
93
|
+
image: String
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
# Protocol descriptor payload (e.g. A2A agent-card.json)
|
|
97
|
+
type KbProtocolDescriptor {
|
|
98
|
+
iri: ID!
|
|
99
|
+
name: String
|
|
100
|
+
description: String
|
|
101
|
+
image: String
|
|
102
|
+
agentCardJson: String
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
type KbProtocol {
|
|
106
|
+
iri: ID!
|
|
107
|
+
protocol: String! # a2a | mcp | other
|
|
108
|
+
protocolVersion: String
|
|
109
|
+
serviceUrl: String
|
|
110
|
+
descriptor: KbProtocolDescriptor
|
|
111
|
+
skills: [String!]!
|
|
112
|
+
domains: [String!]!
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
type KbServiceEndpoint {
|
|
116
|
+
iri: ID!
|
|
117
|
+
name: String! # a2a | mcp | other
|
|
118
|
+
descriptor: KbDescriptor
|
|
119
|
+
protocol: KbProtocol!
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
type KbIdentityDescriptor {
|
|
123
|
+
iri: ID!
|
|
124
|
+
kind: String! # 8004 | ens | hol | nanda | other
|
|
125
|
+
name: String
|
|
126
|
+
description: String
|
|
127
|
+
image: String
|
|
128
|
+
registrationJson: String
|
|
129
|
+
nftMetadataJson: String
|
|
130
|
+
registeredBy: String
|
|
131
|
+
registryNamespace: String
|
|
132
|
+
skills: [String!]!
|
|
133
|
+
domains: [String!]!
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
# ERC-8122 registries (factory-deployed registries + registrars)
|
|
137
|
+
type KbAgentRegistry8122 {
|
|
138
|
+
iri: ID!
|
|
139
|
+
chainId: Int!
|
|
140
|
+
registryAddress: String!
|
|
141
|
+
registrarAddress: String
|
|
142
|
+
registryName: String
|
|
143
|
+
registryImplementationAddress: String
|
|
144
|
+
registrarImplementationAddress: String
|
|
145
|
+
registeredAgentCount: Int
|
|
146
|
+
lastAgentUpdatedAtTime: Int
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
# Agent identity record (may include multiple identities per agent, even multiple of the same kind).
|
|
150
|
+
interface KbAgentIdentity {
|
|
151
|
+
iri: ID!
|
|
152
|
+
kind: String! # 8004 | 8122 | ens | hol | other
|
|
153
|
+
did: String!
|
|
154
|
+
chainId: Int
|
|
155
|
+
descriptor: KbIdentityDescriptor
|
|
156
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
type KbIdentity8004 implements KbAgentIdentity {
|
|
160
|
+
iri: ID!
|
|
161
|
+
kind: String! # "8004"
|
|
162
|
+
did: String!
|
|
163
|
+
chainId: Int
|
|
164
|
+
|
|
165
|
+
did8004: String!
|
|
166
|
+
agentId8004: Int
|
|
167
|
+
isSmartAgent: Boolean
|
|
168
|
+
|
|
169
|
+
descriptor: KbIdentityDescriptor
|
|
170
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
171
|
+
|
|
172
|
+
ownerAccount: KbAccount
|
|
173
|
+
agentAccount: KbAccount
|
|
174
|
+
operatorAccount: KbAccount
|
|
175
|
+
walletAccount: KbAccount
|
|
176
|
+
ownerEOAAccount: KbAccount
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
type KbIdentity8122 implements KbAgentIdentity {
|
|
180
|
+
iri: ID!
|
|
181
|
+
kind: String! # "8122"
|
|
182
|
+
did: String!
|
|
183
|
+
chainId: Int
|
|
184
|
+
|
|
185
|
+
did8122: String!
|
|
186
|
+
agentId8122: String!
|
|
187
|
+
registryAddress: String
|
|
188
|
+
collectionName: String
|
|
189
|
+
registry: KbAgentRegistry8122
|
|
190
|
+
endpointType: String
|
|
191
|
+
endpoint: String
|
|
192
|
+
|
|
193
|
+
descriptor: KbIdentityDescriptor
|
|
194
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
195
|
+
|
|
196
|
+
ownerAccount: KbAccount
|
|
197
|
+
agentAccount: KbAccount
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
type KbIdentityEns implements KbAgentIdentity {
|
|
201
|
+
iri: ID!
|
|
202
|
+
kind: String! # "ens"
|
|
203
|
+
did: String!
|
|
204
|
+
chainId: Int
|
|
205
|
+
|
|
206
|
+
didEns: String!
|
|
207
|
+
ensName: String
|
|
208
|
+
|
|
209
|
+
descriptor: KbIdentityDescriptor
|
|
210
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
type KbIdentityHol implements KbAgentIdentity {
|
|
214
|
+
iri: ID!
|
|
215
|
+
kind: String! # "hol"
|
|
216
|
+
did: String!
|
|
217
|
+
chainId: Int
|
|
218
|
+
|
|
219
|
+
uaidHOL: String
|
|
220
|
+
|
|
221
|
+
descriptor: KbIdentityDescriptor
|
|
222
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
type KbIdentityOther implements KbAgentIdentity {
|
|
226
|
+
iri: ID!
|
|
227
|
+
kind: String!
|
|
228
|
+
did: String!
|
|
229
|
+
chainId: Int
|
|
230
|
+
|
|
231
|
+
descriptor: KbIdentityDescriptor
|
|
232
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
type KbHolAgentProfile {
|
|
236
|
+
uaid: String!
|
|
237
|
+
displayName: String
|
|
238
|
+
alias: String
|
|
239
|
+
bio: String
|
|
240
|
+
profileImage: String
|
|
241
|
+
profileJson: String
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
type KbHolCapability {
|
|
245
|
+
iri: ID!
|
|
246
|
+
key: String!
|
|
247
|
+
label: String
|
|
248
|
+
json: String
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
type KbHolSyncResult {
|
|
252
|
+
success: Boolean!
|
|
253
|
+
count: Int!
|
|
254
|
+
message: String
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
type KbHolRegistryCount {
|
|
258
|
+
registry: String!
|
|
259
|
+
agentCount: Int!
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
type KbHolCapabilityCount {
|
|
263
|
+
capability: String!
|
|
264
|
+
agentCount: Int!
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
type KbHolStats {
|
|
268
|
+
totalAgents: Int!
|
|
269
|
+
lastUpdate: String
|
|
270
|
+
status: String
|
|
271
|
+
registries: [KbHolRegistryCount!]!
|
|
272
|
+
capabilities: [KbHolCapabilityCount!]!
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
type KbHolRegistrySearchHit {
|
|
276
|
+
uaid: String
|
|
277
|
+
id: String
|
|
278
|
+
registry: String
|
|
279
|
+
name: String
|
|
280
|
+
description: String
|
|
281
|
+
originalId: String
|
|
282
|
+
protocols: [String!]
|
|
283
|
+
json: String
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
type KbHolRegistrySearchResult {
|
|
287
|
+
total: Int!
|
|
288
|
+
page: Int
|
|
289
|
+
limit: Int
|
|
290
|
+
hits: [KbHolRegistrySearchHit!]!
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
input KbHolVectorSearchFilterInput {
|
|
294
|
+
registry: String
|
|
295
|
+
capabilities: [String!]
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
input KbHolVectorSearchInput {
|
|
299
|
+
query: String!
|
|
300
|
+
limit: Int
|
|
301
|
+
filter: KbHolVectorSearchFilterInput
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
input KbHolResolveIncludeInput {
|
|
305
|
+
capabilities: Boolean
|
|
306
|
+
endpoints: Boolean
|
|
307
|
+
relationships: Boolean
|
|
308
|
+
validations: Boolean
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
type KbAgentDescriptor {
|
|
312
|
+
iri: ID!
|
|
313
|
+
name: String
|
|
314
|
+
description: String
|
|
315
|
+
image: String
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
type KbAgent {
|
|
319
|
+
iri: ID!
|
|
320
|
+
uaid: String
|
|
321
|
+
agentName: String
|
|
322
|
+
agentDescription: String
|
|
323
|
+
agentImage: String
|
|
324
|
+
agentDescriptor: KbAgentDescriptor
|
|
325
|
+
agentTypes: [String!]!
|
|
326
|
+
|
|
327
|
+
# Provenance (best-effort; may be null for older/missing records)
|
|
328
|
+
createdAtBlock: Int
|
|
329
|
+
createdAtTime: Int
|
|
330
|
+
updatedAtTime: Int
|
|
331
|
+
|
|
332
|
+
# KB analytics (GraphDB-resident) scoring signals
|
|
333
|
+
trustLedgerTotalPoints: Int
|
|
334
|
+
trustLedgerBadgeCount: Int
|
|
335
|
+
trustLedgerComputedAt: Int
|
|
336
|
+
trustLedgerBadges: [TrustLedgerBadgeAward!]!
|
|
337
|
+
atiOverallScore: Int
|
|
338
|
+
atiOverallConfidence: Float
|
|
339
|
+
atiVersion: String
|
|
340
|
+
atiComputedAt: Int
|
|
341
|
+
|
|
342
|
+
identities: [KbAgentIdentity!]!
|
|
343
|
+
|
|
344
|
+
serviceEndpoints: [KbServiceEndpoint!]!
|
|
345
|
+
|
|
346
|
+
# Counts are always available; items are only fetched when you request a specific agent.
|
|
347
|
+
assertions: KbAgentAssertions
|
|
348
|
+
reviewAssertions(first: Int, skip: Int): KbReviewResponseConnection
|
|
349
|
+
validationAssertions(first: Int, skip: Int): KbValidationResponseConnection
|
|
350
|
+
|
|
351
|
+
}
|
|
352
|
+
|
|
353
|
+
type KbAgentSearchResult {
|
|
354
|
+
agents: [KbAgent!]!
|
|
355
|
+
total: Int!
|
|
356
|
+
hasMore: Boolean!
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
type KbSubgraphRecord {
|
|
360
|
+
rawJson: String
|
|
361
|
+
txHash: String
|
|
362
|
+
blockNumber: Int
|
|
363
|
+
timestamp: Int
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
type KbReviewResponse {
|
|
367
|
+
iri: ID!
|
|
368
|
+
agentDid8004: String
|
|
369
|
+
json: String
|
|
370
|
+
record: KbSubgraphRecord
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
type KbReviewResponseConnection {
|
|
374
|
+
total: Int!
|
|
375
|
+
items: [KbReviewResponse!]!
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
type KbValidationResponse {
|
|
379
|
+
iri: ID!
|
|
380
|
+
agentDid8004: String
|
|
381
|
+
json: String
|
|
382
|
+
record: KbSubgraphRecord
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
type KbValidationResponseConnection {
|
|
386
|
+
total: Int!
|
|
387
|
+
items: [KbValidationResponse!]!
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
type KbAgentAssertions {
|
|
391
|
+
total: Int!
|
|
392
|
+
reviewResponses: KbReviewResponseConnection!
|
|
393
|
+
validationResponses: KbValidationResponseConnection!
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
type KbAssociation {
|
|
397
|
+
iri: ID!
|
|
398
|
+
record: KbSubgraphRecord
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
type KbSemanticAgentMatch {
|
|
402
|
+
agent: KbAgent
|
|
403
|
+
score: Float!
|
|
404
|
+
matchReasons: [String!]
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
type KbSemanticAgentSearchResult {
|
|
408
|
+
matches: [KbSemanticAgentMatch!]!
|
|
409
|
+
total: Int!
|
|
410
|
+
intentType: String
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
# Reuse input shape from v1 for compatibility with existing clients.
|
|
414
|
+
input SemanticAgentSearchInput {
|
|
415
|
+
text: String
|
|
416
|
+
intentJson: String
|
|
417
|
+
topK: Int
|
|
418
|
+
minScore: Float
|
|
419
|
+
requiredSkills: [String!]
|
|
420
|
+
filters: SemanticSearchFilterInput
|
|
421
|
+
}
|
|
422
|
+
|
|
423
|
+
input SemanticSearchFilterInput {
|
|
424
|
+
capabilities: [String!]
|
|
425
|
+
inputMode: String
|
|
426
|
+
outputMode: String
|
|
427
|
+
tags: [String!]
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
# ATI / TrustLedger: keep the v1 shapes for now (served from GraphDB in v2 endpoint).
|
|
431
|
+
type TrustReason {
|
|
432
|
+
code: String!
|
|
433
|
+
weight: Float
|
|
434
|
+
detail: String
|
|
435
|
+
}
|
|
436
|
+
|
|
437
|
+
type TrustScore {
|
|
438
|
+
interfaceId: String!
|
|
439
|
+
score: Float!
|
|
440
|
+
reputationScore: Float!
|
|
441
|
+
overlapScore: Float!
|
|
442
|
+
clientMembershipCount: Int!
|
|
443
|
+
agentMembershipCount: Int!
|
|
444
|
+
sharedMembershipCount: Int!
|
|
445
|
+
sharedMembershipKeys: [String!]!
|
|
446
|
+
reasons: [TrustReason!]!
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
type AgentTrustComponent {
|
|
450
|
+
component: String!
|
|
451
|
+
score: Float!
|
|
452
|
+
weight: Float!
|
|
453
|
+
evidenceCountsJson: String
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
type AgentTrustIndex {
|
|
457
|
+
chainId: Int!
|
|
458
|
+
agentId: String!
|
|
459
|
+
overallScore: Int!
|
|
460
|
+
overallConfidence: Float
|
|
461
|
+
version: String!
|
|
462
|
+
computedAt: Int!
|
|
463
|
+
bundleJson: String
|
|
464
|
+
components: [AgentTrustComponent!]!
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
type TrustLedgerBadgeDefinition {
|
|
468
|
+
badgeId: String!
|
|
469
|
+
program: String!
|
|
470
|
+
name: String!
|
|
471
|
+
description: String
|
|
472
|
+
iconRef: String
|
|
473
|
+
points: Int!
|
|
474
|
+
ruleId: String!
|
|
475
|
+
ruleJson: String
|
|
476
|
+
active: Boolean!
|
|
477
|
+
createdAt: Int!
|
|
478
|
+
updatedAt: Int!
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
type TrustLedgerBadgeAward {
|
|
482
|
+
iri: ID!
|
|
483
|
+
awardedAt: Int
|
|
484
|
+
evidenceJson: String
|
|
485
|
+
definition: TrustLedgerBadgeDefinition
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
type Query {
|
|
489
|
+
# Discovery taxonomy (GraphDB-backed, same shape as v1 schema)
|
|
490
|
+
oasfSkills(
|
|
491
|
+
key: String
|
|
492
|
+
nameKey: String
|
|
493
|
+
category: String
|
|
494
|
+
extendsKey: String
|
|
495
|
+
limit: Int
|
|
496
|
+
offset: Int
|
|
497
|
+
orderBy: String
|
|
498
|
+
orderDirection: String
|
|
499
|
+
): [OasfSkill!]!
|
|
500
|
+
|
|
501
|
+
oasfDomains(
|
|
502
|
+
key: String
|
|
503
|
+
nameKey: String
|
|
504
|
+
category: String
|
|
505
|
+
extendsKey: String
|
|
506
|
+
limit: Int
|
|
507
|
+
offset: Int
|
|
508
|
+
orderBy: String
|
|
509
|
+
orderDirection: String
|
|
510
|
+
): [OasfDomain!]!
|
|
511
|
+
|
|
512
|
+
intentTypes(
|
|
513
|
+
key: String
|
|
514
|
+
label: String
|
|
515
|
+
limit: Int
|
|
516
|
+
offset: Int
|
|
517
|
+
): [IntentType!]!
|
|
518
|
+
|
|
519
|
+
taskTypes(
|
|
520
|
+
key: String
|
|
521
|
+
label: String
|
|
522
|
+
limit: Int
|
|
523
|
+
offset: Int
|
|
524
|
+
): [TaskType!]!
|
|
525
|
+
|
|
526
|
+
intentTaskMappings(
|
|
527
|
+
intentKey: String
|
|
528
|
+
taskKey: String
|
|
529
|
+
limit: Int
|
|
530
|
+
offset: Int
|
|
531
|
+
): [IntentTaskMapping!]!
|
|
532
|
+
|
|
533
|
+
kbAgents(
|
|
534
|
+
where: KbAgentWhereInput
|
|
535
|
+
first: Int
|
|
536
|
+
skip: Int
|
|
537
|
+
orderBy: KbAgentOrderBy
|
|
538
|
+
orderDirection: OrderDirection
|
|
539
|
+
): KbAgentSearchResult!
|
|
540
|
+
|
|
541
|
+
# Convenience query: agents whose ERC-8004 identity hasOwnerAccount matches ownerAddress
|
|
542
|
+
kbOwnedAgents(
|
|
543
|
+
chainId: Int!
|
|
544
|
+
ownerAddress: String!
|
|
545
|
+
first: Int
|
|
546
|
+
skip: Int
|
|
547
|
+
orderBy: KbAgentOrderBy
|
|
548
|
+
orderDirection: OrderDirection
|
|
549
|
+
): KbAgentSearchResult!
|
|
550
|
+
|
|
551
|
+
# Like kbOwnedAgents, but searches across all subgraph graphs (no chainId required).
|
|
552
|
+
kbOwnedAgentsAllChains(
|
|
553
|
+
ownerAddress: String!
|
|
554
|
+
first: Int
|
|
555
|
+
skip: Int
|
|
556
|
+
orderBy: KbAgentOrderBy
|
|
557
|
+
orderDirection: OrderDirection
|
|
558
|
+
): KbAgentSearchResult!
|
|
559
|
+
|
|
560
|
+
# UAID-native ownership check. Returns true if walletAddress resolves to the same EOA as the agent's owner.
|
|
561
|
+
kbIsOwner(uaid: String!, walletAddress: String!): Boolean!
|
|
562
|
+
|
|
563
|
+
kbAgentByUaid(uaid: String!): KbAgent
|
|
564
|
+
kbHolAgentProfileByUaid(uaid: String!, include: KbHolResolveIncludeInput): KbHolAgentProfile
|
|
565
|
+
kbHolCapabilities(first: Int, skip: Int): [KbHolCapability!]!
|
|
566
|
+
kbHolRegistries: [String!]!
|
|
567
|
+
kbHolRegistriesForProtocol(protocol: String!): [String!]!
|
|
568
|
+
kbHolStats: KbHolStats!
|
|
569
|
+
kbHolRegistrySearch(registry: String!, q: String, originalId: String): KbHolRegistrySearchResult!
|
|
570
|
+
kbHolVectorSearch(input: KbHolVectorSearchInput!): KbHolRegistrySearchResult!
|
|
571
|
+
|
|
572
|
+
kbSemanticAgentSearch(input: SemanticAgentSearchInput!): KbSemanticAgentSearchResult!
|
|
573
|
+
|
|
574
|
+
kbErc8122Registries(chainId: Int!, first: Int, skip: Int): [KbAgentRegistry8122!]!
|
|
575
|
+
|
|
576
|
+
# Minimal trust/event reads from KB (typed nodes + raw JSON where needed)
|
|
577
|
+
kbReviews(chainId: Int!, first: Int, skip: Int): [KbReviewResponse!]!
|
|
578
|
+
kbValidations(chainId: Int!, first: Int, skip: Int): [KbValidationResponse!]!
|
|
579
|
+
kbAssociations(chainId: Int!, first: Int, skip: Int): [KbAssociation!]!
|
|
580
|
+
|
|
581
|
+
# ATI / trust ledger (GraphDB-backed in v2)
|
|
582
|
+
kbAgentTrustIndex(chainId: Int!, agentId: String!): AgentTrustIndex
|
|
583
|
+
kbTrustLedgerBadgeDefinitions(program: String, active: Boolean): [TrustLedgerBadgeDefinition!]!
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
type Mutation {
|
|
587
|
+
kbHolSyncCapabilities: KbHolSyncResult!
|
|
588
|
+
}
|
|
589
|
+
`;
|
|
590
|
+
export function buildGraphQLSchemaKb() {
|
|
591
|
+
return buildSchema(graphQLSchemaStringKb);
|
|
592
|
+
}
|
|
593
|
+
//# sourceMappingURL=schemaKb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaKb.js","sourceRoot":"","sources":["../schemaKb.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAsB,MAAM,SAAS,CAAC;AAE1D,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmkBpC,CAAC;AAEF,MAAM,UAAU,oBAAoB;IAClC,OAAO,WAAW,CAAC,qBAAqB,CAAC,CAAC;AAC5C,CAAC"}
|