0.1.4 • Published 6 months ago
@defikitdotnet/miniapps-module v0.1.4
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
Method | Endpoint | Description |
---|---|---|
GET | /api/miniapps/public | Get all published agents |
GET | /api/miniapps/public/:id | Get details of a published agent |
POST | /api/miniapps/:id/publish | Publish an agent |
POST | /api/miniapps/:id/unpublish | Unpublish an agent |
POST | /api/miniapps/:id/message | Send 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