mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-08-26 17:12:27 +03:00
* feat(a2a): conductor bridge core — event mapping with canceled->cancelled
* feat(a2a): incremental SSE parser for conductor bridge
* feat(a2a): conductor bridge connection loop with persisted cursor and backoff
* feat(a2a): start conductor bridge at boot behind CONDUCTOR_HUB_URL
* fix(a2a): conductor bridge parses the hub's real SSE wire format (id/type in frame, data={ts,payload})
* docs(reference): document CONDUCTOR_HUB_URL/TOKEN in ENVIRONMENT.md (env-doc-sync gate)
* feat(a2a): fleet skills derived from the Conductor hub for the agent card
* feat(a2a): agent card announces Conductor fleet skills
* feat(dashboard): server-side hub proxy for the Conductor panel (whitelisted shapes, fail-open)
* feat(dashboard): /api/conductor proxy routes (fleet, task detail, cancel) behind management auth
* feat(dashboard): Conductor panel — fleet live view, task detail and cancel over /api/conductor proxy
---------
Co-authored-by: backryun <bakryun0718@proton.me>
24 lines
1.1 KiB
TypeScript
24 lines
1.1 KiB
TypeScript
import test from "node:test";
|
|
import assert from "node:assert/strict";
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
|
|
// Padrão budget-route-auth: prova pelo fonte que o gate de auth vem ANTES de qualquer uso do proxy.
|
|
const ROUTES = [
|
|
"src/app/api/conductor/fleet/route.ts",
|
|
"src/app/api/conductor/tasks/[id]/route.ts",
|
|
"src/app/api/conductor/tasks/[id]/cancel/route.ts",
|
|
];
|
|
|
|
for (const route of ROUTES) {
|
|
test(`${route}: requireManagementAuth antes do proxy ao hub`, () => {
|
|
const src = fs.readFileSync(path.join(process.cwd(), route), "utf8");
|
|
const authAt = src.indexOf("requireManagementAuth(");
|
|
assert.ok(authAt > 0, "handler chama requireManagementAuth");
|
|
assert.match(src, /if \(authError\) return authError;/, "curto-circuito no erro de auth");
|
|
const proxyAt = src.search(/getFleetSnapshot\(|getConductorTaskDetail\(|cancelConductorTask\(/);
|
|
assert.ok(proxyAt > authAt, "proxy ao hub só depois do gate de auth");
|
|
assert.ok(!src.includes("CONDUCTOR_HUB_TOKEN"), "token nunca manuseado na rota (vive no hubProxy)");
|
|
});
|
|
}
|