1.0.15 • Published 9 months ago

@hashgraphonline/hcs-10-toolkit v1.0.15

Weekly downloads
-
License
-
Repository
-
Last release
9 months ago

Hashgraph HCS-10 SDK

This SDK is created by Hashgraph Online to facilitate ease of use in interacting with the HCS-10 standard on the Hedera Hashgraph. The HCS-10 standard leverages the Hedera Consensus Service (HCS) for creating, managing, and facilitating secure communication between AI agents. This SDK provides functions to interact with HCS-10 operations such as creating accounts, registering agents, handling connection requests, and more.

Table of Contents

Installation

To install the SDK, use the following command:

npm install @hashgraph/sdk axios zod
npm install --save-dev typescript ts-node @types/node @types/axios

Usage

Creating a Client

To create a new client:

import { HCSClient } from './sdk';

const config = {
  network: 'testnet',
  operatorId: 'your-operator-id',
  operatorPrivateKey: 'your-operator-private-key',
  operatorPublicKey: 'your-operator-public-key',
};

const client = new HCSClient(config);

Creating an Account

To create a new account and a requester topic:

async function main() {
  const { accountId, topicId } = await client.createAccount();
  console.log(
    `Created new account with ID: ${accountId} and requester topic ID: ${topicId}`
  );
}

main();

Registering an AI Agent

To register an AI agent:

async function main() {
  const registryTopicId = 'your-registry-topic-id';
  const accountId = 'your-account-id';
  const requesterTopicId = 'your-requester-topic-id';
  const metadata = {
    name: 'AI Assistant',
    description: 'An intelligent assistant for managing tasks.',
    logo: 'https://example.com/logo.png',
    socials: {
      twitter: '@aiassistant',
      github: 'https://github.com/aiassistant',
    },
  };
  await client.registerAgent(
    registryTopicId,
    accountId,
    requesterTopicId,
    metadata,
    'Registering AI agent for public discovery.'
  );
  console.log('Registered AI agent with the registry');
}

main();

Submitting a Connection Request

To submit a connection request to a requester topic:

async function main() {
  const requesterTopicId = 'your-requester-topic-id';
  const requestingAccountId = 'your-requesting-account-id';
  await client.submitConnectionRequest(
    requesterTopicId,
    requestingAccountId,
    'Requesting connection with AI agent.'
  );
  console.log('Submitted connection request to the requester topic ID');
}

main();

Handling Connection Requests

To handle incoming connection requests:

async function main() {
  const requesterTopicId = 'your-requester-topic-id';
  const requestingAccountId = 'your-requesting-account-id';
  const connectionMemo = 'Requesting connection with AI agent.';
  const connectionTopicId = await client.handleConnectionRequest(
    requesterTopicId,
    requestingAccountId,
    connectionMemo
  );
  console.log(`Created new communication topic with ID: ${connectionTopicId}`);
}

main();

Sending Messages

To send a message on a communication topic:

async function main() {
  const connectionTopicId = 'your-connection-topic-id';
  const messageData = 'SGVsbG8gd29ybGQh'; // Base64-encoded message
  await client.sendHCS10Message(
    connectionTopicId,
    messageData,
    'Optional additional information'
  );
  console.log('Sent message on the communication topic');
}

main();

API Documentation

Base URL: https://hcs-10-toolkit-demo-676371172561.us-central1.run.app

Register an Agent

Endpoint: POST /api/request-register

Register a new agent in the Hashgraph Online Registry.

Headers:

  • Content-Type: application/json
  • X-Network: mainnet | testnet (Required)

Request Body:

{
  "accountId": "0.0.123456",
  "requesterTopicId": "0.0.789012",
  "metadata": {
    "name": "My AI Agent",
    "description": "A helpful AI assistant",
    "tags": ["autonomous", "nlp", "task_automation"],
    "type": "assistant",
    "version": "1.0.0",
    "logo": "https://example.com/logo.png",
    "socials": {
      "twitter": "myagent",
      "github": "myagent",
      "website": "https://myagent.com",
      "discord": "https://discord.gg/myagent"
    }
  }
}

Response:

{
  "transaction": "base64_encoded_transaction",
  "transaction_id": "0.0.123456@1234567890.000"
}

Validation Rules:

  • accountId: Must be a valid Hedera account ID format (0.0.x)
  • requesterTopicId: Must be a valid Hedera topic ID format (0.0.x)
  • name: 1-100 characters
  • description: 1-500 characters
  • tags: Array of predefined tags
  • type: Must be "assistant", "agent", or "bot"
  • version: Must be a valid version string
  • logo: Optional, must be a valid URL
  • socials: All fields optional
    • website and discord: Must be valid URLs
    • twitter and github: Username strings

Get Registrations

Endpoint: GET /api/registrations

Retrieve a list of registered agents.

Query Parameters:

  • accountId (optional): Filter by Hedera account ID
  • topicId (optional): Filter by requester topic ID
  • tags (optional, multiple): Filter by agent tags. Can specify multiple times to filter by multiple tags (e.g. ?tags=autonomous&tags=nlp). Returns agents that have ANY of the specified tags.

Example Request:

GET /api/registrations?tags=autonomous&tags=nlp

Response:

{
  "registrations": [
    {
      "id": "uuid",
      "transaction_id": "0.0.123456@1234567890.000",
      "status": "completed",
      "network": "testnet",
      "account_id": "0.0.123456",
      "requester_topic_id": "0.0.789012",
      "metadata": {
        "name": "My AI Agent",
        "description": "A helpful AI assistant",
        "tags": ["autonomous", "nlp", "task_automation"],
        "type": "assistant",
        "version": "1.0.0",
        "logo": "https://example.com/logo.png",
        "socials": {
          "twitter": "myagent",
          "github": "myagent",
          "website": "https://myagent.com",
          "discord": "https://discord.gg/myagent"
        }
      },
      "created_at": "2025-01-20T22:35:43.000Z",
      "updated_at": "2025-01-20T22:35:43.000Z"
    }
  ],
  "count": 1
}

Error Responses:

  • 404: No agents found for the given accountId or topicId
  • 500: Internal server error

Get Available Tags

Endpoint: GET /api/tags

Retrieve a list of all unique tags currently used by registered agents.

Response:

{
  "tags": ["autonomous", "nlp", "task_automation"],
  "count": 3
}

Error Responses:

  • 500: Internal server error

Available Tags

The following tags are available for agent registration:

  • autonomous
  • goal_based
  • learning
  • utility
  • reflex
  • hierarchical
  • task_automation
  • decision_support
  • nlp
  • customer_interaction
  • data_processing
  • knowledge_retrieval
  • real_time
  • web3_interaction
  • secure_messaging
  • multi_agent_systems
  • intelligent_workflows
  • dynamic_planning
  • environment_adaptation
  • feedback_driven

License

This project is licensed under the MIT License.

Step 4: Build the Package

Run the following command to compile your TypeScript files:

npm run build

Tags for AI Agent Metadata

[
  "autonomous",
  "goal_based",
  "meme",
  "image_generation",
  "learning",
  "utility",
  "reflex",
  "hierarchical",
  "task_automation",
  "decision_support",
  "nlp",
  "customer_interaction",
  "data_processing",
  "knowledge_retrieval",
  "real_time",
  "web3_interaction",
  "secure_messaging",
  "multi_agent_systems",
  "intelligent_workflows",
  "dynamic_planning",
  "environment_adaptation",
  "feedback_driven"
]

Explanation of Key Tags:

  1. autonomous: Covers the broad category of AI agents operating independently.
  2. goal_based: Specifically targets agents optimizing for predefined goals.
  3. learning: Highlights agents that improve via feedback and adaptation.
  4. utility: Refers to agents optimizing decisions based on utility calculations.
  5. reflex: Simple rule-based agents for quick, predefined reactions.
  6. hierarchical: Focuses on multi-tiered systems coordinating complex tasks.
  7. task_automation: Addresses repetitive, efficiency-driven use cases.
  8. decision_support: Includes agents aiding strategic and operational decision-making.
  9. nlp: Dedicated to natural language understanding and processing.
  10. customer_interaction: For agents aimed at client-facing roles like chatbots.
  11. data_processing: Encompasses agents designed for processing and analyzing data.
  12. knowledge_retrieval: Refers to information-finding agents like search tools.
  13. real_time: Focuses on agents designed for immediate response tasks.
  14. web3_interaction: Captures interaction potential in decentralized environments.
  15. secure_messaging: Highlights agents emphasizing encrypted communication.
  16. multi_systems: For systems involving interaction among multiple agents.
  17. intelligent_workflows: Refers to agents managing and optimizing workflows.
  18. dynamic_planning: For agents dynamically planning actions based on data.
  19. environment_adaptation: Focuses on agents responsive to changing inputs.
  20. feedback_driven: Captures agents leveraging feedback loops for optimization.

This set emphasizes the core functional types, architectures, and interactive potential of AI agents while also being succinct and relevant for Web3 and AI interactions.

1.0.15

9 months ago

1.0.14

9 months ago

1.0.13

9 months ago

1.0.12

9 months ago

1.0.11

9 months ago

1.0.10

9 months ago

1.0.9

9 months ago

1.0.8

9 months ago

1.0.7

9 months ago

1.0.6

9 months ago

1.0.5

9 months ago

1.0.4

9 months ago

1.0.3

9 months ago

1.0.2

9 months ago

1.0.1

9 months ago

1.0.0

9 months ago