@gnomondigital/nebulas-kit-core
v0.3.1
Published
Framework-agnostic A2A chat client, Nebulas client, and server handlers.
Readme
@gnomondigital/nebulas-kit-core
Framework-agnostic A2A chat client, Nebulas client, and server handlers.
Install
npm install @gnomondigital/nebulas-kit-coreEnvironment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| A2A_URL | Yes | A2A agent base URL |
| A2A_AUTH_STRATEGY | Yes | session | client_credentials | resource_owner_password | api_key_only |
| A2A_API_KEY | For api_key_only, or fallback | x-api-key header |
| AUTH0_DOMAIN | For Auth0 strategies | Auth0 tenant domain |
| AUTH0_CLIENT_ID | For client_credentials, ROP | Auth0 client ID |
| AUTH0_CLIENT_SECRET | For client_credentials, ROP | Auth0 client secret |
| AUTH0_A2A_AUDIENCE | For Auth0 strategies | API audience |
| NEBULAS_API_URL | For Nebulas | Conversation API base URL |
| NEBULAS_API_KEY | For Nebulas proxy | x-api-key fallback when no session token |
| NEBULAS_PROJECT_ID | For Nebulas | Project ID |
Usage
Client: sendMessageStream
import { sendMessageStream } from "@gnomondigital/nebulas-kit-core";
const content = await sendMessageStream(
"Hello",
(chunk) => console.log(chunk),
signal,
files,
true,
sessionId,
{ endpoint: "/api/a2a", getHeaders: async () => ({ Authorization: `Bearer ${token}` }) }
);Next.js App Router
// app/api/a2a/route.ts
import { handleA2ANextJsPOST } from "@nebulas-kit/core";
export async function POST(req: NextRequest) {
return handleA2ANextJsPOST(req);
}// app/api/a2a/auth/route.ts
import { handleA2AAuthNextJsPOST } from "@gnomondigital/nebulas-kit-core";
export async function POST(req: NextRequest) {
return handleA2AAuthNextJsPOST(req);
}// app/api/a2a/config/route.ts
import { handleA2AConfigNextJsGET } from "@gnomondigital/nebulas-kit-core";
export async function GET() {
return handleA2AConfigNextJsGET();
}// app/api/nebulas/[...path]/route.ts - proxies to Nebulas API (conversations, chat_messages)
import { createNebulasProxyHandler } from "@gnomondigital/nebulas-kit-core";
import { auth0 } from "@/lib/auth";
const handler = createNebulasProxyHandler({
auth0,
audience: process.env.AUTH0_A2A_AUDIENCE,
apiKey: process.env.NEBULAS_API_KEY || process.env.A2A_API_KEY,
});
export const GET = handler;
export const POST = handler;
export const PUT = handler;
export const PATCH = handler;
export const DELETE = handler;Express
import express from "express";
import { createA2AExpressRouter } from "@gnomondigital/nebulas-kit-core";
const app = express();
app.use(express.json());
app.use("/api/a2a", createA2AExpressRouter(express));
app.listen(3000);