@nuwa-ai/cap-kit
Version:
1 lines • 18.9 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.ts","../src/client.ts","../src/type.ts"],"sourcesContent":["import { RoochClient, Transaction, Args } from \"@roochnetwork/rooch-sdk\";\nimport { type SignerInterface, DidAccountSigner } from \"@nuwa-ai/identity-kit\";\nimport * as yaml from 'js-yaml';\nimport { buildClient } from \"./client\";\nimport {Cap, CapThumbnail, CapThumbnailSchema, Page, Result, ResultCap, ResultCapMetadataSchema} from \"./type\";\n\nexport * from './type'\n\nexport class CapKit {\n protected roochClient: RoochClient;\n protected contractAddress: string;\n protected mcpUrl: string;\n protected signer: SignerInterface;\n\n constructor(option: {\n mcpUrl: string,\n roochUrl: string,\n contractAddress: string,\n signer: SignerInterface,\n }) {\n this.roochClient = new RoochClient({url: option.roochUrl});\n this.contractAddress = option.contractAddress;\n this.mcpUrl = option.mcpUrl;\n this.signer = option.signer;\n }\n\n async queryCapWithID(id?: string, cid?: string):Promise<Result<ResultCap>> {\n const client = await buildClient(this.mcpUrl, this.signer);\n\n try {\n // Get tools from MCP server\n const tools = await client.tools();\n const queryWithCID = tools.queryWithID;\n\n if (!queryWithCID) {\n throw new Error(\"Query with id tool not available on MCP server\");\n }\n\n // Upload file to IPFS\n const result = await queryWithCID.execute({id, cid}, {\n toolCallId: \"queryWithID\",\n messages: [],\n });\n\n if (result.isError) {\n throw new Error((result.content as any) ?.[0]?.text || 'Unknown error');\n }\n\n const queryResult = JSON.parse((result.content as any)[0].text);\n \n if (queryResult.code !== 200 && queryResult.code !== 404) {\n throw new Error(`Query with id failed: ${queryResult.error || 'Unknown error'}`);\n }\n\n return queryResult;\n } finally {\n await client.close();\n }\n }\n\n async queryWithName(\n name?: string,\n tags?: string[],\n page?: number,\n size?: number,\n ): Promise<Result<Page<ResultCap>>> {\n const client = await buildClient(this.mcpUrl, this.signer);\n\n try {\n // Get tools from MCP server\n const tools = await client.tools();\n const queryWithName = tools.queryWithName;\n\n if (!queryWithName) {\n throw new Error(\"query tool not available on MCP server\");\n }\n\n // Upload file to IPFS\n const result = await queryWithName.execute({\n name: name,\n tags: tags,\n page: page,\n pageSize: size\n }, {\n toolCallId: \"query-cap\",\n messages: [],\n });\n\n if (result.isError) {\n throw new Error((result.content as any) ?.[0]?.text || 'Unknown error');\n }\n\n const queryResult = JSON.parse((result.content as any)[0].text);\n if (queryResult.code === 404) {\n return {\n code: 200,\n data: {\n totalItems: 0,\n page: page || 0,\n pageSize: size || 50,\n items: [] as ResultCap[]\n }\n } as Result<Page<ResultCap>>;\n }\n \n if (queryResult.code !== 200) {\n throw new Error(`query failed: ${queryResult.error || 'Unknown error'}`);\n }\n // Transform the raw response data to ResultCap format\n const transformedItems = queryResult.data.items.map((item: any) => {\n const thumbnailType = JSON.parse(item.thumbnail)\n return {\n id: item.id,\n cid: item.cid,\n name: item.name,\n version: item.version,\n displayName: item.display_name,\n description: item.description,\n tags: item.tags,\n submittedAt: item.submitted_at,\n homepage: item.homepage,\n repository: item.repository,\n thumbnail: thumbnailType\n }\n });\n\n return {\n code: queryResult.code,\n data: {\n totalItems: queryResult.data.totalItems,\n page: queryResult.data.page,\n pageSize: queryResult.data.pageSize,\n items: transformedItems\n }\n } as Result<Page<ResultCap>>;\n \n } finally {\n await client.close();\n }\n }\n\n async downloadCapWithID(id: string, format?: 'base64' | 'utf8'): Promise<Cap> {\n const result = await this.queryCapWithID(id)\n\n if (result.code === 200) {\n return this.downloadCapWithCID(result.data!.cid, format)\n } else {\n throw new Error('Invalid Cap ID')\n }\n }\n async downloadCapWithCID(cid: string, format?: 'base64' | 'utf8'): Promise<Cap> {\n const client = await buildClient(this.mcpUrl, this.signer);\n\n try {\n // Get tools from MCP server\n const tools = await client.tools();\n const downloadFile = tools.downloadFile;\n\n if (!downloadFile) {\n throw new Error(\"downloadFile tool not available on MCP server\");\n }\n\n // Download file from IPFS\n const result = await downloadFile.execute({\n cid: cid,\n dataFormat: format,\n }, {\n toolCallId: \"download-cap\",\n messages: [],\n });\n\n if (result.isError) {\n throw new Error((result.content as any) ?.[0]?.text || 'Unknown error');\n }\n\n const downloadResult = JSON.parse((result.content as any)[0].text);\n\n if (downloadResult.code !== 200) {\n throw new Error(`Download failed: ${downloadResult.error || 'Unknown error'}`);\n }\n\n return yaml.load(downloadResult.data.fileData) as Cap;\n } finally {\n await client.close();\n }\n }\n\n async registerCap(cap: Cap) {\n\n // len > 6 && len < 20, only contain a-z, A-Z, 0-9, _\n if (!/^[a-zA-Z0-9_]{6,20}$/.test(cap.idName)) {\n throw new Error(\"Name must be between 6 and 20 characters and only contain a-z, A-Z, 0-9, _\");\n }\n\n // 1. Create ACP (Agent Capability Package) file\n const acpContent = yaml.dump(cap);\n \n // 2. Upload ACP file to IPFS using nuwa-cap-store MCP\n const cid = await this.uploadToIPFS(cap.id, acpContent, this.signer);\n\n // 3. Call Move contract to register the capability\n const result = await this.registerOnChain(cap.idName, cid, this.signer);\n\n if (result.execution_info.status.type !== 'executed') {\n throw new Error(\"unknown error\");\n }\n\n return cid;\n }\n\n private async uploadToIPFS(name: string, content: string, signer: SignerInterface): Promise<string> {\n\n const client = await buildClient(this.mcpUrl, signer);\n\n try {\n // Get tools from MCP server\n const tools = await client.tools();\n const uploadTool = tools.uploadFile;\n\n if (!uploadTool) {\n throw new Error(\"uploadFile tool not available on MCP server\");\n }\n\n // Convert content to base64\n const fileData = Buffer.from(content, 'utf8').toString('base64');\n const fileName = `${name}.cap.yaml`;\n\n // Upload file to IPFS\n const result = await uploadTool.execute({ \n fileName, \n fileData, \n }, {\n toolCallId: \"upload-cap\",\n messages: [],\n });\n\n if (result.isError) {\n throw new Error((result.content as any) ?.[0]?.text || 'Unknown error');\n }\n\n const uploadResult = JSON.parse((result.content as any)[0].text);\n const uploadData = uploadResult.data;\n\n if (uploadResult.code !== 200 || !uploadData.ipfsCid) {\n throw new Error(`Upload failed: ${uploadResult.error || 'Unknown error'}`);\n }\n\n return uploadData.ipfsCid;\n } finally {\n await client.close();\n }\n }\n\n private async registerOnChain(name: string, cid: string, signer: SignerInterface) {\n const chainSigner = await DidAccountSigner.create(signer);\n const transaction = new Transaction();\n transaction.callFunction({\n target: `${this.contractAddress}::acp_registry::register`,\n typeArgs: [],\n args: [Args.string(name), Args.string(cid)],\n maxGas: 500000000\n })\n\n return await this.roochClient.signAndExecuteTransaction({\n transaction,\n signer: chainSigner,\n });\n }\n}","import { StreamableHTTPClientTransport } from \"@modelcontextprotocol/sdk/client/streamableHttp\";\nimport { DIDAuth, SignerInterface } from \"@nuwa-ai/identity-kit\";\nimport { experimental_createMCPClient as createMCPClient } from \"ai\";\n\nexport const buildClient = async (mcpUrl: string, signer: SignerInterface): Promise<any> => {\n const keyId = (await signer.listKeyIds())[0];\n\n // Create authorization header\n const payload = {\n operation: \"mcp-json-rpc\",\n params: { body: {} },\n } as const;\n\n const signedObject = await DIDAuth.v1.createSignature(payload, signer, keyId);\n const authHeader = DIDAuth.v1.toAuthorizationHeader(signedObject);\n\n // Create MCP client\n const transport = new StreamableHTTPClientTransport(\n new URL(mcpUrl),\n {\n requestInit: {\n headers: {\n Authorization: authHeader,\n },\n }\n } as any\n );\n\n return await createMCPClient({ transport });\n} ","import { z } from 'zod';\n\nexport interface Result<T> {\n code: number;\n error?: string;\n data?: T;\n}\n\nexport interface Page<T> {\n totalItems: number,\n page: number,\n pageSize: number,\n items: T[]\n}\n\n// Zod schemas as single source of truth\nexport const CapMcpServerConfigSchema = z.object({\n url: z.string(),\n transport: z.enum(['httpStream', 'sse']),\n});\n\nexport const CapModelSchema = z.object({\n id: z.string(),\n name: z.string(),\n slug: z.string(),\n providerName: z.string(),\n providerSlug: z.string(),\n description: z.string(),\n contextLength: z.number(),\n pricing: z.object({\n input_per_million_tokens: z.number(),\n output_per_million_tokens: z.number(),\n request_per_k_requests: z.number(),\n image_per_k_images: z.number(),\n web_search_per_k_searches: z.number(),\n }),\n supported_inputs: z.array(z.string()),\n supported_parameters: z.array(z.string()),\n});\n\nexport const CapPromptSchema = z.object({\n value: z.string(),\n suggestions: z.array(z.string()).optional(),\n});\n\nexport const CapIDSchema = z.object({\n id: z.string(),\n authorDID: z.string(),\n idName: z.string(),\n});\n\nexport const CapCoreSchema = z.object({\n prompt: CapPromptSchema,\n model: CapModelSchema,\n mcpServers: z.record(z.string(), CapMcpServerConfigSchema),\n});\n\nexport const CapThumbnailSchema = z\n .object({\n type: z.enum(['file', 'url']),\n file: z.string().optional(),\n url: z.string().optional(),\n })\n .nullable();\n\nexport const CapMetadataSchema = z.object({\n displayName: z.string(),\n description: z.string(),\n tags: z.array(z.string()),\n submittedAt: z.number(),\n homepage: z.string().optional(),\n repository: z.string().optional(),\n thumbnail: CapThumbnailSchema,\n});\n\nexport const CapSchema = CapIDSchema.extend({\n core: CapCoreSchema,\n metadata: CapMetadataSchema,\n});\n\nexport const ResultCapMetadataSchema = z.object({\n id: z.string(),\n cid: z.string(),\n name: z.string(),\n version: z.string(),\n displayName: z.string(),\n description: z.string(),\n tags: z.array(z.string()),\n submittedAt: z.number(),\n homepage: z.string().optional(),\n repository: z.string().optional(),\n thumbnail: CapThumbnailSchema,\n});\n\n// Inferred TypeScript types from Zod schemas\nexport type CapMcpServerConfig = z.infer<typeof CapMcpServerConfigSchema>;\nexport type CapModel = z.infer<typeof CapModelSchema>;\nexport type CapPrompt = z.infer<typeof CapPromptSchema>;\nexport type CapID = z.infer<typeof CapIDSchema>;\nexport type CapCore = z.infer<typeof CapCoreSchema>;\nexport type CapThumbnail = z.infer<typeof CapThumbnailSchema>;\nexport type CapMetadata = z.infer<typeof CapMetadataSchema>;\nexport type Cap = z.infer<typeof CapSchema>;\nexport type ResultCap = z.infer<typeof ResultCapMetadataSchema>;\n"],"mappings":"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","names":["import_identity_kit","createMCPClient"]}