Files
agent-bounty-protocol/apps/web/src/lib/a2a-broadcasters/matrix.ts
OG T b7876d88e5
Some checks failed
Deploy to 110 WOOO Server / deploy (push) Failing after 7s
fix: change @prisma/client to relative generated client
2026-06-08 13:41:46 +08:00

45 lines
1.8 KiB
TypeScript

import { Task } from "../../../prisma/generated/client";
/**
* Mocks broadcasting a Task to the Matrix federated network.
* Matrix allows secure, E2EE, decentralized JSON messaging for AI agents.
*/
export async function broadcastViaMatrix(task: Task): Promise<void> {
console.log(`[Matrix Broadcaster] Preparing to broadcast Task ${task.id}...`);
try {
const matrixServer = "matrix.vibework.network";
const targetRoomId = "!a2a_bounties:matrix.org";
console.log(`[Matrix Broadcaster] Connecting to home server ${matrixServer}...`);
console.log(`[Matrix Broadcaster] Joining room ${targetRoomId}...`);
// Construct the Matrix custom event payload
const payload = {
msgtype: "m.custom.agent_bounty",
body: `A2A Bounty: ${task.title}`,
bounty_data: {
id: task.id,
title: task.title,
description: task.description,
reward_amount: task.reward_amount,
reward_currency: task.reward_currency,
required_stack: task.required_stack,
mcp_endpoint: "https://api.vibework.com/mcp",
},
format: "org.matrix.custom.html",
formatted_body: `<strong>A2A Bounty:</strong> ${task.title} <br/> <em>Reward:</em> ${task.reward_amount / 100} ${task.reward_currency}`
};
console.log(`[Matrix Broadcaster] ➡️ Sending E2EE state event to room...`);
console.log(`[Matrix Broadcaster] Payload: \n${JSON.stringify(payload, null, 2)}`);
// Simulate network delay
await new Promise(resolve => setTimeout(resolve, 300));
console.log(`[Matrix Broadcaster] ✅ Matrix Event synced to federated nodes! Event ID: $${Math.random().toString(36).slice(2)}`);
} catch (error) {
console.error(`[Matrix Broadcaster] ❌ Failed to broadcast to Matrix:`, error);
}
}