0.1.4 • Published 6 months ago

@defikitdotnet/miniapps-module v0.1.4

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

Mini App Management Module

A module for the Agent Framework that enables users to publish their AI agents publicly and provides a listing to view and interact with published agents.

Features

  • Publish agents to make them publicly accessible
  • List all published agents
  • View details of specific published agents
  • Send messages to published agents
  • Unpublish agents to hide them from the public listing

API Endpoints

MethodEndpointDescription
GET/api/miniapps/publicGet all published agents
GET/api/miniapps/public/:idGet details of a published agent
POST/api/miniapps/:id/publishPublish an agent
POST/api/miniapps/:id/unpublishUnpublish an agent
POST/api/miniapps/:id/messageSend a message to a published agent

Database Schema

The module uses the following database schema:

-- Existing accounts table (referenced only)
CREATE TABLE IF NOT EXISTS "accounts" ( 
  "id" TEXT PRIMARY KEY, 
  "createdAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
  "name" TEXT, 
  "username" TEXT, 
  "email" TEXT, 
  "avatarUrl" TEXT, 
  "details" TEXT DEFAULT '{}' CHECK(json_valid("details")), 
  "character" TEXT CHECK(json_valid("character")),
  "status" TEXT DEFAULT 'active' CHECK(status IN ('active', 'inactive', 'deleted')),
  "createdBy" TEXT DEFAULT 'did:privy:cm6077sr4041241z02cdo6hpv',
  "isExportData" BOOLEAN DEFAULT 0,
  "type" TEXT DEFAULT 'user' CHECK(type IN ('user', 'agent'))
);

-- Miniapps table
CREATE TABLE IF NOT EXISTS "miniapps" ( 
  "agentId" TEXT PRIMARY KEY REFERENCES accounts(id) ON DELETE CASCADE, 
  "publishedAt" TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
  "status" TEXT DEFAULT 'published' CHECK(status IN ('published', 'unpublished'))
);

Installation

pnpm add miniapps

Usage

Backend Setup

import express from 'express';
import { initializeBackend } from 'miniapps';
import { sqliteAdapter } from '@elizaos/adapter-sqlite';

const app = express();
app.use(express.json());

// Create database adapter
const dbAdapter = sqliteAdapter.createAdapter({
  databasePath: './data/myapp.db',
});

// Initialize the miniapp management module
initializeBackend(app, dbAdapter);

app.listen(3000, () => {
  console.log('Server running on port 3000');
});

Environment Variables

Create a .env file with the following configuration:

AGENT_MESSAGING_ENDPOINT=http://localhost:3001/api/agent/message

API Examples

Publish an Agent

curl -X POST http://localhost:3000/api/miniapps/agent-123/publish

Get Published Agents

curl http://localhost:3000/api/miniapps/public

Send a Message to an Agent

curl -X POST http://localhost:3000/api/miniapps/agent-123/message \
  -H "Content-Type: application/json" \
  -d '{"message": "Hello, agent!", "userId": "user-456"}'

Development

# Clone the repository
git clone [repository-url]

# Navigate to the module directory
cd examples/miniapps

# Install dependencies
pnpm install

# Start the development server
pnpm run backend

License

MIT