logicsrc/plugins/c0mpute/src/index.ts

40 lines
1.6 KiB
TypeScript

import type { PluginDefinition } from "@logicsrc/plugin-core";
import { c0mputeManifest } from "./manifest.js";
export const c0mputePlugin: PluginDefinition = {
manifest: c0mputeManifest,
configDefaults: {
enabled: true,
work_in_progress: true,
default_compute_provider: true,
api_url: "${C0MPUTE_API_URL}",
api_key: "${C0MPUTE_API_KEY}",
webhook_secret: "${C0MPUTE_WEBHOOK_SECRET}",
default_board: "/projects/c0mpute"
},
routes: [
{ method: "GET", path: "/api/plugins/c0mpute/jobs", capability: "compute.jobs.sync" },
{ method: "POST", path: "/api/plugins/c0mpute/jobs/dispatch", capability: "compute.jobs.dispatch" },
{ method: "GET", path: "/api/plugins/c0mpute/workers", capability: "compute.workers.sync" },
{ method: "POST", path: "/api/plugins/c0mpute/quotes", capability: "compute.quotes.create" },
{ method: "POST", path: "/api/plugins/c0mpute/webhooks/compute-status", capability: "webhook.compute_status" }
],
events: [
{ event: "task.created", capability: "compute.quotes.create" },
{ event: "run.requested", capability: "compute.jobs.dispatch" },
{ event: "usage.reported", capability: "compute.usage.report" },
{ event: "settlement.completed", capability: "reputation.compute_event" }
],
permissions: [
"compute:jobs:read",
"compute:jobs:dispatch",
"compute:workers:read",
"compute:quotes:create",
"compute:usage:report",
"compute:settlements:read",
"reputation:sync"
],
tuiPanels: [{ id: "c0mpute-status", title: "c0mpute Jobs" }]
};
export { c0mputeManifest };